configure 22.3 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 141 142 143 144 145 146 147 148 149 150
tryboth()
{
  show $*
  got=`( $* ) 2>&1`
  ret=$?
  printf %s "$got" >> configure.log
  if test $ret -ne 0; then
    return $ret
  fi
  test "$got" = ""
}

151 152
echo >> configure.log

M
Mark Adler 已提交
153
cat > $test.c <<EOF
M
Mark Adler 已提交
154 155
extern int getchar();
int hello() {return getchar();}
M
Mark Adler 已提交
156
EOF
M
Mark Adler 已提交
157

158
test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
M
Mark Adler 已提交
159
cc=${CC-${CROSS_PREFIX}gcc}
M
Mark Adler 已提交
160
cflags=${CFLAGS-"-O3"}
M
Mark Adler 已提交
161
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
M
Mark Adler 已提交
162
case "$cc" in
M
Mark Adler 已提交
163
  *gcc*) gcc=1 ;;
M
Mark Adler 已提交
164
  *clang*) gcc=1 ;;
M
Mark Adler 已提交
165
esac
M
Mark Adler 已提交
166 167 168
case `$cc -v 2>&1` in
  *gcc*) gcc=1 ;;
esac
M
Mark Adler 已提交
169

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

M
Mark Adler 已提交
305 306 307 308
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}

309 310
echo >> configure.log

M
Mark Adler 已提交
311
if test $shared -eq 1; then
312
  echo Checking for shared library support... | tee -a configure.log
M
Mark Adler 已提交
313
  # we must test in two steps (cc then ld), required at least on SunOS 4.x
314 315
  if try $CC -w -c $SFLAGS $test.c &&
     try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
316
    echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
M
Mark Adler 已提交
317
  elif test -z "$old_cc" -a -z "$old_cflags"; then
318
    echo No shared library support. | tee -a configure.log
M
Mark Adler 已提交
319
    shared=0;
M
Mark Adler 已提交
320
  else
321
    echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log
M
Mark Adler 已提交
322
    shared=0;
M
Mark Adler 已提交
323 324 325
  fi
fi
if test $shared -eq 0; then
M
Mark Adler 已提交
326
  LDSHARED="$CC"
M
Mark Adler 已提交
327 328
  ALL="static"
  TEST="all teststatic"
M
Mark Adler 已提交
329 330 331
  SHAREDLIB=""
  SHAREDLIBV=""
  SHAREDLIBM=""
332
  echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log
M
Mark Adler 已提交
333
else
M
Mark Adler 已提交
334 335
  ALL="static shared"
  TEST="all teststatic testshared"
M
Mark Adler 已提交
336 337
fi

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

M
Mark Adler 已提交
383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
echo >> configure.log

cat > $test.c <<EOF
#include <string.h>
#include <errno.h>
int main() { return strlen(strerror(errno)); }
EOF
if try $CC $CFLAGS -o $test $test.c; then
  echo "Checking for strerror... Yes." | tee -a configure.log
else
  CFLAGS="${CFLAGS} -DNO_STRERROR"
  SFLAGS="${SFLAGS} -DNO_STRERROR"
  echo "Checking for strerror... No." | tee -a configure.log
fi

M
Mark Adler 已提交
398
cp -p zconf.h.in zconf.h
M
Mark Adler 已提交
399

400 401
echo >> configure.log

M
Mark Adler 已提交
402 403 404 405
cat > $test.c <<EOF
#include <unistd.h>
int main() { return 0; }
EOF
406
if try $CC -c $CFLAGS $test.c; then
M
Mark Adler 已提交
407
  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 已提交
408
  mv zconf.temp.h zconf.h
409
  echo "Checking for unistd.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
410
else
411
  echo "Checking for unistd.h... No." | tee -a configure.log
M
Mark Adler 已提交
412 413
fi

414 415
echo >> configure.log

M
Mark Adler 已提交
416 417 418 419
cat > $test.c <<EOF
#include <stdarg.h>
int main() { return 0; }
EOF
420
if try $CC -c $CFLAGS $test.c; then
M
Mark Adler 已提交
421 422
  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
423
  echo "Checking for stdarg.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
424
else
425
  echo "Checking for stdarg.h... No." | tee -a configure.log
M
Mark Adler 已提交
426 427
fi

M
Mark Adler 已提交
428
if test $zprefix -eq 1; then
M
Mark Adler 已提交
429
  sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
M
Mark Adler 已提交
430
  mv zconf.temp.h zconf.h
431 432
  echo >> configure.log
  echo "Using z_ prefix on all symbols." | tee -a configure.log
M
Mark Adler 已提交
433 434
fi

435 436 437 438 439 440 441 442 443 444
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

445 446
if test $cover -eq 1; then
  CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
447 448 449
  if test -n "$GCC_CLASSIC"; then
    CC=$GCC_CLASSIC
  fi
450 451
fi

452 453
echo >> configure.log

M
Mark Adler 已提交
454
cat > $test.c <<EOF
M
Mark Adler 已提交
455
#include <stdio.h>
M
Mark Adler 已提交
456 457
#include <stdarg.h>
#include "zconf.h"
M
Mark Adler 已提交
458
int main()
M
Mark Adler 已提交
459 460 461 462 463 464 465
{
#ifndef STDC
  choke me
#endif
  return 0;
}
EOF
466
if try $CC -c $CFLAGS $test.c; then
467
  echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log
M
Mark Adler 已提交
468

469
  echo >> configure.log
M
Mark Adler 已提交
470 471 472
  cat > $test.c <<EOF
#include <stdio.h>
#include <stdarg.h>
M
Mark Adler 已提交
473
int mytest(const char *fmt, ...)
M
Mark Adler 已提交
474 475 476 477 478 479 480 481 482 483 484 485 486
{
  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
487
  if try $CC $CFLAGS -o $test $test.c; then
488
    echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
M
Mark Adler 已提交
489

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

510
    if try $CC -c $CFLAGS $test.c; then
511
      echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
512 513
    else
      CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
M
Mark Adler 已提交
514
      SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
515 516 517 518
      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 已提交
519 520 521
    fi
  else
    CFLAGS="$CFLAGS -DNO_vsnprintf"
M
Mark Adler 已提交
522
    SFLAGS="$SFLAGS -DNO_vsnprintf"
523 524 525 526
    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 已提交
527

528
    echo >> configure.log
M
Mark Adler 已提交
529 530 531
    cat >$test.c <<EOF
#include <stdio.h>
#include <stdarg.h>
M
Mark Adler 已提交
532
int mytest(const char *fmt, ...)
M
Mark Adler 已提交
533
{
M
Mark Adler 已提交
534
  int n;
M
Mark Adler 已提交
535 536 537
  char buf[20];
  va_list ap;
  va_start(ap, fmt);
M
Mark Adler 已提交
538
  n = vsprintf(buf, fmt, ap);
M
Mark Adler 已提交
539
  va_end(ap);
M
Mark Adler 已提交
540
  return n;
M
Mark Adler 已提交
541
}
M
Mark Adler 已提交
542
int main()
M
Mark Adler 已提交
543 544 545 546 547
{
  return (mytest("Hello%d\n", 1));
}
EOF

548
    if try $CC -c $CFLAGS $test.c; then
549
      echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
550 551
    else
      CFLAGS="$CFLAGS -DHAS_vsprintf_void"
M
Mark Adler 已提交
552
      SFLAGS="$SFLAGS -DHAS_vsprintf_void"
553 554 555 556
      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 已提交
557 558 559
    fi
  fi
else
560
  echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log
M
Mark Adler 已提交
561

562
  echo >> configure.log
M
Mark Adler 已提交
563 564
  cat >$test.c <<EOF
#include <stdio.h>
M
Mark Adler 已提交
565
int mytest()
M
Mark Adler 已提交
566 567 568 569 570
{
  char buf[20];
  snprintf(buf, sizeof(buf), "%s", "foo");
  return 0;
}
M
Mark Adler 已提交
571
int main()
M
Mark Adler 已提交
572 573 574 575 576
{
  return (mytest());
}
EOF

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

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

594
    if try $CC -c $CFLAGS $test.c; then
595
      echo "Checking for return value of snprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
596 597
    else
      CFLAGS="$CFLAGS -DHAS_snprintf_void"
M
Mark Adler 已提交
598
      SFLAGS="$SFLAGS -DHAS_snprintf_void"
599 600 601 602
      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 已提交
603 604 605
    fi
  else
    CFLAGS="$CFLAGS -DNO_snprintf"
M
Mark Adler 已提交
606
    SFLAGS="$SFLAGS -DNO_snprintf"
607 608 609 610
    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 已提交
611

612
    echo >> configure.log
M
Mark Adler 已提交
613 614
    cat >$test.c <<EOF
#include <stdio.h>
M
Mark Adler 已提交
615
int mytest()
M
Mark Adler 已提交
616 617
{
  char buf[20];
M
Mark Adler 已提交
618
  return sprintf(buf, "%s", "foo");
M
Mark Adler 已提交
619
}
M
Mark Adler 已提交
620
int main()
M
Mark Adler 已提交
621 622 623 624 625
{
  return (mytest());
}
EOF

626
    if try $CC -c $CFLAGS $test.c; then
627
      echo "Checking for return value of sprintf()... Yes." | tee -a configure.log
M
Mark Adler 已提交
628 629
    else
      CFLAGS="$CFLAGS -DHAS_sprintf_void"
M
Mark Adler 已提交
630
      SFLAGS="$SFLAGS -DHAS_sprintf_void"
631 632 633 634
      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 已提交
635 636 637 638
    fi
  fi
fi

M
Mark Adler 已提交
639
if test "$gcc" -eq 1; then
640
  echo >> configure.log
M
Mark Adler 已提交
641
  cat > $test.c <<EOF
642
#define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
M
Mark Adler 已提交
643
int ZLIB_INTERNAL foo;
M
Mark Adler 已提交
644 645 646 647 648
int main()
{
  return 0;
}
EOF
649
  if tryboth $CC -c $CFLAGS $test.c; then
650 651
    CFLAGS="$CFLAGS -DHAVE_HIDDEN"
    SFLAGS="$SFLAGS -DHAVE_HIDDEN"
652
    echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log
M
Mark Adler 已提交
653
  else
654
    echo "Checking for attribute(visibility) support... No." | tee -a configure.log
M
Mark Adler 已提交
655
  fi
M
Mark Adler 已提交
656 657
fi

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

660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693
# 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 已提交
694 695
# udpate Makefile
sed < Makefile.in "
M
Mark Adler 已提交
696 697
/^CC *=/s#=.*#=$CC#
/^CFLAGS *=/s#=.*#=$CFLAGS#
M
Mark Adler 已提交
698
/^SFLAGS *=/s#=.*#=$SFLAGS#
M
Mark Adler 已提交
699
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
M
Mark Adler 已提交
700
/^LDSHARED *=/s#=.*#=$LDSHARED#
M
Mark Adler 已提交
701
/^CPP *=/s#=.*#=$CPP#
M
Mark Adler 已提交
702
/^STATICLIB *=/s#=.*#=$STATICLIB#
M
Mark Adler 已提交
703 704 705
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
706 707
/^AR *=/s#=.*#=$AR#
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
M
Mark Adler 已提交
708
/^RANLIB *=/s#=.*#=$RANLIB#
M
Mark Adler 已提交
709 710
/^LDCONFIG *=/s#=.*#=$LDCONFIG#
/^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
M
Mark Adler 已提交
711
/^EXE *=/s#=.*#=$EXE#
M
Mark Adler 已提交
712 713 714
/^prefix *=/s#=.*#=$prefix#
/^exec_prefix *=/s#=.*#=$exec_prefix#
/^libdir *=/s#=.*#=$libdir#
M
Mark Adler 已提交
715
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
M
Mark Adler 已提交
716 717
/^includedir *=/s#=.*#=$includedir#
/^mandir *=/s#=.*#=$mandir#
718 719
/^OBJC *=/s#=.*#= $OBJC#
/^PIC_OBJC *=/s#=.*#= $PIC_OBJC#
M
Mark Adler 已提交
720 721
/^all: */s#:.*#: $ALL#
/^test: */s#:.*#: $TEST#
M
Mark Adler 已提交
722
" > Makefile
M
Mark Adler 已提交
723 724 725 726 727 728

sed < zlib.pc.in "
/^CC *=/s#=.*#=$CC#
/^CFLAGS *=/s#=.*#=$CFLAGS#
/^CPP *=/s#=.*#=$CPP#
/^LDSHARED *=/s#=.*#=$LDSHARED#
M
Mark Adler 已提交
729
/^STATICLIB *=/s#=.*#=$STATICLIB#
M
Mark Adler 已提交
730 731 732
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
733 734
/^AR *=/s#=.*#=$AR#
/^ARFLAGS *=/s#=.*#=$ARFLAGS#
M
Mark Adler 已提交
735 736 737 738 739
/^RANLIB *=/s#=.*#=$RANLIB#
/^EXE *=/s#=.*#=$EXE#
/^prefix *=/s#=.*#=$prefix#
/^exec_prefix *=/s#=.*#=$exec_prefix#
/^libdir *=/s#=.*#=$libdir#
M
Mark Adler 已提交
740
/^sharedlibdir *=/s#=.*#=$sharedlibdir#
M
Mark Adler 已提交
741 742 743 744 745 746
/^includedir *=/s#=.*#=$includedir#
/^mandir *=/s#=.*#=$mandir#
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
" | sed -e "
s/\@VERSION\@/$VER/g;
" > zlib.pc