configure 21.7 KB
Newer Older
M
Mark Adler 已提交
1
#!/bin/sh
M
Mark Adler 已提交
2
# configure script for zlib.
M
Mark Adler 已提交
3
#
M
Mark Adler 已提交
4 5
# Normally configure builds both a static and a shared library.
# If you want to build just a static library, use: ./configure --static
M
Mark Adler 已提交
6
#
M
Mark Adler 已提交
7 8 9 10 11
# To impose specific compiler or flags or install directory, use for example:
#    prefix=$HOME CC=cc CFLAGS="-O4" ./configure
# or for csh/tcsh users:
#    (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)

M
Mark Adler 已提交
12 13 14 15
# Incorrect settings of CC or CFLAGS may prevent creating a shared library.
# If you have problems, try without defining CC and CFLAGS before reporting
# an error.

16 17 18 19
echo -------------------- >> configure.log
echo $0 $* >> configure.log
date >> configure.log

M
Mark Adler 已提交
20
if [ -n "${CHOST}" ]; then
M
Mark Adler 已提交
21
    uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
M
Mark Adler 已提交
22 23 24
    CROSS_PREFIX="${CHOST}-"
fi

M
Mark Adler 已提交
25
STATICLIB=libz.a
M
Mark Adler 已提交
26
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
M
Mark Adler 已提交
27
VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`
M
Mark Adler 已提交
28 29
VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
M
Mark Adler 已提交
30
if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
M
Mark Adler 已提交
31
    AR=${AR-"${CROSS_PREFIX}ar"}
32
    test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
M
Mark Adler 已提交
33 34
else
    AR=${AR-"ar"}
35
    test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
M
Mark Adler 已提交
36
fi
37
ARFLAGS=${ARFLAGS-"rc"}
M
Mark Adler 已提交
38
if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
M
Mark Adler 已提交
39
    RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
40
    test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
M
Mark Adler 已提交
41 42 43
else
    RANLIB=${RANLIB-"ranlib"}
fi
M
Mark Adler 已提交
44
if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
M
Mark Adler 已提交
45
    NM=${NM-"${CROSS_PREFIX}nm"}
46
    test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
M
Mark Adler 已提交
47 48 49
else
    NM=${NM-"nm"}
fi
M
Mark Adler 已提交
50
LDCONFIG=${LDCONFIG-"ldconfig"}
M
Mark Adler 已提交
51
LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
M
Mark Adler 已提交
52
ARCHS=
M
Mark Adler 已提交
53
prefix=${prefix-/usr/local}
M
Mark Adler 已提交
54 55
exec_prefix=${exec_prefix-'${prefix}'}
libdir=${libdir-'${exec_prefix}/lib'}
M
Mark Adler 已提交
56
sharedlibdir=${sharedlibdir-'${libdir}'}
M
Mark Adler 已提交
57
includedir=${includedir-'${prefix}/include'}
M
Mark Adler 已提交
58
mandir=${mandir-'${prefix}/share/man'}
M
Mark Adler 已提交
59
shared_ext='.so'
M
Mark Adler 已提交
60
shared=1
61
solo=0
62
cover=0
M
Mark Adler 已提交
63
zprefix=0
M
Mark Adler 已提交
64
build64=0
M
Mark Adler 已提交
65
gcc=0
M
Mark Adler 已提交
66 67
old_cc="$CC"
old_cflags="$CFLAGS"
68 69
OBJC='$(OBJZ) $(OBJG)'
PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'
M
Mark Adler 已提交
70

M
Mark Adler 已提交
71 72
while test $# -ge 1
do
M
Mark Adler 已提交
73
case "$1" in
M
Mark Adler 已提交
74
    -h* | --help)
75 76 77 78
      echo 'usage:' | tee -a configure.log
      echo '  configure [--zprefix] [--prefix=PREFIX]  [--eprefix=EXPREFIX]' | tee -a configure.log
      echo '    [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
      echo '    [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
M
Mark Adler 已提交
79
        exit 0 ;;
M
Mark Adler 已提交
80 81 82
    -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
    -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
    -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
M
Mark Adler 已提交
83
    --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;
M
Mark Adler 已提交
84 85
    -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
    -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
M
Mark Adler 已提交
86 87 88 89 90 91
    -p* | --prefix) prefix="$2"; shift; shift ;;
    -e* | --eprefix) exec_prefix="$2"; shift; shift ;;
    -l* | --libdir) libdir="$2"; shift; shift ;;
    -i* | --includedir) includedir="$2"; shift; shift ;;
    -s* | --shared | --enable-shared) shared=1; shift ;;
    -t | --static) shared=0; shift ;;
92
    --solo) solo=1; shift ;;
93
    --cover) cover=1; shift ;;
M
Mark Adler 已提交
94
    -z* | --zprefix) zprefix=1; shift ;;
M
Mark Adler 已提交
95
    -6* | --64) build64=1; shift ;;
M
Mark Adler 已提交
96
    -a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;
97 98 99
    --sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
    --localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;
    *) echo "unknown option: $1"; echo "$0 --help for help" | tee -a configure.log; exit 1 ;;
M
Mark Adler 已提交
100 101
    esac
done
M
Mark Adler 已提交
102 103

test=ztest$$
104

105 106 107 108 109 110 111 112 113 114 115
show()
{
  case "$*" in
    *$test.c*)
      echo === $test.c === >> configure.log
      cat $test.c >> configure.log
      echo === >> configure.log;;
  esac
  echo $* >> configure.log
}

116 117 118 119 120 121
cat > $test.c <<EOF
#error error
EOF
if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
  try()
  {
122 123
    show $*
    test "`( $* ) 2>&1 | tee -a configure.log`" = ""
124
  }
125
  echo - using any output from compiler to indicate an error >> configure.log
126 127 128
else
  try()
  {
129 130 131 132 133 134 135
    show $*
    ( $* ) >> configure.log 2>&1
    ret=$?
    if test $ret -ne 0; then
      echo "(exit code "$ret")" >> configure.log
    fi
    return $ret
136 137 138
  }
fi

139 140
echo >> configure.log

M
Mark Adler 已提交
141
cat > $test.c <<EOF
M
Mark Adler 已提交
142 143
extern int getchar();
int hello() {return getchar();}
M
Mark Adler 已提交
144
EOF
M
Mark Adler 已提交
145

146
test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
M
Mark Adler 已提交
147
cc=${CC-${CROSS_PREFIX}gcc}
M
Mark Adler 已提交
148
cflags=${CFLAGS-"-O3"}
M
Mark Adler 已提交
149
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
M
Mark Adler 已提交
150
case "$cc" in
M
Mark Adler 已提交
151
  *gcc*) gcc=1 ;;
M
Mark Adler 已提交
152
esac
M
Mark Adler 已提交
153 154 155
case `$cc -v 2>&1` in
  *gcc*) gcc=1 ;;
esac
M
Mark Adler 已提交
156

157 158 159
show $cc -c $cflags $test.c
if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
  echo ... using gcc >> configure.log
M
Mark Adler 已提交
160
  CC="$cc"
M
Mark Adler 已提交
161
  CFLAGS="${CFLAGS--O3} ${ARCHS}"
M
Mark Adler 已提交
162
  SFLAGS="${CFLAGS--O3} -fPIC"
M
Mark Adler 已提交
163
  LDFLAGS="${LDFLAGS} ${ARCHS}"
M
Mark Adler 已提交
164 165 166 167
  if test $build64 -eq 1; then
    CFLAGS="${CFLAGS} -m64"
    SFLAGS="${SFLAGS} -m64"
  fi
M
Mark Adler 已提交
168 169 170
  if test "${ZLIBGCCWARN}" = "YES"; then
    CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
  fi
M
Mark Adler 已提交
171
  if test -z "$uname"; then
M
Mark Adler 已提交
172 173 174
    uname=`(uname -s || echo unknown) 2>/dev/null`
  fi
  case "$uname" in
M
Mark Adler 已提交
175 176
  Linux* | linux* | GNU | GNU/* | *BSD | *bsd* | DragonFly | solaris*)
        LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;
M
Mark Adler 已提交
177 178
  CYGWIN* | Cygwin* | cygwin* | OS/2*)
        EXE='.exe' ;;
M
Mark Adler 已提交
179
  MINGW* | mingw*)
M
Mark Adler 已提交
180 181
# temporary bypass
        rm -f $test.[co] $test $test$shared_ext
182
        echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
M
Mark Adler 已提交
183
        exit 1
M
Mark Adler 已提交
184
        LDSHARED=${LDSHARED-"$cc -shared"}
M
Mark Adler 已提交
185 186
        LDSHAREDLIBC=""
        EXE='.exe' ;;
M
Mark Adler 已提交
187 188
  QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
         # (alain.bonnefoy@icbt.com)
M
Mark Adler 已提交
189
                 LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
M
Mark Adler 已提交
190 191 192 193 194
  HP-UX*)
         LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
         case `(uname -m || echo unknown) 2>/dev/null` in
         ia64)
                 shared_ext='.so'
M
Mark Adler 已提交
195
                 SHAREDLIB='libz.so' ;;
M
Mark Adler 已提交
196
         *)
M
Mark Adler 已提交
197
                 shared_ext='.sl'
M
Mark Adler 已提交
198 199
                 SHAREDLIB='libz.sl' ;;
         esac ;;
M
Mark Adler 已提交
200 201
  Darwin* | darwin*)
             shared_ext='.dylib'
M
Mark Adler 已提交
202 203 204
             SHAREDLIB=libz$shared_ext
             SHAREDLIBV=libz.$VER$shared_ext
             SHAREDLIBM=libz.$VER1$shared_ext
M
Mark Adler 已提交
205 206
             LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
             AR="libtool"
207
             ARFLAGS="-o" ;;
M
Mark Adler 已提交
208
  *)             LDSHARED=${LDSHARED-"$cc -shared"} ;;
M
Mark Adler 已提交
209
  esac
M
Mark Adler 已提交
210 211 212
else
  # find system name and corresponding cc options
  CC=${CC-cc}
M
Mark Adler 已提交
213
  gcc=0
214
  echo ... using $CC >> configure.log
M
Mark Adler 已提交
215
  if test -z "$uname"; then
M
Mark Adler 已提交
216 217 218
    uname=`(uname -sr || echo unknown) 2>/dev/null`
  fi
  case "$uname" in
M
Mark Adler 已提交
219
  HP-UX*)    SFLAGS=${CFLAGS-"-O +z"}
M
Mark Adler 已提交
220 221 222
             CFLAGS=${CFLAGS-"-O"}
#            LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
             LDSHARED=${LDSHARED-"ld -b"}
M
Mark Adler 已提交
223 224 225
         case `(uname -m || echo unknown) 2>/dev/null` in
         ia64)
             shared_ext='.so'
M
Mark Adler 已提交
226
             SHAREDLIB='libz.so' ;;
M
Mark Adler 已提交
227
         *)
M
Mark Adler 已提交
228
             shared_ext='.sl'
M
Mark Adler 已提交
229 230
             SHAREDLIB='libz.sl' ;;
         esac ;;
M
Mark Adler 已提交
231
  IRIX*)     SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
M
Mark Adler 已提交
232
             CFLAGS=${CFLAGS-"-ansi -O2"}
M
Mark Adler 已提交
233
             LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
M
Mark Adler 已提交
234
  OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
235
             CFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
236 237
             LDFLAGS="${LDFLAGS} -Wl,-rpath,."
             LDSHARED=${LDSHARED-"cc -shared  -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;;
M
Mark Adler 已提交
238
  OSF1*)     SFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
239
             CFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
240
             LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
M
Mark Adler 已提交
241 242
  QNX*)      SFLAGS=${CFLAGS-"-4 -O"}
             CFLAGS=${CFLAGS-"-4 -O"}
M
Mark Adler 已提交
243
             LDSHARED=${LDSHARED-"cc"}
M
Mark Adler 已提交
244
             RANLIB=${RANLIB-"true"}
245 246
             AR="cc"
             ARFLAGS="-A" ;;
M
Mark Adler 已提交
247
  SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
M
Mark Adler 已提交
248
             CFLAGS=${CFLAGS-"-O3"}
M
Mark Adler 已提交
249
             LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;
M
Mark Adler 已提交
250 251
  SunOS\ 5* | solaris*)
         LDSHARED=${LDSHARED-"cc -G"}
M
Mark Adler 已提交
252 253 254
         case `(uname -m || echo unknown) 2>/dev/null` in
         i86*)
             SFLAGS=${CFLAGS-"-xpentium -fast -KPIC -R."}
M
Mark Adler 已提交
255
             CFLAGS=${CFLAGS-"-xpentium -fast"} ;;
M
Mark Adler 已提交
256 257
         *)
             SFLAGS=${CFLAGS-"-fast -xcg92 -KPIC -R."}
M
Mark Adler 已提交
258 259
             CFLAGS=${CFLAGS-"-fast -xcg92"} ;;
         esac ;;
M
Mark Adler 已提交
260
  SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
M
Mark Adler 已提交
261
             CFLAGS=${CFLAGS-"-O2"}
M
Mark Adler 已提交
262
             LDSHARED=${LDSHARED-"ld"} ;;
M
Mark Adler 已提交
263 264
  SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}
             CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"}
M
Mark Adler 已提交
265
             LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;;
M
Mark Adler 已提交
266 267 268
  UNIX_System_V\ 4.2.0)
             SFLAGS=${CFLAGS-"-KPIC -O"}
             CFLAGS=${CFLAGS-"-O"}
M
Mark Adler 已提交
269
             LDSHARED=${LDSHARED-"cc -G"} ;;
M
Mark Adler 已提交
270
  UNIX_SV\ 4.2MP)
M
Mark Adler 已提交
271 272
             SFLAGS=${CFLAGS-"-Kconform_pic -O"}
             CFLAGS=${CFLAGS-"-O"}
M
Mark Adler 已提交
273
             LDSHARED=${LDSHARED-"cc -G"} ;;
M
Mark Adler 已提交
274 275 276
  OpenUNIX\ 5)
             SFLAGS=${CFLAGS-"-KPIC -O"}
             CFLAGS=${CFLAGS-"-O"}
M
Mark Adler 已提交
277
             LDSHARED=${LDSHARED-"cc -G"} ;;
M
Mark Adler 已提交
278
  AIX*)  # Courtesy of dbakker@arrayasolutions.com
M
Mark Adler 已提交
279 280
             SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
             CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
M
Mark Adler 已提交
281
             LDSHARED=${LDSHARED-"xlc -G"} ;;
M
Mark Adler 已提交
282
  # send working options for other systems to zlib@gzip.org
M
Mark Adler 已提交
283
  *)         SFLAGS=${CFLAGS-"-O"}
M
Mark Adler 已提交
284
             CFLAGS=${CFLAGS-"-O"}
M
Mark Adler 已提交
285
             LDSHARED=${LDSHARED-"cc -shared"} ;;
M
Mark Adler 已提交
286 287 288
  esac
fi

M
Mark Adler 已提交
289 290 291 292
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}

293 294
echo >> configure.log

M
Mark Adler 已提交
295
if test $shared -eq 1; then
296
  echo Checking for shared library support... | tee -a configure.log
M
Mark Adler 已提交
297
  # we must test in two steps (cc then ld), required at least on SunOS 4.x
298 299
  if try $CC -w -c $SFLAGS $test.c &&
     try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
300
    echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
M
Mark Adler 已提交
301
  elif test -z "$old_cc" -a -z "$old_cflags"; then
302
    echo No shared library support. | tee -a configure.log
M
Mark Adler 已提交
303
    shared=0;
M
Mark Adler 已提交
304
  else
305
    echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log
M
Mark Adler 已提交
306
    shared=0;
M
Mark Adler 已提交
307 308 309
  fi
fi
if test $shared -eq 0; then
M
Mark Adler 已提交
310
  LDSHARED="$CC"
M
Mark Adler 已提交
311 312
  ALL="static"
  TEST="all teststatic"
M
Mark Adler 已提交
313 314 315
  SHAREDLIB=""
  SHAREDLIBV=""
  SHAREDLIBM=""
316
  echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log
M
Mark Adler 已提交
317
else
M
Mark Adler 已提交
318 319
  ALL="static shared"
  TEST="all teststatic testshared"
M
Mark Adler 已提交
320 321
fi

322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
CPP=${CPP-"$CC -E"}
case $CFLAGS in
  *ASMV*)
    echo >> configure.log
    show "$NM $test.o | grep _hello"
    if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
      CPP="$CPP -DNO_UNDERLINE"
      echo Checking for underline in external names... No. | tee -a configure.log
    else
      echo Checking for underline in external names... Yes. | tee -a configure.log
    fi ;;
esac

echo >> configure.log

M
Mark Adler 已提交
337 338 339 340
cat > $test.c <<EOF
#include <sys/types.h>
off64_t dummy = 0;
EOF
341
if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
M
Mark Adler 已提交
342 343
  CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
  SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
M
Mark Adler 已提交
344 345
  ALL="${ALL} all64"
  TEST="${TEST} test64"
346 347
  echo "Checking for off64_t... Yes." | tee -a configure.log
  echo "Checking for fseeko... Yes." | tee -a configure.log
M
Mark Adler 已提交
348
else
349 350
  echo "Checking for off64_t... No." | tee -a configure.log
  echo >> configure.log
M
Mark Adler 已提交
351 352 353 354 355 356 357
  cat > $test.c <<EOF
#include <stdio.h>
int main(void) {
  fseeko(NULL, 0, 0);
  return 0;
}
EOF
358
  if try $CC $CFLAGS -o $test $test.c; then
359
    echo "Checking for fseeko... Yes." | tee -a configure.log
M
Mark Adler 已提交
360 361 362
  else
    CFLAGS="${CFLAGS} -DNO_FSEEKO"
    SFLAGS="${SFLAGS} -DNO_FSEEKO"
363
    echo "Checking for fseeko... No." | tee -a configure.log
M
Mark Adler 已提交
364
  fi
M
Mark Adler 已提交
365
fi
M
Mark Adler 已提交
366

M
Mark Adler 已提交
367
cp -p zconf.h.in zconf.h
M
Mark Adler 已提交
368

369 370
echo >> configure.log

M
Mark Adler 已提交
371 372 373 374
cat > $test.c <<EOF
#include <unistd.h>
int main() { return 0; }
EOF
375
if try $CC -c $CFLAGS $test.c; then
M
Mark Adler 已提交
376
  sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
M
Mark Adler 已提交
377
  mv zconf.temp.h zconf.h
378
  echo "Checking for unistd.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
379
else
380
  echo "Checking for unistd.h... No." | tee -a configure.log
M
Mark Adler 已提交
381 382
fi

383 384
echo >> configure.log

M
Mark Adler 已提交
385 386 387 388
cat > $test.c <<EOF
#include <stdarg.h>
int main() { return 0; }
EOF
389
if try $CC -c $CFLAGS $test.c; then
M
Mark Adler 已提交
390 391
  sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
  mv zconf.temp.h zconf.h
392
  echo "Checking for stdarg.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
393
else
394
  echo "Checking for stdarg.h... No." | tee -a configure.log
M
Mark Adler 已提交
395 396
fi

M
Mark Adler 已提交
397
if test $zprefix -eq 1; then
M
Mark Adler 已提交
398
  sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
M
Mark Adler 已提交
399
  mv zconf.temp.h zconf.h
400 401
  echo >> configure.log
  echo "Using z_ prefix on all symbols." | tee -a configure.log
M
Mark Adler 已提交
402 403
fi

404 405 406 407 408 409 410 411 412 413
if test $solo -eq 1; then
  sed '/#define ZCONF_H/a\
#define Z_SOLO

' < zconf.h > zconf.temp.h
  mv zconf.temp.h zconf.h
OBJC='$(OBJZ)'
PIC_OBJC='$(PIC_OBJZ)'
fi

414 415 416 417
if test $cover -eq 1; then
  CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
fi

418 419
echo >> configure.log

M
Mark Adler 已提交
420
cat > $test.c <<EOF
M
Mark Adler 已提交
421
#include <stdio.h>
M
Mark Adler 已提交
422 423
#include <stdarg.h>
#include "zconf.h"
M
Mark Adler 已提交
424
int main()
M
Mark Adler 已提交
425 426 427 428 429 430 431 432
{
#ifndef STDC
  choke me
#endif
  return 0;
}
EOF

433
if try $CC -c $CFLAGS $test.c; then
434
  echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log
M
Mark Adler 已提交
435

436
  echo >> configure.log
M
Mark Adler 已提交
437 438 439
  cat > $test.c <<EOF
#include <stdio.h>
#include <stdarg.h>
M
Mark Adler 已提交
440
int mytest(const char *fmt, ...)
M
Mark Adler 已提交
441 442 443 444 445 446 447 448 449 450 451 452 453
{
  char buf[20];
  va_list ap;
  va_start(ap, fmt);
  vsnprintf(buf, sizeof(buf), fmt, ap);
  va_end(ap);
  return 0;
}
int main()
{
  return (mytest("Hello%d\n", 1));
}
EOF
454
  if try $CC $CFLAGS -o $test $test.c; then
455
    echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
456

457
    echo >> configure.log
M
Mark Adler 已提交
458 459 460
    cat >$test.c <<EOF
#include <stdio.h>
#include <stdarg.h>
M
Mark Adler 已提交
461
int mytest(const char *fmt, ...)
M
Mark Adler 已提交
462
{
M
Mark Adler 已提交
463
  int n;
M
Mark Adler 已提交
464 465 466
  char buf[20];
  va_list ap;
  va_start(ap, fmt);
M
Mark Adler 已提交
467
  n = vsnprintf(buf, sizeof(buf), fmt, ap);
M
Mark Adler 已提交
468
  va_end(ap);
M
Mark Adler 已提交
469
  return n;
M
Mark Adler 已提交
470 471 472 473 474 475 476
}
int main()
{
  return (mytest("Hello%d\n", 1));
}
EOF

477
    if try $CC -c $CFLAGS $test.c; then
478
      echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
479 480
    else
      CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
M
Mark Adler 已提交
481
      SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
482 483 484 485
      echo "Checking for return value of vsnprintf()... No." | tee -a configure.log
      echo "  WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log
      echo "  can build but will be open to possible string-format security" | tee -a configure.log
      echo "  vulnerabilities." | tee -a configure.log
M
Mark Adler 已提交
486 487 488
    fi
  else
    CFLAGS="$CFLAGS -DNO_vsnprintf"
M
Mark Adler 已提交
489
    SFLAGS="$SFLAGS -DNO_vsnprintf"
490 491 492 493
    echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log
    echo "  WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log
    echo "  can build but will be open to possible buffer-overflow security" | tee -a configure.log
    echo "  vulnerabilities." | tee -a configure.log
M
Mark Adler 已提交
494

495
    echo >> configure.log
M
Mark Adler 已提交
496 497 498
    cat >$test.c <<EOF
#include <stdio.h>
#include <stdarg.h>
M
Mark Adler 已提交
499
int mytest(const char *fmt, ...)
M
Mark Adler 已提交
500
{
M
Mark Adler 已提交
501
  int n;
M
Mark Adler 已提交
502 503 504
  char buf[20];
  va_list ap;
  va_start(ap, fmt);
M
Mark Adler 已提交
505
  n = vsprintf(buf, fmt, ap);
M
Mark Adler 已提交
506
  va_end(ap);
M
Mark Adler 已提交
507
  return n;
M
Mark Adler 已提交
508
}
M
Mark Adler 已提交
509
int main()
M
Mark Adler 已提交
510 511 512 513 514
{
  return (mytest("Hello%d\n", 1));
}
EOF

515
    if try $CC -c $CFLAGS $test.c; then
516
      echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
517 518
    else
      CFLAGS="$CFLAGS -DHAS_vsprintf_void"
M
Mark Adler 已提交
519
      SFLAGS="$SFLAGS -DHAS_vsprintf_void"
520 521 522 523
      echo "Checking for return value of vsprintf()... No." | tee -a configure.log
      echo "  WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log
      echo "  can build but will be open to possible string-format security" | tee -a configure.log
      echo "  vulnerabilities." | tee -a configure.log
M
Mark Adler 已提交
524 525 526
    fi
  fi
else
527
  echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log
M
Mark Adler 已提交
528

529
  echo >> configure.log
M
Mark Adler 已提交
530 531
  cat >$test.c <<EOF
#include <stdio.h>
M
Mark Adler 已提交
532
int mytest()
M
Mark Adler 已提交
533 534 535 536 537
{
  char buf[20];
  snprintf(buf, sizeof(buf), "%s", "foo");
  return 0;
}
M
Mark Adler 已提交
538
int main()
M
Mark Adler 已提交
539 540 541 542 543
{
  return (mytest());
}
EOF

544
  if try $CC $CFLAGS -o $test $test.c; then
545
    echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
546

547
    echo >> configure.log
M
Mark Adler 已提交
548 549
    cat >$test.c <<EOF
#include <stdio.h>
M
Mark Adler 已提交
550
int mytest()
M
Mark Adler 已提交
551 552
{
  char buf[20];
M
Mark Adler 已提交
553
  return snprintf(buf, sizeof(buf), "%s", "foo");
M
Mark Adler 已提交
554
}
M
Mark Adler 已提交
555
int main()
M
Mark Adler 已提交
556 557 558 559 560
{
  return (mytest());
}
EOF

561
    if try $CC -c $CFLAGS $test.c; then
562
      echo "Checking for return value of snprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
563 564
    else
      CFLAGS="$CFLAGS -DHAS_snprintf_void"
M
Mark Adler 已提交
565
      SFLAGS="$SFLAGS -DHAS_snprintf_void"
566 567 568 569
      echo "Checking for return value of snprintf()... No." | tee -a configure.log
      echo "  WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log
      echo "  can build but will be open to possible string-format security" | tee -a configure.log
      echo "  vulnerabilities." | tee -a configure.log
M
Mark Adler 已提交
570 571 572
    fi
  else
    CFLAGS="$CFLAGS -DNO_snprintf"
M
Mark Adler 已提交
573
    SFLAGS="$SFLAGS -DNO_snprintf"
574 575 576 577
    echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log
    echo "  WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log
    echo "  can build but will be open to possible buffer-overflow security" | tee -a configure.log
    echo "  vulnerabilities." | tee -a configure.log
M
Mark Adler 已提交
578

579
    echo >> configure.log
M
Mark Adler 已提交
580 581
    cat >$test.c <<EOF
#include <stdio.h>
M
Mark Adler 已提交
582
int mytest()
M
Mark Adler 已提交
583 584
{
  char buf[20];
M
Mark Adler 已提交
585
  return sprintf(buf, "%s", "foo");
M
Mark Adler 已提交
586
}
M
Mark Adler 已提交
587
int main()
M
Mark Adler 已提交
588 589 590 591 592
{
  return (mytest());
}
EOF

593
    if try $CC -c $CFLAGS $test.c; then
594
      echo "Checking for return value of sprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
595 596
    else
      CFLAGS="$CFLAGS -DHAS_sprintf_void"
M
Mark Adler 已提交
597
      SFLAGS="$SFLAGS -DHAS_sprintf_void"
598 599 600 601
      echo "Checking for return value of sprintf()... No." | tee -a configure.log
      echo "  WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log
      echo "  can build but will be open to possible string-format security" | tee -a configure.log
      echo "  vulnerabilities." | tee -a configure.log
M
Mark Adler 已提交
602 603 604 605
    fi
  fi
fi

M
Mark Adler 已提交
606
if test "$gcc" -eq 1; then
607
  echo >> configure.log
M
Mark Adler 已提交
608 609 610 611 612 613 614
  cat > $test.c <<EOF
#if ((__GNUC__-0) * 10 + __GNUC_MINOR__-0 >= 33)
#  define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
#else
#  define ZLIB_INTERNAL
#endif
int ZLIB_INTERNAL foo;
M
Mark Adler 已提交
615 616 617 618 619
int main()
{
  return 0;
}
EOF
620
  if try $CC -c $CFLAGS $test.c; then
621
    echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log
M
Mark Adler 已提交
622 623 624
  else
    CFLAGS="$CFLAGS -DNO_VIZ"
    SFLAGS="$SFLAGS -DNO_VIZ"
625
    echo "Checking for attribute(visibility) support... No." | tee -a configure.log
M
Mark Adler 已提交
626
  fi
M
Mark Adler 已提交
627 628
fi

629
rm -f $test.[co] $test $test$shared_ext $test.gcno
M
Mark Adler 已提交
630

631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
# show the results in the log
echo >> configure.log
echo ALL = $ALL >> configure.log
echo AR = $AR >> configure.log
echo ARFLAGS = $ARFLAGS >> configure.log
echo CC = $CC >> configure.log
echo CFLAGS = $CFLAGS >> configure.log
echo CPP = $CPP >> configure.log
echo EXE = $EXE >> configure.log
echo LDCONFIG = $LDCONFIG >> configure.log
echo LDFLAGS = $LDFLAGS >> configure.log
echo LDSHARED = $LDSHARED >> configure.log
echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log
echo OBJC = $OBJC >> configure.log
echo PIC_OBJC = $PIC_OBJC >> configure.log
echo RANLIB = $RANLIB >> configure.log
echo SFLAGS = $SFLAGS >> configure.log
echo SHAREDLIB = $SHAREDLIB >> configure.log
echo SHAREDLIBM = $SHAREDLIBM >> configure.log
echo SHAREDLIBV = $SHAREDLIBV >> configure.log
echo STATICLIB = $STATICLIB >> configure.log
echo TEST = $TEST >> configure.log
echo VER = $VER >> configure.log
echo exec_prefix = $exec_prefix >> configure.log
echo includedir = $includedir >> configure.log
echo libdir = $libdir >> configure.log
echo mandir = $mandir >> configure.log
echo prefix = $prefix >> configure.log
echo sharedlibdir = $sharedlibdir >> configure.log
echo uname = $uname >> configure.log
echo -------------------- >> configure.log
echo >> configure.log
echo >> configure.log

M
Mark Adler 已提交
665 666
# udpate Makefile
sed < Makefile.in "
M
Mark Adler 已提交
667 668
/^CC *=/s#=.*#=$CC#
/^CFLAGS *=/s#=.*#=$CFLAGS#
M
Mark Adler 已提交
669
/^SFLAGS *=/s#=.*#=$SFLAGS#
M
Mark Adler 已提交
670
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
M
Mark Adler 已提交
671
/^LDSHARED *=/s#=.*#=$LDSHARED#
M
Mark Adler 已提交
672
/^CPP *=/s#=.*#=$CPP#
M
Mark Adler 已提交
673
/^STATICLIB *=/s#=.*#=$STATICLIB#
M
Mark Adler 已提交
674 675 676
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
677 678
/^AR *=/s#=.*#=$AR#
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
M
Mark Adler 已提交
679
/^RANLIB *=/s#=.*#=$RANLIB#
M
Mark Adler 已提交
680 681
/^LDCONFIG *=/s#=.*#=$LDCONFIG#
/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
M
Mark Adler 已提交
682
/^EXE *=/s#=.*#=$EXE#
M
Mark Adler 已提交
683 684 685
/^prefix *=/s#=.*#=$prefix#
/^exec_prefix *=/s#=.*#=$exec_prefix#
/^libdir *=/s#=.*#=$libdir#
M
Mark Adler 已提交
686
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
M
Mark Adler 已提交
687 688
/^includedir *=/s#=.*#=$includedir#
/^mandir *=/s#=.*#=$mandir#
689 690
/^OBJC *=/s#=.*#= $OBJC#
/^PIC_OBJC *=/s#=.*#= $PIC_OBJC#
M
Mark Adler 已提交
691 692
/^all: */s#:.*#: $ALL#
/^test: */s#:.*#: $TEST#
M
Mark Adler 已提交
693
" > Makefile
M
Mark Adler 已提交
694 695 696 697 698 699

sed < zlib.pc.in "
/^CC *=/s#=.*#=$CC#
/^CFLAGS *=/s#=.*#=$CFLAGS#
/^CPP *=/s#=.*#=$CPP#
/^LDSHARED *=/s#=.*#=$LDSHARED#
M
Mark Adler 已提交
700
/^STATICLIB *=/s#=.*#=$STATICLIB#
M
Mark Adler 已提交
701 702 703
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
704 705
/^AR *=/s#=.*#=$AR#
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
M
Mark Adler 已提交
706 707 708 709 710
/^RANLIB *=/s#=.*#=$RANLIB#
/^EXE *=/s#=.*#=$EXE#
/^prefix *=/s#=.*#=$prefix#
/^exec_prefix *=/s#=.*#=$exec_prefix#
/^libdir *=/s#=.*#=$libdir#
M
Mark Adler 已提交
711
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
M
Mark Adler 已提交
712 713 714 715 716 717
/^includedir *=/s#=.*#=$includedir#
/^mandir *=/s#=.*#=$mandir#
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
" | sed -e "
s/\@VERSION\@/$VER/g;
" > zlib.pc