dw_fluffos_v2/
dw_fluffos_v2/fluffos-2.9-ds2.05/
dw_fluffos_v2/fluffos-2.9-ds2.05/ChangeLog.old/
dw_fluffos_v2/fluffos-2.9-ds2.05/Win32/
dw_fluffos_v2/fluffos-2.9-ds2.05/compat/
dw_fluffos_v2/fluffos-2.9-ds2.05/compat/simuls/
dw_fluffos_v2/fluffos-2.9-ds2.05/include/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/clone/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/command/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/data/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/etc/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/include/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/inherit/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/inherit/master/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/log/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/single/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/single/tests/compiler/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/single/tests/efuns/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/single/tests/operators/
dw_fluffos_v2/fluffos-2.9-ds2.05/testsuite/u/
dw_fluffos_v2/fluffos-2.9-ds2.05/tmp/
dw_fluffos_v2/fluffos-2.9-ds2.05/windows/
dw_fluffos_v2/lib/
dw_fluffos_v2/lib/binaries/cmds/
dw_fluffos_v2/lib/binaries/cmds/creator/
dw_fluffos_v2/lib/binaries/cmds/living/
dw_fluffos_v2/lib/binaries/cmds/player/
dw_fluffos_v2/lib/binaries/d/admin/obj/
dw_fluffos_v2/lib/binaries/d/liaison/
dw_fluffos_v2/lib/binaries/global/virtual/
dw_fluffos_v2/lib/binaries/global/virtual/setup_compiler/
dw_fluffos_v2/lib/binaries/obj/handlers/autodoc/
dw_fluffos_v2/lib/binaries/obj/handlers/terrain_things/
dw_fluffos_v2/lib/binaries/obj/misc/
dw_fluffos_v2/lib/binaries/obj/misc/buckets/
dw_fluffos_v2/lib/binaries/obj/monster/
dw_fluffos_v2/lib/binaries/obj/reactions/
dw_fluffos_v2/lib/binaries/obj/reagents/
dw_fluffos_v2/lib/binaries/secure/cmds/creator/
dw_fluffos_v2/lib/binaries/secure/master/
dw_fluffos_v2/lib/binaries/std/
dw_fluffos_v2/lib/binaries/std/dom/
dw_fluffos_v2/lib/binaries/std/effects/object/
dw_fluffos_v2/lib/binaries/std/guilds/
dw_fluffos_v2/lib/binaries/std/languages/
dw_fluffos_v2/lib/binaries/std/races/
dw_fluffos_v2/lib/binaries/std/room/
dw_fluffos_v2/lib/binaries/std/room/basic/
dw_fluffos_v2/lib/binaries/std/shops/
dw_fluffos_v2/lib/binaries/std/shops/inherit/
dw_fluffos_v2/lib/binaries/www/
dw_fluffos_v2/lib/cmds/guild-race/
dw_fluffos_v2/lib/cmds/guild-race/crafts/
dw_fluffos_v2/lib/cmds/guild-race/other/
dw_fluffos_v2/lib/cmds/playtester/
dw_fluffos_v2/lib/cmds/playtester/senior/
dw_fluffos_v2/lib/d/admin/
dw_fluffos_v2/lib/d/admin/log/
dw_fluffos_v2/lib/d/admin/mapper/31-10-01/mapmaker/event/
dw_fluffos_v2/lib/d/admin/meetings/
dw_fluffos_v2/lib/d/admin/obj/
dw_fluffos_v2/lib/d/admin/room/we_care/
dw_fluffos_v2/lib/d/admin/save/
dw_fluffos_v2/lib/d/dist/
dw_fluffos_v2/lib/d/dist/mtf/
dw_fluffos_v2/lib/d/dist/pumpkin/
dw_fluffos_v2/lib/d/dist/pumpkin/chars/
dw_fluffos_v2/lib/d/dist/pumpkin/desert/
dw_fluffos_v2/lib/d/dist/pumpkin/gumboot/
dw_fluffos_v2/lib/d/dist/pumpkin/hospital/
dw_fluffos_v2/lib/d/dist/pumpkin/inherit/
dw_fluffos_v2/lib/d/dist/pumpkin/map/
dw_fluffos_v2/lib/d/dist/pumpkin/plain/
dw_fluffos_v2/lib/d/dist/pumpkin/pumpkin/
dw_fluffos_v2/lib/d/dist/pumpkin/save/
dw_fluffos_v2/lib/d/dist/pumpkin/squash/
dw_fluffos_v2/lib/d/dist/pumpkin/terrain/
dw_fluffos_v2/lib/d/dist/pumpkin/woods/
dw_fluffos_v2/lib/d/dist/start/
dw_fluffos_v2/lib/d/learning/TinyTown/buildings/
dw_fluffos_v2/lib/d/learning/TinyTown/map/
dw_fluffos_v2/lib/d/learning/TinyTown/roads/
dw_fluffos_v2/lib/d/learning/add_command/
dw_fluffos_v2/lib/d/learning/arms_and_weps/
dw_fluffos_v2/lib/d/learning/chars/
dw_fluffos_v2/lib/d/learning/cutnpaste/
dw_fluffos_v2/lib/d/learning/examples/npcs/
dw_fluffos_v2/lib/d/learning/examples/player_houses/npcs/
dw_fluffos_v2/lib/d/learning/examples/terrain_map/basic/
dw_fluffos_v2/lib/d/learning/functions/
dw_fluffos_v2/lib/d/learning/handlers/
dw_fluffos_v2/lib/d/learning/help_topics/npcs/
dw_fluffos_v2/lib/d/learning/help_topics/objects/
dw_fluffos_v2/lib/d/learning/help_topics/rcs_demo/
dw_fluffos_v2/lib/d/learning/help_topics/rooms/
dw_fluffos_v2/lib/d/learning/help_topics/rooms/crowd/
dw_fluffos_v2/lib/d/learning/help_topics/rooms/situations/
dw_fluffos_v2/lib/d/learning/items/
dw_fluffos_v2/lib/d/learning/save/
dw_fluffos_v2/lib/d/liaison/
dw_fluffos_v2/lib/d/liaison/NEWBIE/doc/
dw_fluffos_v2/lib/d/liaison/NEWBIE/save/oldlog/
dw_fluffos_v2/lib/db/
dw_fluffos_v2/lib/doc/
dw_fluffos_v2/lib/doc/creator/
dw_fluffos_v2/lib/doc/creator/autodoc/include/reaction/
dw_fluffos_v2/lib/doc/creator/autodoc/include/ritual_system/
dw_fluffos_v2/lib/doc/creator/autodoc/include/talker/
dw_fluffos_v2/lib/doc/creator/autodoc/include/terrain_map/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/baggage/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/clock/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/clothing/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/cont_save/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/corpse/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/money/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/monster/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/scabbard/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/service_provider/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/state_changer/
dw_fluffos_v2/lib/doc/creator/autodoc/obj/wand/
dw_fluffos_v2/lib/doc/creator/autodoc/std/book_dir/
dw_fluffos_v2/lib/doc/creator/autodoc/std/key/
dw_fluffos_v2/lib/doc/creator/autodoc/std/learning/
dw_fluffos_v2/lib/doc/creator/autodoc/std/map/
dw_fluffos_v2/lib/doc/creator/autodoc/std/race/
dw_fluffos_v2/lib/doc/creator/autodoc/std/weapon_logic/
dw_fluffos_v2/lib/doc/creator/files/
dw_fluffos_v2/lib/doc/creator/policy/
dw_fluffos_v2/lib/doc/creator/room/
dw_fluffos_v2/lib/doc/effects/
dw_fluffos_v2/lib/doc/ideas/
dw_fluffos_v2/lib/doc/known_command/
dw_fluffos_v2/lib/doc/lpc/basic_manual/
dw_fluffos_v2/lib/doc/lpc/intermediate/
dw_fluffos_v2/lib/doc/new/add_command/
dw_fluffos_v2/lib/doc/new/handlers/
dw_fluffos_v2/lib/doc/new/living/
dw_fluffos_v2/lib/doc/new/living/race/
dw_fluffos_v2/lib/doc/new/living/spells/
dw_fluffos_v2/lib/doc/new/player/
dw_fluffos_v2/lib/doc/new/room/guild/
dw_fluffos_v2/lib/doc/new/room/outside/
dw_fluffos_v2/lib/doc/new/room/storeroom/
dw_fluffos_v2/lib/doc/object/
dw_fluffos_v2/lib/doc/playtesters/
dw_fluffos_v2/lib/doc/policy/
dw_fluffos_v2/lib/doc/weapons/
dw_fluffos_v2/lib/global/handlers/
dw_fluffos_v2/lib/global/virtual/setup_compiler/
dw_fluffos_v2/lib/include/
dw_fluffos_v2/lib/include/cmds/
dw_fluffos_v2/lib/include/effects/
dw_fluffos_v2/lib/include/npc/
dw_fluffos_v2/lib/include/shops/
dw_fluffos_v2/lib/net/daemon/chars/
dw_fluffos_v2/lib/net/inherit/
dw_fluffos_v2/lib/net/intermud3/
dw_fluffos_v2/lib/net/intermud3/services/
dw_fluffos_v2/lib/net/obj/
dw_fluffos_v2/lib/net/save/
dw_fluffos_v2/lib/net/smnmp/
dw_fluffos_v2/lib/net/snmp/
dw_fluffos_v2/lib/obj/amulets/
dw_fluffos_v2/lib/obj/b_day/
dw_fluffos_v2/lib/obj/examples/
dw_fluffos_v2/lib/obj/food/alcohol/
dw_fluffos_v2/lib/obj/food/chocolates/
dw_fluffos_v2/lib/obj/food/fruits/
dw_fluffos_v2/lib/obj/food/meat/
dw_fluffos_v2/lib/obj/food/nuts/
dw_fluffos_v2/lib/obj/food/seafood/
dw_fluffos_v2/lib/obj/food/vegetables/
dw_fluffos_v2/lib/obj/fungi/
dw_fluffos_v2/lib/obj/furnitures/artwork/
dw_fluffos_v2/lib/obj/furnitures/bathroom/
dw_fluffos_v2/lib/obj/furnitures/beds/
dw_fluffos_v2/lib/obj/furnitures/cabinets/
dw_fluffos_v2/lib/obj/furnitures/chairs/
dw_fluffos_v2/lib/obj/furnitures/chests/
dw_fluffos_v2/lib/obj/furnitures/clocks/
dw_fluffos_v2/lib/obj/furnitures/crockery/
dw_fluffos_v2/lib/obj/furnitures/cupboards/
dw_fluffos_v2/lib/obj/furnitures/cushions/
dw_fluffos_v2/lib/obj/furnitures/fake_plants/
dw_fluffos_v2/lib/obj/furnitures/lamps/
dw_fluffos_v2/lib/obj/furnitures/mirrors/
dw_fluffos_v2/lib/obj/furnitures/outdoor/
dw_fluffos_v2/lib/obj/furnitures/safes/
dw_fluffos_v2/lib/obj/furnitures/shelves/
dw_fluffos_v2/lib/obj/furnitures/sideboards/
dw_fluffos_v2/lib/obj/furnitures/sofas/
dw_fluffos_v2/lib/obj/furnitures/stoves/
dw_fluffos_v2/lib/obj/furnitures/tables/
dw_fluffos_v2/lib/obj/furnitures/wardrobes/
dw_fluffos_v2/lib/obj/handlers/
dw_fluffos_v2/lib/obj/handlers/autodoc/
dw_fluffos_v2/lib/obj/jewellery/anklets/
dw_fluffos_v2/lib/obj/jewellery/bracelets/
dw_fluffos_v2/lib/obj/jewellery/earrings/
dw_fluffos_v2/lib/obj/jewellery/misc/
dw_fluffos_v2/lib/obj/jewellery/necklaces/
dw_fluffos_v2/lib/obj/jewellery/rings/
dw_fluffos_v2/lib/obj/media/
dw_fluffos_v2/lib/obj/misc/buckets/
dw_fluffos_v2/lib/obj/misc/jars/
dw_fluffos_v2/lib/obj/misc/papers/
dw_fluffos_v2/lib/obj/misc/player_shop/
dw_fluffos_v2/lib/obj/misc/shops/
dw_fluffos_v2/lib/obj/misc/traps/
dw_fluffos_v2/lib/obj/monster/
dw_fluffos_v2/lib/obj/monster/godmother/
dw_fluffos_v2/lib/obj/monster/transport/
dw_fluffos_v2/lib/obj/plants/inherit/
dw_fluffos_v2/lib/obj/potions/
dw_fluffos_v2/lib/open/boards/
dw_fluffos_v2/lib/save/autodoc/
dw_fluffos_v2/lib/save/bank_accounts/
dw_fluffos_v2/lib/save/boards/frog/
dw_fluffos_v2/lib/save/books/bed_catalog/
dw_fluffos_v2/lib/save/creators/
dw_fluffos_v2/lib/save/mail/
dw_fluffos_v2/lib/save/mail/p/
dw_fluffos_v2/lib/save/soul/data/
dw_fluffos_v2/lib/save/tasks/
dw_fluffos_v2/lib/save/vaults/
dw_fluffos_v2/lib/secure/cmds/lord/
dw_fluffos_v2/lib/secure/config/
dw_fluffos_v2/lib/secure/items/
dw_fluffos_v2/lib/secure/player/
dw_fluffos_v2/lib/soul/
dw_fluffos_v2/lib/soul/i/
dw_fluffos_v2/lib/soul/j/
dw_fluffos_v2/lib/soul/k/
dw_fluffos_v2/lib/soul/o/
dw_fluffos_v2/lib/soul/q/
dw_fluffos_v2/lib/soul/to_approve/
dw_fluffos_v2/lib/soul/u/
dw_fluffos_v2/lib/soul/v/
dw_fluffos_v2/lib/soul/wish_list/
dw_fluffos_v2/lib/soul/y/
dw_fluffos_v2/lib/soul/z/
dw_fluffos_v2/lib/std/creator/
dw_fluffos_v2/lib/std/effects/
dw_fluffos_v2/lib/std/effects/attached/
dw_fluffos_v2/lib/std/effects/external/
dw_fluffos_v2/lib/std/effects/fighting/
dw_fluffos_v2/lib/std/effects/other/
dw_fluffos_v2/lib/std/environ/
dw_fluffos_v2/lib/std/guilds/
dw_fluffos_v2/lib/std/hospital/
dw_fluffos_v2/lib/std/house/
dw_fluffos_v2/lib/std/house/onebedhouse/
dw_fluffos_v2/lib/std/house/onebedhut/
dw_fluffos_v2/lib/std/house/tworoomflat/
dw_fluffos_v2/lib/std/languages/
dw_fluffos_v2/lib/std/liquids/
dw_fluffos_v2/lib/std/nationality/
dw_fluffos_v2/lib/std/nationality/accents/
dw_fluffos_v2/lib/std/nationality/accents/national/
dw_fluffos_v2/lib/std/nationality/accents/regional/
dw_fluffos_v2/lib/std/npc/goals/
dw_fluffos_v2/lib/std/npc/goals/basic/
dw_fluffos_v2/lib/std/npc/goals/misc/
dw_fluffos_v2/lib/std/npc/inherit/
dw_fluffos_v2/lib/std/npc/plans/
dw_fluffos_v2/lib/std/npc/plans/basic/
dw_fluffos_v2/lib/std/outsides/
dw_fluffos_v2/lib/std/races/shadows/
dw_fluffos_v2/lib/std/room/basic/topography/
dw_fluffos_v2/lib/std/room/controller/
dw_fluffos_v2/lib/std/room/controller/topography/
dw_fluffos_v2/lib/std/room/furniture/games/
dw_fluffos_v2/lib/std/room/furniture/inherit/
dw_fluffos_v2/lib/std/room/inherit/carriage/
dw_fluffos_v2/lib/std/room/inherit/topography/
dw_fluffos_v2/lib/std/room/punishments/
dw_fluffos_v2/lib/std/room/topography/area/
dw_fluffos_v2/lib/std/room/topography/iroom/
dw_fluffos_v2/lib/std/room/topography/milestone/
dw_fluffos_v2/lib/std/shadows/
dw_fluffos_v2/lib/std/shadows/attached/
dw_fluffos_v2/lib/std/shadows/curses/
dw_fluffos_v2/lib/std/shadows/disease/
dw_fluffos_v2/lib/std/shadows/fighting/
dw_fluffos_v2/lib/std/shadows/room/
dw_fluffos_v2/lib/std/shops/controllers/
dw_fluffos_v2/lib/std/shops/objs/
dw_fluffos_v2/lib/std/shops/player_shop/
dw_fluffos_v2/lib/std/shops/player_shop/office_code/
dw_fluffos_v2/lib/std/socket/
dw_fluffos_v2/lib/www/
dw_fluffos_v2/lib/www/external/autodoc/
dw_fluffos_v2/lib/www/external/java/telnet/Documentation/
dw_fluffos_v2/lib/www/external/java/telnet/Documentation/images/
dw_fluffos_v2/lib/www/external/java/telnet/examples/
dw_fluffos_v2/lib/www/external/java/telnet/tools/
dw_fluffos_v2/lib/www/pics/
dw_fluffos_v2/lib/www/secure/creator/
dw_fluffos_v2/lib/www/secure/editors/
dw_fluffos_v2/lib/www/secure/survey_results/
dw_fluffos_v2/win32/
#!/bin/sh

if test $# -ne 0; then
    case $1 in
        develop)
	    echo Preparing to build developmental version of MudOS driver ...
	    OPTIMIZE="-Wall -Wundef -DPEDANTIC -pedantic -Wmissing-declarations"
	    DEBUG="-g -DDEBUG"
            ;;
        debug)
	    echo Preparing to build debugging version of MudOS driver ...
	    OPTIMIZE=
	    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
 
#Use this with gcc if you have lots of RAM, speeds up compile
#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
# 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

#
# Figure out what to use for CC
#
cat >comptest.c <<END
int main() {
}
END
xlc comptest.c
if test $? -eq 0; then
    CC=xlc
    if test "${DEBUG-x}" = "x"; then
        OPTIMIZE=${OPTIMIZE-"-O3 -Q -qMAXMEM=16000"}
    fi
else
    gcc comptest.c
    if test $? -eq 0; then
        CC="gcc"
        if test "${DEBUG-x}" = "x"; then
            OPTIMIZE=${OPTIMIZE-"-O2 -fstrength-reduce"}
        fi
	GNUC=1
	CCFLAGS=-D__USE_FIXED_PROTOTYPES__
    else
        clcc comptest.c
        if test $? -eq 0; then
            CC=clcc
            if test "${DEBUG-x}" = "x"; then
                OPTIMIZE=${OPTIMIZE-"-O"}
            fi
        else
            cc comptest.c
            if test $? -eq 0; then
                CC=cc
                if test "${DEBUG-x}" = "x"; then
                    OPTIMIZE=${OPTIMIZE-"-O"}
		    cat >comptest.c <<END
#ifndef __GNUC__
Oh darn it's not gcc
#endif
END
		    cc comptest.c
		    if test $? -eq 0; then
			OPTIMIZE=${OPTIMIZE-"-O2 -fstrength-reduce"}
			GNUC=1
		    fi
                fi
            else
                echo "FATAL ERROR: Cannot find a C compiler"
                exit
            fi
        fi
    fi
fi

#
# are we using gcc on a 486?
#
if test $GNUC; then
    tmp=`uname -m`
    if test "x$tmp" = "xi486" -o "x$tmp" = "xi586"; then
        OPTIMIZE="$OPTIMIZE -m486"
    fi
fi

#
# Figure out how to run CPP
#

cat >comptest.c <<END
#define foo
Make this fail if we actually get compiled
END
$CC -E 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 <<END
whatever
END
rm tmp/insttest
install -f insttest tmp
if test $? -eq 0 && test -f tmp/insttest; then
    INSTALL="install -f"
else
    rm tmp/insttest
    install -c insttest tmp
    if test $? -eq 0 && test -f tmp/insttest; then
       INSTALL="install -c"
    else
       INSTALL="cp"
    fi
fi

cat >comptest.c <<END
void foo() { }
END
$CC -c comptest.c -o comptest.o

#
# Check if ranlib exists/is needed.  Also check ar.
#
cat >comptest.c <<END
int if_you_are_reading_this_you_must_be_bored() { return 1; }
END
$CC -c comptest.c

ar rcu comptest.a comptest.o
if test $? -ne 0; then
    echo "FATAL ERROR: Could not find ar."
    exit
fi
ranlib comptest.a
if test $? -eq 0; then
    RANLIB=ranlib    
else
    RANLIB=/bin/true
fi

#
# Find yacc/bison/byacc
#
cat >comptest.y <<END
%token FOO
%%
all: FOO
END
bison comptest.y
if test $? -eq 0 && test $CC != "xlc"; then
    YACC="bison -d -y"
else
    byacc comptest.y
    if test $? -eq 0; then
        YACC="byacc -d"
    else
        yacc comptest.y
        if test $? -eq 0; then
            YACC="yacc -d"
        else
            echo "FATAL ERROR: Could not find bison or yacc."
            exit
        fi
    fi
fi

# Some of these are probably unnecessary
CFLAGS="$CCFLAGS $OSFLAGS $WARN $PROFIL $DEBUG $DEBUG_MACRO $DEBUG_NON_FATAL $STR $PIPE $NEED_OLD_CPP $EXPORT_DYNAMIC"

#
# Determine system type
#
cat >comptest.c <<END
#include <stdio.h>
#include "arch.h"
int main() {
    printf("%s\n", ARCH);
}
END
$CC $CFLAGS comptest.c
ARCH=`./a.out`

cat >comptest.c <<END
int main(int argc, char **argv) { return 0; }
END

case $ARCH in
    AIX)
        OSFLAGS="$OSFLAGS -D_BSD -D_ALL_SOURCE"
	CFLAGS="$CFLAGS -D_BSD -D_ALL_SOURCE"
        ;;    
    Solaris)
	OSFLAGS="$OSFLAGS -DSunOS_5"
	CFLAGS="$CFLAGS -DSunOS_5"
	;;
    Linux*)
        EXPORT_DYNAMIC=-rdynamic
	;;
    FreeBSD)
	cc -export-dynamic comptest.c
	if test $? -eq 0; then
	    EXPORT_DYNAMIC=-export-dynamic
	else
	    cc -rdynamic comptest.c
	    if test $? -eq 0; then
		EXPORT_DYNAMIC=-rdynamic
	    fi
	fi
	;;
esac

#
# check for some missing functions
#
rm a.out
cat >comptest.c <<END
int main() {
strchr(0,0); strrchr(0,0);
}
END
$CC $CFLAGS comptest.c
if test ! -f a.out; then
    if uname -a | grep "MINGW" | grep -v grep ; then
    echo "MinGW detected. Skipping weird strchr thing."
    else
    echo "MinGW not detected, and no a.out."
    STR="-Dstrchr=index -Dstrrchr=rindex"
    fi
fi

rm a.out
cat >comptest.c <<END
int main() {
memcpy(0,0,0);memset(0,0,0);strtol(0,0,0);strcspn(0,0);
}
END
$CC $CFLAGS comptest.c
if test ! -f a.out; then
    STRFUNCS=strfuncs.o
fi

CFLAGS="$CCFLAGS $OSFLAGS $WARN $PROFIL $DEBUG $DEBUG_MACRO $DEBUG_NON_FATAL $STR $PIPE $NEED_OLD_CPP $INCLUDE $EXPORT_DYNAMIC"
if test ! "$OBJDIR" = ""; then
    mkdir $OBJDIR
fi

echo SHELL=/bin/sh >>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 "***************** 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 <<END
all:
	@echo MudOS is currently configured to use 'Makefile'.  Edit 'build.MudOS'
	@echo if this is not what you want.

.DEFAULT:
	@echo MudOS is currently configured to use 'Makefile'.  Edit 'build.MudOS'
	@echo if this is not what you want.

nothing:

which_makefile:
	echo MakeIsGNU
END
else
cat >Makefile <<END
all:
	@echo MudOS is currently configured to use 'GNUmakefile'.  Edit 'build.MudOS'
	@echo if this is not what you want.

.DEFAULT:
	@echo MudOS is currently configured to use 'GNUmakefile'.  Edit 'build.MudOS'
	@echo if this is not what you want.

nothing:

which_makefile:
	echo MakeIsMake
END
fi