#!/bin/sh # This 'configure' script is a very easy wrapper around 'make updateconf' # It allows cross-compilers to do their job much more easy. function showhelp() { echo "Configure for OpenTTD" echo "" echo "Usage:" echo " $0 --your_options" echo "" echo "Params:" echo " --debug Create debug-release [no]" echo " --profile Create profile-release [no]" echo " --revision Set the revision of the compilation [detected]" echo " --target-cc Sets the target-compiler [\$CC]" echo " --target-cxx Sets the C++ target-compiler []" echo " --host-cc Sets the host-compiler [\$CC]" echo " --os Sets the OS. Listens to: [detected]" echo " UNIX, OSX, FREEBSD, MORPHOS" echo " BEOS, SUNOS, CYGWIN, MINGW" echo " --windres Sets the windres (Windows) [windres]" echo " --force-le Force LE platform [no]" echo " --force-be Force BE platform [no]" echo "" echo "Params that can be used with --with or --without" echo " (e.g.: --without-static disables static (default))" echo " static Do you want a static build? [no]" echo " directmusic Do you want direct-music? [no]" echo " zlib Do you want zlib-support? [yes]" echo " sdl Do you want SDL-support? [yes]" echo " png Do you want PNG-support? [yes]" echo " cocoa Do you want cocoa-support? (MacOSX) [no]" echo "" echo "Params used to configure external libs:" echo " --static-zlib-path Set the path to your static zlib []" echo " --sdl-config Where is your sdl-config [sdl-config]" echo " --libpng-config Where is your libpng-config [libpng-config]" echo " " } function handle() { PARAM="$PARAM $1=`awk 'BEGIN { FS="="; $0="'$2'"; print $2;}'`" } # The things you can use inside this case: # handle NAME VALUE - Sets the value to give the 'make upgradeconf' # Value is in form: tag=REAL_VALUE # ITEM="NAME" - Will set the value as above, only with the next param # SITEM="NAME" - Will set the var $NAME to the next param for n in $* do case "$n" in --help | -h) showhelp exit 0 ;; --debug) PARAM="$PARAM DEBUG=1" ;; --profile) PARAM="$PARAM PROFILE=1" ;; --revision=*) RELEASE=`awk 'BEGIN { FS="="; $0="'$n'"; print $2;}'` ;; --revision) SITEM="RELEASE" ;; --target-cc=*) handle "CC_TARGET" $n ;; --target-cc) ITEM="CCTARGET" ;; --target-cxx=*) TARGET_CXX=`awk 'BEGIN { FS="="; $0="'$n'"; print $2;}'` ;; --target-cxx) SITEM="TARGET_CXX" ;; --host-cc=*) handle CC_HOST $n ;; --host-cc) ITEM="CC_HOST" ;; --os=*) OS=`awk 'BEGIN { FS="="; $0="'$n'"; print $2;}'` ;; --os) SITEM="OS" ;; --windres=*) handle WINDRES $n ;; --windres) ITEM="WINDRES" ;; --force-le) PARAM="$PARAM ENDIAN_FORCE=LE" ;; --force-be) PARAM="$PARAM ENDIAN_FORCE=BE" ;; --with-static) PARAM="$PARAM STATIC=1" ;; --without-static) PARAM="$PARAM STATIC=" ;; --with-directmusic) PARAM="$PARAM WITH_DIRECTMUSIC=1" ;; --without-directmusic) PARAM="$PARAM WITH_DIRECTMUSIC=" ;; --with-zlib) PARAM="$PARAM WITH_ZLIB=1" ;; --without-zlib) PARAM="$PARAM WITH_ZLIB=" ;; --with-sdl) PARAM="$PARAM WITH_SDL=1" ;; --without-sdl) PARAM="$PARAM WITH_SDL=" ;; --with-png) PARAM="$PARAM WITH_PNG=1" ;; --without-png) PARAM="$PARAM WITH_PNG=" ;; --with-cocoa) PARAM="$PARAM WITH_COCOA=1" ;; --without-cocoa) PARAM="$PARAM WITH_COCOA=" ;; --static-zlib-path=*) handle STATIC_ZLIB_PATH $n ;; --static-zlib-path) ITEM="STATIC_ZLIB_PATH" ;; --sdl-config=*) handle SDL-CONFIG $n ;; --sdl-config) ITEM="SDL-CONFIG" ;; --libpng-config=*) handle LIBPNG-CONFIG $n ;; --lib-png-config) ITEM="LIBPNG-CONFIG" ;; --*=*) echo -n "Unknown switch " echo `awk 'BEGIN { FS="="; $0="'$n'"; print $1;}'` exit 1 ;; -*) echo "Unknown switch $n" exit 1 ;; *) if ! test -z "$ITEM" then PARAM="$PARAM $ITEM=$n" ITEM=""; elif ! test -z "$SITEM" then export $SITEM=$n SITEM="" else echo "Unknown switch $n" exit 1 fi ;; esac done if ! test -z "$OS" then OS=`echo $OS | tr '[:lower:]' '[:upper:]'` case "$OS" in WIN32) PARAM="$PARAM WIN32=1" ;; UNIX) PARAM="$PARAM UNIX=1" ;; OSX) PARAM="$PARAM OSX=1 UNIX=1" ;; FREEBSD) PARAM="$PARAM FREEBSD=1" ;; MORPHOS) PARAM="$PARAM MORPHOS=1 UNIX=1" ;; BEOS) PARAM="$PARAM BEOS=1 UNIX=1" ;; SUNOS) PARAM="$PARAM SUNOS=1 UNIX=1" ;; CYGWIN) PARAM="$PARAM CYGWIN=1 WIN32=1" ;; MINGW) PARAM="$PARAM MINGW=1 WIN32=1" ;; *) echo "Unknown OS: $OS" exit 1 ;; esac PARAM="$PARAM BYPASS_OS_DETECT=1" fi rm Makefile.config make upgradeconf $PARAM # Makefile.config currently doesn't support custom CXX, so, we add the line # ourself! if ! test -z "$TARGET_CXX" then echo "CXX=$TARGET_CXX" >> Makefile.config fi # Same for RELEASE (read: REVISION) if ! test -z "$RELEASE" then echo "RELEASE=$RELEASE" >> Makefile.config fi