1
0
mirror of https://github.com/anope/anope.git synced 2026-06-25 02:46:37 +02:00
Files
anope/configure
T
dane dane@31f1291d-b8d6-0310-a050-a5561fc1590b 32b50b32d3 BUILD : 1.7.0 (8) BUGS : none. NOTES : Made svn://zero.org/repos/anope/trunk the 1.7 development stream.
git-svn-id: svn://svn.anope.org/anope/trunk@8 31f1291d-b8d6-0310-a050-a5561fc1590b


git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@4 5417fbe8-f217-4b02-8779-1006273d7864
2004-03-29 02:54:09 +00:00

1859 lines
45 KiB
Bash
Executable File

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