From: Yuta NAKAI Date: Fri, 8 May 2015 15:40:28 +0000 (+0900) Subject: configure: Support MinGW, Cygwin and MSYS. X-Git-Tag: 1.9.9-b1~852 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=899c05eb6e261d1188a1ea45ff351960dbe5731e;p=thirdparty%2Fzlib-ng.git configure: Support MinGW, Cygwin and MSYS. --- diff --git a/Makefile.in b/Makefile.in index 6f59d4321..9948dcd2e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -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 diff --git a/configure b/configure index 56a498d2d..7219398c8 100755 --- 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#