From f42ee981668b545ab6d06c6072e262c29605273c Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Tue, 30 Jun 2009 17:09:57 +0300 Subject: Build system fixes Don't use libtool convenience libraries to avoid recently discovered long-standing subtle but somewhat severe bugs in libtool (at least 1.5.22 and 2.2.6 are affected). It was found when porting XZ Utils to Windows but the problem is significant also e.g. on GNU/Linux. Unless --disable-shared is passed to configure, static library built from a set of convenience libraries will contain PIC objects. That is, while libtool builds non-PIC objects too, only PIC objects will be used from the convenience libraries. On 32-bit x86 (tested on mobile XP2400+), using PIC instead of non-PIC makes the decompressor 10 % slower with the default CFLAGS. So while xz was linked against static liblzma by default, it got the slower PIC objects unless --disable-shared was used. I tend develop and benchmark with --disable-shared due to faster build time, so I hadn't noticed the problem in benchmarks earlier. This commit also adds support for building Windows resources into liblzma and executables. --- src/liblzma/lzma/Makefile.am | 51 ------------------------------------------- src/liblzma/lzma/Makefile.inc | 43 ++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 51 deletions(-) delete mode 100644 src/liblzma/lzma/Makefile.am create mode 100644 src/liblzma/lzma/Makefile.inc (limited to 'src/liblzma/lzma') diff --git a/src/liblzma/lzma/Makefile.am b/src/liblzma/lzma/Makefile.am deleted file mode 100644 index 1afe0677..00000000 --- a/src/liblzma/lzma/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -## -## Author: Lasse Collin -## -## This file has been put into the public domain. -## You can do whatever you want with this file. -## - -EXTRA_DIST = fastpos_tablegen.c - -## Using liblzma2 since liblzma is already used for the final library. -noinst_LTLIBRARIES = liblzma2.la -liblzma2_la_CPPFLAGS = \ - -I$(top_srcdir)/src/liblzma/api \ - -I$(top_srcdir)/src/liblzma/common \ - -I$(top_srcdir)/src/liblzma/lz \ - -I$(top_srcdir)/src/liblzma/rangecoder - -liblzma2_la_SOURCES = lzma_common.h - -if COND_ENCODER_LZMA1 -liblzma2_la_SOURCES += \ - fastpos.h \ - lzma_encoder.h \ - lzma_encoder.c \ - lzma_encoder_presets.c \ - lzma_encoder_private.h \ - lzma_encoder_optimum_fast.c \ - lzma_encoder_optimum_normal.c - -if !COND_SMALL -liblzma2_la_SOURCES += fastpos_table.c -endif -endif - -if COND_DECODER_LZMA1 -liblzma2_la_SOURCES += \ - lzma_decoder.c \ - lzma_decoder.h -endif - -if COND_ENCODER_LZMA2 -liblzma2_la_SOURCES += \ - lzma2_encoder.c \ - lzma2_encoder.h -endif - -if COND_DECODER_LZMA2 -liblzma2_la_SOURCES += \ - lzma2_decoder.c \ - lzma2_decoder.h -endif diff --git a/src/liblzma/lzma/Makefile.inc b/src/liblzma/lzma/Makefile.inc new file mode 100644 index 00000000..7fc4d172 --- /dev/null +++ b/src/liblzma/lzma/Makefile.inc @@ -0,0 +1,43 @@ +## +## Author: Lasse Collin +## +## This file has been put into the public domain. +## You can do whatever you want with this file. +## + +EXTRA_DIST += lzma/fastpos_tablegen.c + +liblzma_la_SOURCES += lzma/lzma_common.h + +if COND_ENCODER_LZMA1 +liblzma_la_SOURCES += \ + lzma/fastpos.h \ + lzma/lzma_encoder.h \ + lzma/lzma_encoder.c \ + lzma/lzma_encoder_presets.c \ + lzma/lzma_encoder_private.h \ + lzma/lzma_encoder_optimum_fast.c \ + lzma/lzma_encoder_optimum_normal.c + +if !COND_SMALL +liblzma_la_SOURCES += lzma/fastpos_table.c +endif +endif + +if COND_DECODER_LZMA1 +liblzma_la_SOURCES += \ + lzma/lzma_decoder.c \ + lzma/lzma_decoder.h +endif + +if COND_ENCODER_LZMA2 +liblzma_la_SOURCES += \ + lzma/lzma2_encoder.c \ + lzma/lzma2_encoder.h +endif + +if COND_DECODER_LZMA2 +liblzma_la_SOURCES += \ + lzma/lzma2_decoder.c \ + lzma/lzma2_decoder.h +endif -- cgit v1.2.3