1*44bedb31SLionel Sambuc#!/bin/sh 2*44bedb31SLionel Sambuc# configure script for zlib. This script is needed only if 3*44bedb31SLionel Sambuc# you wish to build a shared library and your system supports them, 4*44bedb31SLionel Sambuc# of if you need special compiler, flags or install directory. 5*44bedb31SLionel Sambuc# Otherwise, you can just use directly "make test; make install" 6*44bedb31SLionel Sambuc# 7*44bedb31SLionel Sambuc# To create a shared library, use "configure --shared"; by default a static 8*44bedb31SLionel Sambuc# library is created. If the primitive shared library support provided here 9*44bedb31SLionel Sambuc# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz 10*44bedb31SLionel Sambuc# 11*44bedb31SLionel Sambuc# To impose specific compiler or flags or install directory, use for example: 12*44bedb31SLionel Sambuc# prefix=$HOME CC=cc CFLAGS="-O4" ./configure 13*44bedb31SLionel Sambuc# or for csh/tcsh users: 14*44bedb31SLionel Sambuc# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure) 15*44bedb31SLionel Sambuc# LDSHARED is the command to be used to create a shared library 16*44bedb31SLionel Sambuc 17*44bedb31SLionel Sambuc# Incorrect settings of CC or CFLAGS may prevent creating a shared library. 18*44bedb31SLionel Sambuc# If you have problems, try without defining CC and CFLAGS before reporting 19*44bedb31SLionel Sambuc# an error. 20*44bedb31SLionel Sambuc 21*44bedb31SLionel SambucLIBS=libz.a 22*44bedb31SLionel SambucLDFLAGS="-L. ${LIBS}" 23*44bedb31SLionel SambucVER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h` 24*44bedb31SLionel SambucVER2=`sed -n -e '/VERSION "/s/.*"\([0-9]*\\.[0-9]*\)\\..*/\1/p' < zlib.h` 25*44bedb31SLionel SambucVER1=`sed -n -e '/VERSION "/s/.*"\([0-9]*\)\\..*/\1/p' < zlib.h` 26*44bedb31SLionel SambucAR=${AR-"ar rc"} 27*44bedb31SLionel SambucRANLIB=${RANLIB-"ranlib"} 28*44bedb31SLionel Sambucprefix=${prefix-/usr/local} 29*44bedb31SLionel Sambucexec_prefix=${exec_prefix-'${prefix}'} 30*44bedb31SLionel Sambuclibdir=${libdir-'${exec_prefix}/lib'} 31*44bedb31SLionel Sambucincludedir=${includedir-'${prefix}/include'} 32*44bedb31SLionel Sambucmandir=${mandir-'${prefix}/share/man'} 33*44bedb31SLionel Sambucshared_ext='.so' 34*44bedb31SLionel Sambucshared=0 35*44bedb31SLionel Sambucgcc=0 36*44bedb31SLionel Sambucold_cc="$CC" 37*44bedb31SLionel Sambucold_cflags="$CFLAGS" 38*44bedb31SLionel Sambuc 39*44bedb31SLionel Sambucwhile test $# -ge 1 40*44bedb31SLionel Sambucdo 41*44bedb31SLionel Sambuccase "$1" in 42*44bedb31SLionel Sambuc -h* | --h*) 43*44bedb31SLionel Sambuc echo 'usage:' 44*44bedb31SLionel Sambuc echo ' configure [--shared] [--prefix=PREFIX] [--exec_prefix=EXPREFIX]' 45*44bedb31SLionel Sambuc echo ' [--libdir=LIBDIR] [--includedir=INCLUDEDIR]' 46*44bedb31SLionel Sambuc exit 0;; 47*44bedb31SLionel Sambuc -p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; 48*44bedb31SLionel Sambuc -e*=* | --e*=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; 49*44bedb31SLionel Sambuc -l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;; 50*44bedb31SLionel Sambuc -i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;; 51*44bedb31SLionel Sambuc -p* | --p*) prefix="$2"; shift; shift;; 52*44bedb31SLionel Sambuc -e* | --e*) exec_prefix="$2"; shift; shift;; 53*44bedb31SLionel Sambuc -l* | --l*) libdir="$2"; shift; shift;; 54*44bedb31SLionel Sambuc -i* | --i*) includedir="$2"; shift; shift;; 55*44bedb31SLionel Sambuc -s* | --s*) shared=1; shift;; 56*44bedb31SLionel Sambuc *) echo "unknown option: $1"; echo "$0 --help for help"; exit 1;; 57*44bedb31SLionel Sambuc esac 58*44bedb31SLionel Sambucdone 59*44bedb31SLionel Sambuc 60*44bedb31SLionel Sambuctest=ztest$$ 61*44bedb31SLionel Sambuccat > $test.c <<EOF 62*44bedb31SLionel Sambucextern int getchar(); 63*44bedb31SLionel Sambucint hello() {return getchar();} 64*44bedb31SLionel SambucEOF 65*44bedb31SLionel Sambuc 66*44bedb31SLionel Sambuctest -z "$CC" && echo Checking for gcc... 67*44bedb31SLionel Sambuccc=${CC-gcc} 68*44bedb31SLionel Sambuccflags=${CFLAGS-"-O3"} 69*44bedb31SLionel Sambuc# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure 70*44bedb31SLionel Sambuccase "$cc" in 71*44bedb31SLionel Sambuc *gcc*) gcc=1;; 72*44bedb31SLionel Sambucesac 73*44bedb31SLionel Sambuc 74*44bedb31SLionel Sambucif test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then 75*44bedb31SLionel Sambuc CC="$cc" 76*44bedb31SLionel Sambuc SFLAGS=${CFLAGS-"-fPIC -O3"} 77*44bedb31SLionel Sambuc CFLAGS="$cflags" 78*44bedb31SLionel Sambuc case `(uname -s || echo unknown) 2>/dev/null` in 79*44bedb31SLionel Sambuc Linux | linux | GNU | GNU/*) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1"};; 80*44bedb31SLionel Sambuc CYGWIN* | Cygwin* | cygwin* | OS/2* ) 81*44bedb31SLionel Sambuc EXE='.exe';; 82*44bedb31SLionel Sambuc QNX*) # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4 83*44bedb31SLionel Sambuc # (alain.bonnefoy@icbt.com) 84*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};; 85*44bedb31SLionel Sambuc HP-UX*) 86*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"} 87*44bedb31SLionel Sambuc case `(uname -m || echo unknown) 2>/dev/null` in 88*44bedb31SLionel Sambuc ia64) 89*44bedb31SLionel Sambuc shared_ext='.so' 90*44bedb31SLionel Sambuc SHAREDLIB='libz.so';; 91*44bedb31SLionel Sambuc *) 92*44bedb31SLionel Sambuc shared_ext='.sl' 93*44bedb31SLionel Sambuc SHAREDLIB='libz.sl';; 94*44bedb31SLionel Sambuc esac;; 95*44bedb31SLionel Sambuc Darwin*) shared_ext='.dylib' 96*44bedb31SLionel Sambuc SHAREDLIB=libz$shared_ext 97*44bedb31SLionel Sambuc SHAREDLIBV=libz.$VER$shared_ext 98*44bedb31SLionel Sambuc SHAREDLIBM=libz.$VER1$shared_ext 99*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER"};; 100*44bedb31SLionel Sambuc *) LDSHARED=${LDSHARED-"$cc -shared"};; 101*44bedb31SLionel Sambuc esac 102*44bedb31SLionel Sambucelse 103*44bedb31SLionel Sambuc # find system name and corresponding cc options 104*44bedb31SLionel Sambuc CC=${CC-cc} 105*44bedb31SLionel Sambuc case `(uname -sr || echo unknown) 2>/dev/null` in 106*44bedb31SLionel Sambuc HP-UX*) SFLAGS=${CFLAGS-"-O +z"} 107*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O"} 108*44bedb31SLionel Sambuc# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"} 109*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"ld -b"} 110*44bedb31SLionel Sambuc case `(uname -m || echo unknown) 2>/dev/null` in 111*44bedb31SLionel Sambuc ia64) 112*44bedb31SLionel Sambuc shared_ext='.so' 113*44bedb31SLionel Sambuc SHAREDLIB='libz.so';; 114*44bedb31SLionel Sambuc *) 115*44bedb31SLionel Sambuc shared_ext='.sl' 116*44bedb31SLionel Sambuc SHAREDLIB='libz.sl';; 117*44bedb31SLionel Sambuc esac;; 118*44bedb31SLionel Sambuc IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."} 119*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-ansi -O2"} 120*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -shared"};; 121*44bedb31SLionel Sambuc OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"} 122*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O -std1"} 123*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};; 124*44bedb31SLionel Sambuc OSF1*) SFLAGS=${CFLAGS-"-O -std1"} 125*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O -std1"} 126*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -shared"};; 127*44bedb31SLionel Sambuc QNX*) SFLAGS=${CFLAGS-"-4 -O"} 128*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-4 -O"} 129*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc"} 130*44bedb31SLionel Sambuc RANLIB=${RANLIB-"true"} 131*44bedb31SLionel Sambuc AR="cc -A";; 132*44bedb31SLionel Sambuc SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "} 133*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O3"} 134*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};; 135*44bedb31SLionel Sambuc SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."} 136*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-fast -xcg89"} 137*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -G"};; 138*44bedb31SLionel Sambuc SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"} 139*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O2"} 140*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"ld"};; 141*44bedb31SLionel Sambuc SunStudio\ 9*) SFLAGS=${CFLAGS-"-DUSE_MMAP -fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"} 142*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-DUSE_MMAP -fast -xtarget=ultra3 -xarch=v9b"} 143*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -xarch=v9b"};; 144*44bedb31SLionel Sambuc UNIX_System_V\ 4.2.0) 145*44bedb31SLionel Sambuc SFLAGS=${CFLAGS-"-KPIC -O"} 146*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O"} 147*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -G"};; 148*44bedb31SLionel Sambuc UNIX_SV\ 4.2MP) 149*44bedb31SLionel Sambuc SFLAGS=${CFLAGS-"-Kconform_pic -O"} 150*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O"} 151*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -G"};; 152*44bedb31SLionel Sambuc OpenUNIX\ 5) 153*44bedb31SLionel Sambuc SFLAGS=${CFLAGS-"-KPIC -O"} 154*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O"} 155*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -G"};; 156*44bedb31SLionel Sambuc AIX*) # Courtesy of dbakker@arrayasolutions.com 157*44bedb31SLionel Sambuc SFLAGS=${CFLAGS-"-O -qmaxmem=8192"} 158*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O -qmaxmem=8192"} 159*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"xlc -G"};; 160*44bedb31SLionel Sambuc # send working options for other systems to support@gzip.org 161*44bedb31SLionel Sambuc *) SFLAGS=${CFLAGS-"-O"} 162*44bedb31SLionel Sambuc CFLAGS=${CFLAGS-"-O"} 163*44bedb31SLionel Sambuc LDSHARED=${LDSHARED-"cc -shared"};; 164*44bedb31SLionel Sambuc esac 165*44bedb31SLionel Sambucfi 166*44bedb31SLionel Sambuc 167*44bedb31SLionel SambucSHAREDLIB=${SHAREDLIB-"libz$shared_ext"} 168*44bedb31SLionel SambucSHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"} 169*44bedb31SLionel SambucSHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"} 170*44bedb31SLionel Sambuc 171*44bedb31SLionel Sambucif test $shared -eq 1; then 172*44bedb31SLionel Sambuc echo Checking for shared library support... 173*44bedb31SLionel Sambuc # we must test in two steps (cc then ld), required at least on SunOS 4.x 174*44bedb31SLionel Sambuc if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" && 175*44bedb31SLionel Sambuc test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then 176*44bedb31SLionel Sambuc CFLAGS="$SFLAGS" 177*44bedb31SLionel Sambuc LIBS="$SHAREDLIBV" 178*44bedb31SLionel Sambuc echo Building shared library $SHAREDLIBV with $CC. 179*44bedb31SLionel Sambuc elif test -z "$old_cc" -a -z "$old_cflags"; then 180*44bedb31SLionel Sambuc echo No shared library support. 181*44bedb31SLionel Sambuc shared=0; 182*44bedb31SLionel Sambuc else 183*44bedb31SLionel Sambuc echo 'No shared library support; try without defining CC and CFLAGS' 184*44bedb31SLionel Sambuc shared=0; 185*44bedb31SLionel Sambuc fi 186*44bedb31SLionel Sambucfi 187*44bedb31SLionel Sambucif test $shared -eq 0; then 188*44bedb31SLionel Sambuc LDSHARED="$CC" 189*44bedb31SLionel Sambuc echo Building static library $LIBS version $VER with $CC. 190*44bedb31SLionel Sambucelse 191*44bedb31SLionel Sambuc LDFLAGS="-L. ${SHAREDLIBV}" 192*44bedb31SLionel Sambucfi 193*44bedb31SLionel Sambuc 194*44bedb31SLionel Sambuccat > $test.c <<EOF 195*44bedb31SLionel Sambuc#include <unistd.h> 196*44bedb31SLionel Sambucint main() { return 0; } 197*44bedb31SLionel SambucEOF 198*44bedb31SLionel Sambucif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 199*44bedb31SLionel Sambuc sed < zconf.in.h "/HAVE_UNISTD_H/s%0%1%" > zconf.h 200*44bedb31SLionel Sambuc echo "Checking for unistd.h... Yes." 201*44bedb31SLionel Sambucelse 202*44bedb31SLionel Sambuc cp -p zconf.in.h zconf.h 203*44bedb31SLionel Sambuc echo "Checking for unistd.h... No." 204*44bedb31SLionel Sambucfi 205*44bedb31SLionel Sambuc 206*44bedb31SLionel Sambuccat > $test.c <<EOF 207*44bedb31SLionel Sambuc#include <stdio.h> 208*44bedb31SLionel Sambuc#include <stdarg.h> 209*44bedb31SLionel Sambuc#include "zconf.h" 210*44bedb31SLionel Sambuc 211*44bedb31SLionel Sambucint main() 212*44bedb31SLionel Sambuc{ 213*44bedb31SLionel Sambuc#ifndef STDC 214*44bedb31SLionel Sambuc choke me 215*44bedb31SLionel Sambuc#endif 216*44bedb31SLionel Sambuc 217*44bedb31SLionel Sambuc return 0; 218*44bedb31SLionel Sambuc} 219*44bedb31SLionel SambucEOF 220*44bedb31SLionel Sambuc 221*44bedb31SLionel Sambucif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 222*44bedb31SLionel Sambuc echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()" 223*44bedb31SLionel Sambuc 224*44bedb31SLionel Sambuc cat > $test.c <<EOF 225*44bedb31SLionel Sambuc#include <stdio.h> 226*44bedb31SLionel Sambuc#include <stdarg.h> 227*44bedb31SLionel Sambuc 228*44bedb31SLionel Sambucint mytest(char *fmt, ...) 229*44bedb31SLionel Sambuc{ 230*44bedb31SLionel Sambuc char buf[20]; 231*44bedb31SLionel Sambuc va_list ap; 232*44bedb31SLionel Sambuc 233*44bedb31SLionel Sambuc va_start(ap, fmt); 234*44bedb31SLionel Sambuc vsnprintf(buf, sizeof(buf), fmt, ap); 235*44bedb31SLionel Sambuc va_end(ap); 236*44bedb31SLionel Sambuc return 0; 237*44bedb31SLionel Sambuc} 238*44bedb31SLionel Sambuc 239*44bedb31SLionel Sambucint main() 240*44bedb31SLionel Sambuc{ 241*44bedb31SLionel Sambuc return (mytest("Hello%d\n", 1)); 242*44bedb31SLionel Sambuc} 243*44bedb31SLionel SambucEOF 244*44bedb31SLionel Sambuc 245*44bedb31SLionel Sambuc if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then 246*44bedb31SLionel Sambuc echo "Checking for vsnprintf() in stdio.h... Yes." 247*44bedb31SLionel Sambuc 248*44bedb31SLionel Sambuc cat >$test.c <<EOF 249*44bedb31SLionel Sambuc#include <stdio.h> 250*44bedb31SLionel Sambuc#include <stdarg.h> 251*44bedb31SLionel Sambuc 252*44bedb31SLionel Sambucint mytest(char *fmt, ...) 253*44bedb31SLionel Sambuc{ 254*44bedb31SLionel Sambuc int n; 255*44bedb31SLionel Sambuc char buf[20]; 256*44bedb31SLionel Sambuc va_list ap; 257*44bedb31SLionel Sambuc 258*44bedb31SLionel Sambuc va_start(ap, fmt); 259*44bedb31SLionel Sambuc n = vsnprintf(buf, sizeof(buf), fmt, ap); 260*44bedb31SLionel Sambuc va_end(ap); 261*44bedb31SLionel Sambuc return n; 262*44bedb31SLionel Sambuc} 263*44bedb31SLionel Sambuc 264*44bedb31SLionel Sambucint main() 265*44bedb31SLionel Sambuc{ 266*44bedb31SLionel Sambuc return (mytest("Hello%d\n", 1)); 267*44bedb31SLionel Sambuc} 268*44bedb31SLionel SambucEOF 269*44bedb31SLionel Sambuc 270*44bedb31SLionel Sambuc if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 271*44bedb31SLionel Sambuc echo "Checking for return value of vsnprintf()... Yes." 272*44bedb31SLionel Sambuc else 273*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DHAS_vsnprintf_void" 274*44bedb31SLionel Sambuc echo "Checking for return value of vsnprintf()... No." 275*44bedb31SLionel Sambuc echo " WARNING: apparently vsnprintf() does not return a value. zlib" 276*44bedb31SLionel Sambuc echo " can build but will be open to possible string-format security" 277*44bedb31SLionel Sambuc echo " vulnerabilities." 278*44bedb31SLionel Sambuc fi 279*44bedb31SLionel Sambuc else 280*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DNO_vsnprintf" 281*44bedb31SLionel Sambuc echo "Checking for vsnprintf() in stdio.h... No." 282*44bedb31SLionel Sambuc echo " WARNING: vsnprintf() not found, falling back to vsprintf(). zlib" 283*44bedb31SLionel Sambuc echo " can build but will be open to possible buffer-overflow security" 284*44bedb31SLionel Sambuc echo " vulnerabilities." 285*44bedb31SLionel Sambuc 286*44bedb31SLionel Sambuc cat >$test.c <<EOF 287*44bedb31SLionel Sambuc#include <stdio.h> 288*44bedb31SLionel Sambuc#include <stdarg.h> 289*44bedb31SLionel Sambuc 290*44bedb31SLionel Sambucint mytest(char *fmt, ...) 291*44bedb31SLionel Sambuc{ 292*44bedb31SLionel Sambuc int n; 293*44bedb31SLionel Sambuc char buf[20]; 294*44bedb31SLionel Sambuc va_list ap; 295*44bedb31SLionel Sambuc 296*44bedb31SLionel Sambuc va_start(ap, fmt); 297*44bedb31SLionel Sambuc n = vsprintf(buf, fmt, ap); 298*44bedb31SLionel Sambuc va_end(ap); 299*44bedb31SLionel Sambuc return n; 300*44bedb31SLionel Sambuc} 301*44bedb31SLionel Sambuc 302*44bedb31SLionel Sambucint main() 303*44bedb31SLionel Sambuc{ 304*44bedb31SLionel Sambuc return (mytest("Hello%d\n", 1)); 305*44bedb31SLionel Sambuc} 306*44bedb31SLionel SambucEOF 307*44bedb31SLionel Sambuc 308*44bedb31SLionel Sambuc if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 309*44bedb31SLionel Sambuc echo "Checking for return value of vsprintf()... Yes." 310*44bedb31SLionel Sambuc else 311*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DHAS_vsprintf_void" 312*44bedb31SLionel Sambuc echo "Checking for return value of vsprintf()... No." 313*44bedb31SLionel Sambuc echo " WARNING: apparently vsprintf() does not return a value. zlib" 314*44bedb31SLionel Sambuc echo " can build but will be open to possible string-format security" 315*44bedb31SLionel Sambuc echo " vulnerabilities." 316*44bedb31SLionel Sambuc fi 317*44bedb31SLionel Sambuc fi 318*44bedb31SLionel Sambucelse 319*44bedb31SLionel Sambuc echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()" 320*44bedb31SLionel Sambuc 321*44bedb31SLionel Sambuc cat >$test.c <<EOF 322*44bedb31SLionel Sambuc#include <stdio.h> 323*44bedb31SLionel Sambuc 324*44bedb31SLionel Sambucint mytest() 325*44bedb31SLionel Sambuc{ 326*44bedb31SLionel Sambuc char buf[20]; 327*44bedb31SLionel Sambuc 328*44bedb31SLionel Sambuc snprintf(buf, sizeof(buf), "%s", "foo"); 329*44bedb31SLionel Sambuc return 0; 330*44bedb31SLionel Sambuc} 331*44bedb31SLionel Sambuc 332*44bedb31SLionel Sambucint main() 333*44bedb31SLionel Sambuc{ 334*44bedb31SLionel Sambuc return (mytest()); 335*44bedb31SLionel Sambuc} 336*44bedb31SLionel SambucEOF 337*44bedb31SLionel Sambuc 338*44bedb31SLionel Sambuc if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then 339*44bedb31SLionel Sambuc echo "Checking for snprintf() in stdio.h... Yes." 340*44bedb31SLionel Sambuc 341*44bedb31SLionel Sambuc cat >$test.c <<EOF 342*44bedb31SLionel Sambuc#include <stdio.h> 343*44bedb31SLionel Sambuc 344*44bedb31SLionel Sambucint mytest() 345*44bedb31SLionel Sambuc{ 346*44bedb31SLionel Sambuc char buf[20]; 347*44bedb31SLionel Sambuc 348*44bedb31SLionel Sambuc return snprintf(buf, sizeof(buf), "%s", "foo"); 349*44bedb31SLionel Sambuc} 350*44bedb31SLionel Sambuc 351*44bedb31SLionel Sambucint main() 352*44bedb31SLionel Sambuc{ 353*44bedb31SLionel Sambuc return (mytest()); 354*44bedb31SLionel Sambuc} 355*44bedb31SLionel SambucEOF 356*44bedb31SLionel Sambuc 357*44bedb31SLionel Sambuc if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 358*44bedb31SLionel Sambuc echo "Checking for return value of snprintf()... Yes." 359*44bedb31SLionel Sambuc else 360*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DHAS_snprintf_void" 361*44bedb31SLionel Sambuc echo "Checking for return value of snprintf()... No." 362*44bedb31SLionel Sambuc echo " WARNING: apparently snprintf() does not return a value. zlib" 363*44bedb31SLionel Sambuc echo " can build but will be open to possible string-format security" 364*44bedb31SLionel Sambuc echo " vulnerabilities." 365*44bedb31SLionel Sambuc fi 366*44bedb31SLionel Sambuc else 367*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DNO_snprintf" 368*44bedb31SLionel Sambuc echo "Checking for snprintf() in stdio.h... No." 369*44bedb31SLionel Sambuc echo " WARNING: snprintf() not found, falling back to sprintf(). zlib" 370*44bedb31SLionel Sambuc echo " can build but will be open to possible buffer-overflow security" 371*44bedb31SLionel Sambuc echo " vulnerabilities." 372*44bedb31SLionel Sambuc 373*44bedb31SLionel Sambuc cat >$test.c <<EOF 374*44bedb31SLionel Sambuc#include <stdio.h> 375*44bedb31SLionel Sambuc 376*44bedb31SLionel Sambucint mytest() 377*44bedb31SLionel Sambuc{ 378*44bedb31SLionel Sambuc char buf[20]; 379*44bedb31SLionel Sambuc 380*44bedb31SLionel Sambuc return sprintf(buf, "%s", "foo"); 381*44bedb31SLionel Sambuc} 382*44bedb31SLionel Sambuc 383*44bedb31SLionel Sambucint main() 384*44bedb31SLionel Sambuc{ 385*44bedb31SLionel Sambuc return (mytest()); 386*44bedb31SLionel Sambuc} 387*44bedb31SLionel SambucEOF 388*44bedb31SLionel Sambuc 389*44bedb31SLionel Sambuc if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 390*44bedb31SLionel Sambuc echo "Checking for return value of sprintf()... Yes." 391*44bedb31SLionel Sambuc else 392*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DHAS_sprintf_void" 393*44bedb31SLionel Sambuc echo "Checking for return value of sprintf()... No." 394*44bedb31SLionel Sambuc echo " WARNING: apparently sprintf() does not return a value. zlib" 395*44bedb31SLionel Sambuc echo " can build but will be open to possible string-format security" 396*44bedb31SLionel Sambuc echo " vulnerabilities." 397*44bedb31SLionel Sambuc fi 398*44bedb31SLionel Sambuc fi 399*44bedb31SLionel Sambucfi 400*44bedb31SLionel Sambuc 401*44bedb31SLionel Sambuccat >$test.c <<EOF 402*44bedb31SLionel Sambuc#include <errno.h> 403*44bedb31SLionel Sambucint main() { return 0; } 404*44bedb31SLionel SambucEOF 405*44bedb31SLionel Sambucif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 406*44bedb31SLionel Sambuc echo "Checking for errno.h... Yes." 407*44bedb31SLionel Sambucelse 408*44bedb31SLionel Sambuc echo "Checking for errno.h... No." 409*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DNO_ERRNO_H" 410*44bedb31SLionel Sambucfi 411*44bedb31SLionel Sambuc 412*44bedb31SLionel Sambuccat > $test.c <<EOF 413*44bedb31SLionel Sambuc#include <sys/types.h> 414*44bedb31SLionel Sambuc#include <sys/mman.h> 415*44bedb31SLionel Sambuc#include <sys/stat.h> 416*44bedb31SLionel Sambuccaddr_t hello() { 417*44bedb31SLionel Sambuc return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0); 418*44bedb31SLionel Sambuc} 419*44bedb31SLionel SambucEOF 420*44bedb31SLionel Sambucif test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then 421*44bedb31SLionel Sambuc CFLAGS="$CFLAGS -DUSE_MMAP" 422*44bedb31SLionel Sambuc echo Checking for mmap support... Yes. 423*44bedb31SLionel Sambucelse 424*44bedb31SLionel Sambuc echo Checking for mmap support... No. 425*44bedb31SLionel Sambucfi 426*44bedb31SLionel Sambuc 427*44bedb31SLionel SambucCPP=${CPP-"$CC -E"} 428*44bedb31SLionel Sambuccase $CFLAGS in 429*44bedb31SLionel Sambuc *ASMV*) 430*44bedb31SLionel Sambuc if test "`nm $test.o | grep _hello`" = ""; then 431*44bedb31SLionel Sambuc CPP="$CPP -DNO_UNDERLINE" 432*44bedb31SLionel Sambuc echo Checking for underline in external names... No. 433*44bedb31SLionel Sambuc else 434*44bedb31SLionel Sambuc echo Checking for underline in external names... Yes. 435*44bedb31SLionel Sambuc fi;; 436*44bedb31SLionel Sambucesac 437*44bedb31SLionel Sambuc 438*44bedb31SLionel Sambucrm -f $test.[co] $test $test$shared_ext 439*44bedb31SLionel Sambuc 440*44bedb31SLionel Sambuc# udpate Makefile 441*44bedb31SLionel Sambucsed < Makefile.in " 442*44bedb31SLionel Sambuc/^CC *=/s#=.*#=$CC# 443*44bedb31SLionel Sambuc/^CFLAGS *=/s#=.*#=$CFLAGS# 444*44bedb31SLionel Sambuc/^CPP *=/s#=.*#=$CPP# 445*44bedb31SLionel Sambuc/^LDSHARED *=/s#=.*#=$LDSHARED# 446*44bedb31SLionel Sambuc/^LIBS *=/s#=.*#=$LIBS# 447*44bedb31SLionel Sambuc/^SHAREDLIB *=/s#=.*#=$SHAREDLIB# 448*44bedb31SLionel Sambuc/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV# 449*44bedb31SLionel Sambuc/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM# 450*44bedb31SLionel Sambuc/^AR *=/s#=.*#=$AR# 451*44bedb31SLionel Sambuc/^RANLIB *=/s#=.*#=$RANLIB# 452*44bedb31SLionel Sambuc/^EXE *=/s#=.*#=$EXE# 453*44bedb31SLionel Sambuc/^prefix *=/s#=.*#=$prefix# 454*44bedb31SLionel Sambuc/^exec_prefix *=/s#=.*#=$exec_prefix# 455*44bedb31SLionel Sambuc/^libdir *=/s#=.*#=$libdir# 456*44bedb31SLionel Sambuc/^includedir *=/s#=.*#=$includedir# 457*44bedb31SLionel Sambuc/^mandir *=/s#=.*#=$mandir# 458*44bedb31SLionel Sambuc/^LDFLAGS *=/s#=.*#=$LDFLAGS# 459*44bedb31SLionel Sambuc" > Makefile 460