configure 15.6 KB
Newer Older
M
Mark Adler 已提交
1 2 3 4 5 6
#!/bin/sh
# configure script for zlib. This script is needed only if
# you wish to build a shared library and your system supports them,
# of if you need special compiler, flags or install directory.
# Otherwise, you can just use directly "make test; make install"
#
M
Mark Adler 已提交
7 8 9 10
# To create a shared library, use "configure --shared"; by default a static
# library is created. If the primitive shared library support provided here
# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz
#
M
Mark Adler 已提交
11 12 13 14 15 16
# 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)
# LDSHARED is the command to be used to create a shared library

M
Mark Adler 已提交
17 18 19 20
# 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.

M
Mark Adler 已提交
21
LIBS=libz.a
M
Mark Adler 已提交
22
LDFLAGS="-L. ${LIBS}"
M
Mark Adler 已提交
23
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
M
Mark Adler 已提交
24 25
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 已提交
26 27
AR=${AR-"ar"}
AR_RC="${AR} rc"
M
Mark Adler 已提交
28 29
RANLIB=${RANLIB-"ranlib"}
prefix=${prefix-/usr/local}
M
Mark Adler 已提交
30 31 32
exec_prefix=${exec_prefix-'${prefix}'}
libdir=${libdir-'${exec_prefix}/lib'}
includedir=${includedir-'${prefix}/include'}
M
Mark Adler 已提交
33
mandir=${mandir-'${prefix}/share/man'}
M
Mark Adler 已提交
34
shared_ext='.so'
M
Mark Adler 已提交
35
shared=1
M
Mark Adler 已提交
36
zprefix=0
M
Mark Adler 已提交
37
gcc=0
M
Mark Adler 已提交
38 39
old_cc="$CC"
old_cflags="$CFLAGS"
M
Mark Adler 已提交
40

M
Mark Adler 已提交
41 42
while test $# -ge 1
do
M
Mark Adler 已提交
43
case "$1" in
M
Mark Adler 已提交
44
    -h* | --help)
M
Mark Adler 已提交
45 46
      echo 'usage:'
      echo '  configure [--shared] [--prefix=PREFIX]  [--exec_prefix=EXPREFIX]'
M
Mark Adler 已提交
47
      echo '     [--libdir=LIBDIR] [--includedir=INCLUDEDIR] [--zprefix]'
M
Mark Adler 已提交
48
        exit 0;;
M
Mark Adler 已提交
49 50
    -p*=* | --prefix=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
    -e*=* | --eprefix=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
M
Mark Adler 已提交
51 52
    -l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
    -i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;;
M
Mark Adler 已提交
53
    -u*=* | --uname=*) uname=`echo $1 | sed 's/[-a-z_]*=//'`;shift;;
M
Mark Adler 已提交
54 55 56 57 58
    -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;;
M
Mark Adler 已提交
59
    -t | --static) shared=0; shift;;
M
Mark Adler 已提交
60 61 62
    -z* | --zprefix) zprefix=1; shift;;
    --sysconfdir=*) echo "ignored option: --sysconfdir"; shift;;
    --localstatedir=*) echo "ignored option: --localstatedir"; shift;;
M
Mark Adler 已提交
63
    *) echo "unknown option: $1"; echo "$0 --help for help"; exit 1;;
M
Mark Adler 已提交
64 65
    esac
done
M
Mark Adler 已提交
66 67 68

test=ztest$$
cat > $test.c <<EOF
M
Mark Adler 已提交
69 70
extern int getchar();
int hello() {return getchar();}
M
Mark Adler 已提交
71
EOF
M
Mark Adler 已提交
72 73 74 75

test -z "$CC" && echo Checking for gcc...
cc=${CC-gcc}
cflags=${CFLAGS-"-O3"}
M
Mark Adler 已提交
76
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
M
Mark Adler 已提交
77 78 79 80 81 82
case "$cc" in
  *gcc*) gcc=1;;
esac

if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
  CC="$cc"
M
Mark Adler 已提交
83
  SFLAGS="${CFLAGS-"-O3"} -fPIC"
M
Mark Adler 已提交
84
  CFLAGS="${CFLAGS-"-O3"}"
M
Mark Adler 已提交
85 86 87 88
  if test -z $uname; then
    uname=`(uname -s || echo unknown) 2>/dev/null`
  fi
  case "$uname" in
M
Mark Adler 已提交
89
  Linux | linux | GNU | GNU/*) LDSHARED=${LDSHARED-"$cc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map"};;
M
Mark Adler 已提交
90
  CYGWIN* | Cygwin* | cygwin* | OS/2* )
M
Mark Adler 已提交
91
             EXE='.exe';;
M
Mark Adler 已提交
92 93 94
  QNX*)  # This is for QNX6. I suppose that the QNX rule below is for QNX2,QNX4
         # (alain.bonnefoy@icbt.com)
                 LDSHARED=${LDSHARED-"$cc -shared -Wl,-hlibz.so.1"};;
M
Mark Adler 已提交
95 96 97 98 99 100 101
  HP-UX*)
         LDSHARED=${LDSHARED-"$cc -shared $SFLAGS"}
         case `(uname -m || echo unknown) 2>/dev/null` in
         ia64)
                 shared_ext='.so'
                 SHAREDLIB='libz.so';;
         *)
M
Mark Adler 已提交
102 103
                 shared_ext='.sl'
                 SHAREDLIB='libz.sl';;
M
Mark Adler 已提交
104
         esac;;
M
Mark Adler 已提交
105 106 107 108
  Darwin*)   shared_ext='.dylib'
             SHAREDLIB=libz$shared_ext
             SHAREDLIBV=libz.$VER$shared_ext
             SHAREDLIBM=libz.$VER1$shared_ext
M
Mark Adler 已提交
109
             LDSHARED=${LDSHARED-"$cc -dynamiclib -install_name $libdir/$SHAREDLIBM -compatibility_version $VER1 -current_version $VER"};;
M
Mark Adler 已提交
110
  *)             LDSHARED=${LDSHARED-"$cc -shared"};;
M
Mark Adler 已提交
111
  esac
M
Mark Adler 已提交
112 113 114
else
  # find system name and corresponding cc options
  CC=${CC-cc}
M
Mark Adler 已提交
115 116 117 118
  if test -z $uname; then
    uname=`(uname -sr || echo unknown) 2>/dev/null`
  fi
  case "$uname" in
M
Mark Adler 已提交
119
  HP-UX*)    SFLAGS=${CFLAGS-"-O +z"}
M
Mark Adler 已提交
120 121 122
             CFLAGS=${CFLAGS-"-O"}
#            LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
             LDSHARED=${LDSHARED-"ld -b"}
M
Mark Adler 已提交
123 124 125 126 127
         case `(uname -m || echo unknown) 2>/dev/null` in
         ia64)
             shared_ext='.so'
             SHAREDLIB='libz.so';;
         *)
M
Mark Adler 已提交
128 129
             shared_ext='.sl'
             SHAREDLIB='libz.sl';;
M
Mark Adler 已提交
130
         esac;;
M
Mark Adler 已提交
131
  IRIX*)     SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
M
Mark Adler 已提交
132
             CFLAGS=${CFLAGS-"-ansi -O2"}
M
Mark Adler 已提交
133
             LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"};;
M
Mark Adler 已提交
134
  OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
135
             CFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
136
             LDSHARED=${LDSHARED-"cc -shared  -Wl,-soname,libz.so -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};;
M
Mark Adler 已提交
137
  OSF1*)     SFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
138
             CFLAGS=${CFLAGS-"-O -std1"}
M
Mark Adler 已提交
139
             LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,libz.so.1"};;
M
Mark Adler 已提交
140 141
  QNX*)      SFLAGS=${CFLAGS-"-4 -O"}
             CFLAGS=${CFLAGS-"-4 -O"}
M
Mark Adler 已提交
142
             LDSHARED=${LDSHARED-"cc"}
M
Mark Adler 已提交
143
             RANLIB=${RANLIB-"true"}
M
Mark Adler 已提交
144
             AR_RC="cc -A";;
M
Mark Adler 已提交
145
  SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
M
Mark Adler 已提交
146 147
             CFLAGS=${CFLAGS-"-O3"}
             LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};;
M
Mark Adler 已提交
148 149 150 151 152 153 154 155 156
  SunOS\ 5*) LDSHARED=${LDSHARED-"cc -G"}
         case `(uname -m || echo unknown) 2>/dev/null` in
         i86*)
             SFLAGS=${CFLAGS-"-xpentium -fast -KPIC -R."}
             CFLAGS=${CFLAGS-"-xpentium -fast"};;
         *)
             SFLAGS=${CFLAGS-"-fast -xcg92 -KPIC -R."}
             CFLAGS=${CFLAGS-"-fast -xcg92"};;
         esac;;
M
Mark Adler 已提交
157
  SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
M
Mark Adler 已提交
158 159
             CFLAGS=${CFLAGS-"-O2"}
             LDSHARED=${LDSHARED-"ld"};;
M
Mark Adler 已提交
160 161 162
  SunStudio\ 9*) SFLAGS=${CFLAGS-"-DUSE_MMAP -fast -xcode=pic32 -xtarget=ultra3 -xarch=v9b"}
             CFLAGS=${CFLAGS-"-DUSE_MMAP -fast -xtarget=ultra3 -xarch=v9b"}
             LDSHARED=${LDSHARED-"cc -xarch=v9b"};;
M
Mark Adler 已提交
163 164 165 166
  UNIX_System_V\ 4.2.0)
             SFLAGS=${CFLAGS-"-KPIC -O"}
             CFLAGS=${CFLAGS-"-O"}
             LDSHARED=${LDSHARED-"cc -G"};;
M
Mark Adler 已提交
167
  UNIX_SV\ 4.2MP)
M
Mark Adler 已提交
168 169 170 171 172 173 174
             SFLAGS=${CFLAGS-"-Kconform_pic -O"}
             CFLAGS=${CFLAGS-"-O"}
             LDSHARED=${LDSHARED-"cc -G"};;
  OpenUNIX\ 5)
             SFLAGS=${CFLAGS-"-KPIC -O"}
             CFLAGS=${CFLAGS-"-O"}
             LDSHARED=${LDSHARED-"cc -G"};;
M
Mark Adler 已提交
175
  AIX*)  # Courtesy of dbakker@arrayasolutions.com
M
Mark Adler 已提交
176 177 178
             SFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
             CFLAGS=${CFLAGS-"-O -qmaxmem=8192"}
             LDSHARED=${LDSHARED-"xlc -G"};;
M
Mark Adler 已提交
179
  # send working options for other systems to support@gzip.org
M
Mark Adler 已提交
180
  *)         SFLAGS=${CFLAGS-"-O"}
M
Mark Adler 已提交
181 182
             CFLAGS=${CFLAGS-"-O"}
             LDSHARED=${LDSHARED-"cc -shared"};;
M
Mark Adler 已提交
183 184 185
  esac
fi

M
Mark Adler 已提交
186 187 188 189
SHAREDLIB=${SHAREDLIB-"libz$shared_ext"}
SHAREDLIBV=${SHAREDLIBV-"libz$shared_ext.$VER"}
SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}

M
Mark Adler 已提交
190 191 192 193 194
if test $shared -eq 1; then
  echo Checking for shared library support...
  # we must test in two steps (cc then ld), required at least on SunOS 4.x
  if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" &&
     test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then
M
Mark Adler 已提交
195
    LIBS="$LIBS $SHAREDLIBV"
M
Mark Adler 已提交
196
    echo Building shared library $SHAREDLIBV with $CC.
M
Mark Adler 已提交
197
  elif test -z "$old_cc" -a -z "$old_cflags"; then
M
Mark Adler 已提交
198
    echo No shared library support.
M
Mark Adler 已提交
199
    shared=0;
M
Mark Adler 已提交
200
  else
M
Mark Adler 已提交
201 202 203 204
    echo Tested $CC -c $SFLAGS $test.c
    $CC -c $SFLAGS $test.c
    echo Tested $LDSHARED -o $test$shared_ext $test.o
    $LDSHARED -o $test$shared_ext $test.o
M
Mark Adler 已提交
205
    echo 'No shared library support; try without defining CC and CFLAGS'
M
Mark Adler 已提交
206
    shared=0;
M
Mark Adler 已提交
207 208 209
  fi
fi
if test $shared -eq 0; then
M
Mark Adler 已提交
210
  LDSHARED="$CC"
M
Mark Adler 已提交
211 212
  ALL="allstatic"
  TEST="teststatic"
M
Mark Adler 已提交
213
  echo Building static library $LIBS version $VER with $CC.
M
Mark Adler 已提交
214 215 216
else
  ALL="allstatic allshared"
  TEST="teststatic testshared"
M
Mark Adler 已提交
217 218 219 220 221 222 223 224 225 226 227 228 229 230
fi

cat > zlibdefs.h << EOF
/* zlibdefs.h -- compile-time definitions for the zlib compression library
 * Copyright (C) 1995-2006 Jean-loup Gailly.
 * For conditions of distribution and use, see copyright notice in zlib.h
 */

EOF

cat > $test.c <<EOF
#include <sys/types.h>
off64_t dummy = 0;
EOF
M
Mark Adler 已提交
231 232 233
if test "`($CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c) 2>&1`" = ""; then
  CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
  SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
M
Mark Adler 已提交
234
  echo "Checking for off64_t... Yes."
M
Mark Adler 已提交
235
  echo "Checking for fseeko... Yes."
M
Mark Adler 已提交
236
else
M
Mark Adler 已提交
237
  echo "Checking for off64_t... No."
M
Mark Adler 已提交
238 239 240 241 242 243 244 245 246 247 248 249 250 251
  cat > $test.c <<EOF
#include <stdio.h>
int main(void) {
  fseeko(NULL, 0, 0);
  return 0;
}
EOF
  if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
    echo "Checking for fseeko... Yes."
  else
    CFLAGS="${CFLAGS} -DNO_FSEEKO"
    SFLAGS="${SFLAGS} -DNO_FSEEKO"
    echo "Checking for fseeko... No."
  fi
M
Mark Adler 已提交
252
fi
M
Mark Adler 已提交
253

M
Mark Adler 已提交
254 255 256 257 258
cat > $test.c <<EOF
#include <unistd.h>
int main() { return 0; }
EOF
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
M
Mark Adler 已提交
259 260 261 262 263 264 265 266 267 268
  cat >> zlibdefs.h <<EOF
#include <sys/types.h>	/* for off_t */
#include <unistd.h>	/* for SEEK_* and off_t */
#ifdef VMS
#  include <unixio.h>	/* for off_t */
#endif
#ifndef z_off_t
#  define z_off_t off_t
#endif
EOF
M
Mark Adler 已提交
269 270 271
  echo "Checking for unistd.h... Yes."
else
  echo "Checking for unistd.h... No."
M
Mark Adler 已提交
272 273
fi

M
Mark Adler 已提交
274 275 276 277 278 279
if test $zprefix -eq 1; then
  sed < zconf.h "/#ifdef Z_PREFIX/s/def Z_PREFIX/ 1/" > zconf.temp.h
  mv zconf.temp.h zconf.h
  echo "Using z_ prefix on all symbols."
fi

M
Mark Adler 已提交
280
cat > $test.c <<EOF
M
Mark Adler 已提交
281
#include <stdio.h>
M
Mark Adler 已提交
282 283
#include <stdarg.h>
#include "zconf.h"
M
Mark Adler 已提交
284

M
Mark Adler 已提交
285
int main()
M
Mark Adler 已提交
286 287 288 289 290 291 292 293 294 295
{
#ifndef STDC
  choke me
#endif

  return 0;
}
EOF

if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
M
Mark Adler 已提交
296
  echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()."
M
Mark Adler 已提交
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317

  cat > $test.c <<EOF
#include <stdio.h>
#include <stdarg.h>

int mytest(char *fmt, ...)
{
  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
M
Mark Adler 已提交
318

M
Mark Adler 已提交
319
  if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
M
Mark Adler 已提交
320 321 322 323 324 325 326 327
    echo "Checking for vsnprintf() in stdio.h... Yes."

    cat >$test.c <<EOF
#include <stdio.h>
#include <stdarg.h>

int mytest(char *fmt, ...)
{
M
Mark Adler 已提交
328
  int n;
M
Mark Adler 已提交
329 330 331 332
  char buf[20];
  va_list ap;

  va_start(ap, fmt);
M
Mark Adler 已提交
333
  n = vsnprintf(buf, sizeof(buf), fmt, ap);
M
Mark Adler 已提交
334
  va_end(ap);
M
Mark Adler 已提交
335
  return n;
M
Mark Adler 已提交
336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365
}

int main()
{
  return (mytest("Hello%d\n", 1));
}
EOF

    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
      echo "Checking for return value of vsnprintf()... Yes."
    else
      CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
      echo "Checking for return value of vsnprintf()... No."
      echo "  WARNING: apparently vsnprintf() does not return a value. zlib"
      echo "  can build but will be open to possible string-format security"
      echo "  vulnerabilities."
    fi
  else
    CFLAGS="$CFLAGS -DNO_vsnprintf"
    echo "Checking for vsnprintf() in stdio.h... No."
    echo "  WARNING: vsnprintf() not found, falling back to vsprintf(). zlib"
    echo "  can build but will be open to possible buffer-overflow security"
    echo "  vulnerabilities."

    cat >$test.c <<EOF
#include <stdio.h>
#include <stdarg.h>

int mytest(char *fmt, ...)
{
M
Mark Adler 已提交
366
  int n;
M
Mark Adler 已提交
367 368 369 370
  char buf[20];
  va_list ap;

  va_start(ap, fmt);
M
Mark Adler 已提交
371
  n = vsprintf(buf, fmt, ap);
M
Mark Adler 已提交
372
  va_end(ap);
M
Mark Adler 已提交
373
  return n;
M
Mark Adler 已提交
374 375
}

M
Mark Adler 已提交
376
int main()
M
Mark Adler 已提交
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392
{
  return (mytest("Hello%d\n", 1));
}
EOF

    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
      echo "Checking for return value of vsprintf()... Yes."
    else
      CFLAGS="$CFLAGS -DHAS_vsprintf_void"
      echo "Checking for return value of vsprintf()... No."
      echo "  WARNING: apparently vsprintf() does not return a value. zlib"
      echo "  can build but will be open to possible string-format security"
      echo "  vulnerabilities."
    fi
  fi
else
M
Mark Adler 已提交
393
  echo "Checking whether to use vs[n]printf() or s[n]printf()... using s[n]printf()."
M
Mark Adler 已提交
394 395 396 397

  cat >$test.c <<EOF
#include <stdio.h>

M
Mark Adler 已提交
398
int mytest()
M
Mark Adler 已提交
399 400 401 402 403 404 405
{
  char buf[20];

  snprintf(buf, sizeof(buf), "%s", "foo");
  return 0;
}

M
Mark Adler 已提交
406
int main()
M
Mark Adler 已提交
407 408 409 410 411
{
  return (mytest());
}
EOF

M
Mark Adler 已提交
412
  if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
M
Mark Adler 已提交
413 414 415 416 417
    echo "Checking for snprintf() in stdio.h... Yes."

    cat >$test.c <<EOF
#include <stdio.h>

M
Mark Adler 已提交
418
int mytest()
M
Mark Adler 已提交
419 420 421
{
  char buf[20];

M
Mark Adler 已提交
422
  return snprintf(buf, sizeof(buf), "%s", "foo");
M
Mark Adler 已提交
423 424
}

M
Mark Adler 已提交
425
int main()
M
Mark Adler 已提交
426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449
{
  return (mytest());
}
EOF

    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
      echo "Checking for return value of snprintf()... Yes."
    else
      CFLAGS="$CFLAGS -DHAS_snprintf_void"
      echo "Checking for return value of snprintf()... No."
      echo "  WARNING: apparently snprintf() does not return a value. zlib"
      echo "  can build but will be open to possible string-format security"
      echo "  vulnerabilities."
    fi
  else
    CFLAGS="$CFLAGS -DNO_snprintf"
    echo "Checking for snprintf() in stdio.h... No."
    echo "  WARNING: snprintf() not found, falling back to sprintf(). zlib"
    echo "  can build but will be open to possible buffer-overflow security"
    echo "  vulnerabilities."

    cat >$test.c <<EOF
#include <stdio.h>

M
Mark Adler 已提交
450
int mytest()
M
Mark Adler 已提交
451 452 453
{
  char buf[20];

M
Mark Adler 已提交
454
  return sprintf(buf, "%s", "foo");
M
Mark Adler 已提交
455 456
}

M
Mark Adler 已提交
457
int main()
M
Mark Adler 已提交
458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475
{
  return (mytest());
}
EOF

    if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
      echo "Checking for return value of sprintf()... Yes."
    else
      CFLAGS="$CFLAGS -DHAS_sprintf_void"
      echo "Checking for return value of sprintf()... No."
      echo "  WARNING: apparently sprintf() does not return a value. zlib"
      echo "  can build but will be open to possible string-format security"
      echo "  vulnerabilities."
    fi
  fi
fi

cat >$test.c <<EOF
M
Mark Adler 已提交
476 477 478 479
#include <errno.h>
int main() { return 0; }
EOF
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
M
Mark Adler 已提交
480
  echo "Checking for errno.h... Yes."
M
Mark Adler 已提交
481
else
M
Mark Adler 已提交
482
  echo "Checking for errno.h... No."
M
Mark Adler 已提交
483 484
  CFLAGS="$CFLAGS -DNO_ERRNO_H"
fi
M
Mark Adler 已提交
485

M
Mark Adler 已提交
486 487 488 489 490
cat > $test.c <<EOF
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/stat.h>
caddr_t hello() {
M
Mark Adler 已提交
491
  return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0);
M
Mark Adler 已提交
492 493 494 495 496 497 498 499 500
}
EOF
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
  CFLAGS="$CFLAGS -DUSE_MMAP"
  echo Checking for mmap support... Yes.
else
  echo Checking for mmap support... No.
fi

M
Mark Adler 已提交
501 502 503 504 505 506 507 508 509 510 511
CPP=${CPP-"$CC -E"}
case $CFLAGS in
  *ASMV*)
    if test "`nm $test.o | grep _hello`" = ""; then
      CPP="$CPP -DNO_UNDERLINE"
      echo Checking for underline in external names... No.
    else
      echo Checking for underline in external names... Yes.
    fi;;
esac

M
Mark Adler 已提交
512
rm -f $test.[co] $test $test$shared_ext
M
Mark Adler 已提交
513

M
Mark Adler 已提交
514 515
# udpate Makefile
sed < Makefile.in "
M
Mark Adler 已提交
516 517
/^CC *=/s#=.*#=$CC#
/^CFLAGS *=/s#=.*#=$CFLAGS#
M
Mark Adler 已提交
518
/^SFLAGS *=/s#=.*#=$SFLAGS#
M
Mark Adler 已提交
519
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
M
Mark Adler 已提交
520
/^LDSHARED *=/s#=.*#=$LDSHARED#
M
Mark Adler 已提交
521
/^CPP *=/s#=.*#=$CPP#
M
Mark Adler 已提交
522 523 524 525
/^LIBS *=/s#=.*#=$LIBS#
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
M
Mark Adler 已提交
526
/^AR *=/s#=.*#=$AR_RC#
M
Mark Adler 已提交
527
/^RANLIB *=/s#=.*#=$RANLIB#
M
Mark Adler 已提交
528
/^EXE *=/s#=.*#=$EXE#
M
Mark Adler 已提交
529 530 531 532 533
/^prefix *=/s#=.*#=$prefix#
/^exec_prefix *=/s#=.*#=$exec_prefix#
/^libdir *=/s#=.*#=$libdir#
/^includedir *=/s#=.*#=$includedir#
/^mandir *=/s#=.*#=$mandir#
M
Mark Adler 已提交
534 535
/^all: */s#:.*#: $ALL#
/^test: */s#:.*#: $TEST#
M
Mark Adler 已提交
536
" > Makefile
M
Mark Adler 已提交
537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558

sed < zlib.pc.in "
/^CC *=/s#=.*#=$CC#
/^CFLAGS *=/s#=.*#=$CFLAGS#
/^CPP *=/s#=.*#=$CPP#
/^LDSHARED *=/s#=.*#=$LDSHARED#
/^LIBS *=/s#=.*#=$LIBS#
/^SHAREDLIB *=/s#=.*#=$SHAREDLIB#
/^SHAREDLIBV *=/s#=.*#=$SHAREDLIBV#
/^SHAREDLIBM *=/s#=.*#=$SHAREDLIBM#
/^AR *=/s#=.*#=$AR_RC#
/^RANLIB *=/s#=.*#=$RANLIB#
/^EXE *=/s#=.*#=$EXE#
/^prefix *=/s#=.*#=$prefix#
/^exec_prefix *=/s#=.*#=$exec_prefix#
/^libdir *=/s#=.*#=$libdir#
/^includedir *=/s#=.*#=$includedir#
/^mandir *=/s#=.*#=$mandir#
/^LDFLAGS *=/s#=.*#=$LDFLAGS#
" | sed -e "
s/\@VERSION\@/$VER/g;
" > zlib.pc