# HG changeset patch # User truelight # Date 2006-03-14 19:12:39 # Node ID 2fd76a5c7026d5177a4568203ba4329364df30f1 # Parent 2fe632272d17cfdfae3e503a779416f70a4a8387 (svn r3865) -Add: a fully optional configure script, that is a wrapper around Makefile.config, inserting data directly into it. This is needed for the CompileFarm (nightly) and most likely it will help out many people who want to cross-compile. I might have missed several options out of the Makefile.config, but those are the needed ones for the CompileFarm. diff --git a/configure b/configure new file mode 100755 --- /dev/null +++ b/configure @@ -0,0 +1,221 @@ +#!/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 " --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 + ;; + + --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! + +echo "CXX=$TARGET_CXX" >> Makefile.config +