summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in58
-rw-r--r--arch/arm/Makefile.in16
-rw-r--r--arch/x86/INDEX3
-rw-r--r--arch/x86/Makefile19
-rw-r--r--arch/x86/Makefile.in40
-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-xconfigure52
-rw-r--r--crc32.c2
-rw-r--r--deflate.c2
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
diff --git a/x86.c b/arch/x86/x86.c
index 097d279..097d279 100644
--- a/x86.c
+++ b/arch/x86/x86.c
diff --git a/x86.h b/arch/x86/x86.h
index 99f4499..99f4499 100644
--- a/x86.h
+++ b/arch/x86/x86.h
diff --git a/configure b/configure
index 965c945..28a1657 100755
--- a/configure
+++ b/configure
@@ -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#
diff --git a/crc32.c b/crc32.c
index 7176907..92499d5 100644
--- a/crc32.c
+++ b/crc32.c
@@ -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);
diff --git a/deflate.c b/deflate.c
index f8afb30..002fca4 100644
--- a/deflate.c
+++ b/deflate.c
@@ -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[] =