#!/bin/sh ENABLE_M64=0 export ENABLE_M64 if test $# -ne 0; then case $1 in develop) echo Preparing to build developmental version of MudOS driver ... OPTIMIZE="-O0 -Wall -Wundef -DPEDANTIC -pedantic -Wmissing-declarations" DEBUG="-g -DDEBUG -DDEBUG_MACRO" ;; debug) echo Preparing to build debugging version of MudOS driver ... OPTIMIZE="-O0" DEBUG="-g -DDEBUG" ;; *) echo Unknown build type exit 1 ;; esac else echo Preparing to build standard MudOS driver ... fi # If this is uncommented, the specified 'make' is used instead of looking for # one #MAKE=make # define this to be where you want the temporary compiled files to go # (only used with GNU make) OBJDIR=obj # change this if you wish the driver binary to be named something else DRIVER_BIN=driver # uncomment PROOF if using CenterLine's TestCenter to debug the driver. #PROOF=proof # Set INSTALL_DIR to the directory where you want to install the executables. INSTALL_DIR="../bin" #Enable warnings from the compiler (gcc), if wanted. #WARN=-Wall #PIPE=-pipe # define profiling if you want it # note: the gmon.out file will likely be written in the mudlib dir. # PROFILE_ON controls whether or not monitoring is active at driver # startup. Comment PROFILE_ON to make profiling not active at startup. # Use moncontrol(1) efun to enable profiling and moncontrol(0) to turn # it off. #PROFILE_ON="-DPROFILE_ON" # Uncomment this if you want to enable profiling of the driver (gcc) #PROFIL="-pg -DPROFILING $(PROFILE_ON)" # Enable run time debugging #DEBUG="-g" # With extra driver debug code #DEBUG="-g -DDEBUG" # For DEC Alpha: to have optimization and debugging #DEBUG="-g3 -DDEBUG" # Prevent -DDEBUG from aborting the driver (when in -DDEBUG mode) #DEBUG_NON_FATAL="-DDEBUG_NON_FATAL" # Compile in debug() macro code #DEBUG_MACRO="-DDEBUG_MACRO" # define this if you want to specify (compiler) optimization. # # if nothing is defined here, and DEBUG is not defined, something appropriate # to the compiler in question is used. # # *WARNING* using high levels of optimization (e.g. -O3) can cause some # compilers to produce incorrect code. If the driver is behaving # inexplicably, try using a lower level of optimization (or none). # # Uncomment one or none of the following optimization lines. # # -O is usually a safe level of optimization for most compilers #OPTIMIZE="-O" # high optimization for gcc: #OPTIMIZE="-O2 -fstrength-reduce" # uncomment below for RS/6000(AIX) xlc compiler only. # remove the -Q if xlc complains. #OPTIMIZE="-O -Q" # might need this one with newer versions of AIX (ie 3.2.4) #OPTIMIZE="-O -Q -qMAXMEM=16000" # high optimization for HP-UX 7.x/8.x's cc (don't use with 9.x) #OPTIMIZE="+O3 +Obb3000" # MIPS R3000 running EP/IX Version 1.4.3. Compiler is RISCompiler C 2.11 (cc). #OPTIMIZE="-Olimit 1802" # DEC Alpha's cc's highest optimization: -O5 #OPTIMIZE="-O -Olimit 2000" # DEC Ultrix's cc's highest optimization: #OPTIMIZE="-O2 -Olimit 5000" # high optimization for cc on SGI #OPTIMIZE="-O2 -Olimit 2500" # System V Release 4 (386/486 or if using Sun's cc under Solaris 2.x) # ARCH: need a way to detect this #OSFLAGS=-DSVR4 # MIPS R3000 running EP/IX Version 1.4.3. Compiler is RISCompiler C 2.11 (cc). # ARCH: this one too #OSFLAGS=-I/usr/include/bsd # Solaris (SunOS 5): for BSD compatible ioctl() # If using CC=cc, you can also add: # -w to turn off warnings, in order to get a cleaner compile # For 5.4, also add the following: # -I/usr/bsdinclude # ARCH: anyone figured a good hack to detect this one yet? #OSFLAGS="-DBSD_COMP -DSunOS_5" # SCO 3.2v4.2 # ARCH: *sigh* and this one ... #OSFLAGS=-DSCO #Static for compiling Discworld on MINGW #OSFLAGS=-static # try uncommenting this if you are using gcc and at runtime you see socket # errors saying that the "set socket nonblocking" operation is not supported. # That error is caused by old-style macros (that gcc doesn't normally grok) # used by ioctl on some systems. #NEED_OLD_CPP=-traditional-cpp # Location of libmsgql.a, if you are using PACKAGE_DB #EXTRALIBS=-L/usr/local/lib -lmsql ####### END OF USER CONFIGURABLE OPTIONS echo "Trying out some stuff to see what works; ignore errors ..." # Mac OS X needs this in order to build properly with gcc < 3 if test "`uname`" = "Darwin"; then GCC_MAJOR="`gcc -v 2>&1 | grep "gcc version" | cut -d ' ' -f 3 | cut -d '.' -f 1`" GCC_MINOR="`gcc -v 2>&1 | grep "gcc version" | cut -d ' ' -f 3 | cut -d '.' -f 2`" if test "$GCC_MAJOR" -eq "2"; then NEED_OLD_CPP=-traditional-cpp fi fi # # Figure out what make is, and how to invoke it # if test "${MAKE-x}" = "x"; then gmake nothing if test $? -eq 0; then MAKE=gmake MAKEFILE=GNUmakefile else make nothing if test $? -eq 0; then MAKE=make tmp=`make which_makefile 2>./2.out | grep -v echo` if test "x$tmp" = "xMakeIsGNU"; then MAKEFILE=GNUmakefile else MAKEFILE=Makefile OBJDIR= fi else echo 'FATAL ERROR: Cannot find make or gmake' exit fi fi else tmp=`make which_makefile 2>./2.out | grep -v echo` if test "x$tmp" = "xMakeIsGNU"; then MAKEFILE=GNUmakefile else MAKEFILE=Makefile OBJDIR= fi fi echo MAKE=$MAKE >Makefile.tmp # # Determine if running under Cygwin-32 and use a.exe instead # of a.out if so # if test $CYGWIN; then A_OUT=a.exe echo Using a.exe for Cygwin GNU compiler default executable else A_OUT=a.out echo Using standard a.out for compiler default executable fi # # Figure out what to use for CC # cat >comptest.c <comptest.c <comptest.c <./1.out if test $? -eq 0; then CPP="$CC -E $NEED_OLD_CPP" else cpp comptest.c >./1.out if test $? -eq 0; then CPP="cpp" else $CC -E -traditional-cpp comptest.c >./1.out if test $? -eq 0; then CPP="$CC -E -traditional-cpp" else echo "FATAL ERROR: Can't figure out how to run the C preprocessor" exit fi fi fi # # Figure out what to use for install # mkdir tmp cat >insttest <comptest.c <comptest.c <comptest.y <comptest.c < #include "arch.h" int main() { printf("%s\n", ARCH); } END $CC $CFLAGS comptest.c ARCH=`./$A_OUT` cat >comptest.c <>Makefile.tmp echo OBJDIR=$OBJDIR >>Makefile.tmp echo DRIVER_BIN=$DRIVER_BIN >>Makefile.tmp echo PROOF=$PROOF >>Makefile.tmp echo STRFUNCS=$STRFUNCS >>Makefile.tmp echo INSTALL=$INSTALL >>Makefile.tmp echo INSTALL_DIR=$INSTALL_DIR >>Makefile.tmp echo OPTIMIZE=$OPTIMIZE >>Makefile.tmp echo CPP=$CPP >>Makefile.tmp echo CFLAGS=$CFLAGS >>Makefile.tmp echo CC=$CC >>Makefile.tmp echo YACC=$YACC >>Makefile.tmp echo RANLIB=$RANLIB >>Makefile.tmp echo A=a >>Makefile.tmp echo O=o >>Makefile.tmp echo A_OUT=$A_OUT >>Makefile.tmp echo "***************** Configuration completed **************" echo "Installing MudOS on $ARCH" echo echo "Using $INSTALL to install binaries in $INSTALL_DIR." echo "Using $CPP for preprocessing." echo "Using $CC $CFLAGS $OPTIMIZE to compile." echo "Using $YACC $YFLAGS to make the compiler." echo "Edit $MAKEFILE if this is not what you want" echo echo "Otherwise, type '$MAKE' to build MudOS, then '$MAKE install'." cat Makefile.tmp ${MAKEFILE}.in >$MAKEFILE rm Makefile.tmp if test $MAKEFILE = Makefile; then cat >GNUmakefile <Makefile <