938 lines
24 KiB
Bash
Executable file
938 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 -n 1 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 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 -n 1 ANSWER
|
|
echo
|
|
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 -n 1 ANSWER2
|
|
echo
|
|
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 -n 1 ANSWER
|
|
echo
|
|
case $ANSWER in
|
|
[yY])
|
|
echo "FLAC = -DUSE_FLAC" >> $RULESFILE
|
|
echo "FLACLIB = -lFLAC" >> $RULESFILE
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
echo
|
|
|
|
echo -n "Would you like OGG support? (n) "
|
|
read -n 1 ANSWER
|
|
echo
|
|
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 -n 1 ANSWER
|
|
echo
|
|
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 -n 1 CDMode
|
|
echo
|
|
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 -n 1 COMPOPT
|
|
echo
|
|
|
|
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 -n 1 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
|
|
|
|
#------------------------------------------------------------------------------
|
|
|
|
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 -n 1 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
|