#!/bin/sh
#
# @(#) Configure 1.115@(#)
# pmg@wellington.i202.centerclick.org|Configure|20051213024432|40052
#
VERSION=1.4.b03-lamm.b02
RELEASE=1
if [ -d BitKeeper -a -f "`type bk 2>/dev/null | awk '{print $NF}'`" ]; then
CSET=`bk prs -h -d':UTC:\n' -r+ ChangeSet`
echo $CSET > .cset_number
elif [ -f .cset_number ]; then
CSET=`cat .cset_number`
else
CSET="Unknown"
fi
if [ $RELEASE -eq 1 ]; then
VERSIONLONG="$VERSION [$CSET]"
else
VERSIONLONG="$VERSION [PRERELEASE $CSET]"
fi
echo
echo "Configure for iroffer $VERSIONLONG"
usage()
{
echo "Usage: Configure [ options ]"
echo " -h This help"
echo " -e Print errors while running Configure"
echo " -d Compile with debug symbols"
echo " -p Compile with profiling flags"
echo " -w Compile with extra warning flags"
exit 1
}
OPT_ERRORS=false
OPT_DEBUG=false
OPT_WARN=false
OPT_PROF=false
while getopts 'hedpw' OPTNAME; do
case "$OPTNAME" in
h) usage;;
e) OPT_ERRORS=true;;
d) OPT_DEBUG=true;;
w) OPT_WARN=true;;
p) OPT_PROF=true;;
*) usage;;
esac
done
echo -n "Determining OS... "
uname
ostype=`uname`
platform=`uname -m`
short_ostype=`uname | cut -d "_" -f 1`
libs=""
rm -f config.error.* config.temp*
case "$ostype" in
Linux | FreeBSD | OpenBSD | NetBSD | IRIX | IRIX64 | \
OSF1 | Rhapsody | Darwin | AIX )
# nothing fancy
;;
SunOS )
libs="$libs -lsocket -lnsl"
;;
BSD/OS )
ostype=BSD_OS
;;
HP-UX )
ostype=HPUX
;;
CYGWIN* )
ostype=$short_ostype
exe=.exe
# only 1.5.6 or later is supported
echo -n "Checking for cygwin >= 1.5.6... "
ver=`uname -r | cut -d '(' -f 1`
ver_A=`echo $ver | cut -d '.' -f 1`
ver_B=`echo $ver | cut -d '.' -f 2`
ver_C=`echo $ver | cut -d '.' -f 3`
# 2.x.x - 9.x.x, 1.6.x - 1.9.x, and 1.5.6 - 1.5.9 are ok
if [ \( "$ver_A" -ge "2" \) \
-o \( "$ver_A" -eq "1" -a "$ver_B" -ge "6" \) \
-o \( "$ver_A" -eq "1" -a "$ver_B" -eq "5" -a "$ver_C" -ge "6" \) \
]; then
echo "OK, $ver"
else
echo "***ERROR***: $ver < 1.5.6"
exit # fatal error
waserror=yes
fi
;;
*)
echo "***ERROR***: This OS is not supported"
exit
;;
esac
echo "/* Automatically Generated, Do Not Edit */" > src/iroffer_config.h
echo "" >> src/iroffer_config.h
echo "#define VERSIONLONG \"$VERSIONLONG\"" >> src/iroffer_config.h
echo "#define _OS_$ostype" >> src/iroffer_config.h
if $OPT_ERRORS; then
echo "Printing Errors During Execution..."
shift
else
exec 2>/dev/null
fi
if $OPT_DEBUG; then
echo "Configuring for debugging."
DEBUG="-g"
shift
else
DEBUG="-O2"
fi
if $OPT_WARN; then
echo "Configuring for extra warnings."
WARNS="-Wshadow
-Wpointer-arith
-Wcast-qual
-Wcast-align
-Wstrict-prototypes
-Wmissing-prototypes
-Wmissing-declarations
-Winline
-Wwrite-strings
-Werror"
shift
fi
if $OPT_PROF; then
echo "Configuring for profiling."
PROF="-pg"
shift
fi
echo -n "Checking for make... "
if [ -f "`type make | awk '{print $NF}'`" ]; then
maketype="make"
if [ -x "`type $maketype | awk '{print $NF}'`" ]; then
echo "found $maketype"
else
echo "found $maketype. ***ERROR***: You are not allowed to execute $maketype"
waserror=yes
fi
elif [ -f "`type gmake | awk '{print $NF}'`" ]; then
maketype="gmake"
if [ -x "`type $maketype | awk '{print $NF}'`" ]; then
echo "found $maketype"
else
echo "found $maketype. ***ERROR***: You are not allowed to execute $maketype"
waserror=yes
fi
else
echo "not found. ***ERROR***: Couldn't find make or gmake"
maketype="make"
waserror=yes
fi
echo -n "Checking for gcc/cc... "
if [ -f "`type gcc | awk '{print $NF}'`" ]; then
cctype="gcc"
if [ -x "`type $cctype | awk '{print $NF}'`" ]; then
echo "found $cctype"
else
echo "found $cctype. ***ERROR***: You are not allowed to execute $cctype"
waserror=yes
fi
elif [ -f "`type cc | awk '{print $NF}'`" ]; then
cctype="cc"
if [ -x "`type $cctype | awk '{print $NF}'`" ]; then
echo "found $cctype"
else
echo "found $cctype. ***ERROR***: You are not allowed to execute $cctype"
waserror=yes
fi
else
echo "not found. ***ERROR***: Couldn't find gcc or cc"
maketype="gcc"
waserror=yes
fi
echo -n "Seeing if $cctype works... "
echo "
#include <stdlib.h>
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -o config.temp config.temp.c ; then
echo "yes"
else
echo " ***ERROR***: $cctype didn't seem to work."
waserror=yes
fi
echo -n "Seeing if $cctype accepts '-Wall'... "
echo "
#include <stdlib.h>
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -Wall -o config.temp config.temp.c ; then
echo "yes"
WARNS="-Wall $WARNS"
else
echo " no"
fi
echo -n "Seeing if $cctype accepts '-Werror'... "
echo "
#include <stdlib.h>
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -Werror -o config.temp config.temp.c ; then
echo "yes"
WERROR="-Werror"
else
echo " no"
fi
echo -n "Seeing how to define a 16 bit integer... "
echo "
#define GEX
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char **argv) {
printf(\"%d\", (int)sizeof( C_IR_INT16 ));
exit(0);
}
" > config.temp.c
if $cctype -DC_IR_INT16="short" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "2" ]; then
echo "short"
echo "typedef short ir_int16;" >> src/iroffer_config.h
echo "typedef unsigned short ir_uint16;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT16="int" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "2" ]; then
echo "int"
echo "typedef int ir_int16;" >> src/iroffer_config.h
echo "typedef unsigned int ir_uint16;" >> src/iroffer_config.h
else
echo "Unknown. ***ERROR***: neither short or int worked."
waserror=yes
fi
echo -n "Seeing how to define a 32 bit integer... "
echo "
#define GEX
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char **argv) {
printf(\"%d\", (int)sizeof( C_IR_INT32 ));
exit(0);
}
" > config.temp.c
if $cctype -DC_IR_INT32="int" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "4" ]; then
echo "int"
echo "typedef int ir_int32;" >> src/iroffer_config.h
echo "typedef unsigned int ir_uint32;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT32="long" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "4" ]; then
echo "long"
echo "typedef long ir_int32;" >> src/iroffer_config.h
echo "typedef unsigned long ir_uint32;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT32="long long" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "4" ]; then
echo "long long"
echo "typedef long long ir_int32;" >> src/iroffer_config.h
echo "typedef unsigned long long ir_uint32;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT32="short" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "4" ]; then
echo "short"
echo "typedef short ir_int32;" >> src/iroffer_config.h
echo "typedef unsigned short ir_uint32;" >> src/iroffer_config.h
else
echo "Unknown. ***ERROR***: neither short, int, long or long long worked."
waserror=yes
fi
echo -n "Seeing how to define a 64 bit integer... "
echo "
#define GEX
#include <stdlib.h>
#include <stdio.h>
int main (int argc, char **argv) {
printf(\"%d\", (int)sizeof( C_IR_INT64 ));
exit(0);
}
" > config.temp.c
if $cctype -DC_IR_INT64="long long" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "8" ]; then
echo "long long"
echo "typedef long long ir_int64;" >> src/iroffer_config.h
echo "typedef unsigned long long ir_uint64;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT64="long" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "8" ]; then
echo "long"
echo "typedef long ir_int64;" >> src/iroffer_config.h
echo "typedef unsigned long ir_uint64;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT64="int" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "8" ]; then
echo "int"
echo "typedef int ir_int64;" >> src/iroffer_config.h
echo "typedef unsigned int ir_uint64;" >> src/iroffer_config.h
elif $cctype -DC_IR_INT64="short" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "8" ]; then
echo "short"
echo "typedef short ir_int64;" >> src/iroffer_config.h
echo "typedef unsigned short ir_uint64;" >> src/iroffer_config.h
else
echo "Unknown. ***ERROR***: neither short, int, long or long long worked."
waserror=yes
fi
echo -n "Seeing if compiling with standard #include's works... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -DSIGNEDSOCK=signed config.temp.c $libs -o config.temp; then
echo "looks good"
else
echo " ***ERROR***: couldn't build with standard #include's"
waserror=yes
fi
echo -n "Seeing how large FD_SETSIZE is... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
FD_SETSIZE
" > config.temp.c
if $cctype -E -o config.temp.p config.temp.c $WARNS $WERROR ; then
setsize=`tail -2 config.temp.p |grep -v "config.temp"`
setsize="${setsize%U}"
echo -n " $setsize"
if [ "$ostype" = CYGWIN -a $setsize -le 255 ]; then
echo ", Boosting up to 255"
echo "#define FD_SETSIZE 255" >> src/iroffer_config.h
else
echo
fi
else
echo " ***ERROR***: couldn't determine it"
waserror=yes
fi
echo -n "Determining endianness... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
printf(\"%s\", (100 == ntohl(100)) ? \"big\" : \"little\");
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "big" ]; then
echo "big"
echo "#define IR_ENDIAN_BIG" >> src/iroffer_config.h
elif [ "`./config.temp`" = "little" ]; then
echo "little"
echo "#define IR_ENDIAN_LITTLE" >> src/iroffer_config.h
else
echo "Unknown. ***ERROR***"
waserror=yes
fi
echo -n "Seeing if large file support works... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
int fd;
int array[ ((int)sizeof(off_t)) - 7 ];
fd=open(\"foo\", O_RDWR | O_CREAT | ADDED_OPEN_FLAGS);
array[0] = array[0];
exit(0);
}
" > config.temp.c
if $cctype -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "yes"
echo "#define _FILE_OFFSET_BITS 64" >> src/iroffer_config.h
echo "#define _LARGEFILE_SOURCE" >> src/iroffer_config.h
else
echo "No. Max filesize will be 2GB."
fi
echo -n "Determing the signedness of 'addrlen'... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
int a; struct sockaddr_in b; SIGNEDSOCK int c;
getsockname(a,(struct sockaddr *)&b,&c);
exit(0);
}
" > config.temp.c
if $cctype -DSIGNEDSOCK=signed config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "signed"
echo "#define SIGNEDSOCK signed" >> src/iroffer_config.h
elif $cctype -DSIGNEDSOCK=unsigned config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "unsigned"
echo "#define SIGNEDSOCK unsigned" >> src/iroffer_config.h
else
echo "Unknown. ***ERROR***: neither signed or unsigned worked."
echo "#define SIGNEDSOCK signed" >> src/iroffer_config.h
waserror=yes
fi
echo -n "Seeing how to display long long using printf... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
long long a = 1000000000;
a = a*10;
printf(\"%\" LLPRINTFMT \"i\",a);
exit(0);
}
" > config.temp.c
if $cctype -DLLPRINTFMT=\"ll\" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "10000000000" ]; then
echo "ll"
echo "#define LLPRINTFMT \"ll\"" >> src/iroffer_config.h
elif $cctype -DLLPRINTFMT=\"L\" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "10000000000" ]; then
echo "L"
echo "#define LLPRINTFMT \"L\"" >> src/iroffer_config.h
elif $cctype -DLLPRINTFMT=\"l\" config.temp.c $libs -o config.temp $WARNS $WERROR && [ "`./config.temp`" = "10000000000" ]; then
echo "l"
echo "#define LLPRINTFMT \"l\"" >> src/iroffer_config.h
else
echo "Unknown. ***ERROR***: neither ll, l, or L worked."
echo "#define LLPRINTFMT \"L\"" >> src/iroffer_config.h
waserror=yes
fi
echo -n "Checking for snprintf()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {char *s; snprintf(s,10,\"blah\"); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "found"
else
echo "#define NO_SNPRINTF" >> src/iroffer_config.h
echo "missing, will emulate"
fi
echo -n "Checking for strcasecmp()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {(void)strcasecmp(\"blah\",\"blah\"); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "found"
else
echo "#define NO_STRCASECMP" >> src/iroffer_config.h
echo "missing, will emulate"
fi
echo -n "Checking for strsignal()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {strsignal(1); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "found"
else
echo "#define NO_STRSIGNAL" >> src/iroffer_config.h
echo "missing, will emulate"
fi
echo -n "Checking for regcomp()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {regex_t *t; regcomp(t,\"blah\",REG_ICASE|REG_NOSUB); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "found"
else
echo "Missing. ***ERROR***: couldn't find regcomp()"
waserror=yes
fi
echo -n "Seeing if 'sys/mman.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_MMAN_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_MMAN_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Seeing if 'sys/sendfile.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_SENDFILE_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_SENDFILE_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Seeing if 'sys/vfs.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_VFS_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_VFS_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Seeing if 'sys/statfs.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_STATFS_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_STATFS_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Seeing if 'sys/param.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_PARAM_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_PARAM_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Seeing if 'sys/mount.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_MOUNT_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_MOUNT_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Seeing if 'sys/statvfs.h' exists... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype -c -DHAS_SYS_STATVFS_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_SYS_STATVFS_H" >> src/iroffer_config.h
echo "found"
else
echo "not found"
fi
echo -n "Checking for statvfs()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {struct statvfs stf; statvfs(\"\",&stf); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "found"
else
echo "#define NO_STATVFS" >> src/iroffer_config.h
echo "missing"
fi
echo -n "Checking for statfs()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {struct statfs stf; statfs(\"\",&stf); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR ; then
echo "found"
else
echo "#define NO_STATFS" >> src/iroffer_config.h
echo "missing"
fi
echo -n "Seeing if 'crypt.h' is needed... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {crypt(\"aaaaaaaa\",\"aa\"); exit(0);}
" > config.temp.c
if $cctype -c -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "not needed"
elif $cctype -c -DHAS_CRYPT_H -o config.temp.o config.temp.c $WARNS $WERROR ; then
echo "#define HAS_CRYPT_H" >> src/iroffer_config.h
echo "needed"
else
echo "Missing. ***ERROR***: couldn't find crypt() with or without crypt.h"
echo "#define HAS_CRYPT_H" >> src/iroffer_config.h
waserror=yes
fi
echo -n "Seeing if '-lcrypt' is needed... "
if $cctype -o config.temp config.temp.o $WARNS $WERROR ; then
echo "not needed"
elif $cctype -o config.temp config.temp.o $libs -lcrypt $WARNS $WERROR ; then
libs="$libs -lcrypt"
echo "needed"
else
echo "Neither!"
echo -n "Seeing if '-lcrypto' works instead... "
if $cctype -o config.temp config.temp.o $libs -lcrypto $WARNS $WERROR ; then
libs="$libs -lcrypto"
echo "yes"
else
echo "Missing. ***ERROR***: couldn't link with or without -lcrypt or -lcrypto"
libs="$libs -lcrypt"
waserror=yes
fi
fi
echo -n "Seeing if crypt() works as expected... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
char *pwout;
pwout = crypt(\"testtest\",\"LH\");
if (pwout && !strcmp(\"LHD/pLKwfn0.k\", pwout))
{
exit(0);
}
exit(1);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR && ./config.temp; then
echo "yes"
else
echo "no, will disable encrypted passwords"
echo "#define NO_CRYPT" >> src/iroffer_config.h
fi
echo -n "Checking for chroot()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {chroot(\".\"); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_CHROOT" >> src/iroffer_config.h
echo "missing, will desactivate chroot()-ing"
fi
if [ "$ostype" = CYGWIN ]; then
echo "#define NO_SETUID" >> src/iroffer_config.h
echo "#define NO_CHROOT" >> src/iroffer_config.h
echo "deactivate chroot()-ing"
fi
echo -n "Seeing if NSS libraries exist (for chroot)... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -lnss_files -lnss_dns -o config.temp $WARNS $WERROR; then
NSSLIBS="-lnss_files -lnss_dns"
echo "found"
else
NSSLIBS=""
echo "missing"
fi
echo -n "Checking for setuid()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {setuid(0); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_SETUID" >> src/iroffer_config.h
echo "missing, will desactivate setuid()-ing"
fi
echo -n "Checking for getgrouplist()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {getgrouplist (NULL, 0, NULL, NULL); exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_GETGROUPLIST" >> src/iroffer_config.h
echo "missing, group list will be incorrect when setuid()-ing"
fi
if [ "x$ostype" = "xLinux" ]; then
echo -n "Checking for Linux-style sendfile()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
int out_fd = 0;
int in_fd = 0;
off_t offset = 0;
size_t count = 0;
ssize_t ret_val;
ret_val = sendfile(out_fd, in_fd, &offset, count);
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "#define HAVE_LINUX_SENDFILE" >> src/iroffer_config.h
echo "found"
else
echo "missing, won't use sendfile()"
fi
fi
if [ "x$ostype" = "xFreeBSD" ]; then
echo -n "Checking for FreeBSD-style sendfile()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
int in_fd = 0;
int out_fd = 0;
off_t offset = 0;
off_t offset2 = 0;
size_t count = 0;
struct sf_hdtr hdr = {};
int ret_val;
ret_val = sendfile(in_fd, out_fd, offset, count,
&hdr, &offset2, 0);
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "#define HAVE_FREEBSD_SENDFILE" >> src/iroffer_config.h
echo "found"
else
echo "missing, won't use sendfile()"
fi
fi
echo -n "Checking for mmap()/munmap()... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
mmap(NULL,0,PROT_READ,MAP_SHARED,0,0);
munmap(NULL,0);
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "#define HAVE_MMAP" >> src/iroffer_config.h
echo "found"
else
echo "missing, won't use mmap()"
fi
echo -n "Checking for name of fd limit... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
struct rlimit rlim;
getrlimit(RLIMIT_NOFILE, &rlim);
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "RLIMIT_NOFILE"
else
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv)
{
struct rlimit rlim;
getrlimit(RLIMIT_OFILE, &rlim);
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "RLIMIT_OFILE"
echo "#define USE_OFILE" >> src/iroffer_config.h
else
waserror=yes
echo "neither work, thats not good"
fi
fi
echo -n "Checking for siginfo_t/sa_sigaction... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {siginfo_t si; struct sigaction sa; sa.sa_sigaction = NULL; si.si_code = 0; exit(0);}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_SIGINFO" >> src/iroffer_config.h
echo "missing, will use lame signal handlers"
fi
echo -n "Checking for si_code values... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
siginfo_t si;
si.si_code = BUS_ADRALN;
si.si_code = BUS_ADRERR;
si.si_code = BUS_OBJERR;
si.si_code = ILL_ILLOPC;
si.si_code = ILL_ILLOPN;
si.si_code = ILL_ILLADR;
si.si_code = ILL_ILLTRP;
si.si_code = ILL_PRVOPC;
si.si_code = ILL_PRVREG;
si.si_code = ILL_COPROC;
si.si_code = ILL_BADSTK;
si.si_code = FPE_INTDIV;
si.si_code = FPE_INTOVF;
si.si_code = FPE_FLTDIV;
si.si_code = FPE_FLTOVF;
si.si_code = FPE_FLTUND;
si.si_code = FPE_FLTRES;
si.si_code = FPE_FLTINV;
si.si_code = FPE_FLTSUB;
si.si_code = SEGV_MAPERR;
si.si_code = SEGV_ACCERR;
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_SIGCODES" >> src/iroffer_config.h
echo "missing, won't report si_codes"
fi
echo -n "Checking for wait status values... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
int status = 0;
if (WIFEXITED(status) ||
WIFSIGNALED(status) ||
WEXITSTATUS(status) ||
WTERMSIG(status))
{
status++;
}
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_WSTATUS_CODES" >> src/iroffer_config.h
echo "missing, won't report wait status codes"
fi
echo -n "Seeing if TOS can be set for IP sockets... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
int fd = 0;
int tempc = 0x8; /* IPTOS_THROUGHPUT */
setsockopt(fd, SOL_IP, IP_TOS, &tempc, sizeof(int));
exit(0);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "yes"
else
echo "#define CANT_SET_TOS" >> src/iroffer_config.h
echo "no"
fi
echo -n "Checking for gethostbyname error values... "
echo "
#define GEX
#include \"src/iroffer_config.h\"
#include \"src/iroffer_defines.h\"
#include \"src/iroffer_headers.h\"
#include \"src/iroffer_globals.h\"
int main (int argc, char **argv) {
int i;
switch (h_errno)
{
case HOST_NOT_FOUND:
case NO_ADDRESS:
#if NO_ADDRESS != NO_DATA
case NO_DATA:
#endif
case NO_RECOVERY:
case TRY_AGAIN:
i = 1;
default:
i = 0;
}
exit(i);
}
" > config.temp.c
if $cctype config.temp.c $libs -o config.temp $WARNS $WERROR; then
echo "found"
else
echo "#define NO_HOSTCODES" >> src/iroffer_config.h
echo "missing, won't report error codes"
fi
rm -f config.temp*
echo "Creating src/iroffer_config.h... Done"
echo -n "Creating Makefile... "
cp /dev/null Makefile
(
echo "# Automatically Generated, Do Not Edit #"
echo
echo VERSION=$VERSION
echo CC=$cctype
echo CONFIG_EXE=$exe
echo CONFIG_LDLIBS=$libs
echo CONFIG_LDFLAGS=$PROF $DEBUG
echo CONFIG_CFLAGS=$PROF $WARNS $DEBUG
echo CONFIG_CPPFLAGS=
echo CONFIG_CHROOT=$NSSLIBS
if [ -z "$NSSLIBS" ]; then
echo CONFIG_TARGETS=
else
echo CONFIG_TARGETS=iroffer_chroot$exe
fi
echo
cat Makefile.config
) > Makefile
echo Done
echo
if [ -n "$waserror" ]; then
echo "!!!!!WARNING!!!!! one or more errors occured, guesses for those values that failed were included."
echo "You should re-run Configure with the 'errors' arguemnt to see the details."
echo
fi
echo "Type \"$maketype\" to compile"
echo "No errors or warnings should appear when compiling, if they do, something is wrong"
echo
# end
syntax highlighted by Code2HTML, v. 0.9.1