configure
author bjarni
Thu, 05 Oct 2006 12:59:28 +0000
changeset 4739 e626ef1b522e
parent 4094 333c7cf842a7
child 4827 cf5430082cb5
permissions -rwxr-xr-x
(svn r6651) -Coding feature: added the windowevent WE_INVALIDATE_DATA
This gives the ability to invalidate some window data and recalculate as needed instead of doing it for each WE_PAINT

This event is called right away when using InvalidateWindowData(), so it may be a good idea to set a bool or similar in the window
or similar and then act on that bool in WE_PAINT instead of doing a lot of stuff in WE_INVALIDATE_DATA as it might be called more than once before WE_PAINT is called

InvalidateWindowData() will not automatically repaint the window, so if you want to repaint it as well, you need to mark it dirty as well.

Made the depot windows use WE_INVALIDATE_DATA to set when to generate the engine and wagon lists instead of at each redraw
It makes no sense to regenerate the list when say using the scrollbar if we know that no vehicle have entered or left the list

NOTE: currently there is a piece of code to generate the list when it's not needed and compare it to the stored list and assert if they mismatch
This check is somewhat slow and kills the whole idea of WE_INVALIDATE_DATA, so it's a short lived one to verify that InvalidateWindowData() is used everywhere where it's needed
#!/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 " --dedicated        Make a dedicated build              [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 " --host-cxx         Sets the C++ host-compiler          []"
	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 " iconv              Do you want iconv-support?          [no]"
	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 " --with-iconv       Set the path to your iconv headers  []"
	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)
			DEBUG_SET=1
			ITEM="DEBUG"
			;;
		--debug=*)
			handle "DEBUG" "$n"
			;;
		--profile)
			PARAM="$PARAM PROFILE=1"
			;;
		--dedicated)
			PARAM="$PARAM DEDICATED=1"
			;;
		--revision=*)
			RELEASE=`awk 'BEGIN { FS="="; $0="'"$n"'"; print $2;}'`
			;;
		--revision)
			SITEM="RELEASE"
			;;
		--target-cc=*)
			handle "CC_TARGET" "$n"
			;;
		--target-cc)
			ITEM="CC_TARGET"
			;;
		--target-cxx=*)
			handle "CXX_TARGET" "$n"
			;;
		--target-cxx)
			SITEM="CXX_TARGET"
			;;
		--host-cc=*)
			handle "CC_HOST" "$n"
			;;
		--host-cc)
			ITEM="CC_HOST"
			;;
		--host-cxx=*)
			handle "CXX_HOST" "$n"
			;;
		--host-cxx)
			ITEM="CXX_HOST"
			;;
		--host-cflags=*)
			handle CFLAGS_HOST "$n"
			;;
		--host-cflags)
			ITEM="CFLAGS_HOST"
			;;
		--os=*)
			TARGET_OS=`awk 'BEGIN { FS="="; $0="'"$n"'"; print $2;}'`
			;;
		--os)
			SITEM="TARGET_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-iconv)
			PARAM="$PARAM WITH_ICONV=1"
			;;
		--with-iconv=*)
			PARAM="$PARAM WITH_ICONV=1"
			handle WITH_ICONV_PATH "$n"
			;;
		--without-iconv)
			PARAM="$PARAM WITH_ICONV="
			;;
		--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"
			;;
		--libpng-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 "$TARGET_OS"
then
	TARGET_OS=`echo $TARGET_OS | tr '[:lower:]' '[:upper:]'`
	case "$TARGET_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: $TARGET_OS"
			exit 1
			;;
	esac
	PARAM="$PARAM BYPASS_OS_DETECT=1"
fi

if ! test -z "$DEBUG_SET"
then
	if test -z "`echo $PARAM | grep "DEBUG="`"
	then
		# Someone did --debug, without assigning a value, assume 1
		PARAM="$PARAM DEBUG=1"
	fi
fi

# First remove the Makefile.config, else you can have double entries
rm -f Makefile.config

echo "make upgradeconf $PARAM" > Makefile.run
. Makefile.run
rm -f Makefile.run

# Makefile.config currently doesn't support custom RELEASE (revision), so, we add the line
# yourself!

if ! test -z "$RELEASE"
then
	echo "RELEASE=$RELEASE" >> Makefile.config
fi