| Index: xz/INSTALL
|
| ===================================================================
|
| --- xz/INSTALL (revision 0)
|
| +++ xz/INSTALL (revision 0)
|
| @@ -0,0 +1,369 @@
|
| +
|
| +XZ Utils Installation
|
| +=====================
|
| +
|
| + 0. Preface
|
| + 1. Supported platforms
|
| + 1.1. Compilers
|
| + 1.2. Platform-specific notes
|
| + 1.2.1. IRIX
|
| + 1.2.2. Tru64
|
| + 1.2.3. Windows
|
| + 1.2.4. DOS
|
| + 1.2.5. OS/2
|
| + 1.2.6. OpenVMS
|
| + 1.3. Adding support for new platforms
|
| + 2. configure options
|
| + 3. xzgrep and other scripts
|
| + 3.1. Dependencies
|
| + 3.2. PATH
|
| + 4. Troubleshooting
|
| + 4.1. "No C99 compiler was found."
|
| + 4.1. "No POSIX conforming shell (sh) was found."
|
| + 4.2. configure works but build fails at crc32_x86.S
|
| +
|
| +
|
| +0. Preface
|
| +----------
|
| +
|
| + If you aren't familiar with building packages that use GNU Autotools,
|
| + see the file INSTALL.generic for generic instructions before reading
|
| + further.
|
| +
|
| + If you are going to build a package for distribution, see also the
|
| + file PACKAGERS. It contains information that should help making the
|
| + binary packages as good as possible, but the information isn't very
|
| + interesting to those making local builds for private use or for use
|
| + in special situations like embedded systems.
|
| +
|
| +
|
| +1. Supported platforms
|
| +----------------------
|
| +
|
| + XZ Utils are developed on GNU/Linux, but they should work on many
|
| + POSIX-like operating systems like *BSDs and Solaris, and even on
|
| + a few non-POSIX operating systems.
|
| +
|
| +
|
| +1.1. Compilers
|
| +
|
| + A C99 compiler is required to compile XZ Utils. If you use GCC, you
|
| + need at least version 3.x.x. GCC version 2.xx.x doesn't support some
|
| + C99 features used in XZ Utils source code, thus GCC 2 won't compile
|
| + XZ Utils.
|
| +
|
| + XZ Utils takes advantage of some GNU C extensions when building
|
| + with GCC. Because these extensions are used only when building
|
| + with GCC, it should be possible to use any C99 compiler.
|
| +
|
| +
|
| +1.2. Platform-specific notes
|
| +
|
| +1.2.1. IRIX
|
| +
|
| + MIPSpro 7.4.4m has been reported to produce broken code if using
|
| + the -O2 optimization flag ("make check" fails). Using -O1 should
|
| + work.
|
| +
|
| +
|
| +1.2.2. Tru64
|
| +
|
| + If you try to use the native C compiler on Tru64 (passing CC=cc to
|
| + configure), it is possible that the configure script will complain
|
| + that no C99 compiler was found even when the native compiler supports
|
| + C99. You can safely override the test for C99 compiler by passing
|
| + ac_cv_prog_cc_c99= as the argument to the configure script.
|
| +
|
| +
|
| +1.2.3. Windows
|
| +
|
| + Building XZ Utils on Windows is supported under MinGW + MSYS and
|
| + Cygwin. There is windows/build.sh to ease packaging XZ Utils with
|
| + MinGW + MSYS into a redistributable .zip or .7z file. See
|
| + windows/INSTALL-Windows.txt for more information.
|
| +
|
| + It might be possible to build liblzma with a non-GNU toolchain too,
|
| + but that will probably require writing a separate makefile. Building
|
| + the command line tools with non-GNU toolchains will be harder than
|
| + building only liblzma.
|
| +
|
| + Even if liblzma is built with MinGW, the resulting DLL or static
|
| + library can be used by other compilers and linkers, including MSVC.
|
| + Thus, it shouldn't be a problem to use MinGW to build liblzma even
|
| + if you cannot use MinGW to build the rest of your project. See
|
| + windows/README-Windows.txt for details.
|
| +
|
| +
|
| +1.2.4. DOS
|
| +
|
| + There is an experimental Makefile in the "dos" directory to build
|
| + XZ Utils on DOS using DJGPP. Support for long file names (LFN) is
|
| + needed. See dos/README for more information.
|
| +
|
| + GNU Autotools based build hasn't been tried on DOS. If you try, I
|
| + would like to hear if it worked.
|
| +
|
| +
|
| +1.2.5. OS/2
|
| +
|
| + To omit large number of harmless warnings about visibility support,
|
| + pass gl_cv_cc_visibility=no as an argument to the configure script.
|
| + This isn't mandatory since it should have no effect on the resulting
|
| + binaries.
|
| +
|
| +
|
| +1.2.6. OpenVMS
|
| +
|
| + XZ Utils can be built for OpenVMS, but the build system files are
|
| + currently not included in the XZ Utils source package. The required
|
| + OpenVMS-specific files are maintained by Jouk Jansen and can be
|
| + downloaded here:
|
| +
|
| + http://nchrem.tnw.tudelft.nl/openvms/software2.html#xzutils
|
| +
|
| +
|
| +1.3. Adding support for new platforms
|
| +
|
| + If you have written patches to make XZ Utils to work on previously
|
| + unsupported platform, please send the patches to me! I will consider
|
| + including them to the official version. It's nice to minimize the
|
| + need of third-party patching.
|
| +
|
| + One exception: Don't request or send patches to change the whole
|
| + source package to C89. I find C99 substantially nicer to write and
|
| + maintain. However, the public library headers must be in C89 to
|
| + avoid frustrating those who maintain programs, which are strictly
|
| + in C89 or C++.
|
| +
|
| +
|
| +2. configure options
|
| +--------------------
|
| +
|
| + In most cases, the defaults are what you want. Most of the options
|
| + below are useful only when building a size-optimized version of
|
| + liblzma or command line tools.
|
| +
|
| + --enable-encoders=LIST
|
| + --disable-encoders
|
| + Specify a comma-separated LIST of filter encoders to
|
| + build. See "./configure --help" for exact list of
|
| + available filter encoders. The default is to build all
|
| + supported encoders.
|
| +
|
| + If LIST is empty or --disable-encoders is used, no filter
|
| + encoders will be built and also the code shared between
|
| + encoders will be omitted.
|
| +
|
| + Disabling encoders will remove some symbols from the
|
| + liblzma ABI, so this option should be used only when it
|
| + is known to not cause problems.
|
| +
|
| + --enable-decoders=LIST
|
| + --disable-decoders
|
| + This is like --enable-encoders but for decoders. The
|
| + default is to build all supported decoders.
|
| +
|
| + --enable-match-finders=LIST
|
| + liblzma includes two categories of match finders:
|
| + hash chains and binary trees. Hash chains (hc3 and hc4)
|
| + are quite fast but they don't provide the best compression
|
| + ratio. Binary trees (bt2, bt3 and bt4) give excellent
|
| + compression ratio, but they are slower and need more
|
| + memory than hash chains.
|
| +
|
| + You need to enable at least one match finder to build the
|
| + LZMA1 or LZMA2 filter encoders. Usually hash chains are
|
| + used only in the fast mode, while binary trees are used to
|
| + when the best compression ratio is wanted.
|
| +
|
| + The default is to build all the match finders if LZMA1
|
| + or LZMA2 filter encoders are being built.
|
| +
|
| + --enable-checks=LIST
|
| + liblzma support multiple integrity checks. CRC32 is
|
| + mandatory, and cannot be omitted. See "./configure --help"
|
| + for exact list of available integrity check types.
|
| +
|
| + liblzma and the command line tools can decompress files
|
| + which use unsupported integrity check type, but naturally
|
| + the file integrity cannot be verified in that case.
|
| +
|
| + Disabling integrity checks may remove some symbols from
|
| + the liblzma ABI, so this option should be used only when
|
| + it is known to not cause problems.
|
| +
|
| + --disable-assembler
|
| + liblzma includes some assembler optimizations. Currently
|
| + there is only assembler code for CRC32 and CRC64 for
|
| + 32-bit x86.
|
| +
|
| + All the assembler code in liblzma is position-independent
|
| + code, which is suitable for use in shared libraries and
|
| + position-independent executables. So far only i386
|
| + instructions are used, but the code is optimized for i686
|
| + class CPUs. If you are compiling liblzma exclusively for
|
| + pre-i686 systems, you may want to disable the assembler
|
| + 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.
|
| +
|
| + Unaligned access is enabled by default on x86, x86-64,
|
| + and big endian PowerPC.
|
| +
|
| + --enable-small
|
| + Reduce the size of liblzma by selecting smaller but
|
| + semantically equivalent version of some functions, and
|
| + omit precomputed lookup tables. This option tends to
|
| + make liblzma slightly slower.
|
| +
|
| + Note that while omitting the precomputed tables makes
|
| + liblzma smaller on disk, the tables are still needed at
|
| + run time, and need to be computed at startup. This also
|
| + means that the RAM holding the tables won't be shared
|
| + between applications linked against shared liblzma.
|
| +
|
| + This option doesn't modify CFLAGS to tell the compiler
|
| + to optimize for size. You need to add -Os or equivalent
|
| + flag(s) to CFLAGS manually.
|
| +
|
| + --enable-assume-ram=SIZE
|
| + On the most common operating systems, XZ Utils is able to
|
| + detect the amount of physical memory on the system. This
|
| + information is used to set the default memory usage limit.
|
| +
|
| + On some systems, there is no code to detect the amount of
|
| + RAM though. Using --enable-assume-ram one can set how much
|
| + memory to assume on these systems. SIZE is given as MiB.
|
| + The default is 128 MiB, which allows decompressing files
|
| + created with "xz -9".
|
| +
|
| + Feel free to send patches to add support for detecting
|
| + the amount of RAM on the operating system you use. See
|
| + src/common/tuklib_physmem.c for details.
|
| +
|
| + --disable-threads
|
| + Disable threading support. This makes some things
|
| + thread-unsafe, meaning that if multithreaded application
|
| + calls liblzma functions from more than one thread,
|
| + something bad may happen.
|
| +
|
| + Use this option if threading support causes you trouble,
|
| + or if you know that you will use liblzma only from
|
| + single-threaded applications and want to avoid dependency
|
| + on libpthread.
|
| +
|
| + --enable-dynamic=TYPE
|
| + Specify how command line tools should be linked against
|
| + liblzma. Possible TYPES:
|
| +
|
| + yes All command line tools are linked against
|
| + shared liblzma (if shared liblzma was built).
|
| + This is equivalent to --enable-dynamic (i.e.
|
| + no =TYPE).
|
| +
|
| + mixed Some tools are linked against static liblzma
|
| + and some against shared liblzma. This is the
|
| + default and recommended way.
|
| +
|
| + no All command line tools are linked against
|
| + static liblzma (if static liblzma was built).
|
| + This is equivalent to --disable-dynamic.
|
| +
|
| + This option is mostly useful for packagers, if distro
|
| + policy requires linking against shared libaries. See the
|
| + file PACKAGERS for more information about pros and cons
|
| + of this option.
|
| +
|
| + --enable-debug
|
| + This enables the assert() macro and possibly some other
|
| + run-time consistency checks. It makes the code slower, so
|
| + you normally don't want to have this enabled.
|
| +
|
| + --enable-werror
|
| + If building with GCC, make all compiler warnings an error,
|
| + that abort the compilation. This may help catching bugs,
|
| + and should work on most systems. This has no effect on the
|
| + resulting binaries.
|
| +
|
| +
|
| +3. xzgrep and other scripts
|
| +---------------------------
|
| +
|
| +3.1. Dependencies
|
| +
|
| + POSIX shell (sh) and bunch of other standard POSIX tools are required
|
| + to run the scripts. The configure script tries to find a POSIX
|
| + compliant sh, but if it fails, you can force the shell by passing
|
| + gl_cv_posix_shell=/path/to/posix-sh as an argument to the configure
|
| + script.
|
| +
|
| + Some of the scripts require also mktemp. The original mktemp can be
|
| + found from <http://www.mktemp.org/>. On GNU, most will use the mktemp
|
| + program from GNU coreutils instead of the original implementation.
|
| + Both mktemp versions are fine for XZ Utils (and practically for
|
| + everything else too).
|
| +
|
| +
|
| +3.2. PATH
|
| +
|
| + The scripts assume that the required tools (standard POSIX utilities,
|
| + mktemp, and xz) are in PATH; the scripts don't set the PATH themselves.
|
| + Some people like this while some think this is a bug. Those in the
|
| + latter group can easily patch the scripts before running the configure
|
| + script by taking advantage of a placeholder line in the scripts.
|
| +
|
| + For example, to make the scripts prefix /usr/bin:/bin to PATH:
|
| +
|
| + perl -pi -e 's|^#SET_PATH.*$|PATH=/usr/bin:/bin:\$PATH|' \
|
| + src/scripts/xz*.in
|
| +
|
| +
|
| +4. Troubleshooting
|
| +------------------
|
| +
|
| +4.1. "No C99 compiler was found."
|
| +
|
| + You need a C99 compiler to build XZ Utils. If the configure script
|
| + cannot find a C99 compiler and you think you have such a compiler
|
| + installed, set the compiler command by passing CC=/path/to/c99 as
|
| + an argument to the configure script.
|
| +
|
| + If you get this error even when you think your compiler supports C99,
|
| + you can override the test by passing ac_cv_prog_cc_c99= as an argument
|
| + to the configure script. The test for C99 compiler is not perfect (and
|
| + it is not as easy to make it perfect as it sounds), so sometimes this
|
| + may be needed. You will get a compile error if your compiler doesn't
|
| + support enough C99.
|
| +
|
| +
|
| +4.1. "No POSIX conforming shell (sh) was found."
|
| +
|
| + xzgrep and other scripts need a shell that (roughly) conforms
|
| + to POSIX. The configure script tries to find such a shell. If
|
| + it fails, you can force the shell to be used by passing
|
| + gl_cv_posix_shell=/path/to/posix-sh as an argument to the configure
|
| + script.
|
| +
|
| +
|
| +4.2. configure works but build fails at crc32_x86.S
|
| +
|
| + The easy fix is to pass --disable-assembler to the configure script.
|
| +
|
| + The configure script determines if assembler code can be used by
|
| + looking at the configure triplet; there is currently no check if
|
| + the assembler code can actually actually be built. The x86 assembler
|
| + code should work on x86 GNU/Linux, *BSDs, Solaris, Darwin, MinGW,
|
| + Cygwin, and DJGPP. On other x86 systems, there may be problems and
|
| + the assembler code may need to be disabled with the configure option.
|
| +
|
| + If you get this error when building for x86-64, you have specified or
|
| + the configure script has misguessed your architecture. Pass the
|
| + correct configure triplet using the --build=CPU-COMPANY-SYSTEM option
|
| + (see INSTALL.generic).
|
| +
|
|
|
| Property changes on: xz/INSTALL
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|