diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 1858 |
1 files changed, 1858 insertions, 0 deletions
diff --git a/configure b/configure new file mode 100755 index 000000000..38693a570 --- /dev/null +++ b/configure @@ -0,0 +1,1858 @@ +#!/bin/sh +# +# Configuration script for Services. +# +# Anope (c) 2003 Anope team +# Contact us at anope@zero.org +# +# This program is free but copyrighted software; see the file COPYING for +# details. +# +# Based on the original code of Epona by PegSoft. +# Based on the original code of Services by Andy Church. + +########################################################################### + +# Nifty handy functions. + +echo2 () { + $ECHO2 "$*$ECHO2SUF" # these are defined later +} + +log () { + echo >&3 "$MODE: $*" +} + +run () { + echo >&3 "$MODE: >>> $*" + $* >&3 2>&3 </dev/null +} + +exists () { # because some shells don't have test -e + if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then + return 0 + else + return 1 + fi +} + +########################################################################### + +# Test for the presence of a given include file or function. If the +# variable TEST is non-empty, it contains code to be placed at the end of +# main(), and should return 0 if everything is okay, else 1. +# +# For includes: Pass the include filename as an argument. The variable +# HAVE_include_name, where "include_name" is the name of the include file +# with letters uppercased and non-alphanumerics replaced by underscores, is +# set to 1 if the include file is present, else 0. +# +# For functions: Pass the return type, function name, and prototype as +# arguments. The variable HAVE_function, where "function" is the name +# of the function with letters uppercased, is set to 1 if the function is +# available, else 0. +# +# For both: The result code of the function will be 0 (true) if the entity +# is present, else 1 (false). + +test_include () { + include="$1" + inc2="`echo $include | sed 'y+abcdefghijklmnopqrstuvwxyz/.-+ABCDEFGHIJKLMNOPQRSTUVWXYZ___+'`" + if [ -f "/usr/include/$include" ] ; then + eval "HAVE_${inc2}=1" + log "found $include in /usr/include" + return 0 + fi + cat >tmp/test.c <<EOT +#include <$include> +int main() { return 0; } +EOT + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + eval "HAVE_${inc2}=1" + log "found $include" + return 0 + else + eval "HAVE_${inc2}=0" + log "didn't find $include" + return 1 + fi +} + +test_function () { + rettype="$1" + func="$2" + proto="$3" + if [ ! "$rettype" -o ! "$func" ] ; then + log "test_function: missing parameter(s)" + return 1 + fi + if [ ! "$proto" ] ; then + proto="(...)" + fi + func2=`echo $func | tr '[a-z]' '[A-Z]'` + if [ ! "$TEST" ] ; then + TEST="return 0;" + fi + cat >tmp/test.c <<EOT + int main() { + extern int $func$proto; + $TEST + } +EOT + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test && run tmp/test ; then + eval "HAVE_${func2}=1" + log "found $func" + return 0 + else + eval "HAVE_${func2}=0" + log "didn't find $func" + return 1 + fi +} + +########################################################################### + +# If something happens that really shouldn't: + +whoa_there () { + echo "" + echo "" + echo "*** WHOA THERE! ***" + echo "" + echo "We suddenly couldn't compile using the C compiler we already tested!" + echo "The command line we used was:" + echo " $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test" + echo "Please try to fix this; if you can't, mail anope@zero.org" + echo "with information about your system, the output from this script," + echo "and the "\`"configure.log' file generated by this script." + echo "" + exit 4 +} + +########################################################################### +########################################################################### + +# Create a temporary directory for our use. + +if [ -d tmp ] ; then + rm -rf tmp +fi +if mkdir tmp ; then : ; else + echo "Failed to create temporary directory! Exiting." + exit 2 +fi +if chmod u+rwx tmp ; then : ; else + echo "Cannot write to temporary directory! Exiting." + exit 2 +fi + +########################################################################### + +# Variable initialization. + +PROGRAM=services +BINDEST=$HOME/services +DATDEST=$HOME/services + +RUNGROUP= +UMASK= +IRCTYPE="no default" +IRCTYPE_DEF= +IRCTYPE_DEF2= +ENCRYPTION= +IMPORTSUPPORT= +THREAD= +MYSQL= +RDB= +HAVE_MYSQL_MYSQL_H= +USE_MODULES= +MODULE_PATH= +HAS_RTLD_LOCAL= +CC_ELIBS= +CC_MLIBS= + + +INSTALL= +CP_ALL= + +CC= +CC_FLAGS=bonkle +CC_LFLAGS=bonkle +CC_LIBS=bonkle + +OSTYPE=bonkle + +TYPE_INT16= +TYPE_INT32= + +HAVE_STRINGS_H= +HAVE_SYS_SELECT_H= +HAVE_SYS_SYSPROTO_H= + +HAVE_GETHOSTBYNAME_R=bonkle + +HAVE_STRERROR= +HAVE_SYS_ERRLIST=0 + +HAVE_SNPRINTF= +BAD_SNPRINTF= +HAVE_STRICMP= +HAVE_STRCASECMP= +HAVE_STRDUP= +HAVE_STRSPN= +HAVE_STRSIGNAL= +HAVE_GETTIMEOFDAY= +HAVE_SETGRENT= +HAVE_UMASK= +HAVE_FORK= +MISSING=bonkle + +########################################################################### + +# How can we echo something without going to the next line? + +ECHO2SUF='' +if [ "`echo -n a ; echo -n b`" = "ab" ] ; then + ECHO2='echo -n' +elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then + ECHO2='echo' ; ECHO2SUF='\c' +elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then + ECHO2='printf "%s"' +else + # oh well... + ECHO2='echo' +fi +export ECHO2 ECHO2SUF + +########################################################################### + +# Command-line parsing. + +IGNORE_CACHE= ; USER_CC= ; USER_CC_FLAGS=bonkle ; USER_CC_LFLAGS=bonkle +USER_CC_LIBS= ; MYSQL_LIB_DIR=bonkle ; MYSQL_INC_DIR=bonkle + +export IGNORE_CACHE USER_CC USER_CC_FLAGS USER_CC_LFLAGS USER_CC_LIBS MYSQL_LIB_DIR MYSQL_INC_DIR + +while [ $# -gt 0 ] ; do + if [ "$1" = "-ignore-cache" ] ; then + IGNORE_CACHE=bonkle + elif [ "$1" = "-cc" ] ; then + shift + USER_CC=$1 + elif [ "$1" = "-cflags" ] ; then + shift + USER_CC_FLAGS=$1 + elif [ "$1" = "-lflags" ] ; then + shift + USER_CC_LFLAGS=$1 + elif [ "$1" = "-libs" ] ; then + shift + USER_CC_LIBS=$1 + elif [ "$1" = "-os2" ] ; then + PROGRAM=services.exe + elif [ "$1" = "-with-mysql-libs" ] ; then + shift + MYSQL_LIB_DIR=$1 + elif [ "$1" = "-with-mysql-includes" ] ; then + shift + MYSQL_INC_DIR=$1 + else + if [ "$1" != "-help" -a "$1" != "-h" -a "$1" != "--help" ]; then + echo >&2 Unknown option/parameter: "$1" + exitval=1 + else + exitval=0 + fi + cat >&2 <<EOT +Available options: + -ignore-cache Don't use cache file if it exists + -os2 Indicate that this is an OS/2 system. + -cc Specify C compiler to use (overrides cache and check) + -cflags Specify compilation flags (defaults: -O2 for gcc, + -O for other compilers; overrides cache/check) + -lflags Specify link flags for C compiler (default: none) + -libs Specify extra link libraries to use (default: none) + -with-mysql-libs Specify MySQL library directory to use (default: /usr/lib/mysql) + -with-mysql-includes Specify MySQL include directory to use (default: /usr/include) +EOT + exit $exitval + fi + shift +done + +########################################################################### + +echo "" +echo "-========================= A N O P E ==========================-" +echo "For more detailed information on the features of Anope1.5 please" +echo "read the self-named documentation found on the 'docs' directory." +echo "" + +echo "Anope is a set of IRC Service expanded upon Lara's Epona, based" +echo "on Andy Church's IRC Services. For all your Anope needs please" +echo "visit our portal at http://www.anope.org/" +echo "" + +echo "Please read the INSTALL file for install/upgrade instructions." +echo "Reading the FAQ and README files would be a good idea too. (all" +echo "documentation is located on directory 'docs')." +echo "-==============================================================-" +echo "" +echo "Beginning Services configuration." +echo "" + +########################################################################### + +# First, test for the presence of a config.cache file. If found, either +# don't use it (-ignore-cache), or let the user know how to not use it and +# then use it. + +if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then + cat <<EOT +Using defaults from config.cache. To ignore, either rm config.cache +or give the command-line option "-ignore-cache". + +EOT + . config.cache + if [ ! "$HAVE_SNPRINTF" \ + -o ! "$BAD_SNPRINTF" \ + -o ! "$HAVE_STRICMP" \ + -o ! "$HAVE_STRCASECMP" \ + -o ! "$HAVE_STRDUP" \ + -o ! "$HAVE_STRSPN" \ + -o ! "$HAVE_STRSIGNAL" ] ; then + MISSING=bonkle + fi +fi + +########################################################################### + +# Ask the user anything we need to know ahead of time. + +export ok INPUT + +#### + +ok=0 +echo "Note: press Return for the default, or enter a new value." +echo "In what directory do you want the binaries to be installed?" +while [ $ok -eq 0 ] ; do + echo2 "[$BINDEST] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$BINDEST + fi + if [ ! -d "$INPUT" ] ; then + if exists "$INPUT" ; then + echo "$INPUT exists, but is not a directory!" + else + echo "$INPUT does not exist. Create it?" + echo2 "[y] " + read YN + if [ "$YN" != "n" ] ; then + if mkdir -p $INPUT ; then + ok=1 + fi + fi + fi + elif exists "$INPUT/services.h" ; then + echo "You cannot use the Services source directory as a target directory." + else + ok=1 + fi +done +BINDEST=$INPUT +DATDEST=$INPUT +echo "" + +#### + +ok=0 +echo "Where do you want the data files to be installed?" +while [ $ok -eq 0 ] ; do + echo2 "[$DATDEST] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DATDEST + fi + if [ ! -d "$INPUT" ] ; then + if exists "$INPUT" ; then + echo "$INPUT exists, but is not a directory!" + else + echo "$INPUT does not exist. Create it?" + echo2 "[y] " + read YN + if [ "$YN" != "n" ] ; then + if mkdir -p $INPUT ; then + ok=1 + fi + fi + fi + elif exists "$INPUT/services.h" ; then + echo "You cannot use the Services source directory as a target directory." + else + ok=1 + fi +done +DATDEST=$INPUT +echo "" + +#### + +OLD_RUNGROUP="$RUNGROUP" +if [ "$RUNGROUP" ] ; then + echo "Which group should all Services data files be owned by? (If Services" + echo "should not force files to be owned by a particular group, type "\"none\" + echo "(without the quotes) and press Return.)" +else + echo "Which group should all Services data files be owned by? (If Services" + echo "should not force files to be owned by a particular group, just press" + echo "Return.)" +fi +echo2 "[$RUNGROUP] " +if read INPUT ; then : ; else echo "" ; exit 1 ; fi +if [ "$INPUT" ] ; then + if [ "$INPUT" = "none" ] ; then + RUNGROUP="" + else + RUNGROUP="$INPUT" + fi +fi +echo "" + +#### + +if [ ! "$UMASK" -o "$RUNGROUP" != "$OLD_RUNGROUP" ] ; then + if [ "$RUNGROUP" ] ; then + UMASK=007 + else + UMASK=077 + fi +fi + +ok=0 +echo "What should the default umask for data files be (in octal)?" +echo "(077 = only accessible by owner; 007 = accessible by owner and group)" +while [ $ok -eq 0 ] ; do + echo2 "[$UMASK] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$UMASK + fi + if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then + echo "$UMASK is not a valid octal number!" + else + if [ "`echo $INPUT | cut -c1`" != "0" ] ; then + INPUT=0$INPUT + fi + ok=1 + fi +done +UMASK=$INPUT +echo "" + +#### + +ok=0 +echo "Select the closest to the type of server on your IRC network:" +echo " 1) DreamForge 4.6.7 [dated IRCd, upgrade to a current one]" +echo " 2) Bahamut 1.4.27 [or later]" +echo " 3) UnrealIRCd 3.1.1 [or later]" +echo " 4) UltimateIRCd 2.8.2 [or later]" +echo " 5) UltimateIRCd 3.0.0 [alpha26 or later]" +echo " 6) Hybrid IRCd 7.0 [experimental]" +echo " 7) ViagraIRCd 1.3.x [or later]" +echo " 8) PTlink 6.15.0 [experimental]" + +while [ $ok -eq 0 ] ; do + echo2 "[$IRCTYPE] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$IRCTYPE + fi + case $INPUT in + no\ default) + echo "You must specify your IRC server type in order for Services to function" + echo "correctly." + ;; + 1) + IRCTYPE_DEF="IRC_DREAMFORGE" + IRCTYPE_DEF2= + ok=1 + ;; + 2) + IRCTYPE_DEF="IRC_BAHAMUT" + IRCTYPE_DEF2= + ok=1 + ;; + 3) IRCTYPE_DEF="IRC_DREAMFORGE" + IRCTYPE_DEF2="IRC_UNREAL" + ok=1 + ;; + 4) IRCTYPE_DEF="IRC_DREAMFORGE" + IRCTYPE_DEF2="IRC_ULTIMATE" + ok=1 + ;; + 5) IRCTYPE_DEF="IRC_BAHAMUT" + IRCTYPE_DEF2="IRC_ULTIMATE3" + ok=1 + ;; + 6) IRCTYPE_DEF="IRC_HYBRID" + IRCTYPE_DEF2= + ok=1 + ;; + 7) IRCTYPE_DEF="IRC_BAHAMUT" + IRCTYPE_DEF2="IRC_VIAGRA" + ok=1 + ;; + 8) IRCTYPE_DEF="IRC_PTLINK" + IRCTYPE_DEF2= + ok=1 + ;; + *) + echo "Please enter a valid option number." + ;; + esac +done +IRCTYPE=$INPUT +echo "" + +#### + +if [ "$ENCRYPTION" = "ENCRYPT_MD5" ] ; then + DEF=yes +else + DEF=no +fi + +ok=0 +echo "Do you want to use the MD5 message-digest algorithm to encrypt passwords?" +echo "(Selecting "\"yes\"" protects your passwords from being stolen if someone" +echo "gains access to the Services databases, but makes it impossible to recover" +echo "forgotten passwords. There is no way to reverse this operation, so make" +echo "sure you really want to enable it.)" +while [ $ok -eq 0 ] ; do + echo2 "[$DEF] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DEF + fi + case $INPUT in + n*|N*) + ENCRYPTION= + ok=1 + ;; + y*|Y*) + ENCRYPTION=ENCRYPT_MD5 + ok=1 + ;; + *) + echo "Please enter `yes' or `no'." + ;; + esac +done +echo "" + + + +#### + +if [ "$THREAD" = "USE_THREADS" ] ; then + DEF=yes +else + DEF=no +fi + +ok=0 +echo "Do you want to compile Anope with threading support?" +echo "If you want to use the proxy detector, you MUST have this. If you get" +echo "compilation errors, you should disable this feature and try again." +while [ $ok -eq 0 ] ; do + echo2 "[$DEF] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DEF + fi + case $INPUT in + n*|N*) + THREAD= + ok=1 + ;; + y*|Y*) + THREAD="USE_THREADS" + ok=1 + ;; + *) + echo "Please enter yes or no." + ;; + esac +done +echo "" + +if [ "$MYSQL" = "USE_MYSQL" ] ; then + DEF=yes +else + DEF=no +fi + +ok=0 +echo "Do you want to compile Anope with MySQL support?" +echo "At this time Anope is able to dump all databases into MySQL. That means" +echo "you get a read-only copy of the data. If you plan to run any module that" +echo "uses MySQL, you should enable this option as well." +while [ $ok -eq 0 ] ; do + echo2 "[$DEF] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DEF + fi + case $INPUT in + n*|N*) + RDB= + MYSQL= + ok=1 + ;; + y*|Y*) + RDB="USE_RDB" + MYSQL="USE_MYSQL" + ok=1 + ;; + *) + echo "Please enter yes or no." + ;; + esac +done +echo "" + +#### + +if [ "$USE_MODULES" = "USE_MODULES" ] ; then + DEF=yes +else + DEF=no +fi + +ok=0 +echo "Do you want to compile Anope with Module support?" +echo "This will allow you to load and unload external modules of code without" +echo "restarting services. You can find several Anope modules on our website." +echo "This requires libdl, if you have problems compiling disable this option." +echo "(this option is ignored on OpenBSD for the time being)" +while [ $ok -eq 0 ] ; do + echo2 "[$DEF] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DEF + fi + case $INPUT in + n*|N*) + USE_MODULES= + MODULE_PATH= + ok=1 + ;; + y*|Y*) + USE_MODULES="USE_MODULES" + ok=1 + ;; + *) + echo "Please enter yes or no." + ;; + esac +done +echo "" + +### +if [ "$USE_MODULES" = "USE_MODULES" ] ; then + if [ "$MODULE_PATH" ] ; then + DEF=$MODULE_PATH + else + DEF=$BINDEST/modules/ + fi + ok=0 + echo "Where do you want the modules installed? (The trailing / is important)" + while [ $ok -eq 0 ] ; do + echo2 "[$DEF] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DEF + fi + if [ ! -d "$INPUT" ] ; then + if exists "$INPUT" ; then + echo "$INPUT exists, but is not a directory!" + else + echo "$INPUT does not exist. Create it?" + echo2 "[y] " + read YN + if [ "$YN" != "n" ] ; then + if mkdir -p $INPUT ; then + ok=1 + fi + fi + fi + elif exists "$INPUT/services.h" ; then + echo "You cannot use the Services source directory as a target directory." + else + ok=1 + fi + if [ ! -d "$INPUT/runtime/" ] ; then + if mkdir -p $INPUT/runtime/ ; then + ok=1 + fi + fi + done + MODULE_PATH=$INPUT + echo "" +fi +echo "" + +### + +echo "End of interactive configuration." +echo "" + +########################################################################### + +# Set up log file for automated tests, so we have a clue what's going on if +# something dies. + +exec 3>configure.log + +MODE=" " +TEST="" +export MODE TEST + +########################################################################### + +# Search for a compiler. + +MODE="find_cc " +echo2 "Searching for a suitable compiler... " +if [ "$USER_CC" ] ; then + CC="$USER_CC" + echo "(supplied) using $CC." + log user supplied \`"$USER_CC'" +elif [ "$CC" ] ; then + echo "(cached) using $CC." + log cache supplied \`"$CC'" +elif run gcc --version ; then + echo "great, found gcc!" + CC=gcc + DEF_CC_FLAGS=-O2 + log using \`gcc\' +else + echo "gcc not found." + echo2 " Looking for alternatives... " + echo >tmp/test.c "int main(){return 1;}" + if run cc tmp/test.c -o tmp/test ; then + CC=cc + elif run c89 tmp/test.c -o tmp/test ; then + CC=c89 + else + echo "no C compiler found!" + echo " Use the -cc command line option to specify your C compiler." + log "automatic tests failed" + exit 2 + fi + # See if it handles ANSI. + cat >tmp/test.c <<EOT + int main(int argc, char **argv) { + extern void foo(int bar); + } +EOT + log "test for ANSI..." + if run $CC tmp/test.c -o tmp/test ; then + echo "using $CC." + log using \`"$CC'" + else + echo "found $CC, but it's not ANSI-compliant!" + echo " Use the -cc command line option to specify your C compiler." + log \`"$CC' not ANSI-compliant" + exit 2 + fi + DEF_CC_FLAGS=-O +fi + + +# Test compiler options. + +MODE="find_ccopts " +if [ "$USER_CC_FLAGS" != bonkle ] ; then + CC_FLAGS="$USER_CC_FLAGS" + echo "Compiler flags supplied: $CC_FLAGS" + log user supplied flags: \`"$CC_FLAGS'" +elif [ "$CC_FLAGS" != bonkle ] ; then + echo "Compiler flags: (cached) $CC_FLAGS" + log cache supplied flags: \`"$CC_FLAGS'" +else + CC_FLAGS=$DEF_CC_FLAGS + echo2 "Testing default compiler flags ($CC_FLAGS)... " + cat >tmp/test.c <<EOT + int main(int argc, char **argv) { + extern void foo(int bar); + } +EOT + if run $CC $CC_FLAGS -c tmp/test.c -o tmp/test.o ; then + echo "looks good." + else + echo "no luck! Using no flags." + echo " If you know what flags you want, use the -cflags option to configure." + CC_FLAGS= + fi + log using flags: \`"$CC_FLAGS'" +fi + +########################################################################### + +# Set linker flags. + +MODE="find_lflags " +if [ "$USER_CC_LFLAGS" != "bonkle" ] ; then + CC_LFLAGS=$USER_CC_LFLAGS + log user supplied \`"$CC_LFLAGS'" +elif [ "$CC_LFLAGS" != "bonkle" ] ; then + log cache supplied \`"$CC_LFLAGS'" +else + log using no flags + CC_LFLAGS="" +fi + +########################################################################### + +# See what libraries we have that we might need. + +MODE="find_libs " +echo2 "Let's see what libraries are lying around... " +if [ "$CC_LIBS" != bonkle ] ; then + if [ "$CC_LIBS" ] ; then + echo "(cached) $CC_LIBS" + else + echo "(cached) none" + fi + log cache supplied \`"$CC_LIBS'" +else + CC_LIBS= + if run $CC $CC_FLAGS tmp/test.c -lnsl -o tmp/test ; then + CC_LIBS="$CC_LIBS -lnsl" + echo2 "-lnsl " + fi + if run $CC $CC_FLAGS tmp/test.c -lsocket -o tmp/test ; then + CC_LIBS="$CC_LIBS -lsocket" + echo2 "-lsocket " + fi + if run $CC $CC_FLAGS tmp/test.c -lresolv -o tmp/test ; then + CC_LIBS="$CC_LIBS -lresolv" + echo2 "-lresolv " + fi + if run $CC $CC_FLAGS tmp/test.c -lbsd -o tmp/test ; then + CC_LIBS="$CC_LIBS -lbsd" + echo2 "-lbsd " + fi + + if [ "$THREAD" = "USE_THREADS" ] ; then + if run $CC $CC_FLAGS -D_REENTRANT tmp/test.c -pthread -o tmp/test ; then + CC_FLAGS="$CC_FLAGS -D_REENTRANT" + CC_LIBS="$CC_LIBS -pthread" + echo2 "-pthread " + elif run $CC $CC_FLAGS -D_REENTRANT tmp/test.c -lpthread -o tmp/test ; then + CC_FLAGS="$CC_FLAGS -D_REENTRANT" + CC_LIBS="$CC_LIBS -lpthread" + echo2 "-lpthread " + else + THREAD="" + echo "" + echo "Configure was not able to determine how to compile Anope" + echo "with threading support; disabled it." + fi + fi + + if [ "$MYSQL" = "USE_MYSQL" ] ; then + if [ "$MYSQL_LIB_DIR" = bonkle ] ; then + # Let's try to find it... + MYSQL_LIB_DIR="`mysql_config --libs 2> /dev/null | awk '{print $1}' | sed s/-L//g | sed s/\'//g`" + if [ -f "$MYSQL_LIB_DIR/libmysqlclient.so" ] ; then + MYSQL_LIB_DIR="$MYSQL_LIB_DIR" + elif [ -f "/usr/lib/libmysqlclient.so" ] ; then + MYSQL_LIB_DIR="/usr/lib" + elif [ -f "/usr/lib/mysql/libmysqlclient.so" ] ; then + MYSQL_LIB_DIR="/usr/lib/mysql" + elif [ -f "/usr/local/lib/mysql/libmysqlclient.so" ] ; then + MYSQL_LIB_DIR="/usr/local/lib/mysql" + else + echo "" + echo "Couldn't find default MySQL lib directory." + echo "Specify your MySQL lib directory manually." + echo "Run $0 with:" + echo "-with-mysql-libs /path/to/libmysqlclient.so" + echo "" + echo "Exiting..." + exit 4 + fi + else + if [ ! -f "${MYSQL_LIB_DIR}/libmysqlclient.so" ] ; then + echo "" + echo "Couldn't find MySQL library files. Check" + echo "that your MySQL lib directory is correct" + echo "Exiting..." + exit 4 + else + export LD_LIBRARY_PATH="${MYSQL_LIB_DIR}:${LD_LIBRARY_PATH}" + MYSQL_LIBDIR_WARN="MYSQL_LIBDIR_WARN" + fi + fi + + if [ "$MYSQL_INC_DIR" = bonkle ] ; then + # Same deal as before + MYSQL_INC_DIR="`mysql_config --cflags 2> /dev/null | sed s/-I//g | sed s/\'//g`" + if [ -d "$MYSQL_INC_DIR" ] && [ -f "$MYSQL_INC_DIR/mysql/mysql.h" ] ; then + MYSQL_INC_DIR="$MYSQL_INC_DIR" + elif [ -f "$MYSQL_INC_DIR/mysql.h" ] ; then + MYSQL_INC_DIR="$MYSQL_INC_DIR" + HAVE_MYSQL_MYSQL_H="HAVE_MYSQL_MYSQL_H" + elif [ -d "/usr/include/mysql" ] && [ -f "/usr/include/mysql/mysql.h" ] ; then + MYSQL_INC_DIR="/usr/include" + elif [ -f "/usr/include/mysql.h" ] ; then + MYSQL_INC_DIR="/usr/include" + HAVE_MYSQL_MYSQL_H="HAVE_MYSQL_MYSQL_H" + elif [ -d "/usr/local/include" ] && [ -f "/usr/local/include/mysql/mysql.h" ] ; then + MYSQL_INC_DIR="/usr/local/include" + elif [ -f "/usr/local/include/mysql.h" ] ; then + MYSQL_INC_DIR="/usr/local/include" + HAVE_MYSQL_MYSQL_H="HAVE_MYSQL_MYSQL_H" + else + echo "" + echo "Couldn't find default MySQL include directory." + echo "Specify your MySQL include directory manually." + echo "Run $0 with:" + echo "-with-mysql-includes /path/to/mysql.h" + echo "" + echo "Exiting..." + exit 4 + fi + else + if [ -f "${MYSQL_INC_DIR}/mysql/mysql.h" ] ; then + MYSQL_INC_DIR="${MYSQL_INC_DIR}/mysql" + HAVE_MYSQL_MYSQL_H="HAVE_MYSQL_MYSQL_H" + elif [ -f "${MYSQL_INC_DIR}/mysql.h" ] ; then + HAVE_MYSQL_MYSQL_H="HAVE_MYSQL_MYSQL_H" + else + echo "" + echo "Couldn't find MySQL include files. Check that" + echo "your MySQL include directory is correct." + echo "Exiting..." + exit 4 + fi + + fi + + if [ "$HAVE_MYSQL_MYSQL_H" = "HAVE_MYSQL_MYSQL_H" ] ; then + cat >tmp/test.c <<EOT + #include <mysql.h> + int main(void) { return 0; } +EOT + else + cat >tmp/test.c <<EOT + #include <mysql/mysql.h> + int main(void) { return 0; } +EOT + fi + + if run $CC $CC_FLAGS -I$MYSQL_INC_DIR -L$MYSQL_LIB_DIR -lmysqlclient tmp/test.c ; then + CC_LIBS="$CC_LIBS -L$MYSQL_LIB_DIR -lmysqlclient -lz" + CC_FLAGS="$CC_FLAGS -I$MYSQL_INC_DIR" + echo2 "-lmysqlclient " + else + echo "" + echo "Unable to compile with MySQL support. Check that the include" + echo "and library directories are correct." + exit 4 + fi + + fi + + echo "" + CC_LIBS="`echo $CC_LIBS | sed 's/^ +//'`" +fi + +if [ "$USER_CC_LIBS" ] ; then + CC_LIBS="$CC_LIBS $USER_CC_LIBS" + echo "Additional user-supplied libraries: $USER_CC_LIBS" + log user added \`"$USER_CC_LIBS'" +fi + + +if [ "$USE_MODULES" = "USE_MODULES" ] ; then + cat >tmp/test.c <<EOT + #include <dlfcn.h> + int main(void) { return RTLD_LOCAL; } +EOT + if run $CC $CC_FLAGS tmp/test.c ; then + HAS_RTLD_LOCAL="yes" + echo "has RTLD_LOCAL " + else + echo "no RTLD_LOCAL" + fi +fi + + + +########################################################################### + +# OS specific behaviour + +echo2 "Looking for OS specific needs... " +if [ "$OSTYPE" != bonkle ] ; then + if [ "$OSTYPE" = "LINUX20" ] ; then + echo2 "(cached) Linux 2.0 or 2.1 thread handling; " + fi + if [ "$OSTYPE" = "LINUX22" ] ; then + echo2 "(cached) Linux 2.2+ thread handling; " + fi + if [ "$OSTYPE" = "JAGUAR" ] ; then + echo2 "(cached) Jaguar (MacOS X 10.2.x); " + fi + if [ "$OSTYPE" = "MACOSX" ] ; then + echo2 "(cached) MacOS X (10.0.x, 10.1.x); " + fi +else + if [ "$THREAD" = "USE_THREADS" -a `uname -s` = "Linux" ] ; then + VER=`uname -r` + case $VER in + 2.0*|2.1*) + OSTYPE="LINUX20" + echo2 "Linux 2.0 or 2.1 thread handling; " + ;; + *) + OSTYPE="LINUX22" + echo2 "Linux 2.2+ thread handling; " + ;; + esac + else + if [ `uname -s` = "Darwin" ] ; then + VER=`uname -r` + case $VER in + 6.*) + OSTYPE="JAGUAR" + echo2 "Jaguar (MacOS X 10.2.x); " + ;; + *) + OSTYPE="MACOSX" + echo2 "MacOS X (10.0.x, 10.1.x); " + ;; + esac + fi + fi +fi + +echo "" + +########################################################################### + +# See what sizes various types are. + +MODE="check_int16 " +echo2 "Looking for a 16-bit integer type... " +if [ "$TYPE_INT16" ] ; then + echo "(cached) $TYPE_INT16" + log "cache supplied $TYPE_INT16" +else + cat >tmp/test.c <<EOT + int main() { + int a; + short b; + printf("%d %d", sizeof(a), sizeof(b)); + return 0; + } +EOT + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + a="`tmp/test`" + log "test program output (sizeof(int) sizeof(short)): $a" + if [ ! "$a" ] ; then + echo "test program failed! Assuming short." + log "assuming short" + TYPE_INT16=short + else + size_int=`echo $a | cut -d\ -f1` + size_short=`echo $a | cut -d\ -f2` + if [ $size_int = 2 ] ; then + echo int + log "int is 16 bits" + TYPE_INT16=int + elif [ $size_short = 2 ] ; then + echo short + log "short is 16 bits" + TYPE_INT16=short + else + echo "none found?! Assuming short." + log "no 16-bit type found, assuming short" + TYPE_INT16=short + fi + fi + else + whoa_there + fi +fi + +MODE="check_int32 " +echo2 "Looking for a 32-bit integer type... " +if [ "$TYPE_INT32" ] ; then + echo "(cached) $TYPE_INT32" + log "cache supplied $TYPE_INT32" +else + cat >tmp/test.c <<EOT + int main() { + int a; + long b; + printf("%d %d", sizeof(a), sizeof(b)); + return 0; + } +EOT + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + a="`tmp/test`" + log "test program output (sizeof(int) sizeof(long)): $a" + if [ ! "$a" ] ; then + echo "test program failed! Assuming long." + log "assuming long" + TYPE_INT32=long + else + size_int=`echo $a | cut -d\ -f1` + size_long=`echo $a | cut -d\ -f2` + if [ $size_int = 4 ] ; then + echo int + log "int is 32 bits" + TYPE_INT32=int + elif [ $size_long = 4 ] ; then + echo long + log "long is 32 bits" + TYPE_INT32=long + else + echo "none found?! Assuming long." + log "no 32-bit type found, assuming long" + TYPE_INT32=long + fi + fi + else + whoa_there + fi +fi + +########################################################################### + +# Look for include files that might or might not be here. +echo "Checking for presence of include files (it's okay if some aren't there):" + +MODE="check_strings " +echo2 " strings.h... " +if [ "$HAVE_STRINGS_H" ] ; then + if [ "$HAVE_STRINGS_H" = 1 ] ; then + echo "(cached) present" + log "cache says present" + else + echo "(cached) not present" + log "cache says not present" + fi +else + if test_include strings.h ; then + echo "present" + else + echo "not present" + fi +fi + +MODE="check_sysselect " +echo2 " sys/select.h... " +if [ "$HAVE_SYS_SELECT_H" ] ; then + if [ "$HAVE_SYS_SELECT_H" = 1 ] ; then + echo "(cached) present" + log "cache says present" + else + echo "(cached) not present" + log "cache says not present" + fi +else + if test_include sys/select.h ; then + echo "present" + else + echo "not present" + fi +fi + +MODE="check_sysproto " +echo2 " sys/sysproto.h... " +if [ "$HAVE_SYS_SYSPROTO_H" ] ; then + if [ "$HAVE_SYS_SYSPROTO_H" = 1 ] ; then + echo "(cached) present" + log "cache says present" + else + echo "(cached) not present" + log "cache says not present" + fi +else + if test_include sys/sysproto.h ; then + echo "present" + else + echo "not present" + fi +fi + +########################################################################### + +# AIX workaround. + +MODE="check_aix_intNN " +echo2 "Seeing if your system defines int16/int32... " +res="`run egrep int16\|int32 /usr/include/sys/systypes.h`" +if [ "$res" ] ; then + echo "found." + echo " (This is bad, but we can work around it.)" + log "int16/int32 types found, enabling workaround" + INTTYPE_WORKAROUND=1 +else + echo "not found (this is good)." + log "int16/int32 types not found" + INTTYPE_WORKAROUND=0 +fi + +########################################################################### + +# How to use gethostbyname_r() ... + +if [ "$THREAD" = "USE_THREADS" ] ; then + MODE="check_gethostbyname_r " + echo2 "Figuring out how to call gethostbyname_r on your system... " + + if [ "$HAVE_GETHOSTBYNAME_R" != "bonkle" ] ; then + if [ "$HAVE_GETHOSTBYNAME_R" = "HAVE_GETHOSTBYNAME_R6" ] ; then + echo "(cached) with 6 parameters." + log "cache supplied with 6 parameters." + elif [ "$HAVE_GETHOSTBYNAME_R" = "HAVE_GETHOSTBYNAME_R5" ] ; then + echo "(cached) with 5 parameters." + log "cache supplied with 5 parameters." + elif [ "$HAVE_GETHOSTBYNAME_R" = "HAVE_GETHOSTBYNAME_R3" ] ; then + echo "(cached) with 3 parameters." + log "cache supplied with 3 parameters." + else + THREAD= + echo "(cached) no compatible gethostbyname_r()" + log "cache supplied no compatible gethostbyname_r()" + fi + else + cat >tmp/test.c <<EOT + #include "pthread.h" + #include "netdb.h" + + int main() { + char *name; + struct hostent *he, *res; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &res, &h_errnop); + } +EOT + + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + HAVE_GETHOSTBYNAME_R="HAVE_GETHOSTBYNAME_R6" + echo "with 6 parameters" + fi + + if [ "$HAVE_GETHOSTBYNAME_R" = "bonkle" ] ; then + + cat >tmp/test.c <<EOT + #include "pthread.h" + #include "netdb.h" + + int main() { + char *name; + struct hostent *he; + char buffer[2048]; + int buflen = 2048; + int h_errnop; + + (void) gethostbyname_r(name, he, buffer, buflen, &h_errnop); + } +EOT + + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + HAVE_GETHOSTBYNAME_R="HAVE_GETHOSTBYNAME_R5" + echo "with 5 parameters" + fi + + fi + + if [ "$HAVE_GETHOSTBYNAME_R" = "bonkle" ] ; then + + cat >tmp/test.c <<EOT + #include "pthread.h" + #include "netdb.h" + + int main() { + char *name; + struct hostent *he; + struct hostent_data data; + + gethostbyname_r(name, he, &data); + } +EOT + + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + HAVE_GETHOSTBYNAME_R="HAVE_GETHOSTBYNAME_R3" + echo "with 3 parameters" + fi + + fi + + if [ "$HAVE_GETHOSTBYNAME_R" = "bonkle" ] ; then + HAVE_GETHOSTBYNAME_R= + echo "no way, so we'll use mutexes" + fi + fi +fi + +########################################################################### + +# Look for missing/broken built-in routines, and similar compatibility +# stuff. + +MODE="check_strerror " +echo2 "How to complain when something goes wrong... " +if [ "$HAVE_STRERROR" ] ; then + if [ "$HAVE_STRERROR" = 1 ] ; then + echo "(cached) strerror()." + log "cache supplied strerror()" + elif [ "$HAVE_SYS_ERRLIST" = 1 ] ; then + echo "(cached) sys_errlist." + log "cache supplied sys_errlist" + else + HAVE_SYS_ERRLIST=0 # just in case... you never know. + echo "(cached) pseudo sys_errlist." + log "cache supplied pseudo sys_errlist" + fi +else + cat >tmp/test.c <<EOT + int main() { + extern void strerror(void); + strerror(); + } +EOT + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + HAVE_STRERROR=1 + echo "ah, strerror() is here." + log "using strerror()" + else + HAVE_STRERROR=0 + echo "no strerror()." + cat >tmp/test.c <<EOT +int main() { + extern char *sys_errlist[]; + char *s; + s = sys_errlist[0]; +} +EOT + log "trying sys_errlist..." + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then + HAVE_SYS_ERRLIST=1 + echo " But you have sys_errlist, which will do nicely." + log "using sys_errlist" + else + HAVE_SYS_ERRLIST=0 + echo " You don't have sys_errlist either, so we'll have to make do." + log "using pseudo sys_errlist" + fi + fi +fi + + +echo2 "Looking for other routines we want that you don't have... " + +MODE="check_compat " +if [ "$MISSING" != bonkle ] ; then + if [ ! "$MISSING" ] ; then + echo "(cached) none" + log "cache supplied: (none)" + else + echo "(cached)$MISSING" + log "cache supplied:$MISSING" + fi +else + MISSING= + + MODE="check_snprintf " + TEST='char buf[16]; + int res; + buf[0] = 0; + res = snprintf(buf, 8, "%d", 123456789); + if (strcmp(buf, "1234567") != 0) { + printf("test: snprintf broken (bad result in buffer: wanted 1234567, got \"%s\")\n", buf); + if (strlen(buf) > 7) + printf("test: your snprintf does not check buffer size!\n"); + return 1; + } else if (res != 7) { + printf("test: snprintf broken (wrong return value: wanted 7, got %d)\n", res); + return 1; + } else + return 0;' + if test_function int snprintf "(char *, int, const char *, ...)" ; then + BAD_SNPRINTF=0 + else + tmp="`tmp/test 2>&1`" + res="`echo $tmp | cut -d\ -f10 2>&1`" + if [ "$res" = "-1)" ] ; then + BAD_SNPRINTF=1 + log "found, but returns -1 if string too long" + elif [ "$res" = "9)" ] ; then + BAD_SNPRINTF=2 + log "found, but returns large value if string too long" + else + BAD_SNPRINTF=0 + MISSING="$MISSING snprintf" + echo2 "snprintf " + fi + fi + + MODE="check_stricmp " + TEST='extern int strnicmp(const char *, const char *, int); return stricmp("ABC","abc")==0 && strnicmp("ABC","abd",2)==0 ? 0 : 1;' + if test_function int stricmp "(const char *, const char *)" ; then + HAVE_STRCASECMP=0 # doesn't really matter + else + TEST='extern int strncasecmp(const char *, const char *, int); return strcasecmp("ABC","abc")==0 && strncasecmp("ABC","abd",2)==0 ? 0 : 1;' + if test_function int strcasecmp "(const char *, const char *)" + then : ; else + MISSING="$MISSING str[n]icmp" + echo2 "str[n]icmp " + fi + fi + + MODE="check_strdup " + TEST='char *s, *t; + s = "ABC"; + t = strdup(s);'" + return (t != (char *)0 && t[0]=='A' && t[1]=='B' && t[2]=='C' && t[3]==0) ? 0 : 1;" + if test_function "char *" strdup "(const char *)" ; then : ; else + MISSING="$MISSING strdup" + echo2 "strdup " + fi + + MODE="check_strspn " + TEST='return (strspn("ABCBA","BA")==2 && strspn("123","123")==3) ? 0 : 1;' + if test_function int strspn "(const char *, const char *)" ; then : ; else + MISSING="$MISSING strspn" + echo2 "strspn " + fi + + MODE="check_strsignal " + TEST="(void) strsignal(1); return 0;" + if test_function "char *" strsignal "(int)" ; then : ; else + MISSING="$MISSING strsignal" + echo2 "strsignal " + fi + + MODE="check_gettimeofday" + TEST="char buf[256]; (void) gettimeofday((void *)buf, (void *)buf); return 0;" + if test_function "char *" gettimeofday "(void *, void *)" ; then : ; else + MISSING="$MISSING gettimeofday" + echo2 "gettimeofday " + fi + + MODE="check_setgrent " + TEST="(void) setgrent(); return 0;" + if test_function int setgrent "(void)" ; then : ; else + MISSING="$MISSING setgrent" + echo2 "setgrent " + fi + + MODE="check_umask " + TEST="(void) umask(1); return 0;" + if test_function int umask "(int)" ; then : ; else + MISSING="$MISSING umask" + echo2 "umask " + fi + + MODE="check_fork " + TEST="(void) fork(); return 0;" + if test_function int fork "(void)" ; then : ; else + MISSING="$MISSING fork" + echo2 "fork " + fi + + MODE="check_gethostbyname" + TEST='(void) gethostbyname("localhost"); return 0;' + if test_function "struct hostent *" gethostbyname "(const char *)" ; then : ; else + MISSING="$MISSING gethostbyname" + echo2 "gethostbyname " + fi + + echo "" +fi + +if [ $HAVE_GETHOSTBYNAME = 0 ] ; then + cat <<EOT + +*** Notice: Your system does not seem to have the gethostbyname() function. +*** This function is used to translate hostnames into IP addresses. Since +*** you don't have it (or we can't find it), you will need to use IP +*** addresses instead of hostnames when setting the uplink server address +*** in services.conf. + +EOT +fi + +########################################################################### + +MODE="check_install " +echo2 "Checking how to install files... " + +if [ "$INSTALL" -a "$OLD_RUNGROUP" = "$RUNGROUP" ] ; then + if [ "`echo $INSTALL | cut -c1`" = "." ] ; then + echo '(cached) using our own "install".' + log "cache says use our own" + else + echo '(cached) this system'\''s "install" works.' + log "cache says use regular "\`"install'" + fi +else + cat >tmp/test.c <<EOT + int main() { return 0; } +EOT + if run $CC $CC_FLAGS tmp/test.c $CC_LIBS -o tmp/test ; then : ; else + whoa_there + fi + if run cp -p tmp/test tmp/test3 ; then : ; else + echo "" + echo "" + echo "*** WHOA THERE! ***" + echo "" + echo "A simple "\`"cp -p' failed!" + echo "Are you out of disk space?" + exit 4 + fi + + if run install -m 500 tmp/test tmp/test2 && test -f tmp/test && run cmp tmp/test tmp/test2 ; then + echo 'looks like "install" will work.' + if [ "$RUNGROUP" ] ; then + INSTALL="install -g $RUNGROUP -m 750" + else + INSTALL="install -m 700" + fi + elif run cp -p tmp/test3 tmp/test ; run install -c -m 500 tmp/test tmp/test2 && test -f tmp/test && run cmp tmp/test tmp/test2 ; then + echo 'looks like "install -c" will work.' + if [ "$RUNGROUP" ] ; then + INSTALL="install -c -g $RUNGROUP -m 750" + else + INSTALL="install -c -m 700" + fi + elif run cp -p tmp/test3 tmp/test ; run ginstall -m 500 tmp/test tmp/test2 && test -f tmp/test && run cmp tmp/test tmp/test2 ; then + echo 'looks like "ginstall" will work.' + if [ "$RUNGROUP" ] ; then + INSTALL="ginstall -g $RUNGROUP -m 750" + else + INSTALL="ginstall -m 700" + fi + else + echo \"install\"" doesn't seem to work." + echo " But we can still use cp and friends, so we'll roll our own "\"install\". + if [ "$RUNGROUP" ] ; then + INSTALL="./install-script -g $RUNGROUP -m 750" + else + INSTALL="./install-script -m 700" + fi + fi + log "using: $INSTALL" +fi + +########################################################################### + +MODE="check_copy_recur" +echo2 "Checking how to copy directories... " + +if [ "$CP_ALL" ] ; then + echo "(cached) $CP_ALL" + log "cache supplied $CP_ALL" +else + sysname=`/bin/uname -s 2>&1` + log "sysname: $sysname" + case $sysname in + Linux) CP_ALL="/bin/cp -dpr"; + log "guessing: cp -dpr";; + *) CP_ALL="/bin/cp -pr"; + log "guessing: cp -pr";; + esac + if [ ! -f tmp/test2 ] ; then + run cp tmp/test tmp/test2 + fi + if run /bin/mkdir tmp/testA && run /bin/mkdir tmp/testB && run /bin/mv tmp/test2 tmp/testA + then : ; else + echo "" + echo "" + echo "*** WHOA THERE! ***" + echo "" + echo "A few simple mkdir's and mv's failed!" + echo "Are you out of disk space?" + exit 4 + fi + if run $CP_ALL tmp/testA/* tmp/testB && run cmp tmp/testA/test2 tmp/testB/test2 ; then + echo "$CP_ALL" + log \`"$CP_ALL' works" + else + log \`"$CP_ALL' doesn't work" + run /bin/rm -rf tmp/testB/* + if run sh -c '/bin/tar -Ccf tmp/testA - . | /bin/tar -Cxf tmp/testB -' ; then + echo "tar (yuck)" + CP_ALL="./bin/cp-recursive -t" + log "using tar" + else + log "tar failed(!)" + echo "" + echo " Neither cp nor tar work! I give up." + exit 2 + fi + fi +fi + +########################################################################### + +# Create files. + +echo2 "Creating sysconf.h... " +cat >sysconf.h <<EOT +/* + * This file is generated automatically by "configure". Any changes made + * to it will be erased next time "configure" is run. + */ + +#define SERVICES_BIN "$BINDEST/services" +#define SERVICES_DIR "$DATDEST" + +EOT +if [ "$RUNGROUP" ] ; then cat >>sysconf.h <<EOT +#define RUNGROUP "$RUNGROUP" +EOT +fi +cat >>sysconf.h <<EOT +#define DEFUMASK $UMASK +EOT + +cat >>sysconf.h <<EOT + +#define $IRCTYPE_DEF +EOT +if [ "$IRCTYPE_DEF2" ] ; then cat >>sysconf.h <<EOT ; fi +#define $IRCTYPE_DEF2 +EOT +if [ "$ENCRYPTION" ] ; then cat >>sysconf.h <<EOT ; fi + +#define USE_ENCRYPTION +#define $ENCRYPTION +EOT + +if [ "$IMPORTSUPPORT" ] ; then cat >>sysconf.h <<EOT ; fi + +#define USE_CONVERTER +#define $IMPORTSUPPORT +EOT + +if [ "$THREAD" ] ; then cat >>sysconf.h <<EOT ; fi + +#define $THREAD +EOT + +if [ "$MYSQL" ] ; then cat >>sysconf.h <<EOT ; fi + +#define $MYSQL +EOT + +if [ "$RDB" ] ; then cat >>sysconf.h <<EOT ; fi + +#define $RDB +EOT + +if [ "$HAVE_MYSQL_MYSQL_H" ] ; then cat >>sysconf.h <<EOT ; fi +#define $HAVE_MYSQL_MYSQL_H +EOT + +if [ "$USE_MODULES" ] ; then cat >>sysconf.h <<EOT ; fi + +#define USE_MODULES 1 +#define MODULE_PATH "$MODULE_PATH" +EOT +if [ "$HAS_RTLD_LOCAL" ] ; then cat >>sysconf.h <<EOT ; fi +#define HAS_RTLD_LOCAL 1 +EOT + +if [ "$OSTYPE" != "bonkle" ] ; then cat >>sysconf.h <<EOT ; fi +#define $OSTYPE +EOT + +cat >>sysconf.h <<EOT + +typedef signed $TYPE_INT16 int16; +typedef unsigned $TYPE_INT16 uint16; +typedef signed $TYPE_INT32 int32; +typedef unsigned $TYPE_INT32 uint32; + +#define HAVE_STRINGS_H $HAVE_STRINGS_H +#define HAVE_SYS_SELECT_H $HAVE_SYS_SELECT_H +#define HAVE_SYS_SYSPROTO_H $HAVE_SYS_SYSPROTO_H + +#define HAVE_STRERROR $HAVE_STRERROR +#define HAVE_SYS_ERRLIST $HAVE_SYS_ERRLIST +#define HAVE_SNPRINTF $HAVE_SNPRINTF +#define BAD_SNPRINTF $BAD_SNPRINTF +#define HAVE_STRICMP $HAVE_STRICMP +#define HAVE_STRCASECMP $HAVE_STRCASECMP +#define HAVE_STRDUP $HAVE_STRDUP +#define HAVE_STRSPN $HAVE_STRSPN +#define HAVE_STRSIGNAL $HAVE_STRSIGNAL +#define HAVE_GETTIMEOFDAY $HAVE_GETTIMEOFDAY +#define HAVE_SETGRENT $HAVE_SETGRENT +#define HAVE_UMASK $HAVE_UMASK +#define HAVE_FORK $HAVE_FORK +#define HAVE_GETHOSTBYNAME $HAVE_GETHOSTBYNAME +EOT + +if [ "$THREAD" = "USE_THREADS" -a "$HAVE_GETHOSTBYNAME_R" != "" ] ; then +cat >>sysconf.h <<EOT +#define $HAVE_GETHOSTBYNAME_R +EOT +fi + +echo "done." + +echo2 "Creating Makefile.inc... " + +if [ "$USE_MODULES" = "USE_MODULES" ] ; then + if [ `uname -s` = "Linux" ] ; then + CC_ELIBS="$CC_ELIBS -ldl" + fi + CC_MLIBS="$CC_MLIBS -rdynamic" +fi + +cat >Makefile.inc <<EOT +# This file is generated automatically by "configure". Any changes made +# to it will be erased next time "configure" is run. + +CC=$CC +BASE_CFLAGS=$CC_FLAGS +LFLAGS=$CC_LFLAGS +LIBS=$CC_LIBS +ELIBS=$CC_ELIBS +MLIBS=$CC_MLIBS + +EOT +if [ $HAVE_SNPRINTF = 0 -a $BAD_SNPRINTF = 0 ];then cat >>Makefile.inc <<EOT;fi + +VSNPRINTF_C=vsnprintf.c +VSNPRINTF_O=vsnprintf.o +EOT +if [ "$RDB" = "USE_RDB" ];then cat >>Makefile.inc <<EOT;fi + +RDB_C=rdb.c +RDB_O=rdb.o +EOT +if [ "$MYSQL" = "USE_MYSQL" ];then cat >>Makefile.inc <<EOT;fi + +MYSQL_C=mysql.c +MYSQL_O=mysql.o +EOT +cat >>Makefile.inc <<EOT + +PROGRAM=$PROGRAM +BINDEST=$BINDEST +DATDEST=$DATDEST + +INSTALL=$INSTALL +CP_ALL=$CP_ALL +RUNGROUP=$RUNGROUP + +USE_MODULES=$USE_MODULES +MODULE_PATH=$MODULE_PATH +EOT +echo "done." + +########################################################################### + +# Save results in cache for next time around. + +echo2 "Saving configuration results in config.cache... " + +cat <<EOT >config.cache +PROGRAM="$PROGRAM" +BINDEST="$BINDEST" +DATDEST="$DATDEST" + +INSTALL="$INSTALL" +CP_ALL="$CP_ALL" + +RUNGROUP="$RUNGROUP" +UMASK=$UMASK +IRCTYPE=$IRCTYPE +IRCTYPE_DEF="$IRCTYPE_DEF" +IRCTYPE_DEF2="$IRCTYPE_DEF2" +ENCRYPTION="$ENCRYPTION" +IMPORTSUPPORT="$IMPORTSUPPORT" +THREAD="$THREAD" +MYSQL="$MYSQL" +USE_MODULES="$USE_MODULES" +MODULE_PATH="$MODULE_PATH" +HAVE_MYSQL_MYSQL_H="$HAVE_MYSQL_MYSQL_H" +OSTYPE="$OSTYPE" + +CC="$CC" +CC_FLAGS="$CC_FLAGS" +CC_LFLAGS="$CC_LFLAGS" +CC_LIBS="$CC_LIBS" + +TYPE_INT16=$TYPE_INT16 +TYPE_INT32=$TYPE_INT32 + +HAVE_STRINGS_H=$HAVE_STRINGS_H +HAVE_SYS_SELECT_H=$HAVE_SYS_SELECT_H +HAVE_SYS_SYSPROTO_H=$HAVE_SYS_SYSPROTO_H + +HAVE_GETHOSTBYNAME_R=$HAVE_GETHOSTBYNAME_R + +HAVE_STRERROR=$HAVE_STRERROR +HAVE_SYS_ERRLIST=$HAVE_SYS_ERRLIST + +HAVE_SNPRINTF=$HAVE_SNPRINTF +BAD_SNPRINTF=$BAD_SNPRINTF +HAVE_STRICMP=$HAVE_STRICMP +HAVE_STRCASECMP=$HAVE_STRCASECMP +HAVE_STRDUP=$HAVE_STRDUP +HAVE_STRSPN=$HAVE_STRSPN +HAVE_STRSIGNAL=$HAVE_STRSIGNAL +HAVE_GETTIMEOFDAY=$HAVE_GETTIMEOFDAY +HAVE_SETGRENT=$HAVE_SETGRENT +HAVE_UMASK=$HAVE_UMASK +HAVE_FORK=$HAVE_FORK +HAVE_GETHOSTBYNAME=$HAVE_GETHOSTBYNAME +MISSING="$MISSING" +EOT + +echo "done." + +########################################################################### + +# Delete the temporary directory we created. + +rm -rf tmp + +########################################################################### + +# If MYSQL is enabled and the user specified a library dir +# warn to include the directory in the LD_LIBRARY_PATH +if [ "$MYSQL" = "USE_MYSQL" ] && [ "$MYSQL_LIBDIR_WARN" = "MYSQL_LIBDIR_WARN" ] ; then + echo "" + echo "BECAUSE YOU SPECIFIED A USER DEFINED LIBRARY DIRECTORY," + echo "YOU MAY NEED TO ADD $MYSQL_LIB_DIR" + echo "TO YOUR LD_LIBRARY_PATH VARIABLE BEFORE RUNNING ANOPE." + echo "PRESS RETURN TO CONTINUE" + read foo +fi + +cat <<EOT + +All done! Now run "make" (or possibly "gmake") to compile Services. +See the INSTALL, README and FAQ files if you have any problems. +EOT +exit 0 |