#!/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"
#
# 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

LIBS=libz.a
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
AR=${AR-"ar rc"}
prefix=${prefix-/usr/local}
exec_prefix=${exec_prefix-$prefix}

test -z "$CC" && echo Checking for gcc...
test=ztest$$
cat > $test.c <<EOF
int hello() { printf("hello\n"); }
EOF
if test -z "$CC" && (gcc -c -O3 $test.c) 2>/dev/null; then
  CC=gcc
  SFLAGS=${CFLAGS-"-fPIC -O3"}
  CFLAGS=${CFLAGS-"-O3"}
  LDSHARED=${LDSHARED-"gcc -shared"}
else
  # find system name and corresponding cc options
  CC=${CC-cc}
  case `(uname -sr || echo unknown) 2>/dev/null` in
  SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."}
             CFLAGS=${CFLAGS-"-fast -xcg89"}
	     LDSHARED=${LDSHARED-"cc -G"};;
  SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
	     CFLAGS=${CFLAGS-"-O2"}
	     LDSHARED=${LDSHARED-"ld"};;
  IRIX*)     SFLAGS=${CFLAGS-"-O2 -rpath ."}
	     CFLAGS=${CFLAGS-"-O2"}
	     LDSHARED=${LDSHARED-"cc -shared"};;
  QNX*)      SFLAGS=${CFLAGS-"-4 -O -Q"}
             CFLAGS=${CFLAGS-"-4 -O -Q"}
	     LDSHARED=${LDSHARED-"cc"}
             LIBS=zlib.lib
             AR="cc -A";;
  # send working options for other systems to gzip@prep.ai.mit.edu
  *)         SFLAGS=${CFLAGS-"-O"}
	     CFLAGS=${CFLAGS-"-O"}
	     LDSHARED=${LDSHARED-"-shared"};;
  esac
fi

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.so $test.o 2>&1`" = ""; then
  CFLAGS="$SFLAGS"
  LIBS='libz.so.$(VER)'
  echo Building shared library libz.so.$VER with $CC.
else
  LDSHARED="$CC"
  echo Building static library $LIBS version $VER with $CC.
fi
rm -f $test.[co] $test.so

# udpate Makefile
# ed -s Makefile <<EOF
sed < Makefile.in "
/^CC *=/s/=.*/=$CC/
/^CFLAGS *=/s/=.*/=$CFLAGS/
/^LDSHARED *=/s/=.*/=$LDSHARED/
/^LIBS *=/s,=.*,=$LIBS,
/^AR *=/s/=.*/=$AR/
/^VER *=/s/=.*/=$VER/
/^prefix *=/s,=.*,=$prefix,
/^exec_prefix *=/s,=.*,=$exec_prefix,
" > Makefile
#w
#q
#EOF
