17dd7cddfSDavid du Colombier#!/bin/sh 27dd7cddfSDavid du Colombier# configure script for zlib. This script is needed only if 37dd7cddfSDavid du Colombier# you wish to build a shared library and your system supports them, 47dd7cddfSDavid du Colombier# of if you need special compiler, flags or install directory. 57dd7cddfSDavid du Colombier# Otherwise, you can just use directly "make test; make install" 67dd7cddfSDavid du Colombier# 7*593dc095SDavid du Colombier# To create a shared library, use "configure --shared"; by default a static 8*593dc095SDavid du Colombier# library is created. If the primitive shared library support provided here 9*593dc095SDavid du Colombier# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz 10*593dc095SDavid du Colombier# 117dd7cddfSDavid du Colombier# To impose specific compiler or flags or install directory, use for example: 127dd7cddfSDavid du Colombier# prefix=$HOME CC=cc CFLAGS="-O4" ./configure 137dd7cddfSDavid du Colombier# or for csh/tcsh users: 147dd7cddfSDavid du Colombier# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) 157dd7cddfSDavid du Colombier# LDSHARED is the command to be used to create a shared library 167dd7cddfSDavid du Colombier 17*593dc095SDavid du Colombier# Incorrect settings of CC or CFLAGS may prevent creating a shared library. 18*593dc095SDavid du Colombier# If you have problems, try without defining CC and CFLAGS before reporting 19*593dc095SDavid du Colombier# an error. 20*593dc095SDavid du Colombier 217dd7cddfSDavid du ColombierLIBS=libz.a 22*593dc095SDavid du ColombierLDFLAGS="-L. ${LIBS}" 237dd7cddfSDavid du ColombierVER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` 24*593dc095SDavid du ColombierVER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` 25*593dc095SDavid du ColombierVER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` 267dd7cddfSDavid du ColombierAR=${AR-"ar rc"} 277dd7cddfSDavid du ColombierRANLIB=${RANLIB-"ranlib"} 287dd7cddfSDavid du Colombierprefix=${prefix-/usr/local} 29*593dc095SDavid du Colombierexec_prefix=${exec_prefix-'${prefix}'} 30*593dc095SDavid du Colombierlibdir=${libdir-'${exec_prefix}/lib'} 31*593dc095SDavid du Colombierincludedir=${includedir-'${prefix}/include'} 32*593dc095SDavid du Colombiermandir=${mandir-'${prefix}/share/man'} 33*593dc095SDavid du Colombiershared_ext='.so' 34*593dc095SDavid du Colombiershared=0 35*593dc095SDavid du Colombiergcc=0 36*593dc095SDavid du Colombierold_cc="$CC" 37*593dc095SDavid du Colombierold_cflags="$CFLAGS" 387dd7cddfSDavid du Colombier 39*593dc095SDavid du Colombierwhile test $# -ge 1 40*593dc095SDavid du Colombierdo 41*593dc095SDavid du Colombiercase "$1" in 42*593dc095SDavid du Colombier -h* | --h*) 43*593dc095SDavid du Colombier echo 'usage:' 44*593dc095SDavid du Colombier echo ' configure [--shared] [--prefix=PREFIX] [--exec_prefix=EXPREFIX]' 45*593dc095SDavid du Colombier echo ' [--libdir=LIBDIR] [--includedir=INCLUDEDIR]' 46*593dc095SDavid du Colombier exit 0;; 47*593dc095SDavid du Colombier -p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; 48*593dc095SDavid du Colombier -e*=* | --e*=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; 49*593dc095SDavid du Colombier -l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; 50*593dc095SDavid du Colombier -i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;; 51*593dc095SDavid du Colombier -p* | --p*) prefix="$2"; shift; shift;; 52*593dc095SDavid du Colombier -e* | --e*) exec_prefix="$2"; shift; shift;; 53*593dc095SDavid du Colombier -l* | --l*) libdir="$2"; shift; shift;; 54*593dc095SDavid du Colombier -i* | --i*) includedir="$2"; shift; shift;; 55*593dc095SDavid du Colombier -s* | --s*) shared=1; shift;; 56*593dc095SDavid du Colombier *) echo "unknown option: $1"; echo "$0 --help for help"; exit 1;; 57*593dc095SDavid du Colombier esac 58*593dc095SDavid du Colombierdone 59*593dc095SDavid du Colombier 607dd7cddfSDavid du Colombiertest=ztest$$ 617dd7cddfSDavid du Colombiercat > $test.c <<EOF 62*593dc095SDavid du Colombierextern int getchar(); 63*593dc095SDavid du Colombierint hello() {return getchar();} 647dd7cddfSDavid du ColombierEOF 65*593dc095SDavid du Colombier 66*593dc095SDavid du Colombiertest -z "$CC" && echo Checking for gcc... 67*593dc095SDavid du Colombiercc=${CC-gcc} 68*593dc095SDavid du Colombiercflags=${CFLAGS-"-O3"} 69*593dc095SDavid du Colombier# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure 70*593dc095SDavid du Colombiercase "$cc" in 71*593dc095SDavid du Colombier *gcc*) gcc=1;; 72*593dc095SDavid du Colombieresac 73*593dc095SDavid du Colombier 74*593dc095SDavid du Colombierif test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then 75*593dc095SDavid du Colombier CC="$cc" 767dd7cddfSDavid du Colombier SFLAGS=${CFLAGS-"-fPIC -O3"} 77*593dc095SDavid du Colombier CFLAGS="$cflags" 78*593dc095SDavid du Colombier case `(uname -s || echo unknown) 2>/dev/null` in 79*593dc095SDavid du Colombier Linux | linux | GNU | GNU/*) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};; 80*593dc095SDavid du Colombier CYGWIN* | Cygwin* | cygwin* | OS/2* ) 81*593dc095SDavid du Colombier EXE='.exe';; 82*593dc095SDavid du Colombier QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 83*593dc095SDavid du Colombier # (alain.bonnefoy@icbt.com) 84*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};; 85*593dc095SDavid du Colombier HP-UX*) LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"} 86*593dc095SDavid du Colombier shared_ext='.sl' 87*593dc095SDavid du Colombier SHAREDLIB='libz.sl';; 88*593dc095SDavid du Colombier Darwin*) shared_ext='.dylib' 89*593dc095SDavid du Colombier SHAREDLIB=libz$shared_ext 90*593dc095SDavid du Colombier SHAREDLIBV=libz.$VER$shared_ext 91*593dc095SDavid du Colombier SHAREDLIBM=libz.$VER1$shared_ext 92*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBV -compatibility_version $VER2 -current_version $VER"};; 93*593dc095SDavid du Colombier *) LDSHARED=${LDSHARED-"$cc -shared"};; 94*593dc095SDavid du Colombier esac 957dd7cddfSDavid du Colombierelse 967dd7cddfSDavid du Colombier # find system name and corresponding cc options 977dd7cddfSDavid du Colombier CC=${CC-cc} 987dd7cddfSDavid du Colombier case `(uname -sr || echo unknown) 2>/dev/null` in 99*593dc095SDavid du Colombier HP-UX*) SFLAGS=${CFLAGS-"-O +z"} 100*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O"} 101*593dc095SDavid du Colombier# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} 102*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"ld -b"} 103*593dc095SDavid du Colombier shared_ext='.sl' 104*593dc095SDavid du Colombier SHAREDLIB='libz.sl';; 1057dd7cddfSDavid du Colombier IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} 1067dd7cddfSDavid du Colombier CFLAGS=${CFLAGS-"-ansi -O2"} 1077dd7cddfSDavid du Colombier LDSHARED=${LDSHARED-"cc -shared"};; 108*593dc095SDavid du Colombier OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"} 109*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O -std1"} 110*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};; 111*593dc095SDavid du Colombier OSF1*) SFLAGS=${CFLAGS-"-O -std1"} 112*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O -std1"} 113*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"cc -shared"};; 1147dd7cddfSDavid du Colombier QNX*) SFLAGS=${CFLAGS-"-4 -O"} 1157dd7cddfSDavid du Colombier CFLAGS=${CFLAGS-"-4 -O"} 1167dd7cddfSDavid du Colombier LDSHARED=${LDSHARED-"cc"} 1177dd7cddfSDavid du Colombier RANLIB=${RANLIB-"true"} 1187dd7cddfSDavid du Colombier AR="cc -A";; 1197dd7cddfSDavid du Colombier SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} 1207dd7cddfSDavid du Colombier CFLAGS=${CFLAGS-"-O3"} 1217dd7cddfSDavid du Colombier LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};; 122*593dc095SDavid du Colombier SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."} 123*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-fast -xcg89"} 124*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"cc -G"};; 125*593dc095SDavid du Colombier SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} 126*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O2"} 127*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"ld"};; 128*593dc095SDavid du Colombier UNIX_System_V\ 4.2.0) 129*593dc095SDavid du Colombier SFLAGS=${CFLAGS-"-KPIC -O"} 1307dd7cddfSDavid du Colombier CFLAGS=${CFLAGS-"-O"} 131*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"cc -G"};; 132*593dc095SDavid du Colombier UNIX_SV\ 4.2MP) 133*593dc095SDavid du Colombier SFLAGS=${CFLAGS-"-Kconform_pic -O"} 134*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O"} 135*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"cc -G"};; 136*593dc095SDavid du Colombier OpenUNIX\ 5) 137*593dc095SDavid du Colombier SFLAGS=${CFLAGS-"-KPIC -O"} 138*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O"} 139*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"cc -G"};; 140*593dc095SDavid du Colombier AIX*) # Courtesy of dbakker@arrayasolutions.com 141*593dc095SDavid du Colombier SFLAGS=${CFLAGS-"-O -qmaxmem=8192"} 142*593dc095SDavid du Colombier CFLAGS=${CFLAGS-"-O -qmaxmem=8192"} 143*593dc095SDavid du Colombier LDSHARED=${LDSHARED-"xlc -G"};; 144*593dc095SDavid du Colombier # send working options for other systems to support@gzip.org 1457dd7cddfSDavid du Colombier *) SFLAGS=${CFLAGS-"-O"} 1467dd7cddfSDavid du Colombier CFLAGS=${CFLAGS-"-O"} 1477dd7cddfSDavid du Colombier LDSHARED=${LDSHARED-"cc -shared"};; 1487dd7cddfSDavid du Colombier esac 1497dd7cddfSDavid du Colombierfi 1507dd7cddfSDavid du Colombier 151*593dc095SDavid du ColombierSHAREDLIB=${SHAREDLIB-"libz$shared_ext"} 152*593dc095SDavid du ColombierSHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"} 153*593dc095SDavid du ColombierSHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"} 154*593dc095SDavid du Colombier 155*593dc095SDavid du Colombierif test $shared -eq 1; then 1567dd7cddfSDavid du Colombier echo Checking for shared library support... 1577dd7cddfSDavid du Colombier # we must test in two steps (cc then ld), required at least on SunOS 4.x 1587dd7cddfSDavid du Colombier if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" && 159*593dc095SDavid du Colombier test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then 1607dd7cddfSDavid du Colombier CFLAGS="$SFLAGS" 161*593dc095SDavid du Colombier LIBS="$SHAREDLIBV" 162*593dc095SDavid du Colombier echo Building shared library $SHAREDLIBV with $CC. 163*593dc095SDavid du Colombier elif test -z "$old_cc" -a -z "$old_cflags"; then 164*593dc095SDavid du Colombier echo No shared library support. 165*593dc095SDavid du Colombier shared=0; 1667dd7cddfSDavid du Colombier else 167*593dc095SDavid du Colombier echo 'No shared library support; try without defining CC and CFLAGS' 168*593dc095SDavid du Colombier shared=0; 169*593dc095SDavid du Colombier fi 170*593dc095SDavid du Colombierfi 171*593dc095SDavid du Colombierif test $shared -eq 0; then 1727dd7cddfSDavid du Colombier LDSHARED="$CC" 1737dd7cddfSDavid du Colombier echo Building static library $LIBS version $VER with $CC. 174*593dc095SDavid du Colombierelse 175*593dc095SDavid du Colombier LDFLAGS="-L. ${SHAREDLIBV}" 1767dd7cddfSDavid du Colombierfi 177*593dc095SDavid du Colombier 178*593dc095SDavid du Colombiercat > $test.c <<EOF 179*593dc095SDavid du Colombier#include <unistd.h> 180*593dc095SDavid du Colombierint main() { return 0; } 181*593dc095SDavid du ColombierEOF 182*593dc095SDavid du Colombierif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 183*593dc095SDavid du Colombier sed < zconf.in.h "/HAVE_UNISTD_H/s%0%1%" > zconf.h 184*593dc095SDavid du Colombier echo "Checking for unistd.h... Yes." 185*593dc095SDavid du Colombierelse 186*593dc095SDavid du Colombier cp -p zconf.in.h zconf.h 187*593dc095SDavid du Colombier echo "Checking for unistd.h... No." 188*593dc095SDavid du Colombierfi 189*593dc095SDavid du Colombier 190*593dc095SDavid du Colombiercat > $test.c <<EOF 191*593dc095SDavid du Colombier#include <stdio.h> 192*593dc095SDavid du Colombier#include <stdarg.h> 193*593dc095SDavid du Colombier#include "zconf.h" 194*593dc095SDavid du Colombier 195*593dc095SDavid du Colombierint main() 196*593dc095SDavid du Colombier{ 197*593dc095SDavid du Colombier#ifndef STDC 198*593dc095SDavid du Colombier choke me 199*593dc095SDavid du Colombier#endif 200*593dc095SDavid du Colombier 201*593dc095SDavid du Colombier return 0; 202*593dc095SDavid du Colombier} 203*593dc095SDavid du ColombierEOF 204*593dc095SDavid du Colombier 205*593dc095SDavid du Colombierif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 206*593dc095SDavid du Colombier echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()" 207*593dc095SDavid du Colombier 208*593dc095SDavid du Colombier cat > $test.c <<EOF 209*593dc095SDavid du Colombier#include <stdio.h> 210*593dc095SDavid du Colombier#include <stdarg.h> 211*593dc095SDavid du Colombier 212*593dc095SDavid du Colombierint mytest(char *fmt, ...) 213*593dc095SDavid du Colombier{ 214*593dc095SDavid du Colombier char buf[20]; 215*593dc095SDavid du Colombier va_list ap; 216*593dc095SDavid du Colombier 217*593dc095SDavid du Colombier va_start(ap, fmt); 218*593dc095SDavid du Colombier vsnprintf(buf, sizeof(buf), fmt, ap); 219*593dc095SDavid du Colombier va_end(ap); 220*593dc095SDavid du Colombier return 0; 221*593dc095SDavid du Colombier} 222*593dc095SDavid du Colombier 223*593dc095SDavid du Colombierint main() 224*593dc095SDavid du Colombier{ 225*593dc095SDavid du Colombier return (mytest("Hello%d\n", 1)); 226*593dc095SDavid du Colombier} 227*593dc095SDavid du ColombierEOF 228*593dc095SDavid du Colombier 229*593dc095SDavid du Colombier if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then 230*593dc095SDavid du Colombier echo "Checking for vsnprintf() in stdio.h... Yes." 231*593dc095SDavid du Colombier 232*593dc095SDavid du Colombier cat >$test.c <<EOF 233*593dc095SDavid du Colombier#include <stdio.h> 234*593dc095SDavid du Colombier#include <stdarg.h> 235*593dc095SDavid du Colombier 236*593dc095SDavid du Colombierint mytest(char *fmt, ...) 237*593dc095SDavid du Colombier{ 238*593dc095SDavid du Colombier int n; 239*593dc095SDavid du Colombier char buf[20]; 240*593dc095SDavid du Colombier va_list ap; 241*593dc095SDavid du Colombier 242*593dc095SDavid du Colombier va_start(ap, fmt); 243*593dc095SDavid du Colombier n = vsnprintf(buf, sizeof(buf), fmt, ap); 244*593dc095SDavid du Colombier va_end(ap); 245*593dc095SDavid du Colombier return n; 246*593dc095SDavid du Colombier} 247*593dc095SDavid du Colombier 248*593dc095SDavid du Colombierint main() 249*593dc095SDavid du Colombier{ 250*593dc095SDavid du Colombier return (mytest("Hello%d\n", 1)); 251*593dc095SDavid du Colombier} 252*593dc095SDavid du ColombierEOF 253*593dc095SDavid du Colombier 254*593dc095SDavid du Colombier if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 255*593dc095SDavid du Colombier echo "Checking for return value of vsnprintf()... Yes." 256*593dc095SDavid du Colombier else 257*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DHAS_vsnprintf_void" 258*593dc095SDavid du Colombier echo "Checking for return value of vsnprintf()... No." 259*593dc095SDavid du Colombier echo " WARNING: apparently vsnprintf() does not return a value. zlib" 260*593dc095SDavid du Colombier echo " can build but will be open to possible string-format security" 261*593dc095SDavid du Colombier echo " vulnerabilities." 262*593dc095SDavid du Colombier fi 263*593dc095SDavid du Colombier else 264*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DNO_vsnprintf" 265*593dc095SDavid du Colombier echo "Checking for vsnprintf() in stdio.h... No." 266*593dc095SDavid du Colombier echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" 267*593dc095SDavid du Colombier echo " can build but will be open to possible buffer-overflow security" 268*593dc095SDavid du Colombier echo " vulnerabilities." 269*593dc095SDavid du Colombier 270*593dc095SDavid du Colombier cat >$test.c <<EOF 271*593dc095SDavid du Colombier#include <stdio.h> 272*593dc095SDavid du Colombier#include <stdarg.h> 273*593dc095SDavid du Colombier 274*593dc095SDavid du Colombierint mytest(char *fmt, ...) 275*593dc095SDavid du Colombier{ 276*593dc095SDavid du Colombier int n; 277*593dc095SDavid du Colombier char buf[20]; 278*593dc095SDavid du Colombier va_list ap; 279*593dc095SDavid du Colombier 280*593dc095SDavid du Colombier va_start(ap, fmt); 281*593dc095SDavid du Colombier n = vsprintf(buf, fmt, ap); 282*593dc095SDavid du Colombier va_end(ap); 283*593dc095SDavid du Colombier return n; 284*593dc095SDavid du Colombier} 285*593dc095SDavid du Colombier 286*593dc095SDavid du Colombierint main() 287*593dc095SDavid du Colombier{ 288*593dc095SDavid du Colombier return (mytest("Hello%d\n", 1)); 289*593dc095SDavid du Colombier} 290*593dc095SDavid du ColombierEOF 291*593dc095SDavid du Colombier 292*593dc095SDavid du Colombier if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 293*593dc095SDavid du Colombier echo "Checking for return value of vsprintf()... Yes." 294*593dc095SDavid du Colombier else 295*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DHAS_vsprintf_void" 296*593dc095SDavid du Colombier echo "Checking for return value of vsprintf()... No." 297*593dc095SDavid du Colombier echo " WARNING: apparently vsprintf() does not return a value. zlib" 298*593dc095SDavid du Colombier echo " can build but will be open to possible string-format security" 299*593dc095SDavid du Colombier echo " vulnerabilities." 300*593dc095SDavid du Colombier fi 301*593dc095SDavid du Colombier fi 302*593dc095SDavid du Colombierelse 303*593dc095SDavid du Colombier echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()" 304*593dc095SDavid du Colombier 305*593dc095SDavid du Colombier cat >$test.c <<EOF 306*593dc095SDavid du Colombier#include <stdio.h> 307*593dc095SDavid du Colombier 308*593dc095SDavid du Colombierint mytest() 309*593dc095SDavid du Colombier{ 310*593dc095SDavid du Colombier char buf[20]; 311*593dc095SDavid du Colombier 312*593dc095SDavid du Colombier snprintf(buf, sizeof(buf), "%s", "foo"); 313*593dc095SDavid du Colombier return 0; 314*593dc095SDavid du Colombier} 315*593dc095SDavid du Colombier 316*593dc095SDavid du Colombierint main() 317*593dc095SDavid du Colombier{ 318*593dc095SDavid du Colombier return (mytest()); 319*593dc095SDavid du Colombier} 320*593dc095SDavid du ColombierEOF 321*593dc095SDavid du Colombier 322*593dc095SDavid du Colombier if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then 323*593dc095SDavid du Colombier echo "Checking for snprintf() in stdio.h... Yes." 324*593dc095SDavid du Colombier 325*593dc095SDavid du Colombier cat >$test.c <<EOF 326*593dc095SDavid du Colombier#include <stdio.h> 327*593dc095SDavid du Colombier 328*593dc095SDavid du Colombierint mytest() 329*593dc095SDavid du Colombier{ 330*593dc095SDavid du Colombier char buf[20]; 331*593dc095SDavid du Colombier 332*593dc095SDavid du Colombier return snprintf(buf, sizeof(buf), "%s", "foo"); 333*593dc095SDavid du Colombier} 334*593dc095SDavid du Colombier 335*593dc095SDavid du Colombierint main() 336*593dc095SDavid du Colombier{ 337*593dc095SDavid du Colombier return (mytest()); 338*593dc095SDavid du Colombier} 339*593dc095SDavid du ColombierEOF 340*593dc095SDavid du Colombier 341*593dc095SDavid du Colombier if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 342*593dc095SDavid du Colombier echo "Checking for return value of snprintf()... Yes." 343*593dc095SDavid du Colombier else 344*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DHAS_snprintf_void" 345*593dc095SDavid du Colombier echo "Checking for return value of snprintf()... No." 346*593dc095SDavid du Colombier echo " WARNING: apparently snprintf() does not return a value. zlib" 347*593dc095SDavid du Colombier echo " can build but will be open to possible string-format security" 348*593dc095SDavid du Colombier echo " vulnerabilities." 349*593dc095SDavid du Colombier fi 350*593dc095SDavid du Colombier else 351*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DNO_snprintf" 352*593dc095SDavid du Colombier echo "Checking for snprintf() in stdio.h... No." 353*593dc095SDavid du Colombier echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" 354*593dc095SDavid du Colombier echo " can build but will be open to possible buffer-overflow security" 355*593dc095SDavid du Colombier echo " vulnerabilities." 356*593dc095SDavid du Colombier 357*593dc095SDavid du Colombier cat >$test.c <<EOF 358*593dc095SDavid du Colombier#include <stdio.h> 359*593dc095SDavid du Colombier 360*593dc095SDavid du Colombierint mytest() 361*593dc095SDavid du Colombier{ 362*593dc095SDavid du Colombier char buf[20]; 363*593dc095SDavid du Colombier 364*593dc095SDavid du Colombier return sprintf(buf, "%s", "foo"); 365*593dc095SDavid du Colombier} 366*593dc095SDavid du Colombier 367*593dc095SDavid du Colombierint main() 368*593dc095SDavid du Colombier{ 369*593dc095SDavid du Colombier return (mytest()); 370*593dc095SDavid du Colombier} 371*593dc095SDavid du ColombierEOF 372*593dc095SDavid du Colombier 373*593dc095SDavid du Colombier if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 374*593dc095SDavid du Colombier echo "Checking for return value of sprintf()... Yes." 375*593dc095SDavid du Colombier else 376*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DHAS_sprintf_void" 377*593dc095SDavid du Colombier echo "Checking for return value of sprintf()... No." 378*593dc095SDavid du Colombier echo " WARNING: apparently sprintf() does not return a value. zlib" 379*593dc095SDavid du Colombier echo " can build but will be open to possible string-format security" 380*593dc095SDavid du Colombier echo " vulnerabilities." 381*593dc095SDavid du Colombier fi 382*593dc095SDavid du Colombier fi 383*593dc095SDavid du Colombierfi 384*593dc095SDavid du Colombier 385*593dc095SDavid du Colombiercat >$test.c <<EOF 386*593dc095SDavid du Colombier#include <errno.h> 387*593dc095SDavid du Colombierint main() { return 0; } 388*593dc095SDavid du ColombierEOF 389*593dc095SDavid du Colombierif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 390*593dc095SDavid du Colombier echo "Checking for errno.h... Yes." 391*593dc095SDavid du Colombierelse 392*593dc095SDavid du Colombier echo "Checking for errno.h... No." 393*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DNO_ERRNO_H" 394*593dc095SDavid du Colombierfi 395*593dc095SDavid du Colombier 396*593dc095SDavid du Colombiercat > $test.c <<EOF 397*593dc095SDavid du Colombier#include <sys/types.h> 398*593dc095SDavid du Colombier#include <sys/mman.h> 399*593dc095SDavid du Colombier#include <sys/stat.h> 400*593dc095SDavid du Colombiercaddr_t hello() { 401*593dc095SDavid du Colombier return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0); 402*593dc095SDavid du Colombier} 403*593dc095SDavid du ColombierEOF 404*593dc095SDavid du Colombierif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 405*593dc095SDavid du Colombier CFLAGS="$CFLAGS -DUSE_MMAP" 406*593dc095SDavid du Colombier echo Checking for mmap support... Yes. 407*593dc095SDavid du Colombierelse 408*593dc095SDavid du Colombier echo Checking for mmap support... No. 409*593dc095SDavid du Colombierfi 410*593dc095SDavid du Colombier 411*593dc095SDavid du ColombierCPP=${CPP-"$CC -E"} 412*593dc095SDavid du Colombiercase $CFLAGS in 413*593dc095SDavid du Colombier *ASMV*) 414*593dc095SDavid du Colombier if test "`nm $test.o | grep _hello`" = ""; then 415*593dc095SDavid du Colombier CPP="$CPP -DNO_UNDERLINE" 416*593dc095SDavid du Colombier echo Checking for underline in external names... No. 417*593dc095SDavid du Colombier else 418*593dc095SDavid du Colombier echo Checking for underline in external names... Yes. 419*593dc095SDavid du Colombier fi;; 420*593dc095SDavid du Colombieresac 421*593dc095SDavid du Colombier 422*593dc095SDavid du Colombierrm -f $test.[co] $test $test$shared_ext 4237dd7cddfSDavid du Colombier 4247dd7cddfSDavid du Colombier# udpate Makefile 4257dd7cddfSDavid du Colombiersed < Makefile.in " 426*593dc095SDavid du Colombier/^CC *=/s#=.*#=$CC# 427*593dc095SDavid du Colombier/^CFLAGS *=/s#=.*#=$CFLAGS# 428*593dc095SDavid du Colombier/^CPP *=/s#=.*#=$CPP# 429*593dc095SDavid du Colombier/^LDSHARED *=/s#=.*#=$LDSHARED# 430*593dc095SDavid du Colombier/^LIBS *=/s#=.*#=$LIBS# 431*593dc095SDavid du Colombier/^SHAREDLIB *=/s#=.*#=$SHAREDLIB# 432*593dc095SDavid du Colombier/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# 433*593dc095SDavid du Colombier/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# 434*593dc095SDavid du Colombier/^AR *=/s#=.*#=$AR# 435*593dc095SDavid du Colombier/^RANLIB *=/s#=.*#=$RANLIB# 436*593dc095SDavid du Colombier/^EXE *=/s#=.*#=$EXE# 437*593dc095SDavid du Colombier/^prefix *=/s#=.*#=$prefix# 438*593dc095SDavid du Colombier/^exec_prefix *=/s#=.*#=$exec_prefix# 439*593dc095SDavid du Colombier/^libdir *=/s#=.*#=$libdir# 440*593dc095SDavid du Colombier/^includedir *=/s#=.*#=$includedir# 441*593dc095SDavid du Colombier/^mandir *=/s#=.*#=$mandir# 442*593dc095SDavid du Colombier/^LDFLAGS *=/s#=.*#=$LDFLAGS# 4437dd7cddfSDavid du Colombier" > Makefile 444