Gobligine/setup
2002-04-15 00:22:11 +00:00

928 lines
24 KiB
Bash
Executable file

#!/bin/bash
if [ "`echo $* | grep \"\-\-win32\"`" = "" ]; then
RULESFILE=Rules.make
DEPEND=depend
else
RULESFILE=Rules.make.WIN32
DEPEND=win32new
CROSS=" win32"
fi
BEOS_CONFIGFILE=/boot/home/config/settings/FreeCraft/FreeCraft.cfg
cat << .. > $RULESFILE
## ___________ _________ _____ __
## \_ _____/______ ____ ____ \_ ___ \____________ _/ ____\/ |_
## | __) \_ __ \_/ __ \_/ __ \/ \ \/\_ __ \__ \\ __\\ __\
## | \ | | \/\ ___/\ ___/\ \____| | \// __ \| | | |
## \___ / |__| \___ >\___ >\______ /|__| (____ /__| |__|
## \/ \/ \/ \/ \/
## ______________________ ______________________
## T H E W A R B E G I N S
## FreeCraft - A free fantasy real time strategy game engine
##
..
## setup - Configure Rules.make (GNU MAKE rules).
##
## (c) Copyright 2000-2002 by Dan Hensley
##
## 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; either version 2 of the License,
## or (at your option) any later version.
##
## 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"
## 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.
## NEW_NETMENUS: Include new menu driven network set-up.
## USE_LIBMODPLUG: Use modplug audio player support.
## These aren't working yet:
## NEW_MAPDRAW: Stephans new map draw code (value>1 shows update)
## USE_FFMPEG Use ffmpeg video player support.
## USE_FLAC: Use flac audio player support.
## USE_OGG: Use ogg audio player support.
## USE_MAD: Use mad mp3 audio 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
# Compile commands
CC=gcc
CCLD=$CC
RM="rm -f"
if [ "`uname -a | grep -is bsd` x" != " x" ] ; then
MAKE=gmake
else
MAKE=make
fi
if [ "`uname -a | grep -is bsd` x" != " x" ] ; then
DL=
else
DL=-ldl
fi
# 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.5, anything above should also be ok.
# Adjust as required - ignored if the directory does not exist.
LOCAL_PNG="libpng-1.0.5"
# 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.3, anything above should also be ok.
# Adjust as required - ONLY USED IF SYSTEM HAS NO ZLIB INSTALLED BY DEFAULT!
LOCAL_ZLIB="zlib-1.1.3"
#------------------------------------------------------------------------------
# DON'T CHANGE ANYTHING FROM HERE DOWN UNLESS YOU KNOW WHAT YOU ARE DOING
VERSION="-DVERSION=\"1.17pre1-build18\""
UNIX=0
BEOS=0
WIN32=0
DARWIN=0
# Choose optimization level
#DEBUG_CFLAGS="-g -O0 -fsigned-char \$(PROFILE) -pipe -Wall -Werror \$(IFLAGS) \$(DFLAGS)"
DEBUG_CFLAGS="-g -O1 -fsigned-char -Wall -Werror \$(IFLAGS) \$(DFLAGS)"
#-- Production (default)
CFLAGS="-O2 -pipe -fsigned-char -fomit-frame-pointer -fconserve-space -fexpensive-optimizations -ffast-math \$(IFLAGS) \$(DFLAGS)"
#------------------------------------------------------------------------------
# Function declarations
function check_for_libs() {
TEMPFILE=temp$$
cat << " EOF" > $TEMPFILE.c
int main(){ int i; }
EOF
if test "`cc -o $TEMPFILE.a -w $TEMPFILE.c $LIBCHECK 2>&1` x" = " x" ; then
rm -f $TEMPFILE.[coa] > /dev/null 2>&1
return 0
elif test "`gcc -o $TEMPFILE.a -w $TEMPFILE.c $LIBCHECK 2>&1` x" = " 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 test $# != 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; 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 [ "`uname | grep -is cygwin` x" != " x" ] ; then
UNIX=0
BEOS=0
WIN32=1
DARWIN=0
echo "It appears that you are in a Cygwin/win32 environment..."
echo "Use --darwin, --unix or --beos to override"
fi
fi
if [ "$BEOS" = "0" ] ; then
if [ "`uname -a | grep -is beos` x" != " x" ] ; then
UNIX=0
BEOS=1
WIN32=0
DARWIN=0
echo "It appears that you are in a BeOS environment..."
echo "Use --darwin, --unix or --win32 to override"
fi
fi
if [ "$DARWIN" = "0" ] ; then
if [ "`uname -a | grep -is darwin` x" != " x" ] ; then
DARWIN=1
UNIX=0
BEOS=0
WIN32=0
CC=cc
CCLD=c++
CFLAGS="-O2 -pipe -fomit-frame-pointer -fconserve-space -fexpensive-optimizations -ffast-math \$(IFLAGS) \$(DFLAGS) -traditional-cpp"
echo "It appears that you are in a Darwin environment..."
echo "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 "It appears that you are in a UNIX environment..."
echo "Use --beos or --win32 or --darwin to override"
fi
fi
fi
fi
fi
fi
fi
fi
echo
#------------------------------------------------------------------------------
# libpng support part
#------------------------------------------------------------------------------
echo -n "Checking for PNG library..."
# libpng most likely requires libz.a, so check for it first..
LIBCHECK="-lz"; check_for_libs
if test "$?" = 0 ; then
HAVE_LIBZ=1
PNG_EXTRA="-lz"
else
LIBCHECK="-lz -L./$LOCAL_ZLIB"; check_for_libs
if test "$?" = 0 ; then
HAVE_LIBZ=2
PNG_EXTRA="$LIBCHECK"
fi
fi
PNG_PATH="-L/usr/local/lib"
PNG_LOCAL=0
if test -d $LOCAL_PNG ; then
PNG_PATH="-L./\$LOCAL_PNG"
PNG_LOCAL=1
fi
LIBCHECK="$PNG_PATH -lpng $PNG_EXTRA"; check_for_libs
if test "$?" = 0 ; then
if test "$PNG_LOCAL" = 1 ; then
echo " OK (local: $LOCAL_PNG)";
else
echo " OK";
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
echo "Checking for various video libraries..."
# Check for SDL >= 1.x
if [ "`uname -a | grep -is bsd` x" != " x" ] ; then
SDL_CONFIG=sdl11-config
else
SDL_CONFIG=sdl-config
fi
if test "$($SDL_CONFIG --version 2>/dev/null)" = "1.*" ; then
echo "...You do not appear to have SDL installed"
else
HAVESDL=1
fi
if [ "$BEOS" != "1" ] ; then
if [ "$DARWIN" != "1" ] ; then
# Check for SVGALIB
LIBCHECK="-lvga -lvgagl"
check_for_libs
if test "$?" = 0 ; then
HAVESVGA=1
else
echo "...You do not appear to have SVGALIB installed"
fi
fi
if test "$WIN32" = 0 ; then
echo
echo "VIDEO DRIVER OPTIONS"
echo
echo " X-X11 Support (default)"
if test "$HAVESDL" = 1 ; then
echo " S-SDL Support"
fi
if test "$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 VIDSEL
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 test "$STATIC x" != " 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 test "$STATIC x" != " 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 test "$STATIC x" != " 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 test "$WIN32" = "1" ; then
echo "VIDEO = -DUSE_WIN32 \$(SDL)" >> $RULESFILE
if test "`gcc -v 2>&1 | grep -is mingw32` x" = " x" ; then
echo "VIDEOLIB = \$(SDLLIB) -lwsock32 -lws2_32" >> $RULESFILE
else
echo "VIDEOLIB = \$(SDLLIB) -lwsock32 -lws2_32" >> $RULESFILE
fi
fi
#------------------------------------------------------------------------------
# Sound part
#------------------------------------------------------------------------------
echo
echo -n "Do you want to compile with sound? (y) "
read ANSWER
case $ANSWER in
[nN])
echo "No sound support"
;;
*)
echo "Compiling with sound support"
echo "# Sound support" >> $RULESFILE
echo "DSOUND = -DWITH_SOUND" >> $RULESFILE
if ! test "$USESDL" = 1 ; then
# Check for libpthread
LIBCHECK="-lpthread"
check_for_libs
if test "$?" = 0 ; then
echo
echo "Assuming you have a thread-safe X11 (libc6 or glibc),"
echo -n "do you want to compile with threaded sound? (n) "
read ANSWER2
case $ANSWER2 in [yY])
echo "THREAD = -D_REENTRANT -DUSE_THREAD" >> $RULESFILE
if [ "`uname -a | grep -is bsd x` " != " x" ] ; then
echo "THREADLIB = -pthread" >> $RULESFILE
else
echo "THREADLIB = -lpthread" >> $RULESFILE
fi
esac
fi
fi
echo
echo -n "Would you like FLAC support? (n) "
read ANSWER
case $ANSWER in
[yY])
echo "FLAC = -DUSE_FLAC" >> $RULESFILE
echo "FLACLIB = -lFLAC" >> $RULESFILE
;;
*)
;;
esac
echo
echo -n "Would you like OGG support? (n) "
read ANSWER
case $ANSWER in
[yY])
echo "OGG = -DUSE_OGG" >> $RULESFILE
echo "OGGLIB = -lvorbisfile -lvorbis -logg" >> $RULESFILE
;;
*)
;;
esac
echo
echo -n "Would you like MAD MP3 support? (n) "
read ANSWER
case $ANSWER in
[yY])
echo "MAD = -DUSE_MAD" >> $RULESFILE
echo "MP3LIB = -lmad" >> $RULESFILE
;;
*)
;;
esac
echo
echo -n "Would you like to use [n]one or [i]nternal or [S]DL CD Audio support? (n) "
read CDMode
case $CDMode in
[sS])
echo "Using SDL cdrom 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 cdrom support"
USE_SDLCD=0
USE_LIBCDA=1
echo "LIBCDA = -DUSE_LIBCDA" >> $RULESFILE
echo >> $RULESFILE
;;
*)
echo "Using none cdrom support"
USE_SDLCD=0
USE_LIBCDA=0
;;
esac
;;
esac
echo >> $RULESFILE
echo
#------------------------------------------------------------------------------
# Compression options part
#------------------------------------------------------------------------------
# Check for compression libraries
echo "Checking for compression libraries..."
echo
# libbz2
LIBCHECK="-lbz2"; check_for_libs
if test "$?" = 0 ; then HAVE_LIBBZ2=1; fi
# libzzip
LIBCHECK="-lzzip"; check_for_libs
if test "$?" = 0 ; then HAVE_LIBZZIP=1; 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 test "$HAVE_LIBBZ2" = 1 ; then
DEF3=" (default)"; COMPDEF="B"
elif test "$HAVE_LIBZ" = 1 -o "$HAVE_LIBZ" = 2 ; then
DEF2=" (default)"; COMPDEF="G"
else
DEF1=" (default)"; COMPDEF="N"
fi
# Display menu
echo "COMPRESSION OPTIONS"
echo
echo " N-None"$DEF1
if test "$HAVE_LIBZ" = 1 ; then
echo " G-GZ"$DEF2
fi
if test "$HAVE_LIBZ" = 2 ; then
echo " G-GZ"$DEF2 " (local: $LOCAL_ZLIB)"
fi
if test "$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 GZ 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 GZ and Bzip2"$DEF5
fi
echo
echo -n "Please enter selection ($COMPDEF): "
read COMPOPT
if test "$COMPOPT x" = " x" ; then COMPOPT=$COMPDEF; fi
echo "# Compression support" >> $RULESFILE
case $COMPOPT in
[nN])
echo "Using no 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
###############################################################################
# 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 test "$HAVE_LIBZ" = 2 ; then
LOCAL_LDF=" -L\$(TOPDIR)/$LOCAL_ZLIB"
LOCAL_IF="-I\$(TOPDIR)/$LOCAL_ZLIB"
if test "$DARWIN" = 1 ; then
LOCAL_IF="-I\$(TOPDIR)/$LOCAL_ZLIB -I/usr/include -I/usr/include/machine"
fi
else
if test "$DARWIN" = 1 ; then
LOCAL_IF="-I/usr/include -I/usr/include/machine " $LOCAL_IF
fi
fi
LDF_PNG_PATH=""
IF_PNG_PATH=""
if test "$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
if [ "$WIN32" = "0" ] ; then
echo "VERSION= '$VERSION'" >> $RULESFILE
fi
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 " \$(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 test "$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)" >> $RULESFILE
# define flags
if test "$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 " \$(FLAC) \$(OGG) \$(MAD) " >> $RULESFILE
echo
echo -n "Are you using the WarCraft 2 Expansion CD? (n): "
read YESORNO
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
#------------------------------------------------------------------------------
echo "\$(OBJDIR)%.\$(OE): %.c" >> $RULESFILE
echo " \$(CC) -c \$(CFLAGS) \$< -o \$@" >> $RULESFILE
echo " @\$(AR) cru \$(TOPDIR)/src/\$(OBJDIR)libclone.a \$@" >> $RULESFILE
if [ "$DARWIN" = "1" ] ; then
echo " ranlib \$(TOPDIR)/src/\$(OBJDIR)libclone.a" >> $RULESFILE
fi
echo >> $RULESFILE
echo "\$(OBJDIR)%.\$(OE): %.cpp" >> $RULESFILE
echo " \$(CC) -c \$(CFLAGS) \$< -o \$@" >> $RULESFILE
echo " @\$(AR) cru \$(TOPDIR)/src/\$(OBJDIR)libclone.a \$@" >> $RULESFILE
if [ "$DARWIN" = "1" ] ; then
echo " ranlib \$(TOPDIR)/src/\$(OBJDIR)libclone.a" >> $RULESFILE
fi
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 ANSWER
case $ANSWER in
[nN])
echo
echo "Done generating $RULESFILE. Type '$MAKE $DEPEND && $MAKE$CROSS' to compile freecraft."
echo
;;
*)
echo
$MAKE $DEPEND
$MAKE$CROSS
;;
esac