]> git.lizzy.rs Git - zlib.git/blob - configure
Fix contrib/vstudio project link errors [Mohanathas].
[zlib.git] / configure
1 #!/bin/sh
2 # configure script for zlib.
3 #
4 # Normally configure builds both a static and a shared library.
5 # If you want to build just a static library, use: ./configure --static
6 #
7 # To impose specific compiler or flags or install directory, use for example:
8 #    prefix=$HOME CC=cc CFLAGS="-O4" ./configure
9 # or for csh/tcsh users:
10 #    (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)
11
12 # Incorrect settings of CC or CFLAGS may prevent creating a shared library.
13 # If you have problems, try without defining CC and CFLAGS before reporting
14 # an error.
15
16 echo -------------------- >> configure.log
17 echo $0 $* >> configure.log
18 date >> configure.log
19
20 if [ -n "${CHOST}" ]; then
21     uname="`echo "${CHOST}" | sed -e 's/^[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)$/\1/' -e 's/^[^-]*-[^-]*-\([^-]*\)-.*$/\1/'`"
22     CROSS_PREFIX="${CHOST}-"
23 fi
24
25 STATICLIB=libz.a
26 VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
27 VER3=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\\.[0-9]*\).*/\1/p' < zlib.h`
28 VER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h`
29 VER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h`
30 if "${CROSS_PREFIX}ar" --version >/dev/null 2>/dev/null || test $? -lt 126; then
31     AR=${AR-"${CROSS_PREFIX}ar"}
32     test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
33 else
34     AR=${AR-"ar"}
35     test -n "${CROSS_PREFIX}" && echo Using ${AR} | tee -a configure.log
36 fi
37 ARFLAGS=${ARFLAGS-"rc"}
38 if "${CROSS_PREFIX}ranlib" --version >/dev/null 2>/dev/null || test $? -lt 126; then
39     RANLIB=${RANLIB-"${CROSS_PREFIX}ranlib"}
40     test -n "${CROSS_PREFIX}" && echo Using ${RANLIB} | tee -a configure.log
41 else
42     RANLIB=${RANLIB-"ranlib"}
43 fi
44 if "${CROSS_PREFIX}nm" --version >/dev/null 2>/dev/null || test $? -lt 126; then
45     NM=${NM-"${CROSS_PREFIX}nm"}
46     test -n "${CROSS_PREFIX}" && echo Using ${NM} | tee -a configure.log
47 else
48     NM=${NM-"nm"}
49 fi
50 LDCONFIG=${LDCONFIG-"ldconfig"}
51 LDSHAREDLIBC="${LDSHAREDLIBC--lc}"
52 ARCHS=
53 prefix=${prefix-/usr/local}
54 exec_prefix=${exec_prefix-'${prefix}'}
55 libdir=${libdir-'${exec_prefix}/lib'}
56 sharedlibdir=${sharedlibdir-'${libdir}'}
57 includedir=${includedir-'${prefix}/include'}
58 mandir=${mandir-'${prefix}/share/man'}
59 shared_ext='.so'
60 shared=1
61 solo=0
62 cover=0
63 zprefix=0
64 build64=0
65 gcc=0
66 old_cc="$CC"
67 old_cflags="$CFLAGS"
68 OBJC='$(OBJZ) $(OBJG)'
69 PIC_OBJC='$(PIC_OBJZ) $(PIC_OBJG)'
70
71 while test $# -ge 1
72 do
73 case "$1" in
74     -h* | --help)
75       echo 'usage:' | tee -a configure.log
76       echo '  configure [--zprefix] [--prefix=PREFIX]  [--eprefix=EXPREFIX]' | tee -a configure.log
77       echo '    [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]' | tee -a configure.log
78       echo '    [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]' | tee -a configure.log
79         exit 0 ;;
80     -p*=* | --prefix=*) prefix=`echo $1 | sed 's/.*=//'`; shift ;;
81     -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/.*=//'`; shift ;;
82     -l*=* | --libdir=*) libdir=`echo $1 | sed 's/.*=//'`; shift ;;
83     --sharedlibdir=*) sharedlibdir=`echo $1 | sed 's/.*=//'`; shift ;;
84     -i*=* | --includedir=*) includedir=`echo $1 | sed 's/.*=//'`;shift ;;
85     -u*=* | --uname=*) uname=`echo $1 | sed 's/.*=//'`;shift ;;
86     -p* | --prefix) prefix="$2"; shift; shift ;;
87     -e* | --eprefix) exec_prefix="$2"; shift; shift ;;
88     -l* | --libdir) libdir="$2"; shift; shift ;;
89     -i* | --includedir) includedir="$2"; shift; shift ;;
90     -s* | --shared | --enable-shared) shared=1; shift ;;
91     -t | --static) shared=0; shift ;;
92     --solo) solo=1; shift ;;
93     --cover) cover=1; shift ;;
94     -z* | --zprefix) zprefix=1; shift ;;
95     -6* | --64) build64=1; shift ;;
96     -a*=* | --archs=*) ARCHS=`echo $1 | sed 's/.*=//'`; shift ;;
97     --sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
98     --localstatedir=*) echo "ignored option: --localstatedir" | tee -a configure.log; shift ;;
99     *) echo "unknown option: $1"; echo "$0 --help for help" | tee -a configure.log; exit 1 ;;
100     esac
101 done
102
103 test=ztest$$
104
105 show()
106 {
107   case "$*" in
108     *$test.c*)
109       echo === $test.c === >> configure.log
110       cat $test.c >> configure.log
111       echo === >> configure.log;;
112   esac
113   echo $* >> configure.log
114 }
115
116 cat > $test.c <<EOF
117 #error error
118 EOF
119 if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
120   try()
121   {
122     show $*
123     test "`( $* ) 2>&1 | tee -a configure.log`" = ""
124   }
125   echo - using any output from compiler to indicate an error >> configure.log
126 else
127   try()
128   {
129     show $*
130     ( $* ) >> configure.log 2>&1
131     ret=$?
132     if test $ret -ne 0; then
133       echo "(exit code "$ret")" >> configure.log
134     fi
135     return $ret
136   }
137 fi
138
139 tryboth()
140 {
141   show $*
142   got=`( $* ) 2>&1`
143   ret=$?
144   printf %s "$got" >> configure.log
145   if test $ret -ne 0; then
146     return $ret
147   fi
148   test "$got" = ""
149 }
150
151 echo >> configure.log
152
153 cat > $test.c <<EOF
154 extern int getchar();
155 int hello() {return getchar();}
156 EOF
157
158 test -z "$CC" && echo Checking for ${CROSS_PREFIX}gcc... | tee -a configure.log
159 cc=${CC-${CROSS_PREFIX}gcc}
160 cflags=${CFLAGS-"-O3"}
161 # to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
162 case "$cc" in
163   *gcc*) gcc=1 ;;
164 esac
165 case `$cc -v 2>&1` in
166   *gcc*) gcc=1 ;;
167 esac
168
169 show $cc -c $cflags $test.c
170 if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) >> configure.log 2>&1; then
171   echo ... using gcc >> configure.log
172   CC="$cc"
173   CFLAGS="${CFLAGS--O3} ${ARCHS}"
174   SFLAGS="${CFLAGS--O3} -fPIC"
175   LDFLAGS="${LDFLAGS} ${ARCHS}"
176   if test $build64 -eq 1; then
177     CFLAGS="${CFLAGS} -m64"
178     SFLAGS="${SFLAGS} -m64"
179   fi
180   if test "${ZLIBGCCWARN}" = "YES"; then
181     CFLAGS="${CFLAGS} -Wall -Wextra -pedantic"
182   fi
183   if test -z "$uname"; then
184     uname=`(uname -s || echo unknown) 2>/dev/null`
185   fi
186   case "$uname" in
187   Linux* | linux* | GNU | GNU/* | solaris*)
188         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"} ;;
189   *BSD | *bsd* | DragonFly)
190         LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"}
191         LDCONFIG="ldconfig -m" ;;
192   CYGWIN* | Cygwin* | cygwin* | OS/2*)
193         EXE='.exe' ;;
194   MINGW* | mingw*)
195 # temporary bypass
196         rm -f $test.[co] $test $test$shared_ext
197         echo "Please use win32/Makefile.gcc instead." | tee -a configure.log
198         exit 1
199         LDSHARED=${LDSHARED-"$cc -shared"}
200         LDSHAREDLIBC=""
201         EXE='.exe' ;;
202   QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
203          # (alain.bonnefoy@icbt.com)
204                  LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"} ;;
205   HP-UX*)
206          LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
207          case `(uname -m || echo unknown) 2>/dev/null` in
208          ia64)
209                  shared_ext='.so'
210                  SHAREDLIB='libz.so' ;;
211          *)
212                  shared_ext='.sl'
213                  SHAREDLIB='libz.sl' ;;
214          esac ;;
215   Darwin* | darwin*)
216              shared_ext='.dylib'
217              SHAREDLIB=libz$shared_ext
218              SHAREDLIBV=libz.$VER$shared_ext
219              SHAREDLIBM=libz.$VER1$shared_ext
220              LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER3"}
221              AR="libtool"
222              ARFLAGS="-o" ;;
223   *)             LDSHARED=${LDSHARED-"$cc -shared"} ;;
224   esac
225 else
226   # find system name and corresponding cc options
227   CC=${CC-cc}
228   gcc=0
229   echo ... using $CC >> configure.log
230   if test -z "$uname"; then
231     uname=`(uname -sr || echo unknown) 2>/dev/null`
232   fi
233   case "$uname" in
234   HP-UX*)    SFLAGS=${CFLAGS-"-O +z"}
235              CFLAGS=${CFLAGS-"-O"}
236 #            LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
237              LDSHARED=${LDSHARED-"ld -b"}
238          case `(uname -m || echo unknown) 2>/dev/null` in
239          ia64)
240              shared_ext='.so'
241              SHAREDLIB='libz.so' ;;
242          *)
243              shared_ext='.sl'
244              SHAREDLIB='libz.sl' ;;
245          esac ;;
246   IRIX*)     SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
247              CFLAGS=${CFLAGS-"-ansi -O2"}
248              LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
249   OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
250              CFLAGS=${CFLAGS-"-O -std1"}
251              LDFLAGS="${LDFLAGS} -Wl,-rpath,."
252              LDSHARED=${LDSHARED-"cc -shared  -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"} ;;
253   OSF1*)     SFLAGS=${CFLAGS-"-O -std1"}
254              CFLAGS=${CFLAGS-"-O -std1"}
255              LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"} ;;
256   QNX*)      SFLAGS=${CFLAGS-"-4 -O"}
257              CFLAGS=${CFLAGS-"-4 -O"}
258              LDSHARED=${LDSHARED-"cc"}
259              RANLIB=${RANLIB-"true"}
260              AR="cc"
261              ARFLAGS="-A" ;;
262   SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
263              CFLAGS=${CFLAGS-"-O3"}
264              LDSHARED=${LDSHARED-"cc -dy -KPIC -G"} ;;
265   SunOS\ 5* | solaris*)
266          LDSHARED=${LDSHARED-"cc -G"}
267          case `(uname -m || echo unknown) 2>/dev/null` in
268          i86*)
269              SFLAGS=${CFLAGS-"-xpentium -fast -KPIC -R."}
270              CFLAGS=${CFLAGS-"-xpentium -fast"} ;;
271          *)
272              SFLAGS=${CFLAGS-"-fast -xcg92 -KPIC -R."}
273              CFLAGS=${CFLAGS-"-fast -xcg92"} ;;
274          esac ;;
275   SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
276              CFLAGS=${CFLAGS-"-O2"}
277              LDSHARED=${LDSHARED-"ld"} ;;
278   SunStudio\ 9*) SFLAGS=${CFLAGS-"-fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}
279              CFLAGS=${CFLAGS-"-fast -xtarget=ultra3 -xarch=v9b"}
280              LDSHARED=${LDSHARED-"cc -xarch=v9b"} ;;
281   UNIX_System_V\ 4.2.0)
282              SFLAGS=${CFLAGS-"-KPIC -O"}
283              CFLAGS=${CFLAGS-"-O"}
284              LDSHARED=${LDSHARED-"cc -G"} ;;
285   UNIX_SV\ 4.2MP)
286              SFLAGS=${CFLAGS-"-Kconform_pic -O"}
287              CFLAGS=${CFLAGS-"-O"}
288              LDSHARED=${LDSHARED-"cc -G"} ;;
289   OpenUNIX\ 5)
290              SFLAGS=${CFLAGS-"-KPIC -O"}
291              CFLAGS=${CFLAGS-"-O"}
292              LDSHARED=${LDSHARED-"cc -G"} ;;
293   AIX*)  # Courtesy of dbakker@arrayasolutions.com
294              SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
295              CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
296              LDSHARED=${LDSHARED-"xlc -G"} ;;
297   # send working options for other systems to zlib@gzip.org
298   *)         SFLAGS=${CFLAGS-"-O"}
299              CFLAGS=${CFLAGS-"-O"}
300              LDSHARED=${LDSHARED-"cc -shared"} ;;
301   esac
302 fi
303
304 SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
305 SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
306 SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
307
308 echo >> configure.log
309
310 if test $shared -eq 1; then
311   echo Checking for shared library support... | tee -a configure.log
312   # we must test in two steps (cc then ld), required at least on SunOS 4.x
313   if try $CC -w -c $SFLAGS $test.c &&
314      try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
315     echo Building shared library $SHAREDLIBV with $CC. | tee -a configure.log
316   elif test -z "$old_cc" -a -z "$old_cflags"; then
317     echo No shared library support. | tee -a configure.log
318     shared=0;
319   else
320     echo 'No shared library support; try without defining CC and CFLAGS' | tee -a configure.log
321     shared=0;
322   fi
323 fi
324 if test $shared -eq 0; then
325   LDSHARED="$CC"
326   ALL="static"
327   TEST="all teststatic"
328   SHAREDLIB=""
329   SHAREDLIBV=""
330   SHAREDLIBM=""
331   echo Building static library $STATICLIB version $VER with $CC. | tee -a configure.log
332 else
333   ALL="static shared"
334   TEST="all teststatic testshared"
335 fi
336
337 CPP=${CPP-"$CC -E"}
338 case $CFLAGS in
339   *ASMV*)
340     echo >> configure.log
341     show "$NM $test.o | grep _hello"
342     if test "`$NM $test.o | grep _hello | tee -a configure.log`" = ""; then
343       CPP="$CPP -DNO_UNDERLINE"
344       echo Checking for underline in external names... No. | tee -a configure.log
345     else
346       echo Checking for underline in external names... Yes. | tee -a configure.log
347     fi ;;
348 esac
349
350 echo >> configure.log
351
352 cat > $test.c <<EOF
353 #include <sys/types.h>
354 off64_t dummy = 0;
355 EOF
356 if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
357   CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
358   SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
359   ALL="${ALL} all64"
360   TEST="${TEST} test64"
361   echo "Checking for off64_t... Yes." | tee -a configure.log
362   echo "Checking for fseeko... Yes." | tee -a configure.log
363 else
364   echo "Checking for off64_t... No." | tee -a configure.log
365   echo >> configure.log
366   cat > $test.c <<EOF
367 #include <stdio.h>
368 int main(void) {
369   fseeko(NULL, 0, 0);
370   return 0;
371 }
372 EOF
373   if try $CC $CFLAGS -o $test $test.c; then
374     echo "Checking for fseeko... Yes." | tee -a configure.log
375   else
376     CFLAGS="${CFLAGS} -DNO_FSEEKO"
377     SFLAGS="${SFLAGS} -DNO_FSEEKO"
378     echo "Checking for fseeko... No." | tee -a configure.log
379   fi
380 fi
381
382 echo >> configure.log
383
384 cat > $test.c <<EOF
385 #include <string.h>
386 #include <errno.h>
387 int main() { return strlen(strerror(errno)); }
388 EOF
389 if try $CC $CFLAGS -o $test $test.c; then
390   echo "Checking for strerror... Yes." | tee -a configure.log
391 else
392   CFLAGS="${CFLAGS} -DNO_STRERROR"
393   SFLAGS="${SFLAGS} -DNO_STRERROR"
394   echo "Checking for strerror... No." | tee -a configure.log
395 fi
396
397 cp -p zconf.h.in zconf.h
398
399 echo >> configure.log
400
401 cat > $test.c <<EOF
402 #include <unistd.h>
403 int main() { return 0; }
404 EOF
405 if try $CC -c $CFLAGS $test.c; then
406   sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
407   mv zconf.temp.h zconf.h
408   echo "Checking for unistd.h... Yes." | tee -a configure.log
409 else
410   echo "Checking for unistd.h... No." | tee -a configure.log
411 fi
412
413 echo >> configure.log
414
415 cat > $test.c <<EOF
416 #include <stdarg.h>
417 int main() { return 0; }
418 EOF
419 if try $CC -c $CFLAGS $test.c; then
420   sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
421   mv zconf.temp.h zconf.h
422   echo "Checking for stdarg.h... Yes." | tee -a configure.log
423 else
424   echo "Checking for stdarg.h... No." | tee -a configure.log
425 fi
426
427 if test $zprefix -eq 1; then
428   sed < zconf.h "/#ifdef Z_PREFIX.* may be/s/def Z_PREFIX\(.*\) may be/ 1\1 was/" > zconf.temp.h
429   mv zconf.temp.h zconf.h
430   echo >> configure.log
431   echo "Using z_ prefix on all symbols." | tee -a configure.log
432 fi
433
434 if test $solo -eq 1; then
435   sed '/#define ZCONF_H/a\
436 #define Z_SOLO
437
438 ' < zconf.h > zconf.temp.h
439   mv zconf.temp.h zconf.h
440 OBJC='$(OBJZ)'
441 PIC_OBJC='$(PIC_OBJZ)'
442 fi
443
444 if test $cover -eq 1; then
445   CFLAGS="${CFLAGS} -fprofile-arcs -ftest-coverage"
446   if test -n "$GCC_CLASSIC"; then
447     CC=$GCC_CLASSIC
448   fi
449 fi
450
451 echo >> configure.log
452
453 cat > $test.c <<EOF
454 #include <stdio.h>
455 #include <stdarg.h>
456 #include "zconf.h"
457 int main()
458 {
459 #ifndef STDC
460   choke me
461 #endif
462   return 0;
463 }
464 EOF
465 if try $CC -c $CFLAGS $test.c; then
466   echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()." | tee -a configure.log
467
468   echo >> configure.log
469   cat > $test.c <<EOF
470 #include <stdio.h>
471 #include <stdarg.h>
472 int mytest(const char *fmt, ...)
473 {
474   char buf[20];
475   va_list ap;
476   va_start(ap, fmt);
477   vsnprintf(buf, sizeof(buf), fmt, ap);
478   va_end(ap);
479   return 0;
480 }
481 int main()
482 {
483   return (mytest("Hello%d\n", 1));
484 }
485 EOF
486   if try $CC $CFLAGS -o $test $test.c; then
487     echo "Checking for vsnprintf() in stdio.h... Yes." | tee -a configure.log
488
489     echo >> configure.log
490     cat >$test.c <<EOF
491 #include <stdio.h>
492 #include <stdarg.h>
493 int mytest(const char *fmt, ...)
494 {
495   int n;
496   char buf[20];
497   va_list ap;
498   va_start(ap, fmt);
499   n = vsnprintf(buf, sizeof(buf), fmt, ap);
500   va_end(ap);
501   return n;
502 }
503 int main()
504 {
505   return (mytest("Hello%d\n", 1));
506 }
507 EOF
508
509     if try $CC -c $CFLAGS $test.c; then
510       echo "Checking for return value of vsnprintf()... Yes." | tee -a configure.log
511     else
512       CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
513       SFLAGS="$SFLAGS -DHAS_vsnprintf_void"
514       echo "Checking for return value of vsnprintf()... No." | tee -a configure.log
515       echo "  WARNING: apparently vsnprintf() does not return a value. zlib" | tee -a configure.log
516       echo "  can build but will be open to possible string-format security" | tee -a configure.log
517       echo "  vulnerabilities." | tee -a configure.log
518     fi
519   else
520     CFLAGS="$CFLAGS -DNO_vsnprintf"
521     SFLAGS="$SFLAGS -DNO_vsnprintf"
522     echo "Checking for vsnprintf() in stdio.h... No." | tee -a configure.log
523     echo "  WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" | tee -a configure.log
524     echo "  can build but will be open to possible buffer-overflow security" | tee -a configure.log
525     echo "  vulnerabilities." | tee -a configure.log
526
527     echo >> configure.log
528     cat >$test.c <<EOF
529 #include <stdio.h>
530 #include <stdarg.h>
531 int mytest(const char *fmt, ...)
532 {
533   int n;
534   char buf[20];
535   va_list ap;
536   va_start(ap, fmt);
537   n = vsprintf(buf, fmt, ap);
538   va_end(ap);
539   return n;
540 }
541 int main()
542 {
543   return (mytest("Hello%d\n", 1));
544 }
545 EOF
546
547     if try $CC -c $CFLAGS $test.c; then
548       echo "Checking for return value of vsprintf()... Yes." | tee -a configure.log
549     else
550       CFLAGS="$CFLAGS -DHAS_vsprintf_void"
551       SFLAGS="$SFLAGS -DHAS_vsprintf_void"
552       echo "Checking for return value of vsprintf()... No." | tee -a configure.log
553       echo "  WARNING: apparently vsprintf() does not return a value. zlib" | tee -a configure.log
554       echo "  can build but will be open to possible string-format security" | tee -a configure.log
555       echo "  vulnerabilities." | tee -a configure.log
556     fi
557   fi
558 else
559   echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()." | tee -a configure.log
560
561   echo >> configure.log
562   cat >$test.c <<EOF
563 #include <stdio.h>
564 int mytest()
565 {
566   char buf[20];
567   snprintf(buf, sizeof(buf), "%s", "foo");
568   return 0;
569 }
570 int main()
571 {
572   return (mytest());
573 }
574 EOF
575
576   if try $CC $CFLAGS -o $test $test.c; then
577     echo "Checking for snprintf() in stdio.h... Yes." | tee -a configure.log
578
579     echo >> configure.log
580     cat >$test.c <<EOF
581 #include <stdio.h>
582 int mytest()
583 {
584   char buf[20];
585   return snprintf(buf, sizeof(buf), "%s", "foo");
586 }
587 int main()
588 {
589   return (mytest());
590 }
591 EOF
592
593     if try $CC -c $CFLAGS $test.c; then
594       echo "Checking for return value of snprintf()... Yes." | tee -a configure.log
595     else
596       CFLAGS="$CFLAGS -DHAS_snprintf_void"
597       SFLAGS="$SFLAGS -DHAS_snprintf_void"
598       echo "Checking for return value of snprintf()... No." | tee -a configure.log
599       echo "  WARNING: apparently snprintf() does not return a value. zlib" | tee -a configure.log
600       echo "  can build but will be open to possible string-format security" | tee -a configure.log
601       echo "  vulnerabilities." | tee -a configure.log
602     fi
603   else
604     CFLAGS="$CFLAGS -DNO_snprintf"
605     SFLAGS="$SFLAGS -DNO_snprintf"
606     echo "Checking for snprintf() in stdio.h... No." | tee -a configure.log
607     echo "  WARNING: snprintf() not found, falling back to sprintf(). zlib" | tee -a configure.log
608     echo "  can build but will be open to possible buffer-overflow security" | tee -a configure.log
609     echo "  vulnerabilities." | tee -a configure.log
610
611     echo >> configure.log
612     cat >$test.c <<EOF
613 #include <stdio.h>
614 int mytest()
615 {
616   char buf[20];
617   return sprintf(buf, "%s", "foo");
618 }
619 int main()
620 {
621   return (mytest());
622 }
623 EOF
624
625     if try $CC -c $CFLAGS $test.c; then
626       echo "Checking for return value of sprintf()... Yes." | tee -a configure.log
627     else
628       CFLAGS="$CFLAGS -DHAS_sprintf_void"
629       SFLAGS="$SFLAGS -DHAS_sprintf_void"
630       echo "Checking for return value of sprintf()... No." | tee -a configure.log
631       echo "  WARNING: apparently sprintf() does not return a value. zlib" | tee -a configure.log
632       echo "  can build but will be open to possible string-format security" | tee -a configure.log
633       echo "  vulnerabilities." | tee -a configure.log
634     fi
635   fi
636 fi
637
638 if test "$gcc" -eq 1; then
639   echo >> configure.log
640   cat > $test.c <<EOF
641 #define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
642 int ZLIB_INTERNAL foo;
643 int main()
644 {
645   return 0;
646 }
647 EOF
648   if tryboth $CC -c $CFLAGS $test.c; then
649     CFLAGS="$CFLAGS -DHAVE_HIDDEN"
650     SFLAGS="$SFLAGS -DHAVE_HIDDEN"
651     echo "Checking for attribute(visibility) support... Yes." | tee -a configure.log
652   else
653     echo "Checking for attribute(visibility) support... No." | tee -a configure.log
654   fi
655 fi
656
657 rm -f $test.[co] $test $test$shared_ext $test.gcno
658
659 # show the results in the log
660 echo >> configure.log
661 echo ALL = $ALL >> configure.log
662 echo AR = $AR >> configure.log
663 echo ARFLAGS = $ARFLAGS >> configure.log
664 echo CC = $CC >> configure.log
665 echo CFLAGS = $CFLAGS >> configure.log
666 echo CPP = $CPP >> configure.log
667 echo EXE = $EXE >> configure.log
668 echo LDCONFIG = $LDCONFIG >> configure.log
669 echo LDFLAGS = $LDFLAGS >> configure.log
670 echo LDSHARED = $LDSHARED >> configure.log
671 echo LDSHAREDLIBC = $LDSHAREDLIBC >> configure.log
672 echo OBJC = $OBJC >> configure.log
673 echo PIC_OBJC = $PIC_OBJC >> configure.log
674 echo RANLIB = $RANLIB >> configure.log
675 echo SFLAGS = $SFLAGS >> configure.log
676 echo SHAREDLIB = $SHAREDLIB >> configure.log
677 echo SHAREDLIBM = $SHAREDLIBM >> configure.log
678 echo SHAREDLIBV = $SHAREDLIBV >> configure.log
679 echo STATICLIB = $STATICLIB >> configure.log
680 echo TEST = $TEST >> configure.log
681 echo VER = $VER >> configure.log
682 echo exec_prefix = $exec_prefix >> configure.log
683 echo includedir = $includedir >> configure.log
684 echo libdir = $libdir >> configure.log
685 echo mandir = $mandir >> configure.log
686 echo prefix = $prefix >> configure.log
687 echo sharedlibdir = $sharedlibdir >> configure.log
688 echo uname = $uname >> configure.log
689 echo -------------------- >> configure.log
690 echo >> configure.log
691 echo >> configure.log
692
693 # udpate Makefile
694 sed < Makefile.in "
695 /^CC *=/s#=.*#=$CC#
696 /^CFLAGS *=/s#=.*#=$CFLAGS#
697 /^SFLAGS *=/s#=.*#=$SFLAGS#
698 /^LDFLAGS *=/s#=.*#=$LDFLAGS#
699 /^LDSHARED *=/s#=.*#=$LDSHARED#
700 /^CPP *=/s#=.*#=$CPP#
701 /^STATICLIB *=/s#=.*#=$STATICLIB#
702 /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
703 /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
704 /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
705 /^AR *=/s#=.*#=$AR#
706 /^ARFLAGS *=/s#=.*#=$ARFLAGS#
707 /^RANLIB *=/s#=.*#=$RANLIB#
708 /^LDCONFIG *=/s#=.*#=$LDCONFIG#
709 /^LDSHAREDLIBC *=/s#=.*#=$LDSHAREDLIBC#
710 /^EXE *=/s#=.*#=$EXE#
711 /^prefix *=/s#=.*#=$prefix#
712 /^exec_prefix *=/s#=.*#=$exec_prefix#
713 /^libdir *=/s#=.*#=$libdir#
714 /^sharedlibdir *=/s#=.*#=$sharedlibdir#
715 /^includedir *=/s#=.*#=$includedir#
716 /^mandir *=/s#=.*#=$mandir#
717 /^OBJC *=/s#=.*#= $OBJC#
718 /^PIC_OBJC *=/s#=.*#= $PIC_OBJC#
719 /^all: */s#:.*#: $ALL#
720 /^test: */s#:.*#: $TEST#
721 " > Makefile
722
723 sed < zlib.pc.in "
724 /^CC *=/s#=.*#=$CC#
725 /^CFLAGS *=/s#=.*#=$CFLAGS#
726 /^CPP *=/s#=.*#=$CPP#
727 /^LDSHARED *=/s#=.*#=$LDSHARED#
728 /^STATICLIB *=/s#=.*#=$STATICLIB#
729 /^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
730 /^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
731 /^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
732 /^AR *=/s#=.*#=$AR#
733 /^ARFLAGS *=/s#=.*#=$ARFLAGS#
734 /^RANLIB *=/s#=.*#=$RANLIB#
735 /^EXE *=/s#=.*#=$EXE#
736 /^prefix *=/s#=.*#=$prefix#
737 /^exec_prefix *=/s#=.*#=$exec_prefix#
738 /^libdir *=/s#=.*#=$libdir#
739 /^sharedlibdir *=/s#=.*#=$sharedlibdir#
740 /^includedir *=/s#=.*#=$includedir#
741 /^mandir *=/s#=.*#=$mandir#
742 /^LDFLAGS *=/s#=.*#=$LDFLAGS#
743 " | sed -e "
744 s/\@VERSION\@/$VER/g;
745 " > zlib.pc