#!/bin/bash ## ___________ _________ _____ __ ## \_ _____/______ ____ ____ \_ ___ \____________ _/ ____\/ |_ ## | __) \_ __ \_/ __ \_/ __ \/ \ \/\_ __ \__ \\ __\\ __\ ## | \ | | \/\ ___/\ ___/\ \____| | \// __ \| | | | ## \___ / |__| \___ >\___ >\______ /|__| (____ /__| |__| ## \/ \/ \/ \/ \/ ## ______________________ ______________________ ## T H E W A R B E G I N S ## FreeCraft - A free fantasy real time strategy game engine ## ## configure - Configure Rules.make (GNU MAKE rules). ## ## (c) Copyright 2000-2002 by Dan Hensley, Nehal Mistry. ## Additional sections (c) Copyright 2002 Patrick McFarland ## ## FreeCraft is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published ## by the Free Software Foundation; only version 2 of the License. ## ## FreeCraft is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## $Id$ ## ##----------------------------------------------------------------------------- ## HERE ARE SOME USER-CONFIGURABLE VARIABLES EXTRA_CFLAGS="-DUNIT_ON_MAP -DNEW_AI -DUSE_LIBMODPLUG -DUSE_HP_FOR_XP -DNEW_FOW" ## These could be used for experimental versions ## --------------------------------------------- ## SLOW_INPUT If you have problems that events aren't fetched. ## BPP8_* Only for X11 8bpp common palette: ## BPP8_NORMAL disables default, like other Xbpp (delivers errors) ## BPP8_WINSAFE Uses a windows safe palette instead. ## BPP8_IRGB Uses a palette based on 4x4x4 RGB in 4 intensities ## There are some still not well tested code parts or branches. ## UNIT_ON_MAP Fast lookup of units ## UNITS_ON_MAP Faster lookup of units ## NEW_AI New better improved AI code ## USE_TILECACHE Faster tile drawing, costs memory. ## USE_SMART_TILECACHE Faster tile drawing, slow with hardware video memory. ## USE_HP_FOR_XP Use hit-points for XP calculations. ## USE_LIBMODPLUG Use modplug audio player support. ## USE_FLAC Use flac audio player support (asked by setup). ## USE_OGG Use ogg audio player support (asked by setup). ## USE_MAD Use mad mp3 audio player support (asked by setup). ## These aren't working yet: ## NEW_MAPDRAW Stephans new map draw code (value>1 shows update) ## USE_FFMPEG Use ffmpeg video player support. ## NEW_FOW New fog of war code, should work correct ## NEW_SHIPS New correct ship movement. ## HIERARCHIC_PATHFINDER Use hierarchic pathfinder ## USE_LUA Lua scripting support ##----------------------------------------------------------------------------- # if your system/distribution lacks libpng, you may install the source # in the freecraft directory and name that directory here! # Default (tested) version is 1.0.12, anything above should also be ok. # Adjust as required - ignored if the directory does not exist. LOCAL_PNG="libpng-1.0.12" # Please note that on most systems libpng also requires libz, so # you might additionally need to install the following: # if your system/distribution lacks libz, you may install the source # in the freecraft directory and name that directory here! # Default (tested) version is 1.1.4, anything above should also be ok. # Adjust as required - ONLY USED IF SYSTEM HAS NO ZLIB INSTALLED BY DEFAULT! LOCAL_ZLIB="zlib-1.1.4" BEOS_CONFIGFILE=/boot/home/config/settings/FreeCraft/FreeCraft.cfg ##----------------------------------------------------------------------------- ## Everything below this line should only be changed by FreeCraft developers. if [ "`echo $* | grep \"\-\-win32\"`" = "" ]; then RULESFILE=Rules.make DEPEND=depend else RULESFILE=Rules.make.WIN32 DEPEND=win32new CROSS=" win32" fi if [ x`read -n 1 -t 0 2>&1 | grep e` = x ]; then N="-n1" fi cat << .. > $RULESFILE ## ___________ _________ _____ __ ## ## \_ _____/______ ____ ____ \_ ___ \____________ _/ ____\_/ |_ ## ## | __) \_ __ \_/ __ \_/ __ \/ \ \/\_ __ \__ \ \ _\ \_ _\ ## ## | \ | | \/\ ___/\ ___/\ \____| | \// __ \ | | | | ## ## \___ / |__| \___ >\___ >\______ /|__| (____ /|__| |__| ## ## \/ \/ \/ \/ \/ ## ## ## ## AUTO CONFIGURING PROGRAM ## .. # NOTE! Never put \\ back to back in an acsii art drawing like above! ## -- The part I cut out, to make it fit. ## ______________________ ______________________ ## ## T H E W A R B E G I N S ## ## FreeCraft - A free fantasy real time strategy game engine ## ## -- # Compile commands CC=gcc CCLD=$CC RM="rm -f" if [ "x`uname -a | grep -is bsd`" != x ] ; then MAKE=gmake EXTRA_CFLAGS="$EXTRA_CFLAGS -DBSD" else MAKE=make fi if [ "x`uname -a | grep -is bsd`" != x ] ; then DL= else DL=-ldl fi #------------------------------------------------------------------------------ # DON'T CHANGE ANYTHING FROM HERE DOWN UNLESS YOU KNOW WHAT YOU ARE DOING VERSION="-DVERSION=\"1.18pre1\"" UNIX=0 BEOS=0 WIN32=0 DARWIN=0 # Choose optimization level #DEBUG_CFLAGS="-g -O0 -fsigned-char \$(PROFILE) -pipe -Wall \$(IFLAGS) \$(DFLAGS)" DEBUG_CFLAGS="-g -O1 -fsigned-char -W -Wall \$(IFLAGS) \$(DFLAGS)" #-- Production (default) NORMAL_CFLAGS="-O2 -pipe -fsigned-char -fomit-frame-pointer -fconserve-space -fexpensive-optimizations -ffast-math \$(IFLAGS) \$(DFLAGS)" # Note, -fconserve-space is really not recommended for gcc 3.x. Rtfm on gcc, # in the -fconserve-space section. # Additionally selected ops. Email unknown@panax.com before ever changing # these. SUPEROPT="-O3 -pipe -fsigned-char -fomit-frame-pointer -foptimize-sibling-calls -ffast-math -fstrength-reduce -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -frerun-cse-after-loop -frerun-loop-opt -fgcse -fgcse-lm -fgcse-sm -fdelete-null-pointer-checks -fexpensive-optimizations -fschedule-insns2 -funroll-loops -frename-registers -fno-cprop-registers \$(IFLAGS) \$(DFLAGS) -Wno-comment" #------------------------------------------------------------------------------ # Function declarations function check_for_libs() { TEMPFILE=temp$$ cat << " EOF" > $TEMPFILE.c int main(){ int i; } EOF if [ "x`cc -o $TEMPFILE.a -w $TEMPFILE.c $LIBCHECK 2>&1`" = x ] ; then rm -f $TEMPFILE.[coa] > /dev/null 2>&1 return 0 elif [ "x`gcc -o $TEMPFILE.a -w $TEMPFILE.c $LIBCHECK 2>&1`" = x ] ; then rm -f $TEMPFILE.[coa] > /dev/null 2>&1 return 0 else rm -f $TEMPFILE.[coa] > /dev/null 2>&1 return 1 fi } #------------------------------------------------------------------------------ # Parse input arguments while [ $# != 0 ] ; do case $1 in "-?"|"--help") echo echo "usage: setup [--static] [--unix] [--beos] [--win32] [--darwin] [--debug] [--profile]" echo echo "Setup will create a Rules.make file (or Rules.make.WIN32" echo "if --win32 forced) that Freecraft needs to compile." echo "Supported command-line arguments (you may use more than one at a time):" echo " static : Compile Freecraft using static libraries (default dynamic)" echo " unix : Force Unix/Linux compile options (default auto check)" echo " beos : Force BeOS compile options (default auto check)" echo " win32 : Force WIN32 compile options (default auto check)" echo " darwin : Force Darwin compile options (default auto check)" echo " debug : Compile with debug options (default no)" echo " profile : Compile with profile support (default off)" echo exit ;; "--static") STATIC=-static ;; "--unix") UNIX=1 BEOS=0 WIN32=0 DARWIN=0 ;; "--beos") UNIX=0 BEOS=1 WIN32=0 DARWIN=0 ;; "--win32") UNIX=0 BEOS=0 WIN32=1 DARWIN=0 ;; "--darwin") UNIX=0 BEOS=0 WIN32=0 DARWIN=1 ;; "--profile") PROFILE=-pg ;; "--debug") CFLAGS=$DEBUG_CFLAGS DEBUG=1 ;; *) echo "Unknown command-line option '$1'" exit esac shift done # # Display banner cat $RULESFILE echo >> $RULESFILE echo #------------------------------------------------------------------------------ # Determine if this is for UNIX, BEOS, or WIN32 if [ "$UNIX" != 1 ] ; then if [ "$BEOS" != 1 ] ; then if [ "$WIN32" != 1 ] ; then if [ "$DARWIN" != 1 ] ; then if [ "$WIN32" = 0 ] ; then if [ "x`uname | grep -is cygwin`" != x ] \ || [ "x`uname | grep -is MINGW`" != x ] ; then UNIX=0 BEOS=0 WIN32=1 DARWIN=0 echo "Cygwin/win32 environment detected.. Use --darwin, --unix or --beos to override" fi fi if [ "$BEOS" = 0 ] ; then if [ "x`uname -a | grep -is beos`" != x ] ; then UNIX=0 BEOS=1 WIN32=0 DARWIN=0 echo "BeOS environment detected. Use --darwin, --unix or --win32 to override" fi fi if [ "$DARWIN" = 0 ] ; then if [ "x`uname -a | grep -is darwin`" != x ] ; then DARWIN=1 UNIX=0 BEOS=0 WIN32=0 CC=cc CCLD=c++ NORMAL_CFLAGS="$NORMAL_CFLAGS -traditional-cpp" SUPEROPT="$SUPEROPT -traditional-cpp" DEBUG_CFLAGS="$DEBUG_CFLAGS -tranditional-cpp" echo "Darwin environment detected. Use --beos, --win32 or --unix to override." fi fi if [ "$UNIX" = 0 ] ; then if [ "$BEOS" = 0 ] ; then if [ "$WIN32" = 0 ] ; then if [ "$DARWIN" = 0 ] ; then UNIX=1 BEOS=0 WIN32=0 DARWIN=0 echo "UNIX environment detected. Use --beos, --win32 or --darwin to override." fi fi fi fi fi fi fi fi echo #------------------------------------------------------------------------------ # libpng support part #------------------------------------------------------------------------------ echo "VIDEO DRIVER SETUP" echo echo -n "Checking for PNG library..." # libpng most likely requires libz.a, so check for it first.. LIBCHECK="-lz"; check_for_libs if [ "$?" = 0 ] ; then HAVE_LIBZ=1 PNG_EXTRA="-lz" else LIBCHECK="-lz -L./$LOCAL_ZLIB"; check_for_libs if [ "$?" = 0 ] ; then HAVE_LIBZ=2 PNG_EXTRA="$LIBCHECK" fi fi PNG_PATH="-L/usr/local/lib" PNG_LOCAL=0 if [ -d $LOCAL_PNG ] ; then PNG_PATH="-L./\$LOCAL_PNG" PNG_LOCAL=1 fi LIBCHECK="$PNG_PATH -lpng $PNG_EXTRA"; check_for_libs if [ "$?" = 0 ] ; then if [ "$PNG_LOCAL" = 1 ] ; then echo " Found, (local: $LOCAL_PNG)."; else echo " Found."; fi else echo " NOT FOUND!"; echo echo "...You do not appear to have a working PNG library installed!" echo echo "libpng is required for freecraft to compile. Please " echo "refer to the LOCAL_PNG section in the setup script to " echo "find out how to install a local copy to compile freecraft." echo echo "Please also note that the PNG library most likely also" echo "requires the GZIP compression library. If you are sure" echo "to have libpng installed, but this test still fails," echo "check out for libz. You may refer to the LOCAL_ZLIB" echo "section of this script to find out how to install a local" echo "local copy of the libz." echo exit 1 fi #------------------------------------------------------------------------------ # Compile commands #------------------------------------------------------------------------------ echo "# Compile commands" >> $RULESFILE echo "CC=$CC" >> $RULESFILE echo "CCLD=$CCLD" >> $RULESFILE echo "RM=$RM" >> $RULESFILE echo "MAKE=$MAKE" >> $RULESFILE echo >> $RULESFILE #------------------------------------------------------------------------------ # Install part #------------------------------------------------------------------------------ if [ "$WIN32" = 0 ] ; then echo "# Prefix for 'make install'" >> $RULESFILE echo "PREFIX=${PREFIX-/usr/local}" >> $RULESFILE echo >> $RULESFILE fi #------------------------------------------------------------------------------ # SIOD support part #------------------------------------------------------------------------------ echo "# Use SIOD support" >> $RULESFILE if [ "$BEOS" != 1 ] ; then if [ "$DARWIN" != 1 ] ; then echo "CCL = -DUSE_CCL" >> $RULESFILE echo "CCLLIB = -lm" >> $RULESFILE else echo "CCL = -DUSE_CCL" >> $RULESFILE echo "CCLLIB = -dl" >> $RULESFILE fi else echo "CCL = -DUSE_CCL -DUSE_BEOS" >> $RULESFILE echo "CCLLIB =" >> $RULESFILE fi echo >> $RULESFILE #------------------------------------------------------------------------------ # Video driver part #------------------------------------------------------------------------------ # Check for various libraries echo -n "Checking for various video libraries..." # Check for SDL >= 1.x if [ "x`uname -a | grep -is bsd`" != x ] ; then SDL_CONFIG=sdl11-config else SDL_CONFIG=sdl-config fi if [ "x`$SDL_CONFIG --version 2>/dev/null`" = x ] ; then echo " SDL not found..." ALL_YOUR_BASE=0 else HAVESDL=1 echo -n " Found SDL..." fi if [ "$BEOS" != 1 ] ; then if [ "$DARWIN" != 1 ] && [ "$WIN32" != 1 ] ; then # Check for SVGALIB LIBCHECK="-lvga -lvgagl" check_for_libs if [ "$?" = 0 ] ; then HAVESVGA=1 echo " Found SVGALIB..." else echo " SVGALIB not found..." ARE_BELONG_TO_US=0 fi fi if [ "$WIN32" = 0 ] ; then echo echo "What video outputs do you wish to be enabled?" echo echo " X-X11 Support (default)" if [ $HAVESDL = 1 ] ; then echo " S-SDL Support" fi if [ "$HAVESVGA" = 1 ] ; then echo " V-SVGALIB Support" fi if (test "$HAVESVGA" = 1 && test $HAVESDL = 1) ; then echo " B-SDL/SVGALIB Support" fi echo echo -n "Please enter selection: " read $N VIDSEL echo fi else if [ $HAVESDL = 1 ] ; then VIDSEL="S" else echo "FreeCraft on BeOS currently only supports SDL for video" echo "Please install SDL and try again." exit -1 fi fi # echo "# Video support" >> $RULESFILE case $VIDSEL in [sS]) echo -n "Using SDL.." USESDL=1 SDLLIB="\$(shell $SDL_CONFIG --libs)" echo "SDL = -DUSE_SDL -DUSE_SDLA \$(SDL_CFLAGS)" >> $RULESFILE echo "SDL_CFLAGS := \$(shell $SDL_CONFIG --cflags)" >> $RULESFILE if [ x$STATIC != x ] ; then SDLLIB="\$(shell $SDL_CONFIG --static-libs)" fi echo "SDLLIB := $SDLLIB" >> $RULESFILE echo >> $RULESFILE echo "VIDEO = \$(SDL)" >> $RULESFILE if [ "$BEOS" != 1 ] ; then echo "VIDEOLIB = \$(SDLLIB) $DL" >> $RULESFILE else echo "VIDEOLIB = \$(SDLLIB)" >> $RULESFILE fi echo ;; [vV]) echo "Using SVGALIB..." echo "VIDEO = -DUSE_SVGALIB" >> $RULESFILE echo "VIDEOLIB = -lvga $DL" >> $RULESFILE ;; [bB]) echo -n "Using SDL/SVGALIB..." USESDL=1 SDLLIB="\$(shell $SDL_CONFIG --libs)" echo "SDL = -DUSE_SDL -DUSE_SDLA \$(SDL_CFLAGS)" >> $RULESFILE echo "SDL_CFLAGS := \$(shell $SDL_CONFIG --cflags)" >> $RULESFILE if [ x$STATIC != x ] ; then SDLLIB="$SDLLIB -lesd" fi echo "SDLLIB := $SDLLIB" >> $RULESFILE echo >> $RULESFILE echo "VIDEO = \$(SDL)" >> $RULESFILE echo "VIDEOLIB = \$(SDLLIB) -lvga -lvgagl $DL" >> $RULESFILE echo ;; *) if [ "$WIN32" = 1 ] ; then echo "Using SDL..." USESDL=1 SDLLIB="\$(shell $SDL_CONFIG --libs)" echo "SDL = -DUSE_SDL -DUSE_SDLA \$(SDL_CFLAGS)" >> $RULESFILE echo "SDL_CFLAGS := \$(shell $SDL_CONFIG --cflags)" >> $RULESFILE if [ x$STATIC != x ] ; then SDLLIB="$SDLLIB -lesd" fi echo "SDLLIB := $SDLLIB" >> $RULESFILE echo >> $RULESFILE else echo "Using X11..." echo "VIDEO = -DUSE_X11" >> $RULESFILE echo "VIDEOLIB = -lXext -lX11 $DL" >> $RULESFILE fi ;; esac echo "" >> $RULESFILE # # Put in Cygwin/win32 stuff if necessary, and test for mingw32 if [ "$WIN32" = 1 ] ; then echo "VIDEO = -DUSE_WIN32 \$(SDL)" >> $RULESFILE if [ "x`gcc -v 2>&1 | grep -is mingw32`" = x ] ; then echo "VIDEOLIB = \$(SDLLIB) -lwsock32 -lws2_32" >> $RULESFILE else echo "VIDEOLIB = \$(SDLLIB) -lwsock32 -lws2_32" >> $RULESFILE fi fi #------------------------------------------------------------------------------ # Sound part #------------------------------------------------------------------------------ echo echo echo SOUND DRIVER OPTIONS echo -n "Do you want to compile with sound? (y) " read $N ANSWER echo case $ANSWER in [nN]) echo "No sound support..." ;; *) echo "Compiling with sound support..." echo echo "# Sound support" >> $RULESFILE echo "DSOUND = -DWITH_SOUND" >> $RULESFILE echo -n "Checking for various sound libraries..." # Check for arts client if [ "x`artsc-config --version 2>/dev/null`" = x ] ; then echo -n " ARTS not found..." else echo " ARTS Found..." echo -n "Do you want use the ARTS Daemon sound output? (y) " read $N ANSWERA echo case $ANSWERA in [nN]) echo "ARTS Daemon support disabled." echo echo -n "Checking for various sound libraries..." ;; *) HAVEARTS=1 echo "ARTSC = -DWITH_ARTSC \$(shell artsc-config --cflags)" >> $RULESFILE echo "ARTSCLIB = \$(shell artsc-config --libs)" >> $RULESFILE echo "Using ARTS Daemon Support..." echo echo -n "Checking for various sound libraries..." ;; esac fi if (test "$USESDL" != 1 -a "$HAVEARTS" != 1) ; then # Check for libpthread LIBCHECK="-lpthread" check_for_libs if [ "$?" = 0 ] ; then echo echo echo "Assuming you have a thread-safe X11 (libc6 or glibc)," echo -n "Do you want to compile with threaded OSS sound? (n) " read $N ANSWER2 echo case $ANSWER2 in [yY]) echo "THREAD = -D_REENTRANT -DUSE_THREAD" >> $RULESFILE if [ "x`uname -a | grep -is bsd`" != x ] ; then echo "THREADLIB = -pthread" >> $RULESFILE else echo "THREADLIB = -lpthread" >> $RULESFILE fi echo "Using Threaded OSS Sound Output..." echo echo -n "Checking for various sound libraries..." ;; *) echo "Threaded OSS Sound Ouput Disabled." echo echo -n "Checking for various sound libraries..." ;; esac fi fi LIBCHECK="-lFLAC -lm"; check_for_libs if [ "$?" = 0 ] ; then echo " LibFLAC Found..." echo -n "Would you like FLAC support? (n) " read $N ANSWER echo case $ANSWER in [yY]) echo "FLAC = -DUSE_FLAC" >> $RULESFILE echo "FLACLIB = -lFLAC" >> $RULESFILE echo "Using FLAC support..." echo echo -n "Checking for various sound libraries..." ;; *) echo "Disabling FLAC support." echo echo -n "Checking for various sound libraries..." ;; esac else echo " LibFLAC not found..." fi LIBCHECK="-lvorbisfile -lvorbis -logg"; check_for_libs if [ "$?" = 0 ] ; then echo " Vorbis Found..." echo -n "Would you like Vorbis OGG support? (n) " read $N ANSWER echo case $ANSWER in [yY]) echo "OGG = -DUSE_OGG" >> $RULESFILE echo "OGGLIB = -lvorbisfile -lvorbis -logg" >> $RULESFILE echo "Using Vorbis OGG support..." echo echo -n "Checking for various sound libraries..." ;; *) echo "Disabling Vorbis OGG support." echo echo -n "Checking for various sound libraries..." ;; esac else LIBCHECK="-lvorbisfile"; check_for_libs if [ "$?" != 0 ] ; then echo -n "libvorbisfile " fi LIBCHECK="-lvorbis"; check_for_libs if [ "$?" != 0 ] ; then echo -n "libvorbis " fi LIBCHECK="-logg"; check_for_libs if [ "$?" != 0 ] ; then echo -n "libogg " fi echo "not found" fi LIBCHECK="-lmad"; check_for_libs if [ "$?" = 0 ] ; then echo " LibMAD found..." echo -n "Would you like MAD MP3 support? (n) " read $N ANSWER echo case $ANSWER in [yY]) echo "MAD = -DUSE_MAD" >> $RULESFILE echo "MP3LIB = -lmad" >> $RULESFILE echo "Using MAD MP3 support..." ;; *) echo "Disabling MAD MP3 support." ;; esac else echo " LibMAD not found..." fi echo echo -n "Would you like to use [I]nternal" if [ $HAVESDL = 1 ] ; then echo -n ", [S]DL," fi echo -n " or [N]o " echo -n "CD Audio support? (n) " read $N CDMode echo case $CDMode in [sS]) echo "Using SDL CD Audio Support..." USE_SDLCD=1 USE_LIBCDA=0 echo "SDLCD = -DUSE_SDLCD" >> $RULESFILE if [ "$USESDL" != 1 ]; then echo "SDLCD := $SDLCD \$(shell $SDL_CONFIG --cflags)" >> $RULESFILE echo "CLONELIBS := \$(shell $SDL_CONFIG --libs)" >> $RULESFILE fi echo >> $RULESFILE ;; [iI]) echo "Using Internal (libcda) CD Audio Support..." USE_SDLCD=0 USE_LIBCDA=1 echo "LIBCDA = -DUSE_LIBCDA" >> $RULESFILE echo >> $RULESFILE ;; *) echo "Disabling CD Audio Support." USE_SDLCD=0 USE_LIBCDA=0 ;; esac ;; esac echo >> $RULESFILE echo #------------------------------------------------------------------------------ # Compression options part #------------------------------------------------------------------------------ # Check for compression libraries echo echo "COMPRESSION OPTIONS" echo echo -n "Checking for compression libraries..." # libbz2 LIBCHECK="-lbz2"; check_for_libs if [ "$?" = 0 ] ; then HAVE_LIBBZ2=1 echo -n " LibBZ2 found..." fi # libzzip LIBCHECK="-lzzip"; check_for_libs if [ "$?" = 0 ] ; then HAVE_LIBZZIP=1 echo -n " LibZZip found..." fi # Determine default compression option based on what's available if (test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 && test "$HAVE_LIBBZ2" = 1) ; then DEF4=" (default)"; COMPDEF="O" elif [ "$HAVE_LIBBZ2" = 1 ] ; then DEF3=" (default)"; COMPDEF="B" elif [ "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 ] ; then DEF2=" (default)"; COMPDEF="G" else DEF1=" (default)"; COMPDEF="N" fi # Display menu echo echo Which compression types do you wish to enable? echo echo " N-None"$DEF1 if [ "$HAVE_LIBZ" = 1 ] ; then echo " G-GZip"$DEF2 fi if [ "$HAVE_LIBZ" = 2 ] ; then echo " G-GZip"$DEF2 " (local: $LOCAL_ZLIB)" fi if [ "$HAVE_LIBBZ2" = 1 ] ; then echo " B-Bzip2"$DEF3 fi if (test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 && test "$HAVE_LIBBZ2" = 1) ; then echo " O-Both GZip and Bzip2"$DEF4 fi if (test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 && test "$HAVE_LIBBZ2" = 1 && test "$HAVE_LIBZZIP" = 1 ) ; then echo " A-All ZZip and GZip and Bzip2"$DEF5 fi echo echo -n "Please enter selection ($COMPDEF): " read $N COMPOPT echo if [ x$COMPOPT = x ]; then COMPOPT=$COMPDEF; fi echo "# Compression support" >> $RULESFILE case $COMPOPT in [nN]) echo "Disabling All Compression." echo "ZDEFS =" >> $RULESFILE echo "ZLIBS =" >> $RULESFILE ;; [bB]) echo "Using Bzip2 compression..." echo "ZDEFS = -DUSE_BZ2LIB" >> $RULESFILE echo "ZLIBS = -lbz2" >> $RULESFILE ;; [oO]) echo "Using GZ and Bzip2 compression..." echo "ZDEFS = -DUSE_ZLIB -DUSE_BZ2LIB" >> $RULESFILE echo "ZLIBS = -lz -lbz2" >> $RULESFILE ;; [aA]) echo "Using GZ, Bzip2, ZZip compression..." echo "ZDEFS = -DUSE_ZZIPLIB -DUSE_ZLIB -DUSE_BZ2LIB" >> $RULESFILE echo "ZLIBS = -lzzip -lz -lbz2" >> $RULESFILE ;; *) echo "Using GZ compression..." echo "ZDEFS = -DUSE_ZLIB" >> $RULESFILE echo "ZLIBS = -lz" >> $RULESFILE ;; esac echo "" >> $RULESFILE #------------------------------------------------------------------------------ # Complining/Optimization Stuff #------------------------------------------------------------------------------ echo echo echo COMPILE OPTIONS if [ "$DEBUG" != 1 ] ; then echo "Debug Support allows you to debug Freecraft more easily, but disables a lot of" echo "optimization support, which may cause Freecraft to run much slower." echo echo Enable Debug Support? echo echo " Y - Yes." echo " N - No." echo echo -n "Please enter selection (n): " read $N DEBUGASK case $DEBUGASK in [yY]) echo echo "Debug Support Enabled..." CFLAGS=$DEBUG_CFLAGS DEBUG=1 ;; [nN]) echo echo "Debug Support Disabled." ;; esac fi CCVERS=`$CC -dumpversion` CCMAJOR=`echo $CCVERS | cut -d. -f 1` CCMINOR=`echo $CCVERS | cut -d. -f 2` CCREALLYMINOR=`echo $CCVERS | cut -d. -f 3` if [ $CCMAJOR -gt 3 -o $CCMAJOR -eq 3 -a $CCMINOR -ge 2 ] ; then if [ "$DEBUG" != 1 ] ; then echo echo echo Compiler is $CC $CCMAJOR.$CCMINOR.$CCREALLYMINOR echo echo "This autoconfiguring program allows you to tell GCC to use different" echo "optimizations, based on how stable you want Freecraft. The higher the" echo "optimization, the more unstable Freecraft is. High Optimization also" echo "may cause Freecraft to fail to compile, but usually doesnt. High" echo "Optimization will also increase compile times." echo echo " *** DO NOT REPORT BUGS ABOUT A HIGHLY OPTIMIZED FREECRAFT FAILING ***" echo echo "Which Optimization Mode do you wish to use?" echo echo " N - Normal Optimization, used in Production Binaries." echo " H - High Optimization, not recommended." echo echo -n "Please enter selection (N): " read $N OPTASK case $OPTASK in [hH]) echo echo "Using High Optimization." CFLAGS="$CFLAGS $SUPEROPT" ;; *) echo echo "Using Normal Optimization." CFLAGS="$CFLAGS $NORMAL_CFLAGS" ;; esac echo case $OPTASK in [hH]) echo echo "Specific Processor Optimization:" echo echo "You are a brave soul indeed. You can additionally optimize Freecraft, depending" echo "on what architecture (target machine) you run. If you dont know, or your target" echo "machine isnt listed, simply press enter." echo echo " I - Pentium, Pentium MMX, Pentium Pro Pentium 2, Pentium 3, Pentium 4," echo " Celeron" echo " A - AMD K6, K6-2, K6-3, Athlon, Ahtlon Thunderbird, Athlon 4," echo " Athlon XP, Athlon MP, Duron" echo echo -n "Please enter selection: " read $N TYPEASK echo case $TYPEASK in [iI]) CFLAGS="$CFLAGS -fno-branch-count-reg" echo echo "Choose one:" echo echo " A - Pentium" echo " B - Pentium MMX" echo " C - Pentium Pro" echo " D - Pentium 2 or Celeron/Celeron A" echo " E - Pentium 3 or Celeron with Coppermine Core" echo " F - Pentium 4" echo echo "To choose none, just press enter." echo -n "Please enter selection: " read $N PROCASK case $PROCASK in [aA]) CFLAGS="$CFLAGS -march=pentium -malign-double -mpreferred-stack-boundary=3" ;; [bB]) CFLAGS="$CFLAGS -march=pentium-mmx -malign-double -mmmx -mpreferred-stack-boundary=3" ;; [cC]) CFLAGS="$CFLAGS -march=pentiumpro -malign-double -mpreferred-stack-boundary=3" ;; [dD]) CFLAGS="$CFLAGS -march=pentium2 -mmmx" ;; [eE]) CFLAGS="$CFLAGS -march=pentium3 -mmmx -msse -mpreferred-stack-boundary=4 -mfpmath=sse,387" ;; [fF]) CFLAGS="$CFLAGS -march=pentium4 -mmmx -msse -msse2 -mpreferred-stack-boundary=4 -mfpmath=sse,387" ;; esac echo ;; [aA]) CFLAGS="$CFLAGS -fno-branch-count-reg" echo echo "Choose one:" echo echo " A - K6" echo " B - K6-2" echo " C - K6-3" echo " D - Athlon or Duron (Choose this one if you dont know)" echo " E - Athlon or Duron /w Thunderbird Core" echo " F - Athlon 4" echo " G - Athlon XP" echo " H - Athlon MP" echo echo "To choose none, just press enter." echo -n "Please enter selection: " read $N PROCASK case $PROCASK in [aA]) CFLAGS="$CFLAGS -march=k6 -malign-double" ;; [bB]) CFLAGS="$CFLAGS -march=k6-2 -m3dnow -mmmx -malign-double" ;; [cC]) CFLAGS="$CFLAGS -march=k6-3 -m3dnow -mmmx -malign-double" ;; [dD]) CFLAGS="$CFLAGS -march=athlon -m3dnow -mmmx -malign-double" ;; [eE]) CFLAGS="$CFLAGS -march=athlon-tbird -m3dnow -mmmx -malign-double" ;; [fF]) CFLAGS="$CFLAGS -march=athlon-4 -m3dnow -mmmx -msse -malign-double -mfpmath=sse,387 -mpreferred-stack-boundary=4" ;; [gG]) CFLAGS="$CFLAGS -march=athlon-xp -m3dnow -mmmx -msse -malign-double -mfpmath=sse,387 -mpreferred-stack-boundary=4" ;; [hH]) CFLAGS="$CFLAGS -march=athlon-mp -m3dnow -mmmx -msse -malign-double -mfpmath=sse,387 -mpreferred-stack-boundary=4" ;; esac ;; esac ;; esac fi fi if [ $CCMAJOR -ne 3 -o $CCMAJOR -eq 3 -a $CCMINOR -ne 2 ] ; then if [ "$DEBUG" != 1 ] ; then echo echo echo Compiler is $CC $CCMAJOR.$CCMINOR.$CCREALLYMINOR echo echo "Optimization Menu Disabled: Not running GCC 3.2.x" echo "Using Normal Optimization" CFLAGS="$CFLAGS $NORMAL_CFLAGS" fi fi ############################################################################### ############################################################################### # Write required information to the file # May be required on some (older) distributions for libpng and libz! # extra linker flags and include directory # -L/usr/lib LOCAL_LDF="" LOCAL_IF="" if [ "$HAVE_LIBZ" = 2 ] ; then LOCAL_LDF=" -L\$(TOPDIR)/$LOCAL_ZLIB" LOCAL_IF="-I\$(TOPDIR)/$LOCAL_ZLIB" if [ "$DARWIN" = 1 ] ; then LOCAL_IF="-I\$(TOPDIR)/$LOCAL_ZLIB -I/usr/include -I/usr/include/machine" fi else if [ "$DARWIN" = 1 ] ; then LOCAL_IF="-I/usr/include -I/usr/include/machine " $LOCAL_IF fi fi LDF_PNG_PATH="" IF_PNG_PATH="" if [ "$PNG_LOCAL" = 1 ] ; then LDF_PNG_PATH="-L\$(TOPDIR)/$LOCAL_PNG " IF_PNG_PATH="-I\$(TOPDIR)/$LOCAL_PNG " fi if [ "$WIN32" = 0 ] ; then echo "XLDFLAGS = -L/usr/X11R6/lib -L/usr/local/lib $LDF_PNG_PATH $LOCAL_LDF" >> $RULESFILE echo "XIFLAGS = -I/usr/X11R6/include -I/usr/local/include $IF_PNG_PATH $LOCAL_IF" >> $RULESFILE fi echo >> $RULESFILE # Add the last bits # below this, nothing should be changed! echo "#####################################################################" >> $RULESFILE echo "# Don't change anything below here unless you know what you're doing!" >> $RULESFILE echo >> $RULESFILE echo "VERSION= '$VERSION'" >> $RULESFILE echo "PROFILE=$PROFILE" >> $RULESFILE echo >> $RULESFILE if [ "$BEOS" != 1 ] ; then if [ "$DARWIN" != 1 ] ; then # Libraries needed to build tools echo "TOOLLIBS=\$(XLDFLAGS) -lpng -lz -lm \$(THREADLIB)" >> $RULESFILE # Libraries needed to build freecraft echo "CLONELIBS=$CLONELIBS \$(XLDFLAGS) -lpng -lz -lm \\" >> $RULESFILE echo " \$(THREADLIB) \$(CCLLIB) \$(VIDEOLIB) \$(ZLIBS) \\" >> $RULESFILE echo " \$(ARTSCLIB) \$(FLACLIB) \$(OGGLIB) \$(MP3LIB) -lz -lm" >> $RULESFILE else # Libraries needed to build tools echo "TOOLLIBS=\$(XLDFLAGS) -lpng -lz \$(THREADLIB)" >> $RULESFILE # Libraries needed to build freecraft echo "CLONELIBS=\$(XLDFLAGS) -lpng -lz \\" >> $RULESFILE echo " \$(THREADLIB) \$(CCLLIB) \$(VIDEOLIB) \$(ZLIBS)" >> $RULESFILE fi else # Libraries needed to build tools echo "TOOLLIBS=\$(XLDFLAGS) -lpng -lz \$(THREADLIB)" >> $RULESFILE # Libraries needed to build freecraft echo "CLONELIBS=\$(XLDFLAGS) -lpng -lz \\" >> $RULESFILE echo " \$(THREADLIB) \$(CCLLIB) \$(VIDEOLIB) \$(ZLIBS)" >> $RULESFILE fi echo "DISTLIST=\$(TOPDIR)/distlist" >> $RULESFILE echo "TAGS=\$(TOPDIR)/src/tags" >> $RULESFILE echo >> $RULESFILE # WIN32 if [ "$WIN32" = 1 ] ; then echo "# Win32" >> $RULESFILE echo "EXE=.exe" >> $RULESFILE echo "OUTFILE=\$(TOPDIR)/freecraft\$(EXE)" >> $RULESFILE echo "ARCH=win32" >> $RULESFILE echo "OE=o" >> $RULESFILE echo "OBJDIR=winobj" >> $RULESFILE else # LINUX echo "# Linux" >> $RULESFILE echo "EXE=" >> $RULESFILE echo "OUTFILE=\$(TOPDIR)/freecraft" >> $RULESFILE echo "ARCH=linux" >> $RULESFILE echo "OE=o" >> $RULESFILE echo "OBJDIR=obj" >> $RULESFILE fi #------------------------------------------------------------------------------ # architecture-dependent objects echo >> $RULESFILE echo "#ARCHOBJS=stdmman.\$(OE) svgalib.\$(OE) unix_lib.\$(OE) bitm_lnx.\$(OE)" >> $RULESFILE # include flags echo "IFLAGS= -I\$(TOPDIR)/src/include \$(XIFLAGS) -I\$(TOPDIR)/src/movie/vp31/include" >> $RULESFILE # define flags if [ "$DEBUG" = 1 ] ; then echo "DEBUG= -DDEBUG #-DFLAG_DEBUG" >> $RULESFILE fi echo "DFLAGS= \$(THREAD) \$(CCL) \$(VERSION) \\" >> $RULESFILE echo " \$(VIDEO) \$(ZDEFS) \$(DSOUND) \\" >> $RULESFILE echo " \$(DEBUG) \$(SDLCD) \$(LIBCDA) \\" >> $RULESFILE echo -n " \$(ARTSC) \$(FLAC) \$(OGG) \$(MAD) " >> $RULESFILE echo echo -n "Are you using the WarCraft 2 Expansion CD? (n): " read $N YESORNO echo if [ "$YESORNO" = "Y" -o "$YESORNO" = "y" ] ; then echo -n " -DHAVE_EXPANSION" >> $RULESFILE fi echo "" >> $RULESFILE echo "CFLAGS=$CFLAGS $STATIC $EXTRA_CFLAGS" >> $RULESFILE ## JOHNS: my ctags didn't support #CTAGSFLAGS=-i defmpstuvFS -a -f echo "CTAGSFLAGS=-i defptvS -a -f " >> $RULESFILE echo >> $RULESFILE # # Locks versions with symbolic name echo "# Locks versions with a symbolic name" >> $RULESFILE echo "LOCKVER= rcs -q -n\$(NAME)" >> $RULESFILE echo >> $RULESFILE #------------------------------------------------------------------------------ # # Source code documentation echo "# Source code documentation" >> $RULESFILE echo "DOXYGEN= doxygen" >> $RULESFILE echo "DOCIFY= docify" >> $RULESFILE echo "DOCPP= doc++" >> $RULESFILE # Still didn't work #echo "DOCIFY= /root/doc++-3.3.11/src/docify" >> $RULESFILE #echo "DOCPP= /root/doc++-3.3.11/src/doc++" >> $RULESFILE echo >> $RULESFILE echo "%.doc: %.c" >> $RULESFILE echo " @\$(TOPDIR)/tools/aledoc \$< | \$(DOCIFY) > \$*-c.doc 2>/dev/null" >> $RULESFILE echo "%.doc: %.h" >> $RULESFILE echo " @\$(TOPDIR)/tools/aledoc \$< | \$(DOCIFY) > \$*-h.doc 2>/dev/null" >> $RULESFILE #------------------------------------------------------------------------------ # Final comments echo echo "Done generating $RULESFILE." echo echo -n "Would you like to compile it now? (y) " read $N ANSWER echo case $ANSWER in [nN]) echo echo "Done generating $RULESFILE. Type '$MAKE $DEPEND && $MAKE$CROSS' to compile freecraft." echo ;; *) echo $MAKE $DEPEND $MAKE$CROSS ;; esac