#!/bin/sh # # configure script for the coldmud server. # # this does not currently test too much, will expand upon it over time # as we learn what we must check for. Chunks of this have been stripped # from such exemplary sources as the perl distribution, emacs configure # and that which is produced with autoconf. I didn't use autoconf # because it is much more fun to just write your own. # # -Brandon Gillespie trap "rm -f test.c a.out core $0.tmp; exit" 0 2 3 ########################################################################### # Defaults VERSION='0.12-1c' LIBS='' YACC='bison -y' YFLAGS='-d' CC='' # default OPT flags are defined where it figures CC OPT='' CFLAGS='' conf="etc/$0.defaults" # because I'm a sucker for formatting. t=" " i="- " ########################################################################### echo "-- ColdMUD ${VERSION} -- ${t}Configure script for the ColdMUD driver. ${t}To rebuild the Makefile using previous options (in the instance that ${t}Makefile.in was changed), use the \"-p\" (previous) flag, \"make ${t}makefile\" will also execute \"$0 -p\". ${t}If this script has problems on your local system, please email ${t}brandon@paradise.declab.usu.edu with what the problem was. " # figure out what to do with echo -- from perl's Configure (echo "hi there\c" ; echo " ") > $0.tmp if grep c echotmp >/dev/null 2>&1 ; then echo "${i}Supressing newlines with -n..." n='-n' c='' else echo "${i}Supressing newlines with \\\c..." n='' c='\c' fi echo '' echo $n "${i}The asterisk should be here => $c" echo '*' echo '' if [ X$1 != X -a X$1 = X"-p" ]; then echo "${i}Reading previous configuration..." if [ ! -f "$conf" ]; then echo '' echo "${t}Previous configuration file ($conf) not found!" exit 1 fi else ########################################################################### SYS=`(/bin/uname || /usr/bin/uname) 2>/dev/null` # this isn't the best way to do this, we should really be checking for # most of the following piece by piece, I need to find out exactly what # /bin/uname returns in: # # SGI Irix # NextStep case $SYS in SunOS) # check for Solaris the hard way if [ "`/bin/uname -rs | cut -c0-9`" != "SunOS 4.1" ]; then SYS="Solaris" LIBS="-lsocket -lnsl -lelf ${LIBS}" else echo "${t}You should read the file 'docs/README.src' (find the secion on ${t}SunOS 1.4.x). There are some changes required to the source, ${t}for this operating system." fi ;; HP-UX) LIBS="-ldbm ${LIBS}" CFLAGS="-Aa ${CFLAGS}" ;; # The rest are _TOTAL_ guesses, I need to find out what /bin/uname # returns on these OS's. AIX) LIBS="-lbsd ${LIBS}" ;; Linux) LIBS="-ldbm ${LIBS}" ;; IRIX) LIBS="-lsun ${LIBS}" CFLAGS="-mips2 ${CFLAGS}" ;; *) # this is a hack because Unixware returns odd things with /bin/uname echo $n "Are you running Unixware? [yn] (default: n) $c" read ANS if [ X$ANS = X"y" ]; then SYS="Unixware" LIBS="-lnsl -lsocket -lresolv ${LIBS}" fi ;; esac echo '' echo "${i}Looks like you are running ${SYS}..." ############################################################################ # compiler echo "" echo $n "${i}Checking for cc or gcc...$c" cat > test.c <<EOF int main() { exit(0); } EOF err=`eval "(gcc test.c >/dev/null) 2>&1"` rm -f test.c a.out if [ X"$err" != X ]; then echo $n "using cc" OPT='-O' CC=cc else echo $n "using gcc" OPT='-Wall -O2' CC=gcc fi ########################################################################### echo '' echo $n "Which optimization/debug state to use? (default: ${OPT}) $c" read ANS if [ X$ANS != X ]; then OPT=$ANS fi ########################################################################### echo '' echo $n "Which Compiler Compiler to use? (default: ${YACC}) $c" read ANS if [ X$ANS != X ]; then YACC=$ANS # YFLAGS='' fi ########################################################################### # # strdup() # # echo '' # echo $n "${i}Does strdup() exist...$c" # # cat > test.c <<EOF # #include <string.h> # main () { char *str, *str2 = "test\n"; str = strdup(str2); } # EOF # # err=`eval "($CC test.c >/dev/null) 2>&1"` # if [ ! -z "$err" ]; then # NO_STRDUP=1 # echo "no." # else # NO_STRDUP=0 # echo "yes." # fi # # rm -f test.c a.out # ########################################################################### # vfork() echo '' echo $n "${i}Does vfork() exist...$c" cat > test.c <<EOF /* extern pid_t vfork(void); */ main () { vfork(); } EOF err=`eval "($CC test.c >/dev/null) 2>&1"` if [ ! -z "$err" ]; then USE_VFORK=0 echo "no." else USE_VFORK=1 echo "yes." fi rm -f test.c a.out ########################################################################### # This is inefficient to do it seperately for each option echo "tmp1=\$\$.temp1" > $conf echo "tmp2=\$\$.temp2" >> $conf echo "ROOT=\$1" >> $conf echo "trap \"rm -f \$\$.temp1 \$\$.temp2 \$1.temp; exit\" 0 2 3" >> $conf echo "FNAME=\${ROOT}/src/Makefile.in" >> $conf echo "echo - Generating 'src/Makefile' from 'src/Makefile.in'..." >> $conf # src/Makefile... echo "sed \"s:^#@@LIBS@:LIBS=${LIBS}:g\" \${FNAME} > \$tmp1" >> $conf echo "sed \"s:^#@@CC@:CC=${CC}:g\" \$tmp1 > \$tmp2" >> $conf echo "sed \"s:^#@@VERSION@:VERSION=${VERSION}:g\" \$tmp2 > \$tmp1" >> $conf echo "sed \"s:^#@@YACC@:YACC=${YACC}:g\" \$tmp1 > \$tmp2" >> $conf echo "sed \"s:^#@@CFLAGS@:CFLAGS=${CFLAGS} ${OPT}:g\" \$tmp2 > \$tmp1" >> $conf echo "sed \"s:^#@@YFLAGS@:YFLAGS=${YFLAGS}:g\" \$tmp1 > \$tmp2" >> $conf # to keep things straight, adjust this if any of the above are removed # or any additions are made: echo "FNAME=\$tmp2" >> $conf echo "echo \"# This file generated by $0 on `date`.\" > \$1.temp" >> $conf echo "echo \"# Make changes to 'Makefile.in' and run the configure script\" >> \$1.temp" >> $conf echo "echo \"#\" >> \$1.temp" >> $conf echo "cat \$1.temp > \${ROOT}/src/Makefile" >> $conf echo "cat \${FNAME} >> \${ROOT}/src/Makefile" >> $conf echo "FNAME=\${ROOT}/src/config.h.in" >> $conf echo "echo - Generating 'src/config.h' from 'src/config.h.in'..." >> $conf # src/config.h # if [ $NO_STRDUP = 1 ]; then # echo "sed \"s:^/\* @@NO_STRDUP@ \*/.*:#define NO_STRDUP:g\" \$FNAME > \$tmp1" >> $conf # echo "FNAME=\$tmp1" >> $conf # fi if [ $USE_VFORK = 1 ]; then echo "sed \"s:^/\* @@USE_VFORK@ \*/.*:#define USE_VFORK:g\" \$FNAME > \$tmp2" >> $conf echo "FNAME=\$tmp2" >> $conf fi echo "echo \"/* config.h generated by configure on `date` */\" > \${ROOT}/src/config.h" >> $conf echo "cat \${FNAME} >> \${ROOT}/src/config.h" >> $conf # redundant, but (shrug) echo "exit" >> $conf ## This 'fi' is from the first if (checking "-d") fi echo '' sh $conf . echo '' exit