
positions as 10=1, 11=2, ... and are show if alt key is pressed. this gives twice as many available buttons, still every button can have own hotkey.
983 lines
26 KiB
Bash
Executable file
983 lines
26 KiB
Bash
Executable file
#!/bin/bash
|
|
## ___________ _________ _____ __
|
|
## \_ _____/______ ____ ____ \_ ___ \____________ _/ ____\/ |_
|
|
## | __) \_ __ \_/ __ \_/ __ \/ \ \/\_ __ \__ \\ __\\ __\
|
|
## | \ | | \/\ ___/\ ___/\ \____| | \// __ \| | | |
|
|
## \___ / |__| \___ >\___ >\______ /|__| (____ /__| |__|
|
|
## \/ \/ \/ \/ \/
|
|
## ______________________ ______________________
|
|
## 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, Nehal Mistry.
|
|
##
|
|
## 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_NETMENUS -DSPLIT_SCREEN_SUPPORT"
|
|
|
|
## 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.
|
|
## 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
|
|
## SPLIT_SCREEN_SUPPORT: Use multiple map viewports
|
|
## 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
|
|
|
|
cat << .. > $RULESFILE
|
|
## ___________ _________ _____ __
|
|
## \_ _____/______ ____ ____ \_ ___ \____________ _/ ____\/ |_
|
|
## | __) \_ __ \_/ __ \_/ __ \/ \ \/\_ __ \__ \\ __\\ __\
|
|
## | \ | | \/\ ___/\ ___/\ \____| | \// __ \| | | |
|
|
## \___ / |__| \___ >\___ >\______ /|__| (____ /__| |__|
|
|
## \/ \/ \/ \/ \/
|
|
## ______________________ ______________________
|
|
## 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 [ "`uname -a | grep -is bsd` x" != " x" ] ; then
|
|
MAKE=gmake
|
|
EXTRA_CFLAGS="$EXTRA_CFLAGS -DBSD"
|
|
else
|
|
MAKE=make
|
|
fi
|
|
if [ "`uname -a | grep -is bsd` x" != " x" ] ; then
|
|
DL=
|
|
else
|
|
DL=-ldl
|
|
fi
|
|
|
|
#------------------------------------------------------------------------------
|
|
# DON'T CHANGE ANYTHING FROM HERE DOWN UNLESS YOU KNOW WHAT YOU ARE DOING
|
|
|
|
VERSION="-DVERSION=\"1.17-build19\""
|
|
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
|
|
|
|
#------------------------------------------------------------------------------
|
|
# 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" ] \
|
|
|| [ "`uname | grep -is MINGW` 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)x" = "x" ; 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 " 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
|
|
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 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 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
|
|
|
|
LIBCHECK="-lFLAC -lm"; check_for_libs
|
|
if test "$?" = 0 ; then
|
|
echo -n "Would you like FLAC support? (n) "
|
|
read ANSWER
|
|
echo
|
|
case $ANSWER in
|
|
[yY])
|
|
echo "FLAC = -DUSE_FLAC" >> $RULESFILE
|
|
echo "FLACLIB = -lFLAC" >> $RULESFILE
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
else
|
|
echo "libFLAC not found"
|
|
fi
|
|
echo
|
|
|
|
LIBCHECK="-lvorbisfile -lvorbis -logg"; check_for_libs
|
|
if test "$?" = 0 ; then
|
|
echo -n "Would you like OGG support? (n) "
|
|
read ANSWER
|
|
echo
|
|
case $ANSWER in
|
|
[yY])
|
|
echo "OGG = -DUSE_OGG" >> $RULESFILE
|
|
echo "OGGLIB = -lvorbisfile -lvorbis -logg" >> $RULESFILE
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
else
|
|
LIBCHECK="-lvorbisfile"; check_for_libs
|
|
if test "$?" != 0 ; then
|
|
echo -n "libvorbisfile "
|
|
fi
|
|
LIBCHECK="-lvorbis"; check_for_libs
|
|
if test "$?" != 0 ; then
|
|
echo -n "libvorbis "
|
|
fi
|
|
LIBCHECK="-logg"; check_for_libs
|
|
if test "$?" != 0 ; then
|
|
echo -n "libogg "
|
|
fi
|
|
echo "not found"
|
|
fi
|
|
echo
|
|
|
|
LIBCHECK="-lmad"; check_for_libs
|
|
if test "$?" = 0 ; then
|
|
echo -n "Would you like MAD MP3 support? (n) "
|
|
read ANSWER
|
|
echo
|
|
case $ANSWER in
|
|
[yY])
|
|
echo "MAD = -DUSE_MAD" >> $RULESFILE
|
|
echo "MP3LIB = -lmad" >> $RULESFILE
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
else
|
|
echo "libmad not found"
|
|
fi
|
|
echo
|
|
|
|
echo -n "Would you like to use [n]one or [i]nternal "
|
|
if test "$HAVESDL" = "1" ; then
|
|
echo -n "or [S]DL "
|
|
fi
|
|
echo -n "CD Audio support? (n) "
|
|
read 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 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 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 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
|