From df8ad4af65a9c4846b108550d0083770a69dee64 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Wed, 9 Nov 2022 14:41:56 +0200 Subject: [PATCH] Docs: Update INSTALL and also add new prohibited options to PACKAGERS. --- INSTALL | 49 +++++++++++++++++++++++++++++++++++++++++-------- PACKAGERS | 2 ++ 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/INSTALL b/INSTALL index 7878512..a6c0551 100644 --- a/INSTALL +++ b/INSTALL @@ -316,6 +316,18 @@ XZ Utils Installation | xz -v -0 -Csha256 > foo.xz time xz --test foo.xz + --disable-microlzma + Don't build MicroLZMA encoder and decoder. This omits + lzma_microlzma_encoder() and lzma_microlzma_decoder() + API functions from liblzma. These functions are needed + by specific applications only. They were written for + erofs-utils but they may be used by others too. + + --disable-lzip-decoder + Disable decompression support for .lz (lzip) files. + This omits the API function lzma_lzip_decoder() from + liblzma and .lz support from the xz tool. + --disable-xz --disable-xzdec --disable-lzmadec @@ -359,15 +371,32 @@ XZ Utils Installation code. --enable-unaligned-access - Allow liblzma to use unaligned memory access for 16-bit - and 32-bit loads and stores. This should be enabled only - when the hardware supports this, i.e. when unaligned - access is fast. Some operating system kernels emulate - unaligned access, which is extremely slow. This option - shouldn't be used on systems that rely on such emulation. + Allow liblzma to use unaligned memory access for 16-bit, + 32-bit, and 64-bit loads and stores. This should be + enabled only when the hardware supports this, that is, + when unaligned access is fast. Some operating system + kernels emulate unaligned access, which is extremely + slow. This option shouldn't be used on systems that + rely on such emulation. Unaligned access is enabled by default on x86, x86-64, - and big endian PowerPC. + big endian PowerPC, some ARM, and some ARM64 systems. + + --enable-unsafe-type-punning + This enables use of code like + + uint8_t *buf8 = ...; + *(uint32_t *)buf8 = ...; + + which violates strict aliasing rules and may result + in broken code. There should be no need to use this + option with recent GCC or Clang versions on any + arch as just as fast code can be generated in a safe + way too (using __builtin_assume_aligned + memcpy). + + However, this option might improve performance in some + other cases, especially with old compilers (for example, + GCC 3 and early 4.x on x86, GCC < 6 on ARMv6 and ARMv7). --enable-small Reduce the size of liblzma by selecting smaller but @@ -456,6 +485,10 @@ XZ Utils Installation sandboxing. If no Capsicum support is found, configure will give an error. + pledge Use pledge(2) (OpenBSD >= 5.9) for + sandboxing. If pledge(2) isn't found, + configure will give an error. + --enable-symbol-versions Use symbol versioning for liblzma. This is enabled by default on GNU/Linux, other GNU-based systems, and @@ -518,7 +551,7 @@ XZ Utils Installation liblzma, pass --enable-small to configure. - Tell the compiler to optimize for size instead of speed. - E.g. with GCC, put -Os into CFLAGS. + For example, with GCC, put -Os into CFLAGS. - xzdec and lzmadec will never use multithreading capabilities of liblzma. You can avoid dependency on libpthread by passing diff --git a/PACKAGERS b/PACKAGERS index 6c5d219..b3b0509 100644 --- a/PACKAGERS +++ b/PACKAGERS @@ -138,6 +138,8 @@ Information to packagers of XZ Utils --enable-checks --enable-small (*) --disable-threads (*) + --disable-microlzma (*) + --disable-lzip-decoder (*) (*) These are OK when building xzdec and lzmadec as described in INSTALL.