https://github.com/scummvm/scummvm
Raw File
Tip revision: cf7fc4671c79f9e6bc5e2d5487c4bfb0fcc8f083 authored by Max Horn on 29 April 2010, 22:11:22 UTC
Add generated README.PSP to 1.1.1 tag
Tip revision: cf7fc46
configure
#!/bin/sh
#
# configure -- custom configure script for ScummVM.
#
# ScummVM is the legal property of its developers, whose names
# are too numerous to list here. Please refer to the COPYRIGHT
# file distributed with this source distribution.
#
# This program 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; either version 2
# of the License, or (at your option) any later version.
#
# This program 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# $URL$
# $Id$

# Save the current environment variables for next runs
SAVED_CONFIGFLAGS=$@
SAVED_LDFLAGS=$LDFLAGS
SAVED_CXX=$CXX
SAVED_CXXFLAGS=$CXXFLAGS
SAVED_CPPFLAGS=$CPPFLAGS
SAVED_ASFLAGS=$ASFLAGS
SAVED_WINDRESFLAGS=$WINDRESFLAGS

# Use environment vars if set
CXXFLAGS="$CXXFLAGS $CPPFLAGS"

# Backslashes into forward slashes:
# The following OS/2 specific code is performed to deal with handling of backslashes by ksh.
# Borrowed from the Sane configure script

if test "$ac_emxsupport" != "no" -a "$ac_emxsupport" != "NO"; then
	ac_save_IFS="$IFS"
	IFS="\\"
	ac_TEMP_PATH=
	for ac_dir in $PATH; do
		IFS=$ac_save_IFS
		if test -z "$ac_TEMP_PATH"; then
			ac_TEMP_PATH="$ac_dir"
		else
			ac_TEMP_PATH="$ac_TEMP_PATH/$ac_dir"
		fi
	done
	PATH="$ac_TEMP_PATH"
	export PATH
	unset ac_TEMP_PATH
fi

set_var() {
	eval ${1}='${2}'
}

get_var() {
	eval echo \$${1}
}

# Add an engine: id name build subengines
add_engine() {
	_engines="${_engines} ${1}"
	set_var _engine_${1}_name "${2}"
	set_var _engine_${1}_build "${3}"
	set_var _engine_${1}_subengines "${4}"
	for sub in ${4}; do
		set_var _engine_${sub}_sub "yes"
	done
}

add_engine scumm "SCUMM" yes "scumm_7_8 he"
add_engine scumm_7_8 "v7 & v8 games" yes
add_engine he "HE71+ games" yes
add_engine agi "AGI" yes
add_engine agos "AGOS" yes "agos2"
add_engine agos2 "AGOS 2 games" yes
add_engine cine "Cinematique evo 1" yes
add_engine cruise "Cinematique evo 2" yes
add_engine draci "Dragon History" yes
add_engine drascula "Drascula: The Vampire Strikes Back" yes
add_engine gob "Gobli*ns" yes
add_engine groovie "Groovie" yes "groovie2"
add_engine groovie2 "Groovie 2 games" no
add_engine kyra "Legend of Kyrandia" yes "lol"
add_engine lol "Lands of Lore" no
add_engine lure "Lure of the Temptress" yes
add_engine m4 "M4/MADS" no
add_engine made "MADE" yes
add_engine mohawk "Mohawk" no
add_engine parallaction "Parallaction" yes
add_engine queen "Flight of the Amazon Queen" yes
add_engine saga "SAGA" yes "ihnm saga2"
add_engine ihnm "IHNM" yes
add_engine saga2 "SAGA 2 games" no
add_engine sci "SCI" no "sci32"
add_engine sci32 "SCI32 games" no
add_engine sky "Beneath a Steel Sky" yes
add_engine sword1 "Broken Sword" yes
add_engine sword2 "Broken Sword II" yes
add_engine teenagent "Teen Agent" yes
add_engine tinsel "Tinsel" yes
add_engine touche "Touche: The Adventures of the Fifth Musketeer" yes
add_engine tucker "Bud Tucker in Double Trouble" yes


#
# Default settings
#
# Default lib behaviour yes/no/auto
_vorbis=auto
_tremor=auto
_flac=auto
_mad=auto
_alsa=auto
_zlib=auto
_mpeg2=no
_fluidsynth=auto
_16bit=auto
_readline=auto
# Default option behaviour yes/no
_debug_build=auto
_release_build=auto
_text_console=no
_mt32emu=yes
_build_hq_scalers=yes
_build_scalers=yes
_indeo3=auto
# Default vkeybd/keymapper options
_vkeybd=no
_keymapper=no
# Default platform settings
_backend=sdl
_endian=unknown
_need_memalign=no
_have_x86=no
_verbose_build=no
_dynamic_modules=no
_plugins_default=static
_nasm=auto
# Default commands
_ranlib=ranlib
_strip=strip
_ar="ar cru"
_as="as"
_windres=windres
_win32path="C:/scummvm"
_aos4path="Games:ScummVM"
_staticlibpath=/sw
_sdlconfig=sdl-config
_sdlpath="$PATH"
_nasmpath="$PATH"
NASMFLAGS=""
NASM=""
_prefix=/usr/local
# For cross compiling
_host=""
_host_cpu=""
_host_vendor=""
_host_os=""
_host_alias=""

_srcdir=`dirname $0`
_port_mk="ports.mk"

# Determine a tmp file name, using mktemp(1) when available.
if type mktemp > /dev/null 2>&1 ; then
	TMPO=`mktemp /tmp/scummvm-conf.XXXXXXXXXX`
else
	TMPO=./scummvm-conf
fi
TMPC=${TMPO}.cpp
TMPLOG=config.log

cc_check() {
	echo >> "$TMPLOG"
	cat "$TMPC" >> "$TMPLOG"
	echo >> "$TMPLOG"
	echo "$CXX $TMPC -o $TMPO$HOSTEXEEXT $@" >> "$TMPLOG"
	rm -f "$TMPO$HOSTEXEEXT"
	( $CXX $CXXFLAGS "$TMPC" -o "$TMPO$HOSTEXEEXT" "$@" ) >> "$TMPLOG" 2>&1
	TMP="$?"
	echo >> "$TMPLOG"
	return "$TMP"
}

#
# Function to provide echo -n for bourne shells that don't have it
#
echo_n() {
	printf "$@"
}

echocheck() {
	echo_n "Checking for $@... "
}

# Add a line of data to config.mk.
add_line_to_config_mk() {
	_config_mk_data="$_config_mk_data"'
'"$1"
}

# Add a line of data to config.h.
add_line_to_config_h() {
	_config_h_data="$_config_h_data"'
'"$1"
}

add_to_config_h_if_yes() {
	if test "$1" = yes ; then
		add_line_to_config_h "$2"
	else
		add_line_to_config_h "/* $2 */"
	fi
}

# Conditionally add a line of data to config.mk. Takes two parameters:
# The first one can be set to 'no' to "comment out" the line, i.e.
# make it ineffective, use 'yes' otherwise.
# The second param is the line to insert.
add_to_config_mk_if_yes() {
	if test "$1" = yes ; then
		add_line_to_config_mk "$2"
	else
		add_line_to_config_mk "# $2"
	fi
}

# Conditionally add a line of data to config.mk. Takes two parameters:
# The first one can be set to 'yes' to "comment out" the line, i.e.
# make it ineffective, use 'no' otherwise.
# The second param is the line to insert.
add_to_config_mk_if_no() {
	if test "$1" = no ; then
		add_line_to_config_mk "$2"
	else
		add_line_to_config_mk "# $2"
	fi
}

#
# Determine sdl-config
#
# TODO: small bit of code to test sdl usability
find_sdlconfig() {
	echo_n "Looking for sdl-config... "
	sdlconfigs="$_sdlconfig:sdl-config:sdl11-config:sdl12-config"
	_sdlconfig=

	IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="$SEPARATOR"
	for path_dir in $_sdlpath; do
		#reset separator to parse sdlconfigs
		IFS=":"
		for sdlconfig in $sdlconfigs; do
			if test -f "$path_dir/$sdlconfig" ; then
				_sdlconfig="$path_dir/$sdlconfig"
				echo $_sdlconfig
				# Save the prefix
				_sdlpath=$path_dir
				if test `basename $path_dir` = bin ; then
					_sdlpath=`dirname $path_dir`
				fi
				# break at first sdl-config found in path
				break 2
			fi
		done
	done

	IFS="$ac_save_ifs"

	if test -z "$_sdlconfig"; then
		echo "none found!"
		exit 1
	fi
}

#
# Determine extension used for executables
#
get_system_exe_extension() {
	case $1 in
	arm-riscos)
		_exeext=",ff8"
		;;
	dreamcast | gamecube | nds | ps2 | psp | wii)
		_exeext=".elf"
		;;
	gp2x-linux)
		_exeext=".gp2x"
		;;
	gp2xwiz-linux)
		_exeext=".wiz"
		;;
	mingw* | *os2-emx | wince)
		_exeext=".exe"
		;;
	*)
		_exeext=""
		;;
	esac
}

#
# Generic options functions
#

# Show the configure help line for an option
option_help() {
	tmpopt=`echo $1 | sed 's/_/-/g'`
	option=`echo "--${tmpopt}                       " | sed "s/\(.\{23\}\).*/\1/"`
	echo "  ${option}  ${2}"
}

# Show an error about an unknown option
option_error() {
	echo "error: unrecognised option: $ac_option
Try \`$0 --help' for more information." >&2
	exit 1
}


#
# Engine handling functions
#

# Get the name of the engine
get_engine_name() {
	get_var _engine_$1_name
}

# Will this engine be built?
get_engine_build() {
	get_var _engine_$1_build
}

# Get the subengines
get_engine_subengines() {
	get_var _engine_$1_subengines
}

# Ask if this is a subengine
get_engine_sub() {
	sub=`get_var _engine_$1_sub`
	if test -z "$sub" ; then
		sub=no
	fi
	echo $sub
}

# Enable *all* engines
engine_enable_all() {
	for engine in $_engines; do
		set_var _engine_${engine}_build "yes"
	done
}

# Disable *all* engines
engine_disable_all() {
	for engine in $_engines; do
		set_var _engine_${engine}_build "no"
	done
}

# Enable the given engine
engine_enable() {
	# Get the parameter
	if ( echo $1 | grep '=' ) 2> /dev/null > /dev/null ; then
		eng=`echo $1 | cut -d '=' -f 1`
		opt=`echo $1 | cut -d '=' -f 2`
	else
		eng=$1
		opt=yes
	fi
	engine=`echo $eng | sed 's/-/_/g'`

	# Filter the parameter for the subengines
	if test "`get_engine_sub ${engine}`" != "no" -a "$opt" != "yes" ; then
		option_error
		return
	fi

	if test "$opt" = "static" -o "$opt" = "dynamic" -o "$opt" = "yes" ; then
		if test "`get_engine_name ${engine}`" != "" ; then
			set_var _engine_${engine}_build "$opt"
		else
			option_error
		fi
	else
		option_error
	fi
}

# Disable the given engine
engine_disable() {
	# Filter malformed options
	if ( echo $1 | grep '=' ) 2> /dev/null > /dev/null ; then
		option_error
		return
	fi

	engine=`echo $1 | sed 's/-/_/g'`
	if test "`get_engine_name ${engine}`" != "" ; then
		set_var _engine_${engine}_build "no"
	else
		option_error
	fi
}

# Show the configure help line for a given engine
show_engine_help() {
	if test `get_engine_build $1` = yes ; then
		option="disable"
		do="don't "
	else
		option="enable"
		do=""
	fi
	name=`get_engine_name $1`
	option_help ${option}-${1} "${do}build the ${name} engine"
	for sub in `get_engine_subengines $1`; do
		show_subengine_help $sub $1
	done
}

# Show the configure help line for a given subengine
show_subengine_help() {
	if test `get_engine_build $1` = yes ; then
		option="disable"
		do="exclude"
	else
		option="enable"
		do="include"
	fi
	name=`get_engine_name $1`
	parent=`get_engine_name $2`
	option_help ${option}-${1} "${do} the ${name} in ${parent} engine"
}

# Prepare the strings about the engines to build
prepare_engine_build_strings() {
	string=`get_engine_build_string $1 static`
	if test -n "$string" ; then
		_engines_built_static="${_engines_built_static}#$string@"
	fi

	string=`get_engine_build_string $1 dynamic`
	if test -n "$string" ; then
		_engines_built_dynamic="${_engines_built_dynamic}#$string@"
	fi

	string=`get_engine_build_string $1 no`
	if test -n "$string" ; then
		_engines_skipped="${_engines_skipped}#$string@"
	fi
}

# Get the string about building an engine
get_engine_build_string() {
	engine_string=""
	engine_build=`get_engine_build $1`
	show=no

	# Check if the current engine should be shown for the current status
	if test $engine_build = $2 ; then
		show=yes
	else
		# Test for disabled sub-engines
		if test $2 = no ; then
			for subeng in `get_engine_subengines $1` ; do
				if test `get_engine_build $subeng` = no ; then
					engine_build=no
					show=yes
				fi
			done
		fi
	fi

	# Convert static/dynamic to yes to ease the check of subengines
	if test $engine_build != no ; then
		engine_build=yes
	fi

	# The engine should be shown, build the string
	if test $show = yes ; then
		build_string_func=get_${1}_build_string
		if ( type $build_string_func | grep function ) 2> /dev/null > /dev/null ; then
			engine_string=`$build_string_func $1 $engine_build`
		else
			engine_string=`get_subengines_build_string $1 $engine_build`
		fi

		engine_string="`get_engine_name $1` $engine_string"
	fi

	echo $engine_string
}

# Get the string about building subengines
get_subengines_build_string() {
	all=yes
	subengine_string=$3
	for subeng in `get_engine_subengines $1` ; do
		if test `get_engine_build $subeng` = $2 ; then
			subengine_string="$subengine_string [`get_engine_name $subeng`]"
		else
			all=no
		fi
	done
	if test $2 != no ; then
		if test -n "$subengine_string" ; then
			if test $all = yes ; then
				subengine_string="[all games]"
			fi
		fi
	fi

	echo $subengine_string
}

# Engine specific build strings
get_scumm_build_string() {
	if test `get_engine_build $1` != no ; then
		if test $2 != no ; then
			base="[v0-v6 games]"
		fi
		get_subengines_build_string $1 $2 "$base"
	fi
}

get_saga_build_string() {
	if test `get_engine_build $1` != no ; then
		if test $2 != no ; then
			base="[ITE]"
		fi
		get_subengines_build_string $1 $2 "$base"
	fi
}

#
# Greet user
#
echo "Running ScummVM configure..."
echo "Configure run on" `date` > $TMPLOG

#
# Check any parameters we received
#
# TODO:
# * Change --disable-mad / --enable-mad to the way it's done in autoconf:
#  That is, --without-mad / --with-mad=/prefix/to/mad. Useful for people
#  who have Mad/Vorbis/ALSA installed in a non-standard locations.
#

for parm in "$@" ; do
	if test "$parm" = "--help" || test "$parm" = "-help" || test "$parm" = "-h" ; then
		for engine in $_engines; do
			if test `get_engine_sub $engine` = no ; then
				engines_help="$engines_help`show_engine_help $engine`
"
			fi
		done
		cat << EOF

Usage: $0 [OPTIONS]...

Configuration:
  -h, --help             display this help and exit
  --backend=BACKEND      backend to build (dc, gp2x, gp2xwiz, iphone, linuxmoto, nds, null, ps2, psp, sdl, wii, wince) [sdl]

Installation directories:
  --prefix=DIR           use this prefix for installing ScummVM [/usr/local]
  --bindir=DIR           directory to install the scummvm binary in [PREFIX/bin]
  --mandir=DIR           directory to install the manpage in [PREFIX/share/man]
  --datadir=DIR          directory to install the data files in [PREFIX/share]
  --libdir=DIR           directory to install the plugins in [PREFIX/lib]

Special configuration feature:
  --host=HOST            cross-compile to target HOST (arm-linux, ...)
                         special targets: dreamcast for Sega Dreamcast
                                          gamecube for Nintendo GameCube
                                          iphone for Apple iPhone
                                          linupy for Yopy PDA
                                          nds for Nintendo DS
                                          ps2 for PlayStation 2
                                          psp for PlayStation Portable
                                          wii for Nintendo Wii
                                          wince for Windows CE

Game engines:
  --enable-all-engines     enable all engines
  --disable-all-engines    disable all engines
$engines_help
Optional Features:
  --disable-debug          disable building with debugging symbols
  --enable-Werror          treat warnings as errors
  --enable-plugins         enable the support for dynamic plugins
  --default-dynamic        make plugins dynamic by default
  --disable-mt32emu        don't enable the integrated MT-32 emulator
  --disable-16bit          don't enable 16bit color support
  --disable-hq-scalers     exclude HQ2x and HQ3x scalers
  --disable-scalers        exclude scalers
  --enable-text-console    use text console instead of graphical console
  --enable-verbose-build   enable regular echoing of commands during build process

Optional Libraries:
  --with-alsa-prefix=DIR   Prefix where alsa is installed (optional)
  --disable-alsa           disable ALSA midi sound support [autodetect]

  --with-ogg-prefix=DIR    Prefix where libogg is installed (optional)
  --with-vorbis-prefix=DIR Prefix where libvorbis is installed (optional)
  --disable-vorbis         disable Ogg Vorbis support [autodetect]

  --with-tremor-prefix=DIR Prefix where tremor is installed (optional)
  --disable-tremor         disable tremor support [autodetect]

  --with-mad-prefix=DIR    Prefix where libmad is installed (optional)
  --disable-mad            disable libmad (MP3) support [autodetect]

  --with-flac-prefix=DIR   Prefix where libFLAC is installed (optional)
  --disable-flac           disable FLAC support [autodetect]

  --with-zlib-prefix=DIR   Prefix where zlib is installed (optional)
  --disable-zlib           disable zlib (compression) support [autodetect]

  --with-mpeg2-prefix=DIR  Prefix where libmpeg2 is installed (optional)
  --enable-mpeg2           enable mpeg2 codec for cutscenes [no]

  --disable-indeo3         disable Indeo3 decoder [autodetect]

  --with-fluidsynth-prefix=DIR  Prefix where libfluidsynth is installed (optional)
  --disable-fluidsynth     disable fluidsynth MIDI driver [autodetect]

  --with-sdl-prefix=DIR    Prefix where the sdl-config script is installed (optional)

  --with-nasm-prefix=DIR   Prefix where nasm executable is installed (optional)
  --disable-nasm           disable assembly language optimizations [autodetect]

  --with-readline-prefix=DIR    Prefix where readline is installed (optional)
  --disable-readline       disable readline support in text console [autodetect]

Some influential environment variables:
  LDFLAGS        linker flags, e.g. -L<lib dir> if you have libraries in a
                 nonstandard directory <lib dir>
  CXX            C++ compiler command
  CXXFLAGS       C++ compiler flags
  CPPFLAGS       C++ preprocessor flags, e.g. -I<include dir> if you have
                 headers in a nonstandard directory <include dir>
  ASFLAGS        assembler flags
  WINDRESFLAGS   Windows resource compiler flags

EOF
		exit 0
	fi
done # for parm in ...

for ac_option in $@; do
	case "$ac_option" in
	--disable-16bit)          _16bit=no       ;;
	--disable-hq-scalers)     _build_hq_scalers=no ;;
	--disable-scalers)        _build_scalers=no ;;
	--enable-alsa)            _alsa=yes       ;;
	--disable-alsa)           _alsa=no        ;;
	--enable-vorbis)          _vorbis=yes     ;;
	--disable-vorbis)         _vorbis=no      ;;
	--enable-tremor)          _tremor=yes     ;;
	--disable-tremor)         _tremor=no      ;;
	--enable-flac)            _flac=yes       ;;
	--disable-flac)           _flac=no        ;;
	--enable-mad)             _mad=yes        ;;
	--disable-mad)            _mad=no         ;;
	--enable-zlib)            _zlib=yes       ;;
	--disable-zlib)           _zlib=no        ;;
	--enable-nasm)            _nasm=yes       ;;
	--disable-nasm)           _nasm=no        ;;
	--enable-mpeg2)           _mpeg2=yes      ;;
	--disable-indeo3)         _indeo3=no      ;;
	--enable-indeo3)          _indeo3=yes     ;;
	--disable-fluidsynth)     _fluidsynth=no  ;;
	--enable-readline)        _readline=yes   ;;
	--disable-readline)       _readline=no    ;;
	--enable-verbose-build)   _verbose_build=yes ;;
	--enable-plugins)         _dynamic_modules=yes ;;
	--default-dynamic)        _plugins_default=dynamic ;;
	--enable-mt32emu)         _mt32emu=yes    ;;
	--disable-mt32emu)        _mt32emu=no     ;;
	--enable-vkeybd)          _vkeybd=yes     ;;
	--disable-vkeybd)         _vkeybd=no      ;;
	--enable-keymapper)       _keymapper=yes  ;;
	--disable-keymapper)      _keymapper=no   ;;
	--enable-text-console)    _text_console=yes ;;
	--disable-text-console)   _text_console=no ;;
	--with-fluidsynth-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		FLUIDSYNTH_CFLAGS="-I$arg/include"
		FLUIDSYNTH_LIBS="-L$arg/lib"
		;;
	--with-mpeg2-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		MPEG2_CFLAGS="-I$arg/include"
		MPEG2_LIBS="-L$arg/lib"
		;;
	--with-alsa-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		ALSA_CFLAGS="-I$arg/include"
		ALSA_LIBS="-L$arg/lib"
		;;
	--with-ogg-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		OGG_CFLAGS="-I$arg/include"
		OGG_LIBS="-L$arg/lib"
		;;
	--with-vorbis-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		VORBIS_CFLAGS="-I$arg/include"
		VORBIS_LIBS="-L$arg/lib"
		;;
	--with-tremor-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		TREMOR_CFLAGS="-I$arg/include"
		TREMOR_LIBS="-L$arg/lib"
		;;
	--with-flac-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		FLAC_CFLAGS="-I$arg/include"
		FLAC_LIBS="-L$arg/lib"
		;;
	--with-mad-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		MAD_CFLAGS="-I$arg/include"
		MAD_LIBS="-L$arg/lib"
		;;
	--with-zlib-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		ZLIB_CFLAGS="-I$arg/include"
		ZLIB_LIBS="-L$arg/lib"
		;;
	--with-readline-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		READLINE_CFLAGS="-I$arg/include"
		READLINE_LIBS="-L$arg/lib"
		;;
	--backend=*)
		_backend=`echo $ac_option | cut -d '=' -f 2`
		;;
	--enable-debug)
		_debug_build=yes
		;;
	--disable-debug)
		_debug_build=no
		;;
	--enable-Werror)
		CXXFLAGS="$CXXFLAGS -Werror"
		;;
	--enable-release)
		_release_build=yes
		;;
	--disable-release)
		_release_build=no
		;;
	--enable-profiling)
		CXXFLAGS="$CXXFLAGS -pg"
		LDFLAGS="$LDFLAGS -pg"
		;;
	--with-sdl-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		_sdlpath="$arg:$arg/bin"
		;;
	--with-nasm-prefix=*)
		arg=`echo $ac_option | cut -d '=' -f 2`
		_nasmpath="$arg:$arg/bin"
		;;
	--with-staticlib-prefix=*)
		_staticlibpath=`echo $ac_option | cut -d '=' -f 2`
		;;
	--host=*)
		_host=`echo $ac_option | cut -d '=' -f 2`
		;;
	--prefix=*)
		_prefix=`echo $ac_option | cut -d '=' -f 2`
		;;
	--bindir=*)
		_bindir=`echo $ac_option | cut -d '=' -f 2`
		;;
	--mandir=*)
		_mandir=`echo $ac_option | cut -d '=' -f 2`
		;;
	--datadir=*)
		_datadir=`echo $ac_option | cut -d '=' -f 2`
		;;
	--libdir=*)
		_libdir=`echo $ac_option | cut -d '=' -f 2`
		;;
	--enable-all-engines)
		engine_enable_all
		;;
	--disable-all-engines)
		engine_disable_all
		;;
	--enable-*)
		engine_enable `echo $ac_option | cut -d '-' -f 4-`
		;;
	--disable-*)
		engine_disable `echo $ac_option | cut -d '-' -f 4-`
		;;
	*)
		option_error
		;;
	esac;
done;

guessed_host=`$_srcdir/config.guess`
get_system_exe_extension $guessed_host
NATIVEEXEEXT=$_exeext

case $_host in
arm-riscos)
	_host_os=riscos
	_host_cpu=arm
	;;
dreamcast)
	_host_os=dreamcast
	_host_cpu=sh
	_host_alias=sh-elf
	CXXFLAGS="$CXXFLAGS -ml -m4-single-only"
	LDFLAGS="$LDFLAGS -ml -m4-single-only"
	;;
gamecube)
	_host_os=gamecube
	_host_cpu=ppc
	_host_alias=powerpc-gekko
	;;
gp2x)
	_host_os=gp2x-linux
	_host_cpu=arm
	_host_alias=arm-open2x-linux
	;;
gp2xwiz)
	_host_os=gp2xwiz-linux
	_host_cpu=arm
	_host_alias=arm-open2x-linux
	;;
i586-mingw32msvc)
	_host_os=mingw32msvc
	_host_cpu=i586
	;;
iphone)
	_host_os=iphone
	_host_cpu=arm
	_host_alias=arm-apple-darwin9
	;;
linupy)
	_host_os=linux
	_host_cpu=arm
	;;
motoezx)
	_host_os=linux
	_host_cpu=arm
	_host_alias=arm-linux-gnu
	;;
motomagx)
	_host_os=linux
	_host_cpu=arm
	_host_alias=arm-linux-gnueabi
	;;
nds)
	_host_os=nds
	_host_cpu=arm
	_host_alias=arm-eabi
	;;
neuros)
	_host_os=linux
	_host_cpu=arm
	;;
ppc-amigaos)
	_host_os=amigaos
	_host_cpu=ppc
	;;
ps2)
	_host_os=ps2
	_host_cpu=mips64r5900el
	_host_alias=ee
	if test "$_debug_build" = auto; then
		# Disable debug mode by default. The resulting binaries are far too big in general,
		# and one has to disable multiple engines to make it usable.
		_debug_build=no
	fi

	if test "$_release_build" = auto; then
		# Enable release build by default.
		_release_build=yes
	fi
	;;
psp)
	_host_os=psp
	_host_cpu=mipsallegrexel
	_host_alias=psp
	if test -z "$PSPDEV"; then
		PSPDEV=`psp-config --pspdev-path`
	fi
	if test -d "$PSPDEV/psp/lib"; then
		LDFLAGS="$LDFLAGS -L$PSPDEV/psp/lib"
	fi
	LDFLAGS="$LDFLAGS -L$PSPDEV/psp/sdk/lib -specs=$_srcdir/backends/platform/psp/psp.spec"
	;;
samsungtv)
	_host_os=linux
	_host_cpu=arm
	_host_alias=arm-linux-gnueabi
	;;
wii)
	_host_os=wii
	_host_cpu=ppc
	_host_alias=powerpc-gekko
	;;
wince)
	_host_os=wince
	_host_cpu=arm
	_host_alias=arm-wince-mingw32ce
	;;
*)
	if test -n "$_host"; then
		guessed_host=`$_srcdir/config.sub $_host`
	fi
	_host_cpu=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
	_host_vendor=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
	_host_os=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
	;;
esac

if test -z "$_host_alias"; then
	_host_alias="$_host_cpu-$_host_os"
else
	# if _host_alias was set, default to the standard GNU tools
	_ranlib=$_host_alias-ranlib
	_strip=$_host_alias-strip
	_ar="$_host_alias-ar cru"
	_as="$_host_alias-as"
	_windres=$_host_alias-windres
fi

#
# Determine extra build flags for debug and/or release builds
#

if test "$_debug_build" != no; then
	# debug mode not explicitly disabled -> compile with -g
	CXXFLAGS="$CXXFLAGS -g"
fi

if test "$_release_build" = yes; then
	# Release mode enabled: enable optimizations. This also
	# makes it possible to use -Wuninitialized, so let's do that.
	CXXFLAGS="$CXXFLAGS -O2 -Wuninitialized"
fi


#
# Determine extension used for executables
#
get_system_exe_extension $_host_os
HOSTEXEEXT=$_exeext

#
# Determine separator used for $PATH
#
case $_host_os in
os2-emx* )
	SEPARATOR=";"
	;;
* )
	SEPARATOR=":"
	;;
esac

#
# Platform specific sanity checks
#
case $_host_os in
gamecube | nds | wii)
	if test -z "$DEVKITPRO"; then
		echo "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to devkitPRO>"
		exit 1
	fi
	;;
ps2)
	if test -z "$PS2SDK"; then
		echo "Please set PS2SDK in your environment. export PS2SDK=<path to ps2 sdk>"
		exit 1
	fi
	;;
psp)
	PSPSDK=`psp-config --pspsdk-path`
	if test -z "$PSPSDK"; then
		echo "Please set the path to PSPSDK in your environment."
		exit 1
	fi
	;;
*)
	;;
esac

#
# Determine the C++ compiler
#
echo_n "Looking for C++ compiler... "

# Check whether the given command is a working C++ compiler
test_compiler() {
	cat <<EOF >tmp_cxx_compiler.cpp
	class Foo { int a; };
	int main(int argc, char **argv) {
		Foo *a = new Foo(); delete a; return 0;
	}
EOF

	if test -n "$_host"; then
		# In cross-compiling mode, we cannot run the result
		eval "$1 $CXXFLAGS $LDFLAGS -o tmp_cxx_compiler$HOSTEXEEXT -c tmp_cxx_compiler.cpp" 2> /dev/null && rm -f tmp_cxx_compiler$HOSTEXEEXT tmp_cxx_compiler.cpp
	else
		eval "$1 $CXXFLAGS $LDFLAGS -o tmp_cxx_compiler$HOSTEXEEXT tmp_cxx_compiler.cpp" 2> /dev/null && eval "./tmp_cxx_compiler$HOSTEXEEXT 2> /dev/null" && rm -rf tmp_cxx_compiler$HOSTEXEEXT tmp_cxx_compiler.dSYM tmp_cxx_compiler.cpp
	fi
}

# Prepare a list of candidates for the C++ compiler
if test -n "$CXX" && test_compiler "$CXX"; then
	# Use the compiler specified in CXX
	echo $CXX
else
	if test -n "$_host"; then
		compilers="$_host_alias-g++ $_host_alias-c++ $_host-g++ $_host-c++"
	else
		compilers="g++ c++"
	fi

	# Iterate over all candidates, pick the first working one
	CXX=
	for compiler in $compilers; do
		if test_compiler $compiler; then
			CXX=$compiler
			echo $CXX
			break
		fi
	done
fi

if test -z "$CXX"; then
	echo "none found!"
	exit 1
fi

# By default, use the C++ compiler as linker
LD=$CXX

#
# Determine the compiler version
#
echocheck "compiler version"

have_gcc=no
cxx_version=`( $CXX -dumpversion ) 2>&1`
if test "$?" -gt 0; then
	# TODO: Big scary warning about unsupported Compilers
	cxx_version=`( $CXX -version ) 2>&1`
	if test "$?" -eq 0; then
		cxx_version="`echo "${cxx_version}" | sed -ne 's/^.*[^0-9]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/gp'`"
		if test -z "${cxx_version}"; then
			cxx_version="not found"
			cxx_verc_fail=yes
		fi
		echo non-gcc compiler version ${cxx_version}
	else
		cxx_version="not found"
		cxx_verc_fail=yes
		echo found non-gcc compiler version ${cxx_version}
	fi
else
	add_line_to_config_mk 'HAVE_GCC = 1'
	have_gcc=yes
fi

if test "$have_gcc" = yes; then
	case $cxx_version in
		2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]|3.[0-9].[0-9][-.]*|4.[0-9]|4.[0-9].[0-9]|4.[0-9].[0-9][-.]*)
			_cxx_major=`echo $cxx_version | cut -d '.' -f 1`
			_cxx_minor=`echo $cxx_version | cut -d '.' -f 2`
			cxx_version="$cxx_version, ok"
			cxx_verc_fail=no
			;;
		# whacky beos version strings
		2.9-beos-991026*|2.9-beos-000224*)
			_cxx_major=2
			_cxx_minor=95
			cxx_version="$cxx_version, ok"
			cxx_verc_fail=no
			;;
		3_4)
			_cxx_major=3
			_cxx_minor=4
			;;
		'not found')
			cxx_verc_fail=yes
			;;
		*)
			cxx_version="$cxx_version, bad"
			cxx_verc_fail=yes
			;;
	esac
else
	case $_host_os in
		irix*)
			case $cxx_version in
				7.4.4*)
					# We just assume this is SGI MipsPRO
					_cxx_major=7
					_cxx_minor=4
					add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MDupdate "$(*D)/$(DEPDIR)/$(*F).d"'
					add_line_to_config_mk '-include Makedepend'
					;;
				*)
					cxx_version="$cxx_version, bad"
					cxx_verc_fail=yes
					;;
			esac
			;;
		*)
			cxx_version="$cxx_version, bad"
			cxx_verc_fail=yes
			;;
	esac

fi

echo "$cxx_version"

if test "$cxx_verc_fail" = yes ; then
	echo
	echo "The version of your compiler is not supported at this time"
	echo "Please ensure you are using GCC >= 2.95"
	exit 1
fi

#
# Check for endianness
#
echo_n "Checking endianness... "
cat <<EOF >tmp_endianness_check.cpp
short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
void _ascii() { char* s = (char*) ascii_mm; s = (char*) ascii_ii; }
short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
void _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; }
int main() { _ascii (); _ebcdic (); return 0; }
EOF
$CXX $CXXFLAGS -c -o tmp_endianness_check.o tmp_endianness_check.cpp
if strings tmp_endianness_check.o | grep BIGenDianSyS >/dev/null; then
	_endian=big
else
	_endian=little
fi
echo $_endian;
rm -f tmp_endianness_check.o tmp_endianness_check.cpp

#
# Determine a data type with the given length
#
find_type_with_size() {
	for datatype in int short char long unknown; do
	cat <<EOF >tmp_find_type_with_size.cpp
typedef $datatype ac__type_sizeof_;
int main() {
	static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) == $1)];
	test_array [0] = 0;
	return 0;
}
EOF
	if $CXX $CXXFLAGS -c -o tmp_find_type_with_size$HOSTEXEEXT tmp_find_type_with_size.cpp 2>/dev/null ; then
		break
	else
		if test "$datatype" = "unknown"; then
			echo "couldn't find data type with $1 bytes"
			exit 1
		fi
		continue
	fi
	done
	rm -f tmp_find_type_with_size$HOSTEXEEXT tmp_find_type_with_size.cpp
	echo $datatype
}

#
# Determine data type sizes
#
echo_n "Type with 1 byte... "
type_1_byte=`find_type_with_size 1`
TMP="$?"
echo "$type_1_byte"
test $TMP -eq 0 || exit 1	# check exit code of subshell

echo_n "Type with 2 bytes... "
type_2_byte=`find_type_with_size 2`
TMP="$?"
echo "$type_2_byte"
test $TMP -eq 0 || exit 1	# check exit code of subshell

echo_n "Type with 4 bytes... "
type_4_byte=`find_type_with_size 4`
TMP="$?"
echo "$type_4_byte"
test $TMP -eq 0 || exit 1	# check exit code of subshell

#
# Check whether we can use x86 asm routines
#
echo_n "Compiling for x86... "
case $_host_cpu in
	i386|i486|i586|i686)
		_have_x86=yes
		;;
	*)
		_have_x86=no
		;;
esac
echo "$_have_x86"

#
# Determine build settings
#
echo_n "Checking hosttype... "
echo $_host_os
case $_host_os in
	amigaos*)
		CXXFLAGS="$CXXFLAGS -mcrt=newlib -mstrict-align -mcpu=750 -mtune=7400"
		LDFLAGS="$LDFLAGS -mcrt=newlib -use-dynld -Lsobjs:"
		# We have to use 'long' for our 4 byte typedef because AmigaOS already typedefs (u)int32
		# as (unsigned) long, and consequently we'd get a compiler error otherwise.
		type_4_byte='long'
		;;
	beos*)
		DEFINES="$DEFINES -DUNIX -DSYSTEM_NOT_SUPPORTING_D_TYPE"
		# Needs -lbind -lsocket for the timidity MIDI driver
		LDFLAGS="-L/boot/home/config/lib"
		CFLAGS="-I/boot/home/config/include"
		CXXFLAGS="$CXXFLAGS -fhuge-objects"
		LIBS="$LIBS -lbind -lsocket"
		# FIXME: Please document why 'long' has to be used instead of int
		#type_4_byte='long'
		;;
	bsd* | hpux* | netbsd* | openbsd* | sunos*)
		DEFINES="$DEFINES -DUNIX"
		;;
	cygwin*)
		echo ERROR: Cygwin building is not supported by ScummVM anymore. Consider using MinGW.
		exit 1
		;;
	darwin*)
		DEFINES="$DEFINES -DUNIX -DMACOSX"
		LIBS="$LIBS -framework AudioUnit -framework AudioToolbox -framework Carbon -framework CoreMIDI"
		add_line_to_config_mk 'MACOSX = 1'
		;;
	dreamcast)
		DEFINES="$DEFINES -D__DC__ -DNONSTANDARD_PORT"
		;;
	freebsd*)
		DEFINES="$DEFINES -DUNIX"
		LDFLAGS="$LDFLAGS -L/usr/local/lib"
		CXXFLAGS="$CXXFLAGS -I/usr/local/include"
		;;
	gamecube)
		CXXFLAGS="$CXXFLAGS -Os -mogc -mcpu=750 -meabi -mhard-float"
		CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections -fmodulo-sched"
		CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include -I$DEVKITPRO/cube/include"
		LDFLAGS="$LDFLAGS -mogc -mcpu=750 -L$DEVKITPRO/libogc/lib/cube -L$DEVKITPRO/cube/lib"
		;;
	haiku*)
		DEFINES="$DEFINES -DUNIX -DSYSTEM_NOT_SUPPORTING_D_TYPE"
		# Needs -lnetwork for the timidity MIDI driver
		LIBS="$LIBS -lnetwork"
		CXXFLAGS="$CXXFLAGS -fhuge-objects"
		# FIXME: Please document why 'long' has to be used instead of int
		#type_4_byte='long'
		;;
	irix*)
		DEFINES="$DEFINES -DUNIX -DIRIX -DSYSTEM_NOT_SUPPORTING_D_TYPE"
		LIBS="$LIBS -lmd -lfastm -lm"
		_ranlib=:
		;;
	linux* | uclinux*)
		# When not cross-compiling, enable large file support, but don't
		# care if getconf doesn't exist or doesn't recognize LFS_CFLAGS.
		if test -z "$_host"; then
			CXXFLAGS="$CXXFLAGS $(getconf LFS_CFLAGS 2>/dev/null)"
		fi
		DEFINES="$DEFINES -DUNIX"
		;;
	mingw*)
		DEFINES="$DEFINES -DWIN32 -D__USE_MINGW_ANSI_STDIO=0"
		LIBS="$LIBS -lmingw32 -lwinmm"
		OBJS="$OBJS scummvmico.o"
		;;
	mint*)
		DEFINES="$DEFINES -DUNIX -DSYSTEM_NOT_SUPPORTING_D_TYPE"
		;;
	nds)
		# TODO nds
		DEFINES="$DEFINES -D__DS__ -DNDS -DARM9 -DARM -DNONSTANDARD_PORT"
		;;
	os2-emx*)
		DEFINES="$DEFINES -DUNIX"
		;;
	ps2)
		# TODO ps2
		CXXFLAGS="$CXXFLAGS -G2"
		DEFINES="$DEFINES -D_EE -D__PLAYSTATION2__"
		;;
	psp)
		CXXFLAGS="$CXXFLAGS -O3 -I$PSPSDK/include -D_PSP_FW_VERSION=150"
		;;
	solaris*)
		DEFINES="$DEFINES -DUNIX -DSOLARIS -DSYSTEM_NOT_SUPPORTING_D_TYPE"
		# Needs -lbind -lsocket for the timidity MIDI driver
		LIBS="$LIBS -lnsl -lsocket"
		;;
	wii)
		CXXFLAGS="$CXXFLAGS -Os -mrvl -mcpu=750 -meabi -mhard-float"
		CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections -fmodulo-sched"
		CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include -I$DEVKITPRO/wii/include"
		LDFLAGS="$LDFLAGS -mrvl -mcpu=750 -L$DEVKITPRO/libogc/lib/wii -L$DEVKITPRO/wii/lib"
		;;
	wince)
		CXXFLAGS="$CXXFLAGS -O3 -march=armv4 -mtune=xscale"
		DEFINES="$DEFINES -D_WIN32_WCE=300 -D__ARM__ -D_ARM_ -DUNICODE -DFPM_DEFAULT -DNONSTANDARD_PORT"
		DEFINES="$DEFINES -DWIN32 -Dcdecl= -D__cdecl__="
		;;
	# given this is a shell script assume some type of unix
	*)
		echo "WARNING: could not establish system type, assuming unix like"
		DEFINES="$DEFINES -DUNIX"
		;;
esac

if test -n "$_host"; then
	# Cross-compiling mode - add your target here if needed
	echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes"
	case "$_host" in
		arm-linux|arm*-linux-gnueabi|arm-*-linux)
			DEFINES="$DEFINES -DUNIX"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			;;
		arm-riscos|linupy)
			DEFINES="$DEFINES -DUNIX -DLINUPY"
			_need_memalign=yes
			;;
		bfin*)
			_need_memalign=yes
			;;
		*darwin*)
			_ranlib=$_host-ranlib
			_strip=$_host-strip
			;;
		dreamcast)
			DEFINES="$DEFINES -DDISABLE_DEFAULT_SAVEFILEMANAGER -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DNOSERIAL"
			CXXFLAGS="$CXXFLAGS -O3 -funroll-loops -fschedule-insns2 -fomit-frame-pointer -fdelete-null-pointer-checks"
			_need_memalign=yes
			_backend="dc"
			_build_scalers="no"
			_build_hq_scalers="no"
			_mad="yes"
			_zlib="yes"
			add_line_to_config_mk 'include $(srcdir)/backends/platform/dc/dreamcast.mk'
			;;
		gamecube)
			_endian=big
			_need_memalign=yes
			_backend="wii"
			_build_scalers="no"
			_build_hq_scalers="no"
			_mt32emu="no"
			_port_mk="backends/platform/wii/wii.mk"
			add_line_to_config_mk 'GAMECUBE = 1'
			add_line_to_config_h '#define GAMECUBE'
			add_line_to_config_h "/* #define DEBUG_WII_USBGECKO */"
			add_line_to_config_h "/* #define DEBUG_WII_MEMSTATS */"
			add_line_to_config_h "/* #define DEBUG_WII_GDB */"
			;;
		gp2x)
			DEFINES="$DEFINES -DUNIX -DGP2X -DNDEBUG"
			CXXFLAGS="$CXXFLAGS -march=armv4t"
			ASFLAGS="$ASFLAGS -mfloat-abi=soft"
			LDFLAGS="$LDFLAGS -static"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			add_line_to_config_mk 'USE_ARM_GFX_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
			add_line_to_config_mk 'USE_ARM_COSTUME_ASM = 1'
			_backend="gp2x"
			_build_hq_scalers="no"
			_mt32emu="no"
			_vkeybd="yes"
			;;
		gp2xwiz)
			DEFINES="$DEFINES -DUNIX -DGP2XWIZ -DNDEBUG"
			CXXFLAGS="$CXXFLAGS -mcpu=arm926ej-s -mtune=arm926ej-s"
			ASFLAGS="$ASFLAGS -mfloat-abi=soft"
			LDFLAGS="$LDFLAGS"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			add_line_to_config_mk 'USE_ARM_GFX_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
			add_line_to_config_mk 'USE_ARM_COSTUME_ASM = 1'
			_backend="gp2xwiz"
			_build_hq_scalers="no"
			_mt32emu="no"
			_vkeybd="yes"
			;;
		iphone)
			DEFINES="$DEFINES -DIPHONE -DUNIX"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			_backend="iphone"
			_build_hq_scalers="no"
			;;
		m68k-atari-mint)
			DEFINES="$DEFINES -DUNIX -DSYSTEM_NOT_SUPPORTING_D_TYPE"
			_endian=big
			_need_memalign=yes
			# FIXME: Please document why 'long' has to be used instead of int
			#type_4_byte='long'
			_ranlib=m68k-atari-mint-ranlib
			_ar="m68k-atari-mint-ar cru"
			;;
		*mingw32*)
			_sdlconfig=$_host-sdl-config
			_windres=$_host-windres
			_ar="$_host-ar cru"
			_ranlib=$_host-ranlib
			;;
		motoezx)
			DEFINES="$DEFINES -DUNIX -DMOTOEZX"
			ASFLAGS="$ASFLAGS -mfpu=vfp"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			add_line_to_config_mk 'USE_ARM_GFX_ASM = 1'
			add_line_to_config_mk 'USE_ARM_COSTUME_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
			_backend="linuxmoto"
			_build_hq_scalers="no"
			_mt32emu="no"
			_vkeybd="yes"
			_port_mk="backends/platform/linuxmoto/linuxmoto.mk"
			;;
		motomagx)
			DEFINES="$DEFINES -DUNIX -DMOTOMAGX"
			ASFLAGS="$ASFLAGS -mfpu=vfp"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			add_line_to_config_mk 'USE_ARM_GFX_ASM = 1'
			add_line_to_config_mk 'USE_ARM_COSTUME_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
			_backend="linuxmoto"
			_build_hq_scalers="no"
			_mt32emu="no"
			_vkeybd="yes"
			_port_mk="backends/platform/linuxmoto/linuxmoto.mk"
			;;
		nds)
			# TODO: complete this
			# TODO: Maybe rename nds -> ds (would be more consistent with other backends)
			DEFINES="$DEFINES -DDISABLE_FANCY_THEMES -DVECTOR_RENDERER_FORMAT=1555"
			DEFINES="$DEFINES -DDISABLE_DEFAULT_SAVEFILEMANAGER"
			DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE"
			DEFINES="$DEFINES -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE"
			_need_memalign=yes
			_backend="nds"
			_build_hq_scalers="no"
			_mt32emu="no"
			add_line_to_config_mk 'include $(srcdir)/backends/platform/ds/ds.mk'
			# TODO: Enable more ARM optimizations -- requires testing!
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			;;
		neuros)
			DEFINES="$DEFINES -DUNIX -DNEUROS"
			_need_memalign=yes
			_backend='null'
			_build_hq_scalers="no"
			_mt32emu="no"
			;;
		ppc-amigaos)
			_endian=big
			_need_memalign=yes
			# FIXME: Please document why 'long' has to be used instead of int
			#type_4_byte='long'
			;;
		ps2)
			# TODO: complete this
			DEFINES="$DEFINES -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DDISABLE_DOSBOX_OPL"
			_need_memalign=yes
			_backend="ps2"
			_build_scalers="no"
			_build_hq_scalers="no"
			_mt32emu="no"
			# HACK to enable mad & zlib (they are not properly detected due to linker issues).
			# This trick doesn't work for tremor right now, as the PS2 port the resulting library
			# libtremor, while our code later on expects it to be called libvorbisidec.
			# TODO: Enable tremor, e.g. by adding  -ltremor or by renaming the lib.
			_mad="yes"
			_zlib="yes"
			# HACK to fix compilation of C source files for now.
			add_line_to_config_mk 'CC = ee-gcc'
			# HACK to fix linking for now. It seems ee-g++ does not handle linking correctly.
			LD=ee-gcc

			if test "$_debug_build" = yes; then
				# TODO: Setup debug build properly
				DEFINES="$DEFINES -D__PS2_DEBUG__"
				#INCLUDES="$INCLUDES -I$(PS2GDB)/ee"
				#LDFLAGS="$LDFLAGS -L$(PS2GDB)/lib"
				LDFLAGS="$LDFLAGS -lps2gdbStub -lps2ip -ldebug"
			else
				# If not building for debug mode, strip binaries.
				CXXFLAGS="$CXXFLAGS -s"
			fi
			;;
		psp)
			_need_memalign=yes
			_backend="psp"
			_build_scalers="no"
			_build_hq_scalers="no"
			_mt32emu="no"
			_port_mk="backends/platform/psp/psp.mk"
			;;
		samsungtv)
			DEFINES="$DEFINES -DUNIX -DSAMSUNGTV -DDISABLE_COMMAND_LINE"
			ASFLAGS="$ASFLAGS -mfpu=vfp"
			HOSTEXEEXT=".so"
			_need_memalign=yes
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			add_line_to_config_mk 'USE_ARM_GFX_ASM = 1'
			add_line_to_config_mk 'USE_ARM_COSTUME_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
			_backend="samsungtv"
			_mt32emu="no"
			_build_scalers="yes"
			_build_hq_scalers="yes"
			_vkeybd="yes"
			;;
		wii)
			_endian=big
			_need_memalign=yes
			_backend="wii"
			_build_scalers="no"
			_build_hq_scalers="no"
			_port_mk="backends/platform/wii/wii.mk"
			add_line_to_config_mk 'GAMECUBE = 0'
			add_line_to_config_h "#define DEBUG_WII_USBGECKO"
			add_line_to_config_h "/* #define DEBUG_WII_MEMSTATS */"
			add_line_to_config_h "/* #define DEBUG_WII_GDB */"
			add_line_to_config_h "#define USE_WII_DI"
			add_line_to_config_h "#define USE_WII_SMB"
			add_line_to_config_h "#define USE_WII_KBD"
			;;
		wince)
			LDFLAGS="$LDFLAGS -Wl,-Map,scummvm.exe.map -Wl,--stack,65536"
			_need_memalign=yes
			add_line_to_config_mk 'USE_TREMOLO = 1'
			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
			add_line_to_config_mk 'USE_ARM_GFX_ASM = 1'
			add_line_to_config_mk 'USE_ARM_COSTUME_ASM = 1'
			add_line_to_config_mk 'USE_ARM_SCALER_ASM = 1'
			_backend="wince"
			_mt32emu="no"
			_port_mk="backends/platform/wince/wince.mk"
			;;
		*)
			echo "WARNING: Unknown target, continuing with auto-detected values"
			;;
	esac

else
	#
	# Check whether memory alignment is required
	#
	echo_n "Alignment required... "
	case $_host_cpu in
		alpha*)
			# Hardcode alignment requirements for Alpha processsors
			_need_memalign=yes
			;;
		arm*)
			_need_memalign=yes
			;;
		mips*)
			# Hardcode alignment requirements for MIPS processsors.
			# While these can emulate unaligned memory access, this
			# emulation is rather slow.
			_need_memalign=yes
			;;
		sh*)
			# Hardcode alignment requirements for SH processsors.
			# While these can emulate unaligned memory access, this
			# emulation is rather slow.
			_need_memalign=yes
			;;
		*)
			# Try to auto-detect....
			cat > $TMPC << EOF
#include <stdlib.h>
#include <signal.h>
int main(int argc, char **argv) {
	unsigned char test[8] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88 };
	signal(SIGBUS, exit);
	signal(SIGABRT, exit);
	signal(SIGSEGV, exit);
	if (*((unsigned int *)(test + 1)) != 0x55443322 && *((unsigned int *)(test + 1)) != 0x22334455) {
		return 1;
	}
	return 0;
}
EOF
			_need_memalign=yes
			cc_check && $TMPO$HOSTEXEEXT && _need_memalign=no
			;;
	esac
	echo "$_need_memalign"
fi

#
# Enable 16bit support only for backends which support it
#
case $_backend in
	dreamcast | samsungtv | sdl | wii)
		if test "$_16bit" = auto ; then
			_16bit=yes
		else
			_16bit=no
		fi
		;;
	*)
		_16bit=no
		;;
esac


#
# Add the results of the above checks to config.h
#
case $_endian in
	big)
		add_line_to_config_h '/* #define SCUMM_LITTLE_ENDIAN */'
		add_line_to_config_h '#define SCUMM_BIG_ENDIAN'
		;;
	little)
		add_line_to_config_h '#define SCUMM_LITTLE_ENDIAN'
		add_line_to_config_h '/* #define SCUMM_BIG_ENDIAN */'
		;;
	*)
		exit 1
		;;
esac

add_to_config_h_if_yes $_have_x86 '#define HAVE_X86'

add_to_config_h_if_yes $_need_memalign '#define SCUMM_NEED_ALIGNMENT'

#
# Check whether to enable a verbose build
#
echo_n "Checking whether to have a verbose build... "
echo "$_verbose_build"
add_to_config_mk_if_yes "$_verbose_build" 'VERBOSE_BUILD = 1'

#
# Check whether plugin support is requested and possible
#
echo_n "Checking whether building plugins was requested... "
echo "$_dynamic_modules"
_mak_plugins=
_def_plugin="/* -> plugins disabled */"

if test "$_dynamic_modules" = yes ; then
	echo_n "Checking whether building plugins is supported... "
	case $_host_os in
	darwin*)
_def_plugin='
#define PLUGIN_PREFIX	""
#define PLUGIN_SUFFIX	".plugin"
'
_mak_plugins='
DYNAMIC_MODULES := 1
PLUGIN_PREFIX :=
PLUGIN_SUFFIX := .plugin
PLUGIN_EXTRA_DEPS = $(EXECUTABLE)
CXXFLAGS        += -DDYNAMIC_MODULES
PLUGIN_LDFLAGS  += -bundle -bundle_loader $(EXECUTABLE) -exported_symbols_list "$(srcdir)/plugin.exp"
PRE_OBJS_FLAGS  := -all_load
POST_OBJS_FLAGS :=
LIBS            += -ldl
'
		;;
	dreamcast)
_def_plugin='
#define PLUGIN_PREFIX	""
#define PLUGIN_SUFFIX	".plg"
'
_mak_plugins='
DYNAMIC_MODULES		:= 1
PLUGIN_PREFIX		:=
PLUGIN_SUFFIX		:= .plg
PLUGIN_EXTRA_DEPS	= $(abspath $(srcdir)/backends/platform/dc/plugin.x $(srcdir)/backends/platform/dc/plugin.syms) $(EXECUTABLE)
CXXFLAGS			+= -DDYNAMIC_MODULES
PLUGIN_LDFLAGS		= -ml -m4-single-only -nostartfiles -Wl,-q,-T$(srcdir)/backends/platform/dc/plugin.x,--just-symbols,$(EXECUTABLE),--retain-symbols-file,$(srcdir)/backends/platform/dc/plugin.syms -L$(ronindir)/lib
PRE_OBJS_FLAGS		:= -Wl,--whole-archive
POST_OBJS_FLAGS		:= -Wl,--no-whole-archive
'
		;;
	freebsd*)
_def_plugin='
#define PLUGIN_PREFIX	"lib"
#define PLUGIN_SUFFIX	".so"
'
_mak_plugins='
DYNAMIC_MODULES := 1
PLUGIN_PREFIX := lib
PLUGIN_SUFFIX := .so
PLUGIN_EXTRA_DEPS =
CXXFLAGS        += -DDYNAMIC_MODULES
CXXFLAGS        += -fpic
PLUGIN_LDFLAGS  += -shared
PRE_OBJS_FLAGS  := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
'
		;;
	gp2xwiz*)
_def_plugin='
#define PLUGIN_PREFIX	""
#define PLUGIN_SUFFIX	".plugin"
'
_mak_plugins='
DYNAMIC_MODULES := 1
PLUGIN_PREFIX :=
PLUGIN_SUFFIX := .plugin
PLUGIN_EXTRA_DEPS = $(EXECUTABLE)
CXXFLAGS        += -DDYNAMIC_MODULES
CXXFLAGS        += -fpic
PLUGIN_LDFLAGS  += -shared
PRE_OBJS_FLAGS  := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
LIBS            += -ldl
'
		;;
	linux*)
_def_plugin='
#define PLUGIN_PREFIX	"lib"
#define PLUGIN_SUFFIX	".so"
'
_mak_plugins='
DYNAMIC_MODULES := 1
PLUGIN_PREFIX := lib
PLUGIN_SUFFIX := .so
PLUGIN_EXTRA_DEPS =
CXXFLAGS        += -DDYNAMIC_MODULES
CXXFLAGS        += -fpic
PLUGIN_LDFLAGS  += -shared
PRE_OBJS_FLAGS  := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
LIBS            += -ldl
'
		;;
	*mingw32*)
_def_plugin='
#define PLUGIN_PREFIX	""
#define PLUGIN_SUFFIX	".dll"
'
_mak_plugins='
DYNAMIC_MODULES		:= 1
PLUGIN_PREFIX		:=
PLUGIN_SUFFIX		:= .dll
PLUGIN_EXTRA_DEPS	= $(EXECUTABLE)
CXXFLAGS			+= -DDYNAMIC_MODULES
PLUGIN_LDFLAGS		:= -Wl,--enable-auto-import -shared ./libscummvm.a
PRE_OBJS_FLAGS		:= -Wl,--whole-archive
POST_OBJS_FLAGS		:= -Wl,--export-all-symbols -Wl,--no-whole-archive -Wl,--out-implib,./libscummvm.a
'
		;;
	psp)
_def_plugin='
#define PLUGIN_PREFIX	""
#define PLUGIN_SUFFIX	".plg"
'
_mak_plugins='
DYNAMIC_MODULES		:= 1
PLUGIN_PREFIX		:=
PLUGIN_SUFFIX		:= .plg
PLUGIN_EXTRA_DEPS	= $(EXECUTABLE)
CXXFLAGS		+= -DDYNAMIC_MODULES
LDFLAGS			+= -Wl,-T$(srcdir)/backends/platform/psp/main_prog.ld
PLUGIN_LDFLAGS		= -nostartfiles -Wl,-q,--just-symbols,$(EXECUTABLE),--retain-symbols-file,$(srcdir)/backends/platform/psp/plugin.syms,-T$(srcdir)/backends/platform/psp/plugin.ld -lstdc++ -lc -lm
PRE_OBJS_FLAGS		:= -Wl,--whole-archive
POST_OBJS_FLAGS		:= -Wl,--no-whole-archive
'
		;;
	*)
		_dynamic_modules=no
		_mak_plugins=
		_def_plugin=
		;;
	esac
	echo "$_dynamic_modules"
fi


#
# Check whether integrated MT-32 emulator support is requested
#
if test "$_mt32emu" = no ; then
	_def_mt32emu='#undef USE_MT32EMU'
else
	_def_mt32emu='#define USE_MT32EMU'
fi
add_to_config_mk_if_yes "$_mt32emu" 'USE_MT32EMU = 1'

#
# Check whether 16bit color support is requested
#
if test "$_16bit" = no ; then
	_def_16bit='#undef USE_RGB_COLOR'
else
	_def_16bit='#define USE_RGB_COLOR'
fi
add_to_config_mk_if_yes "$_16bit" 'USE_RGB_COLOR = 1'

#
# Check whether to enable the (hq) scalers
#
add_to_config_mk_if_no $_build_hq_scalers   'DISABLE_HQ_SCALERS = 1'
add_to_config_mk_if_no $_build_scalers      'DISABLE_SCALERS = 1'

#
# Check whether to compile the Indeo3 decoder
#
if test "$_indeo3" = auto ; then
	# Autodetect. Build if either the gob engine or plugins are enabled
	if test `get_engine_build gob` = yes || test "$_dynamic_modules" = yes ; then
		_indeo3="yes"
	else
		_indeo3="no"
	fi
fi
if test "$_indeo3" = no ; then
	_def_indeo3='#undef USE_INDEO3'
else
	_def_indeo3='#define USE_INDEO3'
fi
add_to_config_mk_if_yes "$_indeo3" 'USE_INDEO3 = 1'

#
# Check for math lib
#
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
cc_check $LDFLAGS $CXXFLAGS -lm && LDFLAGS="$LDFLAGS -lm"

#
# Check for Ogg Vorbis
#
echocheck "Ogg Vorbis"
if test "$_vorbis" = auto ; then
	_vorbis=no
	cat > $TMPC << EOF
#include <vorbis/codec.h>
int main(void) { vorbis_packet_blocksize(0,0); return 0; }
EOF
	cc_check $LDFLAGS $CXXFLAGS $OGG_CFLAGS $OGG_LIBS $VORBIS_CFLAGS $VORBIS_LIBS \
		-lvorbisfile -lvorbis -logg && _vorbis=yes
fi
if test "$_vorbis" = yes ; then
	_def_vorbis='#define USE_VORBIS'
	LIBS="$LIBS $OGG_LIBS $VORBIS_LIBS -lvorbisfile -lvorbis -logg"
	INCLUDES="$INCLUDES $OGG_CFLAGS $VORBIS_CFLAGS"
else
	_def_vorbis='#undef USE_VORBIS'
fi
add_to_config_mk_if_yes "$_vorbis" 'USE_VORBIS = 1'
echo "$_vorbis"

#
# Check for Tremor
#
echocheck "Tremor"
if test "$_tremor" = auto ; then
	_tremor=no
	cat > $TMPC << EOF
#include <tremor/ivorbiscodec.h>
int main(void) { vorbis_info_init(0); return 0; }
EOF
	cc_check $LDFLAGS $CXXFLAGS $TREMOR_CFLAGS $TREMOR_LIBS -lvorbisidec && \
	_tremor=yes
fi
if test "$_tremor" = yes && test "$_vorbis" = no; then
	_def_tremor='#define USE_TREMOR'
	_def_vorbis='#define USE_VORBIS'
	LIBS="$LIBS $TREMOR_LIBS -lvorbisidec"
	INCLUDES="$INCLUDES $TREMOR_CFLAGS"
else
	if test "$_vorbis" = yes; then
		_tremor="no (Ogg Vorbis/Tremor support is mutually exclusive)"
	fi
	_def_tremor='#undef USE_TREMOR'
fi
add_to_config_mk_if_yes "$_tremor" 'USE_TREMOR = 1'
echo "$_tremor"

#
# Check for FLAC
#
echocheck "FLAC >= 1.0.1"
if test "$_flac" = auto ; then
	_flac=no
	cat > $TMPC << EOF
#include <FLAC/format.h>
int main(void) { return FLAC__STREAM_SYNC_LEN >> 30; /* guaranteed to be 0 */ }
EOF
	if test "$_vorbis" = yes ; then
		cc_check $LDFLAGS $CXXFLAGS $FLAC_CFLAGS $FLAC_LIBS $OGG_CFLAGS $OGG_LIBS \
			-lFLAC -logg && _flac=yes
	else
		cc_check $LDFLAGS $CXXFLAGS $FLAC_CFLAGS $FLAC_LIBS \
			-lFLAC && _flac=yes
	fi
fi
if test "$_flac" = yes ; then
	_def_flac='#define USE_FLAC'
	if test "$_vorbis" = yes ; then
		LIBS="$LIBS $FLAC_LIBS $OGG_LIBS -lFLAC -logg"
	else
		LIBS="$LIBS $FLAC_LIBS -lFLAC"
	fi
	INCLUDES="$INCLUDES $FLAC_CFLAGS"
else
	_def_flac='#undef USE_FLAC'
fi
add_to_config_mk_if_yes "$_flac" 'USE_FLAC = 1'
echo "$_flac"

#
# Check for MAD (MP3 library)
#
echocheck "MAD"
if test "$_mad" = auto ; then
	_mad=no
	cat > $TMPC << EOF
#include <mad.h>
int main(void) { return 0; }
EOF
	cc_check $LDFLAGS $CXXFLAGS $MAD_CFLAGS $MAD_LIBS -lmad && _mad=yes
fi
if test "$_mad" = yes ; then
	_def_mad='#define USE_MAD'
	LIBS="$LIBS $MAD_LIBS -lmad"
	INCLUDES="$INCLUDES $MAD_CFLAGS"
else
	_def_mad='#undef USE_MAD'
fi
add_to_config_mk_if_yes "$_mad" 'USE_MAD = 1'
echo "$_mad"

#
# Check for ALSA
#
echocheck "ALSA >= 0.9"
if test "$_alsa" = auto ; then
	_alsa=no
	cat > $TMPC << EOF
#include <alsa/asoundlib.h>
int main(void) { return (!(SND_LIB_MAJOR==0 && SND_LIB_MINOR==9)); }
EOF
	cc_check $LDFLAGS $CXXFLAGS $ALSA_CFLAGS $ALSA_LIBS -lasound && _alsa=yes
fi
if test "$_alsa" = yes ; then
	_def_alsa='#define USE_ALSA'
	LIBS="$LIBS $ALSA_LIBS -lasound"
	INCLUDES="$INCLUDES $ALSA_CFLAGS"
else
	_def_alsa='#undef USE_ALSA'
fi
echo "$_alsa"

#
# Check for ZLib
#
echocheck "zlib"
if test "$_zlib" = auto ; then
	_zlib=no
	cat > $TMPC << EOF
#include <string.h>
#include <zlib.h>
int main(void) { return strcmp(ZLIB_VERSION, zlibVersion()); }
EOF
	cc_check $LDFLAGS $CXXFLAGS $ZLIB_CFLAGS $ZLIB_LIBS -lz && _zlib=yes
fi
if test "$_zlib" = yes ; then
	_def_zlib='#define USE_ZLIB'
	LIBS="$LIBS $ZLIB_LIBS -lz"
	INCLUDES="$INCLUDES $ZLIB_CFLAGS"
else
	_def_zlib='#undef USE_ZLIB'
fi
add_to_config_mk_if_yes "$_zlib" 'USE_ZLIB = 1'
echo "$_zlib"

#
# Check for LibMPEG2
#
echocheck "libmpeg2 >= 0.3.2"
if test "$_mpeg2" = auto ; then
	_mpeg2=no
	cat > $TMPC << EOF
typedef signed $type_1_byte int8_t;
typedef signed $type_2_byte int16_t;
typedef signed $type_4_byte int32_t;

typedef unsigned $type_1_byte uint8_t;
typedef unsigned $type_2_byte uint16_t;
typedef unsigned $type_4_byte uint32_t;

#include <mpeg2dec/mpeg2.h>
int main(void) {
	/* mpeg2_state_t first appears in 0.4.0 */
	mpeg2_state_t state;

		#ifdef MPEG2_RELEASE
		if (MPEG2_RELEASE >= MPEG2_VERSION(0, 3, 2))
			return 0;
	#endif
	return 1;
}
EOF

	if test -n "$_host"; then
		# don't execute while cross compiling
		cc_check $LDFLAGS $CXXFLAGS $MPEG2_CFLAGS $MPEG2_LIBS -lmpeg2 && _mpeg2=yes
	else
		cc_check $LDFLAGS $CXXFLAGS $MPEG2_CFLAGS $MPEG2_LIBS -lmpeg2 && $TMPO$HOSTEXEEXT && _mpeg2=yes
	fi
fi
if test "$_mpeg2" = yes ; then
	_def_mpeg2='#define USE_MPEG2'
	INCLUDES="$INCLUDES $MPEG2_CFLAGS"
	LIBS="$LIBS $MPEG2_LIBS -lmpeg2"
else
	_def_mpeg2='#undef USE_MPEG2'
fi
add_to_config_mk_if_yes "$_mpeg2" 'USE_MPEG2 = 1'
echo "$_mpeg2"

#
# Check for libfluidsynth
#
echocheck "libfluidsynth"
if test "$_fluidsynth" = auto ; then
	_fluidsynth=no
	cat > $TMPC << EOF
#include <fluidsynth.h>
int main(void) { return 0; }
EOF
	cc_check $LDFLAGS $CXXFLAGS $FLUIDSYNTH_CFLAGS $FLUIDSYNTH_LIBS -lfluidsynth && _fluidsynth=yes
fi
if test "$_fluidsynth" = yes ; then
	_def_fluidsynth='#define USE_FLUIDSYNTH'
	case $_host_os in
		mingw*)
			LIBS="$LIBS $FLUIDSYNTH_LIBS -lfluidsynth -ldsound -lwinmm"
		;;
		*)
			LIBS="$LIBS $FLUIDSYNTH_LIBS -lfluidsynth"
		;;
	esac
	INCLUDES="$INCLUDES $FLUIDSYNTH_CFLAGS"
else
	_def_fluidsynth='#undef USE_FLUIDSYNTH'
fi
echo "$_fluidsynth"
rm -rf $TMPC $TMPO$HOSTEXEEXT $TMPO.dSYM

#
# Check for readline if text_console is enabled
#
echocheck "readline"
if test "$_text_console" = yes ; then
	_READLINE_LIBS="-lreadline"
	if test "$_readline" = auto ; then
		_readline=no
		cat > $TMPC << EOF
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

int main(void) {
	char *x = readline("");
}
EOF
		cc_check $LDFLAGS $CXXFLAGS $READLINE_CFLAGS $READLINE_LIBS $_READLINE_LIBS && _readline=yes
		if test "$_readline" = no ; then
			_READLINE_LIBS="-lreadline -ltermcap"
			cc_check $LDFLAGS $CXXFLAGS $READLINE_CFLAGS $READLINE_LIBS $_READLINE_LIBS && _readline=yes
		fi
	fi
	echo "$_readline"
	rm -rf $TMPC $TMPO$HOSTEXEEXT $TMPO.dSYM
else
	_readline=no
	echo "skipping (text console disabled)"
fi

if test "$_readline" = yes ; then
	_def_readline='#define USE_READLINE'
	LIBS="$LIBS $READLINE_LIBS $_READLINE_LIBS"
	INCLUDES="$INCLUDES $READLINE_CFLAGS"
else
	_def_readline='#undef USE_READLINE'
fi

if test "$_text_console" = yes ; then
	_def_text_console='#define USE_TEXT_CONSOLE'
else
	_def_text_console='#undef USE_TEXT_CONSOLE'
fi

#
# Check for nasm
#
if test "$_have_x86" = yes ; then
	echocheck "nasm"
	if test "$_nasm" = no ; then
		echo "disabled"
	else
		IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS=$SEPARATOR

		for path_dir in $_nasmpath; do
			if test -x "$path_dir/nasm$NATIVEEXEEXT" ; then
				NASM="$path_dir/nasm$NATIVEEXEEXT"
				echo $NASM
				break
			fi
		done

		IFS="$ac_save_ifs"

		if test x$NASM = x -o x$NASM = x'"$NASM"'; then
			echo "not found"
			_nasm=no
		else
			case $_host_os in
				os2-emx*)
					NASMFLAGS="-f aout"
				;;
				mingw*)
					NASMFLAGS="-f win32"
				;;
				darwin*)
					NASMFLAGS="-f macho"
				;;
				*)
					NASMFLAGS="-f elf"
				;;
			esac
			_nasm=yes
		fi
	fi
fi

add_to_config_h_if_yes $_nasm '#define USE_NASM'
add_to_config_mk_if_yes $_nasm 'USE_NASM = 1'

#
# Enable vkeybd / keymapper
#
if test "$_vkeybd" = yes ; then
	DEFINES="$DEFINES -DENABLE_VKEYBD"
fi
if test "$_keymapper" = yes ; then
	DEFINES="$DEFINES -DENABLE_KEYMAPPER"
fi

#
# Figure out installation directories
#
test -z "$_bindir" && _bindir="$_prefix/bin"
test -z "$_mandir" && _mandir="$_prefix/share/man"
test -z "$_datadir" && _datadir="$_prefix/share"
test -z "$_libdir" && _libdir="$_prefix/lib"

DEFINES="$DEFINES -DDATA_PATH=\\\"$_datadir/scummvm\\\""
DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"$_libdir/scummvm\\\""


echo_n "Backend... "
echo_n "$_backend"

if test "$_nasm" = yes ; then
	echo_n ", assembly routines"
fi

if test "$_16bit" = yes ; then
	echo_n ", 16bit color"
fi

if test "$_build_hq_scalers" = yes ; then
	echo_n ", HQ scalers"
fi

if test "$_mt32emu" = yes ; then
	echo_n ", MT-32 emu"
fi

if test "$_indeo3" = yes ; then
	echo_n ", Indeo3 decoder"
fi

if test "$_text_console" = yes ; then
	echo_n ", text console"
fi

if test "$_vkeybd" = yes ; then
	echo_n ", virtual keyboard"
fi

if test "$_keymapper" = yes ; then
	echo ", keymapper"
else
	echo
fi

#
# Backend related stuff
#
case $_backend in
	dc)
		INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/dc -isystem $(ronindir)/include'
		LDFLAGS="$LDFLAGS -Wl,-Ttext,0x8c010000 -nostartfiles "'$(ronindir)/lib/crt0.o -L$(ronindir)/lib'
		LIBS="$LIBS -lronin-noserial -lm"
		;;
	gp2x)
		find_sdlconfig
		INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`"
		LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`"
		LDFLAGS="$LDFLAGS -static"
		CXXFLAGS="$CXXFLAGS -march=armv4t"
		;;
	gp2xwiz)
		find_sdlconfig
		INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`"
		LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`"
		LDFLAGS="$LDFLAGS"
		CXXFLAGS="$CXXFLAGS -mcpu=arm926ej-s -mtune=arm926ej-s"
		;;
	iphone)
		OBJCFLAGS="$OBJCFLAGS --std=c99"
		LIBS="$LIBS -lobjc -framework UIKit -framework CoreGraphics -framework OpenGLES -framework QuartzCore -framework GraphicsServices -framework CoreFoundation -framework Foundation -framework AudioToolbox -framework CoreAudio"
		;;
	linuxmoto)
		find_sdlconfig
		INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`"
		LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`"
		DEFINES="$DEFINES -DSDL_BACKEND -DLINUXMOTO"
		;;
	nds)
		# TODO nds
		;;
	null)
		DEFINES="$DEFINES -DUSE_NULL_DRIVER"
		;;
	ps2)
		# TODO ps2
		DEFINES="$DEFINES -D_EE -DFORCE_RTL"
		INCLUDES="$INCLUDES -I$PS2SDK/ee/include -I$PS2SDK/common/include -I$PS2SDK/ports/include"
		LDFLAGS="$LDFLAGS -mno-crt0 $PS2SDK/ee/startup/crt0.o -T $PS2SDK/ee/startup/linkfile"
		LDFLAGS="$LDFLAGS -L$PS2SDK/ee/lib -L$PS2SDK/ports/lib"
		LIBS="$LIBS -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm -lm -lc -lfileXio -lkernel -lstdc++ "
		;;
	psp)
		DEFINES="$DEFINES -D__PSP__ -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DDISABLE_DOSBOX_OPL"
		INCLUDES="$INCLUDES -I$PSPDEV/psp/include/SDL"
		LIBS="$LIBS -lpng -lSDL -Wl,-Map,mapfile.txt"
		SDLLIBS=`$PSPDEV/psp/bin/sdl-config --libs`

		if `echo "$SDLLIBS" | grep ".*-lGL.*" 1>/dev/null 2>&1`
		then
			LIBS="$LIBS -lGL"
		fi
		;;
	samsungtv)
		find_sdlconfig
		INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`"
		LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`"
		DEFINES="$DEFINES -DSDL_BACKEND -DSAMSUNGTV"
		LDFLAGS="$LDFLAGS -shared -fpic"
		MODULES="$MODULES backends/platform/sdl"
		;;
	sdl)
		find_sdlconfig
		INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`"
		LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`"
		DEFINES="$DEFINES -DSDL_BACKEND"
		;;
	wii)
		DEFINES="$DEFINES -D__WII__ -DGEKKO"
		case $_host_os in
		gamecube)
			LIBS="$LIBS -lgxflux -lfat -logc -ldb"
			;;
		*)
			LIBS="$LIBS -lgxflux -ldi -ltinysmb -lfat -lwiiuse -lbte -logc -lwiikeyboard -ldb"
			;;
		esac
		;;
	wince)
		INCLUDES="$INCLUDES "'-I$(srcdir) -I$(srcdir)/backends/platform/wince -I$(srcdir)/engines -I$(srcdir)/backends/platform/wince/missing/gcc -I$(srcdir)/backends/platform/wince/CEgui -I$(srcdir)/backends/platform/wince/CEkeys'
		LIBS="$LIBS -static -lSDL"
		;;
	*)
		echo "support for $_backend backend not implemented in configure script yet"
		exit 1
		;;
esac
MODULES="$MODULES backends/platform/$_backend"

#
# Do CXXFLAGS now that we know the compiler version
#
if test "$have_gcc" = yes ; then
	if test "$_cxx_major" -ge "3" ; then
		case $_host_os in
		# newlib-based system include files suppress non-C89 function
		# declarations under __STRICT_ANSI__
		mingw* | dreamcast | wii | gamecube | psp | wince | amigaos*)
			CXXFLAGS="$CXXFLAGS -W -Wno-unused-parameter"
			;;
		*)
			CXXFLAGS="$CXXFLAGS -ansi -W -Wno-unused-parameter"
			;;
		esac
		add_line_to_config_mk 'HAVE_GCC3 = 1'
		add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP'
	fi;

	if test "$_cxx_major" -ge "4" && test "$_cxx_minor" -ge "3" ; then
		CXXFLAGS="$CXXFLAGS -Wno-empty-body"
	else
		CXXFLAGS="$CXXFLAGS -Wconversion"
	fi;
fi;

# Some platforms use certain GNU extensions in header files
case $_host_os in
gamecube | psp | wii)
	;;
*)
	CXXFLAGS="$CXXFLAGS -pedantic"
	;;
esac

#
# Engine selection
#
_engines_built_static=""
_engines_built_dynamic=""
_engines_skipped=""

for engine in $_engines; do
	if test "`get_engine_sub $engine`" = "no" ; then
		# It's a main engine
		if test `get_engine_build $engine` = no ; then
			isbuilt=no
		else
			# If dynamic plugins aren't supported, mark
			# all the engines as static
			if test $_dynamic_modules = no ; then
				set_var _engine_${engine}_build "static"
			else
				# If it wasn't explicitly marked as static or
				# dynamic, use the configured default
				if test `get_engine_build $engine` = yes ; then
					set_var _engine_${engine}_build "${_plugins_default}"
				fi
			fi

			# Prepare the defines
			if test `get_engine_build $engine` = dynamic ; then
				isbuilt=DYNAMIC_PLUGIN
			else
				set_var _engine_${engine}_build "static"
				isbuilt=STATIC_PLUGIN
			fi
		fi

		# Prepare the information to be shown
		prepare_engine_build_strings $engine
	else
		# It's a subengine, just say yes or no
		if test "`get_engine_build $engine`" = "no" ; then
			isbuilt=no
		else
			isbuilt=1
		fi
	fi

	# Save the settings
	defname="ENABLE_`echo $engine | tr '[a-z]' '[A-Z]'`"
	if test "$isbuilt" = "no" ; then
		add_line_to_config_mk "# $defname"
	else
		add_line_to_config_mk "$defname = $isbuilt"
	fi
done

#
# Show which engines ("frontends") are to be built
#
echo
if test -n "$_engines_built_static" ; then
	echo "Engines (builtin):"
	echo $_engines_built_static | sed 's/@/\
/g
s/#/    /g'
fi

if test -n "$_engines_built_dynamic" ; then
	echo "Engines (plugins):"
	echo $_engines_built_dynamic | sed 's/@/\
/g
s/#/    /g'
fi

if test -n "$_engines_skipped" ; then
	echo "Engines Skipped:"
	echo $_engines_skipped | sed 's/@/\
/g
s/#/    /g'
fi


echo
echo "Creating config.h"
cat > config.h << EOF
/* This file is automatically generated by configure */
/* DO NOT EDIT MANUALLY */

#ifndef CONFIG_H
#define CONFIG_H

$_config_h_data

/* Data types */
typedef unsigned $type_1_byte byte;
typedef unsigned int uint;
typedef unsigned $type_1_byte uint8;
typedef unsigned $type_2_byte uint16;
typedef unsigned $type_4_byte uint32;
typedef signed $type_1_byte int8;
typedef signed $type_2_byte int16;
typedef signed $type_4_byte int32;

/* Libs */
$_def_vorbis
$_def_tremor
$_def_flac
$_def_mad
$_def_alsa
$_def_zlib
$_def_mpeg2
$_def_fluidsynth
$_def_readline

/* Options */
$_def_text_console
$_def_mt32emu
$_def_indeo3
$_def_16bit

/* Plugin settings */
$_def_plugin

#endif /* CONFIG_H */
EOF

echo "Creating config.mk"
cat > config.mk << EOF
# -------- Generated by configure -----------

CXX := $CXX
CXXFLAGS := $CXXFLAGS
LD := $LD
LIBS += $LIBS
RANLIB := $_ranlib
STRIP := $_strip
AR := $_ar
AS := $_as
ASFLAGS := $ASFLAGS
WINDRES := $_windres
WINDRESFLAGS := $WINDRESFLAGS
WIN32PATH=$_win32path
AOS4PATH=$_aos4path
STATICLIBPATH=$_staticlibpath

BACKEND := $_backend
MODULES += $MODULES
MODULE_DIRS += $MODULE_DIRS
EXEEXT := $HOSTEXEEXT
NASM := $NASM
NASMFLAGS := $NASMFLAGS

PREFIX := $_prefix
BINDIR := $_bindir
MANDIR := $_mandir
DATADIR := $_datadir
LIBDIR := $_libdir

$_config_mk_data

INCLUDES += $INCLUDES
OBJS += $OBJS
DEFINES += $DEFINES
LDFLAGS += $LDFLAGS

$_mak_plugins

port_mk = $_port_mk

SAVED_CONFIGFLAGS  := $SAVED_CONFIGFLAGS
SAVED_LDFLAGS      := $SAVED_LDFLAGS
SAVED_CXX          := $SAVED_CXX
SAVED_CXXFLAGS     := $SAVED_CXXFLAGS
SAVED_CPPFLAGS     := $SAVED_CPPFLAGS
SAVED_ASFLAGS      := $SAVED_ASFLAGS
SAVED_WINDRESFLAGS := $SAVED_WINDRESFLAGS
EOF

#
# Create a custom Makefile when building outside the source tree
# TODO: Add a better check than just looking for 'Makefile'
#
if test ! -f Makefile.common ; then
echo "Creating Makefile"

cat > Makefile << EOF
# -------- Generated by configure -----------
srcdir = $_srcdir
vpath %.h \$(srcdir)
vpath %.cpp \$(srcdir)
vpath %.c \$(srcdir)
vpath %.m \$(srcdir)
vpath %.mm \$(srcdir)
vpath %.asm \$(srcdir)
vpath %.s \$(srcdir)
vpath %.S \$(srcdir)
include \$(srcdir)/Makefile
EOF

fi
back to top