]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Separate arch-specific code into separate folders
authorhansr <hk-git@circlestorm.org>
Tue, 14 Oct 2014 10:08:05 +0000 (12:08 +0200)
committerhansr <hk-git@circlestorm.org>
Tue, 14 Oct 2014 10:08:05 +0000 (12:08 +0200)
13 files changed:
Makefile.in
arch/arm/Makefile.in [new file with mode: 0644]
arch/x86/INDEX [new file with mode: 0644]
arch/x86/Makefile [new file with mode: 0644]
arch/x86/Makefile.in [new file with mode: 0644]
arch/x86/crc_folding.c [moved from crc_folding.c with 100% similarity]
arch/x86/deflate_quick.c [moved from deflate_quick.c with 100% similarity]
arch/x86/fill_window_sse.c [moved from fill_window_sse.c with 100% similarity]
arch/x86/x86.c [moved from x86.c with 100% similarity]
arch/x86/x86.h [moved from x86.h with 100% similarity]
configure
crc32.c
deflate.c

index b79b0e2eef83841e6daf75c7e6d99ef39595b5cd..e9dd54518c0dc10fa6460c158607cf7799a6ed40 100644 (file)
@@ -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 (file)
index 0000000..7eb4127
--- /dev/null
@@ -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 (file)
index 0000000..9ee3802
--- /dev/null
@@ -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 (file)
index 0000000..9ffb5b0
--- /dev/null
@@ -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 (file)
index 0000000..1dd90cf
--- /dev/null
@@ -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
similarity index 100%
rename from crc_folding.c
rename to arch/x86/crc_folding.c
similarity index 100%
rename from deflate_quick.c
rename to arch/x86/deflate_quick.c
similarity index 100%
rename from fill_window_sse.c
rename to arch/x86/fill_window_sse.c
similarity index 100%
rename from x86.c
rename to arch/x86/x86.c
similarity index 100%
rename from x86.h
rename to arch/x86/x86.h
index 965c945205c8e7bbe33504f81ee669dc13d1d587..28a1657782f9255c0d8f80e4cb5733c1d5ec1bd7 100755 (executable)
--- 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 7176907f14d05cd8cc7dfafcb06da1c8f71d9c4a..92499d57cbf305cf8e1cfc77284f8c85bde04dd4 100644 (file)
--- 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);
index f8afb307c0580da7646ec4fd838e63f4348c3451..002fca4aab982116769abd4aabb938298b715b33 100644 (file)
--- 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[] =