]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
configure: Support MinGW, Cygwin and MSYS.
authorYuta NAKAI <nak5124@live.jp>
Fri, 8 May 2015 15:40:28 +0000 (00:40 +0900)
committerHans Kristian Rosbach <hk-git@circlestorm.org>
Mon, 11 May 2015 18:39:45 +0000 (20:39 +0200)
Makefile.in
configure

index 6f59d43219dcb3192824638f3e6ede9d093d50df..9948dcd2e9c624c40451b688103f2062c149e6d9 100644 (file)
@@ -29,6 +29,13 @@ STATICLIB=libz.a
 SHAREDLIB=libz.so
 SHAREDLIBV=libz.so.1.2.8
 SHAREDLIBM=libz.so.1
+IMPORTLIB=
+ifneq ($(IMPORTLIB),)
+       SHAREDTARGET=$(SHAREDLIB)
+else
+       SHAREDTARGET=$(SHAREDLIBV)
+endif
+
 LIBS=$(STATICLIB) $(SHAREDLIBV)
 
 AR=ar
@@ -48,6 +55,7 @@ ARCH_SHARED_OBJS=
 
 prefix = /usr/local
 exec_prefix = ${prefix}
+bindir = ${exec_prefix}/bin
 libdir = ${exec_prefix}/lib
 sharedlibdir = ${libdir}
 includedir = ${prefix}/include
@@ -133,7 +141,7 @@ cover: infcover
        ./infcover
        gcov inf*.c
 
-libz.a: $(OBJS)
+$(STATICLIB): $(OBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
        -@ ($(RANLIB) $@ || true) >/dev/null 2>&1
 
@@ -159,11 +167,13 @@ minigzip64.o: $(SRCDIR)/test/minigzip.c $(SRCDIR)/zlib.h zconf.h
        $(CC) -I. -I$(SRCDIR) $(SFLAGS) -DPIC -c -o objs/$*.o $<
        -@mv objs/$*.o $@
 
-placebo $(SHAREDLIBV): $(PIC_OBJS) libz.a
+placebo $(SHAREDTARGET): $(PIC_OBJS) $(STATICLIB)
        $(LDSHARED) $(SFLAGS) -o $@ $(PIC_OBJS) $(LDSHAREDLIBC) $(LDFLAGS)
+ifeq ($(IMPORTLIB),)
        rm -f $(SHAREDLIB) $(SHAREDLIBM)
        ln -s $@ $(SHAREDLIB)
        ln -s $@ $(SHAREDLIBM)
+endif
        -@rmdir objs
 
 example$(EXE): example.o $(STATICLIB)
@@ -172,11 +182,11 @@ example$(EXE): example.o $(STATICLIB)
 minigzip$(EXE): minigzip.o $(STATICLIB)
        $(CC) $(CFLAGS) -o $@ minigzip.o $(TEST_LDFLAGS)
 
-examplesh$(EXE): example.o $(SHAREDLIBV)
-       $(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDLIBV)
+examplesh$(EXE): example.o $(SHAREDTARGET)
+       $(CC) $(CFLAGS) -o $@ example.o -L. $(SHAREDTARGET)
 
-minigzipsh$(EXE): minigzip.o $(SHAREDLIBV)
-       $(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDLIBV)
+minigzipsh$(EXE): minigzip.o $(SHAREDTARGET)
+       $(CC) $(CFLAGS) -o $@ minigzip.o -L. $(SHAREDTARGET)
 
 example64$(EXE): example64.o $(STATICLIB)
        $(CC) $(CFLAGS) -o $@ example64.o $(TEST_LDFLAGS)
@@ -192,17 +202,28 @@ install-libs: $(LIBS)
        -@if [ ! -d $(DESTDIR)$(pkgconfigdir) ]; then mkdir -p $(DESTDIR)$(pkgconfigdir); fi
        cp $(STATICLIB) $(DESTDIR)$(libdir)
        chmod 644 $(DESTDIR)$(libdir)/$(STATICLIB)
-       -@($(RANLIB) $(DESTDIR)$(libdir)/libz.a || true) >/dev/null 2>&1
-       -@if test -n "$(SHAREDLIBV)"; then \
-         cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir); \
-         echo "cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)"; \
-         chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV); \
-         echo "chmod 755 $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBV)"; \
-         rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
-         ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB); \
-         ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM); \
-         ($(LDCONFIG) || true)  >/dev/null 2>&1; \
-       fi
+       -@($(RANLIB) $(DESTDIR)$(libdir)/$(STATICLIB) || true) >/dev/null 2>&1
+ifneq ($(SHAREDTARGET),)
+ifneq ($(IMPORTLIB),)
+       cp $(IMPORTLIB) $(DESTDIR)$(sharedlibdir)
+       echo "cp $(IMPORTLIB) $(DESTDIR)$(sharedlibdir)"
+       chmod 644 $(DESTDIR)$(sharedlibdir)/$(IMPORTLIB)
+       -@if [ ! -d $(DESTDIR)$(bindir) ]; then mkdir -p $(DESTDIR)$(bindir); fi
+       cp $(SHAREDTARGET) $(DESTDIR)$(bindir)
+       echo "cp $(SHAREDTARGET) $(DESTDIR)$(bindir)"
+       chmod 755 $(DESTDIR)$(bindir)/$(SHAREDTARGET)
+       echo "chmod 755 $(DESTDIR)$(bindir)/$(SHAREDTARGET)"
+else
+       cp $(SHAREDTARGET) $(DESTDIR)$(sharedlibdir)
+       echo "cp $(SHAREDTARGET) $(DESTDIR)$(sharedlibdir)"
+       chmod 644 $(DESTDIR)$(sharedlibdir)/$(SHAREDTARGET)
+       echo "chmod 644 $(DESTDIR)$(sharedlibdir)/$(SHAREDTARGET)"
+       rm -f $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM)
+       ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIB)
+       ln -s $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)/$(SHAREDLIBM)
+       ($(LDCONFIG) || true)  >/dev/null 2>&1
+endif
+endif
        cp $(SRCDIR)/zlib.3 $(DESTDIR)$(man3dir)
        chmod 644 $(DESTDIR)$(man3dir)/zlib.3
        cp zlib.pc $(DESTDIR)$(pkgconfigdir)
@@ -217,10 +238,20 @@ install: install-libs
 
 uninstall:
        cd $(DESTDIR)$(includedir) && rm -f zlib.h zconf.h
-       cd $(DESTDIR)$(libdir) && rm -f libz.a; \
+       cd $(DESTDIR)$(libdir) && rm -f $(STATICLIB); \
        if test -n "$(SHAREDLIBV)" -a -f $(SHAREDLIBV); then \
          rm -f $(SHAREDLIBV) $(SHAREDLIB) $(SHAREDLIBM); \
        fi
+ifneq ($(IMPORTLIB),)
+       cd $(DESTDIR)$(sharedlibdir); \
+       if test -n "$(SHAREDLIB)" -a -f $(IMPORTLIB); then \
+         rm -f $(IMPORTLIB); \
+       fi
+       cd $(DESTDIR)$(bindir); \
+       if test -n "$(SHAREDLIB)" -a -f $(SHAREDLIB); then \
+         rm -f $(SHAREDLIB); \
+       fi
+endif
        cd $(DESTDIR)$(man3dir) && rm -f zlib.3
        cd $(DESTDIR)$(pkgconfigdir) && rm -f zlib.pc
 
@@ -236,6 +267,7 @@ clean:
           example$(EXE) minigzip$(EXE) examplesh$(EXE) minigzipsh$(EXE) \
           example64$(EXE) minigzip64$(EXE) \
           infcover \
+          $(STATICLIB) $(IMPORTLIB) $(SHAREDTARGET) $(SHAREDLIB) $(SHAREDLIBV) $(SHAREDLIBM) \
           libz.* foo.gz so_locations \
           _match.s maketree
        rm -rf objs
index 56a498d2daee68a580415206aea0dfbfb2930d12..7219398c8c09b46499c47985bb83b7d88db1a0f8 100755 (executable)
--- a/configure
+++ b/configure
@@ -50,6 +50,9 @@ esac
 # destination name for static library
 STATICLIB=libz.a
 
+# destination name for windows import library
+IMPORTLIB=
+
 # extract zlib version numbers from zlib.h
 VER=`sed -n -e '/ZLIB_VERSION "/s/.*"\(.*\)".*/\1/p' < ${SRCDIR}/zlib.h`
 VER3=`sed -n -e '/ZLIB_VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < ${SRCDIR}/zlib.h`
@@ -84,6 +87,7 @@ LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
 ARCHS=
 prefix=${prefix-/usr/local}
 exec_prefix=${exec_prefix-'${prefix}'}
+bindir=${bindir-'${exec_prefix}/bin'}
 libdir=${libdir-'${exec_prefix}/lib'}
 sharedlibdir=${sharedlibdir-'${libdir}'}
 includedir=${includedir-'${prefix}/include'}
@@ -206,6 +210,8 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
   if test -z "$uname"; then
     uname=`(uname -s || echo unknown) 2>/dev/null`
   fi
+  # LFS
+  CFLAGS="${CFLAGS} -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200809L"
   case "$uname" in
   Linux* | linux* | GNU | GNU/* | solaris*)
         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}/zlib.map"} ;;
@@ -213,14 +219,29 @@ if test "$gcc" -eq 1 && ($cc -c $test.c) >> configure.log 2>&1; then
         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,${SRCDIR}/zlib.map"}
         LDCONFIG="ldconfig -m" ;;
   CYGWIN* | Cygwin* | cygwin* | OS/2*)
+        SFLAGS="${CFLAGS}"
+        shared_ext='.dll'
+        SHAREDLIB=cygz$shared_ext
+        IMPORTLIB='libz.dll.a'
+        LDSHARED=${LDSHARED-"$cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=${IMPORTLIB}"}
+        LDSHAREDLIBC=''
+        EXE='.exe' ;;
+  MSYS* | msys*)
+        SFLAGS="${CFLAGS}"
+        shared_ext='.dll'
+        SHAREDLIB=msys-z$shared_ext
+        IMPORTLIB='libz.dll.a'
+        LDSHARED=${LDSHARED-"$cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=${IMPORTLIB}"}
+        LDSHAREDLIBC=''
         EXE='.exe' ;;
   MINGW* | mingw*)
-# temporary bypass
-        rm -f $test.[co] $test $test$shared_ext
-        echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
-        leave 1
-        LDSHARED=${LDSHARED-"$cc -shared"}
-        LDSHAREDLIBC=""
+        CFLAGS="${CFLAGS} -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1"
+        SFLAGS="${CFLAGS}"
+        shared_ext='.dll'
+        SHAREDLIB=libz-$VER1$shared_ext
+        IMPORTLIB='libz.dll.a'
+        LDSHARED=${LDSHARED-"$cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=${IMPORTLIB}"}
+        LDSHAREDLIBC=''
         EXE='.exe' ;;
   QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
          # (alain.bonnefoy@icbt.com)
@@ -678,6 +699,7 @@ echo SFLAGS = $SFLAGS >> configure.log
 echo SHAREDLIB = $SHAREDLIB >> configure.log
 echo SHAREDLIBM = $SHAREDLIBM >> configure.log
 echo SHAREDLIBV = $SHAREDLIBV >> configure.log
+echo IMPORTLIB = $IMPORTLIB >> configure.log
 echo SRCDIR = $SRCDIR >> configure.log
 echo BUILDDIR = $BUILDDIR >> configure.log
 echo STATICLIB = $STATICLIB >> configure.log
@@ -706,6 +728,7 @@ sed < $SRCDIR/Makefile.in "
 /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
 /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
 /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
+/^IMPORTLIB *=/s#=.*#=$IMPORTLIB#
 /^AR *=/s#=.*#=$AR#
 /^ARFLAGS *=/s#=.*#=$ARFLAGS#
 /^RANLIB *=/s#=.*#=$RANLIB#
@@ -714,6 +737,7 @@ sed < $SRCDIR/Makefile.in "
 /^EXE *=/s#=.*#=$EXE#
 /^prefix *=/s#=.*#=$prefix#
 /^exec_prefix *=/s#=.*#=$exec_prefix#
+/^bindir *=/s#=.*#=$bindir#
 /^libdir *=/s#=.*#=$libdir#
 /^sharedlibdir *=/s#=.*#=$sharedlibdir#
 /^includedir *=/s#=.*#=$includedir#
@@ -752,12 +776,14 @@ sed < $SRCDIR/zlib.pc.in "
 /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
 /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
 /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
+/^IMPORTLIB *=/s#=.*#=$IMPORTLIB#
 /^AR *=/s#=.*#=$AR#
 /^ARFLAGS *=/s#=.*#=$ARFLAGS#
 /^RANLIB *=/s#=.*#=$RANLIB#
 /^EXE *=/s#=.*#=$EXE#
 /^prefix *=/s#=.*#=$prefix#
 /^exec_prefix *=/s#=.*#=$exec_prefix#
+/^bindir *=/s#=.*#=$bindir#
 /^libdir *=/s#=.*#=$libdir#
 /^sharedlibdir *=/s#=.*#=$sharedlibdir#
 /^includedir *=/s#=.*#=$includedir#