| Index: PACKAGERS
|
| ===================================================================
|
| --- PACKAGERS (revision 50504)
|
| +++ PACKAGERS (working copy)
|
| @@ -7,8 +7,6 @@
|
| 2. Package description
|
| 3. License
|
| 4. configure options
|
| - 4.1. Static vs. dynamic linking of liblzma
|
| - 4.2. Optimizing xzdec and lzmadec
|
| 5. Additional documentation
|
| 6. Extra files
|
| 7. Installing XZ Utils and LZMA Utils in parallel
|
| @@ -141,79 +139,33 @@
|
| --enable-small (*)
|
| --disable-threads (*)
|
|
|
| - (*) These are OK when building xzdec and lzmadec as explained later.
|
| + (*) These are OK when building xzdec and lzmadec as described
|
| + in INSTALL.
|
|
|
| - You may use --enable-werror but be careful with it since it may break
|
| - the build due to some useless warning when the build environment
|
| - changes (like CPU architecture or compiler version).
|
| + xzdec and lzmadec don't provide any functionality that isn't already
|
| + available in the xz tool. Shipping xzdec and lzmadec without size
|
| + optimization and statically-linked liblzma isn't very useful. Doing
|
| + that would give users the xzdec man page, which may make it easier
|
| + for people to find out that such tools exists, but the executables
|
| + wouldn't have any advantage over the full-featured xz.
|
|
|
|
|
| -4.1. Static vs. dynamic linking of liblzma
|
| -
|
| - The default is to link the most important command line tools against
|
| - static liblzma, and the less important tools against shared liblzma.
|
| - This can be changed by passing --enable-dynamic to configure, or by
|
| - not building static libraries at all by passing --disable-static
|
| - to configure. It is mildly recommended that you use the default, but
|
| - the configure options make it easy to do otherwise if the distro policy
|
| - so requires.
|
| -
|
| - On 32-bit x86, linking against static liblzma can give a minor
|
| - speed improvement. Static libraries on x86 are usually compiled as
|
| - position-dependent code (non-PIC) and shared libraries are built as
|
| - position-independent code (PIC). PIC wastes one register, which can
|
| - make the code slightly slower compared to a non-PIC version. (Note
|
| - that this doesn't apply to x86-64.)
|
| -
|
| - Linking against static liblzma avoids a dependency on liblzma shared
|
| - library, and makes it slightly easier to copy the command line tools
|
| - between systems (e.g. quick 'n' dirty emergency recovery of some
|
| - files). It also allows putting the command line tools to /bin while
|
| - leaving liblzma to /usr/lib (assuming that your distribution uses
|
| - such a file system hierarchy), if no other file in /bin would require
|
| - liblzma.
|
| -
|
| - If you don't want to distribute static libraries but you still
|
| - want to link the command line tools against static liblzma, it is
|
| - probably easiest to build both static and shared liblzma, but after
|
| - "make DESTDIR=$PKG install" remove liblzma.a and modify liblzma.la
|
| - to not contain a reference to liblzma.a.
|
| -
|
| -
|
| -4.2. Optimizing xzdec and lzmadec
|
| -
|
| - xzdec and lzmadec are intended to be relatively small instead of
|
| - optimizing for the best speed. Thus, it is a good idea to build
|
| - xzdec and lzmadec separately:
|
| -
|
| - - Only decoder code is needed, so you can speed up the build
|
| - slightly by passing --disable-encoders to configure. This
|
| - shouldn't affect the final size of the executables though,
|
| - because the linker is able to omit the encoder code anyway.
|
| -
|
| - - xzdec and lzmadec will never use multithreading capabilities of
|
| - liblzma. You can avoid dependency on libpthread by passing
|
| - --disable-threads to configure.
|
| -
|
| - - There are and will be no translated messages for xzdec and
|
| - lzmadec, so it is fine to pass also --disable-nls to configure.
|
| -
|
| - - To select somewhat size-optimized variant of some things in
|
| - liblzma, pass --enable-small to configure.
|
| -
|
| - - Tell the compiler to optimize for size instead of speed.
|
| - E.g. with GCC, put -Os into CFLAGS.
|
| -
|
| -
|
| 5. Additional documentation
|
| ---------------------------
|
|
|
| "make install" copies some additional documentation to $docdir
|
| - (--docdir in configure). These a copy of the GNU GPL v2, which can
|
| - be replaced with a symlink if your distro ships with shared copies
|
| - of the common license texts.
|
| + (--docdir in configure). There is a copy of the GNU GPL v2, which
|
| + can be replaced with a symlink if your distro ships with shared
|
| + copies of the common license texts.
|
|
|
| + liblzma API is currently only documented using Doxygen tags in the
|
| + API headers. It hasn't been tested much how good results Doxygen
|
| + is able to make from the tags (e.g. Doxyfile might need tweaking,
|
| + the tagging may need to be improved etc.), so it might be simpler
|
| + to just let people read docs directly from the .h files for now,
|
| + and also save quite a bit in package size at the same time.
|
|
|
| +
|
| 6. Extra files
|
| --------------
|
|
|
| @@ -246,32 +198,32 @@
|
| ----------
|
|
|
| Here is an example for i686 GNU/Linux that
|
| - - links xz against static liblzma;
|
| - - includes only shared liblzma in the final package;
|
| - - links xzdec and lzmadec against static liblzma while
|
| - avoiding libpthread dependency.
|
| + - links xz and lzmainfo against shared liblzma;
|
| + - links size-optimized xzdec and lzmadec against static liblzma
|
| + while avoiding libpthread dependency;
|
| + - includes only shared liblzma in the final package; and
|
| + - copies also the "extra" directory to the package.
|
|
|
| PKG=/tmp/xz-pkg
|
| tar xf xz-x.y.z.tar.gz
|
| cd xz-x.y.z
|
| ./configure \
|
| --prefix=/usr \
|
| - --sysconfdir=/etc \
|
| - CFLAGS='-march=i686 -O2'
|
| + --disable-static \
|
| + --disable-xzdec \
|
| + --disable-lzmadec \
|
| + CFLAGS='-march=i686 -mtune=generic -O2'
|
| make
|
| make DESTDIR=$PKG install-strip
|
| - rm -f $PKG/usr/lib/lib*.a
|
| - sed -i "s/^old_library=.*$/old_library=''/" $PKG/usr/lib/lib*.la
|
| make clean
|
| ./configure \
|
| --prefix=/usr \
|
| - --sysconfdir=/etc \
|
| --disable-shared \
|
| --disable-nls \
|
| --disable-encoders \
|
| --enable-small \
|
| --disable-threads \
|
| - CFLAGS='-march=i686 -Os'
|
| + CFLAGS='-march=i686 -mtune=generic -Os'
|
| make -C src/liblzma
|
| make -C src/xzdec
|
| make -C src/xzdec DESTDIR=$PKG install-strip
|
|
|