diff options
-rw-r--r-- | Makefile.in | 58 | ||||
-rw-r--r-- | arch/arm/Makefile.in | 16 | ||||
-rw-r--r-- | arch/x86/INDEX | 3 | ||||
-rw-r--r-- | arch/x86/Makefile | 19 | ||||
-rw-r--r-- | arch/x86/Makefile.in | 40 | ||||
-rw-r--r-- | arch/x86/crc_folding.c (renamed from crc_folding.c) | 0 | ||||
-rw-r--r-- | arch/x86/deflate_quick.c (renamed from deflate_quick.c) | 0 | ||||
-rw-r--r-- | arch/x86/fill_window_sse.c (renamed from fill_window_sse.c) | 0 | ||||
-rw-r--r-- | arch/x86/x86.c (renamed from x86.c) | 0 | ||||
-rw-r--r-- | arch/x86/x86.h (renamed from x86.h) | 0 | ||||
-rwxr-xr-x | configure | 52 | ||||
-rw-r--r-- | crc32.c | 2 | ||||
-rw-r--r-- | deflate.c | 2 |
13 files changed, 125 insertions, 67 deletions
diff --git a/Makefile.in b/Makefile.in index b79b0e2..e9dd545 100644 --- a/Makefile.in +++ b/Makefile.in @@ -45,12 +45,9 @@ TAR=tar SHELL=/bin/sh EXE= -FILL_WINDOW_SSE_o= -FILL_WINDOW_SSE_lo= -CRC_FOLDING_o= -CRC_FOLDING_lo= -DEFLATE_QUICK_o= -DEFLATE_QUICK_lo= +ARCHDIR= +ARCH_STATIC_OBJS= +ARCH_SHARED_OBJS= prefix = /usr/local exec_prefix = ${prefix} @@ -61,11 +58,11 @@ mandir = ${prefix}/share/man man3dir = ${mandir}/man3 pkgconfigdir = ${libdir}/pkgconfig -OBJZ = adler32.o ${CRC_FOLDING_o} ${DEFLATE_QUICK_o} crc32.o ${FILL_WINDOW_SSE_o} deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o +OBJZ = adler32.o crc32.o deflate.o infback.o inffast.o inflate.o inftrees.o trees.o zutil.o $(ARCH_STATIC_OBJS) OBJG = compress.o uncompr.o gzclose.o gzlib.o gzread.o gzwrite.o OBJC = $(OBJZ) $(OBJG) -PIC_OBJZ = adler32.lo ${CRC_FOLDING_lo} ${DEFLATE_QUICK_lo} crc32.lo ${FILL_WINDOW_SSE_lo} deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo +PIC_OBJZ = adler32.lo crc32.lo deflate.lo infback.lo inffast.lo inflate.lo inftrees.lo trees.lo zutil.lo $(ARCH_SHARED_OBJS) PIC_OBJG = compress.lo uncompr.lo gzclose.lo gzlib.lo gzread.lo gzwrite.lo PIC_OBJC = $(PIC_OBJZ) $(PIC_OBJG) @@ -77,16 +74,25 @@ OBJS = $(OBJC) $(OBJA) PIC_OBJS = $(PIC_OBJC) $(PIC_OBJA) -all: static shared +all: $(ARCHDIR) static shared -static: example$(EXE) minigzip$(EXE) +static: subdirs example$(EXE) minigzip$(EXE) -shared: examplesh$(EXE) minigzipsh$(EXE) +shared: subdirs examplesh$(EXE) minigzipsh$(EXE) -all64: example64$(EXE) minigzip64$(EXE) +all64: subdirs example64$(EXE) minigzip64$(EXE) check: test +.PHONY: subdirs $(ARCHDIR) + +subdirs: $(ARCHDIR) + +$(ARCHDIR): + $(MAKE) -C $@ + -mv $@/*.o . + -mv $@/*.lo . + test: all teststatic testshared teststatic: static @@ -120,30 +126,6 @@ test64: all64 fi; \ rm -f $$TMP64 -fill_window_sse.lo: fill_window_sse.c - -@mkdir objs 2>/dev/null || test -d objs - $(CC) $(SFLAGS) -msse2 -DPIC -c -o objs/$*.o $< - -@mv objs/$*.o $@ - -fill_window_sse.o: fill_window_sse.c - ${CC} ${CFLAGS} -msse2 -I. -c -o $@ fill_window_sse.c - -crc_folding.lo: crc_folding.c - -@mkdir objs 2>/dev/null || test -d objs - $(CC) $(SFLAGS) -mpclmul -msse4 -DPIC -c -o objs/$*.o $< - -@mv objs/$*.o $@ - -crc_folding.o: crc_folding.c - ${CC} ${CFLAGS} -mpclmul -msse4 -I. -c -o $@ crc_folding.c - -deflate_quick.lo: deflate_quick.c - -@mkdir objs 2>/dev/null || test -d objs - $(CC) $(SFLAGS) -msse4 -DPIC -c -o objs/$*.o $< - -@mv objs/$*.o $@ - -deflate_quick.o: deflate_quick.c - ${CC} ${CFLAGS} -msse4 -I. -c -o $@ $< - infcover.o: test/infcover.c zlib.h zconf.h $(CC) $(CFLAGS) -I. -c -o $@ test/infcover.c @@ -301,7 +283,7 @@ adler32.o zutil.o: zutil.h zlib.h zconf.h gzclose.o gzlib.o gzread.o gzwrite.o: zlib.h zconf.h gzguts.h compress.o example.o minigzip.o uncompr.o: zlib.h zconf.h crc32.o: zutil.h zlib.h zconf.h crc32.h -deflate.o: deflate.h zutil.h zlib.h zconf.h ${DEFLATE_QUICK_o} +deflate.o: deflate.h zutil.h zlib.h zconf.h infback.o inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inftrees.o: zutil.h zlib.h zconf.h inftrees.h @@ -311,7 +293,7 @@ adler32.lo zutil.lo: zutil.h zlib.h zconf.h gzclose.lo gzlib.lo gzread.lo gzwrite.lo: zlib.h zconf.h gzguts.h compress.lo example.lo minigzip.lo uncompr.lo: zlib.h zconf.h crc32.lo: zutil.h zlib.h zconf.h crc32.h -deflate.lo: deflate.h zutil.h zlib.h zconf.h ${DEFLATE_QUICK_lo} +deflate.lo: deflate.h zutil.h zlib.h zconf.h infback.lo inflate.lo: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h inffast.lo: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inftrees.lo: zutil.h zlib.h zconf.h inftrees.h diff --git a/arch/arm/Makefile.in b/arch/arm/Makefile.in new file mode 100644 index 0000000..7eb4127 --- /dev/null +++ b/arch/arm/Makefile.in @@ -0,0 +1,16 @@ +# Makefile for zlib +# Copyright (C) 1995-2013 Jean-loup Gailly, Mark Adler +# For conditions of distribution and use, see copyright notice in zlib.h + +CC= +CFLAGS= +SFLAGS= + +all: + + +mostlyclean: clean +clean: + rm -f *.o *.lo *~ \ + rm -rf objs + rm -f *.gcda *.gcno *.gcov diff --git a/arch/x86/INDEX b/arch/x86/INDEX new file mode 100644 index 0000000..9ee3802 --- /dev/null +++ b/arch/x86/INDEX @@ -0,0 +1,3 @@ +fill_window_sse.c SSE2 optimized fill_window +deflate_quick.c SSE4 optimized deflate strategy for use as level 1 +crc_folding.c SSE4 + PCLMULQDQ optimized CRC folding implementation diff --git a/arch/x86/Makefile b/arch/x86/Makefile new file mode 100644 index 0000000..9ffb5b0 --- /dev/null +++ b/arch/x86/Makefile @@ -0,0 +1,19 @@ +# Makefile for zlib +# Copyright (C) 1995-2013 Jean-loup Gailly, Mark Adler +# For conditions of distribution and use, see copyright notice in zlib.h + +all: x86.o x86.lo + +x86.o: + gcc -O3 -I. -c -o $@x86.c + +x86.lo: + -@mkdir objs 2>/dev/null || test -d objs + gcc -O3 -I. -c -o $@ x86.c + -@mv objs/$*.o $@ + +mostlyclean: clean +clean: + rm -f *.o *.lo *~ \ + rm -rf objs + rm -f *.gcda *.gcno *.gcov diff --git a/arch/x86/Makefile.in b/arch/x86/Makefile.in new file mode 100644 index 0000000..1dd90cf --- /dev/null +++ b/arch/x86/Makefile.in @@ -0,0 +1,40 @@ +# Makefile for zlib +# Copyright (C) 1995-2013 Jean-loup Gailly, Mark Adler +# For conditions of distribution and use, see copyright notice in zlib.h + +CC= +CFLAGS= +SFLAGS= + +all: x86.o x86.lo fill_window_sse.o fill_window_sse.lo deflate_quick.o deflate_quick.lo crc_folding.o crc_folding.lo + +x86.o: + $(CC) $(CFLAGS) -I. -I../../ -c -o $@ x86.c + +x86.lo: + $(CC) $(CFLAGS) -fPIC -I. -I../../ -c -o $@ x86.c + +fill_window_sse.o: + $(CC) $(CFLAGS) -msse2 -I. -I../../ -c -o $@ fill_window_sse.c + +fill_window_sse.lo: + $(CC) $(SFLAGS) -msse2 -DPIC -I. -I../../ -c -o $@ fill_window_sse.c + +deflate_quick.o: + $(CC) $(CFLAGS) -msse4 -I. -I../../ -c -o $@ deflate_quick.c + +deflate_quick.lo: + $(CC) $(SFLAGS) -msse4 -DPIC -I. -I../../ -c -o $@ deflate_quick.c + +crc_folding.o: + $(CC) $(CFLAGS) -mpclmul -msse4 -I. -I../../ -c -o $@ crc_folding.c + +crc_folding.lo: + $(CC) $(SFLAGS) -mpclmul -msse4 -DPIC -I. -I../../ -c -o $@ crc_folding.c + + +mostlyclean: clean +clean: + rm -f *.o *.lo *~ \ + rm -rf objs + rm -f *.gcda *.gcno *.gcov diff --git a/crc_folding.c b/arch/x86/crc_folding.c index 87f8c9d..87f8c9d 100644 --- a/crc_folding.c +++ b/arch/x86/crc_folding.c diff --git a/deflate_quick.c b/arch/x86/deflate_quick.c index b481e48..b481e48 100644 --- a/deflate_quick.c +++ b/arch/x86/deflate_quick.c diff --git a/fill_window_sse.c b/arch/x86/fill_window_sse.c index bb4f521..bb4f521 100644 --- a/fill_window_sse.c +++ b/arch/x86/fill_window_sse.c @@ -634,12 +634,15 @@ else HAVE_PCLMULQDQ_INTRIN=0 fi -DEFLATE_QUICK_o="" -DEFLATE_QUICK_lo="" +ARCHDIR="" +ARCH_STATIC_OBJS="" +ARCH_SHARED_OBJS="" # Set ARCH specific FLAGS case "${ARCH}" in i386 | i486 | i586 | i686 | x86_64) + ARCHDIR=arch/x86 + case "${ARCH}" in x86_64) CFLAGS="${CFLAGS} -DX86_64" @@ -654,21 +657,16 @@ case "${ARCH}" in CFLAGS="${CFLAGS} -DUNALIGNED_OK -DADLER32_UNROLL_LESS -DCRC32_UNROLL_LESS" SFLAGS="${SFLAGS} -DUNALIGNED_OK -DADLER32_UNROLL_LESS -DCRC32_UNROLL_LESS" + # Enable arch-specific optimizations? if test $without_optimizations -eq 0; then - OBJC="${OBJC} x86.o" - PIC_OBJC="${PIC_OBJC} x86.lo" - + ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} x86.o" + ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} x86.lo" if test ${HAVE_SSE2_INTRIN} -eq 1; then CFLAGS="${CFLAGS} -UCHECK_SSE2 -DHAVE_SSE2" SFLAGS="${SFLAGS} -UCHECK_SSE2 -DHAVE_SSE2" - FILL_WINDOW_SSE_o="fill_window_sse.o" - FILL_WINDOW_SSE_lo="fill_window_sse.lo" - OBJS="${OBJS} ${FILL_WINDOW_SSE_o}" - PIC_OBJS="${PIC_OBJS} ${FILL_WINDOW_SSE_lo}" - else - FILL_WINDOW_SSE_o="" - FILL_WINDOW_SSE_lo="" + ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} fill_window_sse.o" + ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} fill_window_sse.lo" fi CFLAGS="${CFLAGS} -DUSE_SSE4_2_CRC_HASH" @@ -677,21 +675,18 @@ case "${ARCH}" in if test ${HAVE_PCLMULQDQ_INTRIN} -eq 1; then CFLAGS="${CFLAGS} -DHAVE_PCLMULQDQ" SFLAGS="${SFLAGS} -DHAVE_PCLMULQDQ" - CRC_FOLDING_o="crc_folding.o" - CRC_FOLDING_lo="crc_folding.lo" - OBJS="${OBJS} ${CRC_FOLDING_o}" - PIC_OBJS="${PIC_OBJS} ${CRC_FOLDING_lo}" - else - CRC_FOLDING_o="" - CRC_FOLDING_lo="" + ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} crc_folding.o" + ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} crc_folding.lo" fi fi + + # Enable deflate_quick at level 1? if test $without_new_strategies -eq 0; then CFLAGS="${CFLAGS} -DUSE_QUICK -DUSE_MEDIUM" SFLAGS="${SFLAGS} -DUSE_QUICK -DUSE_MEDIUM" - DEFLATE_QUICK_o="deflate_quick.o" - DEFLATE_QUICK_lo="deflate_quick.lo" + ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} deflate_quick.o" + ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} deflate_quick.lo" fi ;; esac @@ -762,14 +757,17 @@ sed < Makefile.in " /^PIC_OBJC *=/s#=.*#= $PIC_OBJC# /^all: */s#:.*#: $ALL# /^test: */s#:.*#: $TEST# -/^FILL_WINDOW_SSE_o *=/s#=.*#=$FILL_WINDOW_SSE_o# -/^FILL_WINDOW_SSE_lo *=/s#=.*#=$FILL_WINDOW_SSE_lo# -/^CRC_FOLDING_o *=/s#=.*#=$CRC_FOLDING_o# -/^CRC_FOLDING_lo *=/s#=.*#=$CRC_FOLDING_lo# -/^DEFLATE_QUICK_o *=/s#=.*#=$DEFLATE_QUICK_o# -/^DEFLATE_QUICK_lo *=/s#=.*#=$DEFLATE_QUICK_lo# +/^ARCHDIR *=/s#=.*#=$ARCHDIR# +/^ARCH_STATIC_OBJS *=/s#=.*#=$ARCH_STATIC_OBJS# +/^ARCH_SHARED_OBJS *=/s#=.*#=$ARCH_SHARED_OBJS# " > Makefile +sed < $ARCHDIR/Makefile.in " +/^CC *=/s#=.*#=$CC# +/^CFLAGS *=/s#=.*#=$CFLAGS# +/^SFLAGS *=/s#=.*#=$SFLAGS# +" > $ARCHDIR/Makefile + # create zlib.pc with the configure results sed < zlib.pc.in " /^CC *=/s#=.*#=$CC# @@ -438,7 +438,7 @@ uLong ZEXPORT crc32_combine64(crc1, crc2, len2) #include "deflate.h" #ifdef HAVE_PCLMULQDQ -#include "x86.h" +#include "arch/x86/x86.h" extern void ZLIB_INTERNAL crc_fold_init(deflate_state *z_const s); extern void ZLIB_INTERNAL crc_fold_copy(deflate_state *z_const s, unsigned char *dst, z_const unsigned char *src, long len); @@ -52,7 +52,7 @@ #include "deflate.h" #if defined(CHECK_SSE2) || defined(USE_SSE4_2_CRC_HASH) || defined(USE_QUICK) -#include "x86.h" +#include "arch/x86/x86.h" #endif const char deflate_copyright[] = |