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