scummvm/configure

6299 lines
168 KiB
Plaintext
Raw Normal View History

#!/bin/sh
#
2012-02-24 12:15:44 +01:00
# configure -- custom configure script for ScummVM.
#
2012-02-24 12:15:44 +01:00
# ScummVM is the legal property of its developers, whose names
2011-04-16 14:08:33 +02:00
# 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.
#
# NLS nuisances.
LC_ALL=C
export LC_ALL
LANGUAGE=C
export LANGUAGE
# Save the current environment variables for next runs
SAVED_CONFIGFLAGS=$@
SAVED_AR=$AR
SAVED_AS=$AS
SAVED_ASFLAGS=$ASFLAGS
SAVED_CPPFLAGS=$CPPFLAGS
SAVED_CXX=$CXX
SAVED_CXXFLAGS=$CXXFLAGS
SAVED_DWP=$DWP
SAVED_LD=$LD
SAVED_LDFLAGS=$LDFLAGS
SAVED_PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-unset}
SAVED_RANLIB=$RANLIB
2015-04-19 07:43:34 +02:00
SAVED_SDL_CONFIG=$SDL_CONFIG
SAVED_STRIP=$STRIP
SAVED_WINDRES=$WINDRES
SAVED_WINDRESFLAGS=$WINDRESFLAGS
2009-04-04 14:43:23 +00:00
# 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
2009-10-05 08:33:46 +00:00
set_var() {
eval ${1}='${2}'
}
get_var() {
eval echo \$${1}
}
2009-05-25 20:49:53 +00:00
2015-08-16 08:49:02 +02:00
append_var() {
2016-11-12 12:59:06 +01:00
VAR=${1}
shift
if eval test -z \"\$${VAR}\" ; then
eval ${VAR}='$@'
else
eval ${VAR}=\"\$${VAR} \"'$@'
fi
}
prepend_var() {
VAR=${1}
shift
if eval test -z \"\$${VAR}\" ; then
eval ${VAR}='$@'
else
eval ${VAR}='$@'\" \$${VAR}\"
fi
2015-08-16 08:49:02 +02:00
}
2012-11-18 19:07:46 +01:00
# Add an engine: id name build subengines base-games dependencies
2009-05-25 20:49:53 +00:00
add_engine() {
_engines="${_engines} ${1}"
2011-07-20 06:58:19 +02:00
if test "${3}" = "no" ; then
set_var _wip_engines "${_wip_engines} ${1}"
fi
2009-10-05 08:33:46 +00:00
set_var _engine_${1}_name "${2}"
set_var _engine_${1}_build "${3}"
2011-07-20 06:58:19 +02:00
set_var _engine_${1}_build_default "${3}"
2009-10-05 08:33:46 +00:00
set_var _engine_${1}_subengines "${4}"
2012-11-18 19:07:46 +01:00
set_var _engine_${1}_base "${5}"
set_var _engine_${1}_deps "${6}"
2009-05-25 20:49:53 +00:00
for sub in ${4}; do
2009-10-05 08:33:46 +00:00
set_var _engine_${sub}_sub "yes"
2012-11-18 19:07:46 +01:00
set_var _engine_${sub}_parent "${1}"
2009-05-25 20:49:53 +00:00
done
}
2012-09-08 21:09:03 +02:00
# Add a feature: id name settings-list
add_feature() {
set_var _feature_${1}_name "${2}"
# This is a list of settings, where one must be "yes" for the feature to
# be enabled
set_var _feature_${1}_settings "${3}"
}
2012-05-03 05:51:15 +02:00
_srcdir=`dirname $0`
# Read list of engines
2013-12-08 13:25:24 +01:00
for i in $_srcdir/engines/*/configure.engine; do
. "$i"
done
2009-05-25 20:49:53 +00:00
2009-04-04 14:43:23 +00:00
#
# Default settings
#
#ResidualVM defaults: sdlnet=no libcurl=no flac=no seq_midi=no sndio=no timidity=no
# a52=no faad=no fluidsynth=no mt32emu=no lua=no nuked_opl=no tts=no osxdockplugin=no discord=no
2012-01-28 10:44:25 +01:00
#
# Default lib behavior yes/no/auto
_sdl=no
2017-12-22 15:27:28 +00:00
_ogg=auto
2014-04-05 18:18:42 +02:00
_vorbis=auto
2016-11-12 12:59:06 +01:00
_sdlnet=no
_libcurl=no
_tremor=auto
2011-05-01 17:49:40 +02:00
_tremolo=no
_flac=no
2012-04-15 12:29:37 +02:00
_mad=auto
_opl2lpt=no
2010-01-21 19:25:03 +00:00
_alsa=auto
_seq_midi=no
2012-11-18 19:07:46 +01:00
_sndio=no
_timidity=no
2011-04-14 12:41:26 +02:00
_zlib=auto
_mpeg2=auto
_a52=no
2013-07-07 15:29:33 +02:00
_sparkle=auto
_osxdockplugin=no
_jpeg=auto
2014-04-05 18:18:42 +02:00
_png=auto
_theoradec=auto
2012-01-28 10:44:25 +01:00
_faad=no
_fluidsynth=no
_glew=auto
_opengl_mode=auto
_opengl_game=auto
2011-04-14 12:47:48 +02:00
_opengles=no
2013-02-07 18:17:53 +01:00
_opengles2=no
_opengl_shaders=auto
_readline=auto
2012-02-10 08:18:09 +01:00
_freetype2=auto
2014-01-25 22:16:57 +01:00
_taskbar=auto
2012-01-06 22:56:21 +01:00
_updates=no
2011-07-20 06:58:19 +02:00
_libunity=auto
_dialogs=auto
_iconv=auto
_tts=no
_gtk=auto
_fribidi=auto
_discord=no
_test_cxx11=no
2012-11-18 19:07:46 +01:00
# Default option behavior yes/no
2010-01-21 19:25:03 +00:00
_debug_build=auto
_release_build=auto
2012-01-06 22:56:21 +01:00
_optimizations=auto
2020-09-25 19:00:51 +02:00
_use_cxx11=yes
2011-06-09 11:17:15 +02:00
_verbose_build=no
2010-01-21 19:25:03 +00:00
_text_console=no
2010-01-24 08:26:36 +00:00
_mt32emu=no
_lua=no
_build_scalers=yes
_build_hq_scalers=yes
2011-04-10 21:59:04 +02:00
_enable_prof=no
_enable_asan=no
_enable_tsan=no
2011-04-11 15:40:01 +02:00
_global_constructors=no
_no_undefined_var_template=no
_no_pragma_pack=no
2011-07-20 08:02:02 +02:00
_bink=yes
2016-11-12 12:59:06 +01:00
_cloud=no
_pandoc=no
# Default vkeybd/eventrec options
_vkeybd=no
2013-07-07 15:29:33 +02:00
_eventrec=no
# GUI translation options
2015-09-08 17:01:12 +02:00
_translation=yes
2009-04-04 14:43:23 +00:00
# Default platform settings
_backend=sdl
2012-02-22 23:35:45 +01:00
_16bit=auto
_highres=auto
2012-01-06 22:56:21 +01:00
_savegame_timestamp=auto
2009-05-25 20:49:53 +00:00
_dynamic_modules=no
2011-06-09 11:17:15 +02:00
_elf_loader=no
2009-05-25 20:49:53 +00:00
_plugins_default=static
2011-06-09 11:17:15 +02:00
_plugin_prefix=
_plugin_suffix=
_nasm=auto
2012-01-06 22:56:21 +01:00
_optimization_level=
_default_optimization_level=-O2
_nuked_opl=no
_builtin_resources=yes
2009-04-04 14:43:23 +00:00
# Default commands
_ranlib=ranlib
2009-04-04 14:43:23 +00:00
_strip=strip
_ar="ar cru"
2009-10-05 08:33:46 +00:00
_as="as"
_dwp=dwp
_windres=windres
2011-07-20 06:58:19 +02:00
_stagingpath="staging"
_win32path="c:/residualvm"
2014-08-18 05:21:52 +02:00
_amigaospath="Games:ResidualVM"
_morphospath="PROGDIR:"
2013-10-13 11:30:34 +02:00
_staticlibpath=
_xcodetoolspath=
_sparklepath=
_pkgconfig=pkg-config
2016-11-12 12:59:06 +01:00
_sdlconfig=sdl2-config
_libcurlconfig=curl-config
2012-02-10 07:51:41 +01:00
_freetypeconfig=freetype-config
_freetype_found="false"
_sdlpath="$PATH"
2012-02-10 07:51:41 +01:00
_freetypepath="$PATH"
2016-11-12 12:59:06 +01:00
_libcurlpath="$PATH"
_nasmpath="$PATH"
NASMFLAGS=""
NASM=""
2011-07-20 06:58:19 +02:00
_tainted_build=no
PANDOC=""
_pandocpath="$PATH"
_pandocformat="default"
_pandocext="default"
2011-06-09 11:17:15 +02:00
# The following variables are automatically detected, and should not
# be modified otherwise. Consider them read-only.
_posix=no
_has_posix_spawn=no
2011-06-09 11:17:15 +02:00
_endian=unknown
_need_memalign=yes
_have_x86=no
2012-09-08 21:09:03 +02:00
# Add (virtual) features
add_feature 16bit "16bit color" "_16bit"
add_feature bink "Bink" "_bink"
2016-11-12 12:59:06 +01:00
add_feature cloud "cloud" "_cloud"
2012-09-08 21:09:03 +02:00
add_feature faad "libfaad" "_faad"
add_feature flac "FLAC" "_flac"
add_feature freetype2 "FreeType2" "_freetype2"
add_feature highres "high resolution" "_highres"
2012-09-08 21:09:03 +02:00
add_feature mad "MAD" "_mad"
2013-10-13 11:30:34 +02:00
add_feature jpeg "JPEG" "_jpeg"
add_feature opengl_shaders "OpenGL with shaders" "_opengl_shaders" #ResidualVM specific
2012-09-08 21:09:03 +02:00
add_feature png "PNG" "_png"
add_feature theoradec "libtheoradec" "_theoradec"
add_feature vorbis "Vorbis file support" "_vorbis _tremor"
add_feature zlib "zlib" "_zlib"
add_feature lua "lua" "_lua"
add_feature fribidi "FriBidi" "_fribidi"
add_feature test_cxx11 "Test C++11" "_test_cxx11"
2011-04-10 21:59:04 +02:00
2012-02-24 12:15:44 +01:00
# Directories for installing ScummVM.
2011-04-10 21:59:04 +02:00
# This list is closely based on what GNU autoconf does,
# although the default value for datadir differs.
# Like GNU autoconf, we distinguish datadir and datarootdir
# to make it possible to change e.g. the location of the
# man pages independently of that of the engine data files,
2012-01-06 11:37:57 +01:00
# which are placed inside $datadir/residualvm
2011-04-10 21:59:04 +02:00
prefix=NONE
2011-04-14 12:41:26 +02:00
exec_prefix=NONE
2011-04-10 21:59:04 +02:00
bindir='${exec_prefix}/bin'
2011-04-14 12:41:26 +02:00
libdir='${exec_prefix}/lib'
2011-04-10 21:59:04 +02:00
datarootdir='${prefix}/share'
2012-01-06 11:37:57 +01:00
datadir='${datarootdir}/residualvm'
2011-04-14 12:41:26 +02:00
mandir='${datarootdir}/man'
2012-01-06 11:37:57 +01:00
docdir='${datarootdir}/doc/residualvm'
2011-04-10 21:59:04 +02:00
#localedir='${datarootdir}/locale'
2009-04-04 14:43:23 +00:00
# For cross compiling
_host=""
_host_cpu=""
_host_vendor=""
_host_os=""
_host_alias=""
2009-10-05 08:33:46 +00:00
_port_mk="ports.mk"
2011-04-11 15:40:01 +02:00
# Use temp files in the build directory
2012-01-06 11:37:57 +01:00
TMPO=./residualvm-conf
TMPC=${TMPO}.cpp
2008-07-18 20:52:11 +00:00
TMPLOG=config.log
2011-04-10 21:59:04 +02:00
cc_check_no_clean() {
echo >> "$TMPLOG"
cat "$TMPC" >> "$TMPLOG"
echo >> "$TMPLOG"
2011-04-10 21:59:04 +02:00
echo "$CXX $LDFLAGS $CXXFLAGS $TMPC -o $TMPO$HOSTEXEEXT $@" >> "$TMPLOG"
2009-04-04 14:43:23 +00:00
rm -f "$TMPO$HOSTEXEEXT"
2013-07-07 15:29:33 +02:00
if test "-c" = "$*" ; then
( $CXX $CXXFLAGS "$TMPC" -o "$TMPO$HOSTEXEEXT" "$@" ) >> "$TMPLOG" 2>&1
else
( $CXX $LDFLAGS $CXXFLAGS "$TMPC" -o "$TMPO$HOSTEXEEXT" "$@" ) >> "$TMPLOG" 2>&1
fi
2011-04-14 12:41:26 +02:00
TMPR="$?"
echo "return code: $TMPR" >> "$TMPLOG"
echo >> "$TMPLOG"
2011-04-14 12:41:26 +02:00
return "$TMPR"
}
2011-04-10 21:59:04 +02:00
cc_check_clean() {
rm -rf $TMPC $TMPO $TMPO.o $TMPO.dwo $TMPO.dSYM $TMPO$HOSTEXEEXT "$@"
2011-04-10 21:59:04 +02:00
}
cc_check() {
cc_check_no_clean "$@"
2011-04-14 12:41:26 +02:00
TMPR="$?"
2011-04-10 21:59:04 +02:00
cc_check_clean
2011-04-14 12:41:26 +02:00
return "$TMPR"
2011-04-10 21:59:04 +02:00
}
cc_check_define() {
cat > $TMPC << EOF
int main(void) {
#ifndef $1
syntax error
#endif
return 0;
}
EOF
cc_check -c
return $?
}
gcc_get_define() {
2011-04-27 12:08:15 +02:00
echo "" | $CXX -dM -E - | fgrep "$1" | head -n1 | cut -d ' ' -f 3-
2011-04-10 21:59:04 +02:00
}
2009-04-04 14:43:23 +00:00
#
# 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"
}
2011-04-11 15:44:23 +02:00
# Conditionally add a line of data to config.h. 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_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
}
2011-04-11 15:44:23 +02:00
# Conditionally add a '#define' line to config.h. Takes two parameters:
2011-04-11 15:40:01 +02:00
# The first one can be set to 'yes' or 'no'. If 'yes' is used, then
# the line "#define $2" is added to config.h, otherwise "#undef $2".
define_in_config_h_if_yes() {
if test "$1" = yes ; then
add_line_to_config_h "#define $2"
else
2011-04-11 15:40:01 +02:00
add_line_to_config_h "#undef $2"
fi
}
# Conditionally add definitions to config.h and config.mk. Takes two parameters:
# The first one can be set to 'yes' or 'no'. If 'yes' is used, then
# the line "#define $2" is added to config.h and "$2 = 1" to config.mk.
# Otherwise "#undef $2" is added to config.h and "# $2 = 1" to config.mk
define_in_config_if_yes() {
if test "$1" = yes ; then
add_line_to_config_h "#define $2"
add_line_to_config_mk "$2 = 1"
else
add_line_to_config_h "#undef $2"
add_line_to_config_mk "# $2 = 1"
fi
}
define_in_config_if_no() {
if test "$1" = no ; then
add_line_to_config_h "#define $2"
add_line_to_config_mk "$2 = 1"
else
add_line_to_config_h "#undef $2"
add_line_to_config_mk "# $2 = 1"
fi
}
#
# Determine sdl-config
#
2010-01-21 19:25:03 +00:00
# TODO: small bit of code to test sdl usability
2009-04-04 14:43:23 +00:00
find_sdlconfig() {
echo_n "Looking for sdl-config... "
2016-11-12 12:59:06 +01:00
sdlconfigs="$SDL_CONFIG:$_sdlconfig:sdl2-config:sdl12-config:sdl11-config:sdl-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 || test `basename $path_dir` = sbin ; 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
}
2012-02-10 07:51:41 +01:00
#
# Determine freetype-config
#
find_freetypeconfig() {
echo_n "Looking for freetype-config... "
freetypeconfigs="$_freetypeconfig"
_freetypeconfig=
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="$SEPARATOR"
for path_dir in $_freetypepath; do
#reset separator to parse freetypeconfigs
IFS=":"
for freetypeconfig in $freetypeconfigs; do
if test -f "$path_dir/$freetypeconfig" ; then
_freetypeconfig="$path_dir/$freetypeconfig"
echo $_freetypeconfig
# Save the prefix
_freetypepath=$path_dir
if test `basename $path_dir` = bin ; then
_freetypepath=`dirname $path_dir`
fi
# break at first freetype-config found in path
break 2
fi
done
done
IFS="$ac_save_ifs"
if test -z "$_freetypeconfig"; then
echo "none found!"
fi
}
2016-11-12 12:59:06 +01:00
#
# Determine curl-config
#
find_libcurlconfig() {
echo_n "Looking for curl-config... "
libcurlconfigs="$_libcurlconfig"
_libcurlconfig=
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="$SEPARATOR"
for path_dir in $_libcurlpath; do
#reset separator to parse sdlconfigs
IFS=":"
for libcurlconfig in $libcurlconfigs; do
if test -f "$path_dir/$libcurlconfig" ; then
_libcurlconfig="$path_dir/$libcurlconfig"
echo $_libcurlconfig
# Save the prefix
_libcurlpath=$path_dir
if test `basename $path_dir` = bin ; then
_libcurlpath=`dirname $path_dir`
fi
# break at first curl-config found in path
break 2
fi
done
done
IFS="$ac_save_ifs"
if test -z "$_libcurlconfig"; then
echo "none found!"
fi
}
#
2009-04-04 14:43:23 +00:00
# Determine extension used for executables
#
2009-04-04 14:43:23 +00:00
get_system_exe_extension() {
case $1 in
riscos)
_exeext=",e1f"
2011-04-14 12:41:26 +02:00
;;
3ds | dreamcast | ds | gamecube | n64 | psp | switch | wii)
_exeext=".elf"
;;
2011-04-11 15:40:01 +02:00
gph-linux)
_exeext=".gph"
;;
mingw* | *os2-emx)
_exeext=".exe"
2009-04-04 14:43:23 +00:00
;;
*)
_exeext=""
;;
esac
}
#
2009-04-04 14:43:23 +00:00
# Generic options functions
#
2009-05-09 12:06:09 +00:00
# Show the configure help line for an option
option_help() {
2012-01-06 22:56:21 +01:00
if test "${3}" != "" ; then
tmpopt_prefix="${3}"
else
tmpopt_prefix="--"
fi
2009-10-05 08:33:46 +00:00
tmpopt=`echo $1 | sed 's/_/-/g'`
2012-01-06 22:56:21 +01:00
option=`echo "${tmpopt_prefix}${tmpopt} " | sed "s/\(.\{23\}\).*/\1/"`
2009-05-09 12:06:09 +00:00
echo " ${option} ${2}"
}
2009-04-04 14:43:23 +00:00
# Show an error about an unknown option
option_error() {
2012-01-06 22:56:21 +01:00
echo "error: unrecognized option: $ac_option
Try \`$0 --help' for more information." >&2
exit 1
}
# Show an error about an unknown engine
engine_option_error() {
echo "error: unrecognized engine: $1
2009-04-04 14:43:23 +00:00
Try \`$0 --help' for more information." >&2
exit 1
2008-07-25 06:32:38 +00:00
}
2012-01-06 22:56:21 +01:00
# Show an error about an invalid subengine option
subengine_option_error() {
echo "error: this option is invalid for the subengine $1: $ac_option
Try \`$0 --help' for more information." >&2
exit 1
}
2012-09-08 21:09:03 +02:00
#
# Feature handling functions
#
# Get the name of the feature
get_feature_name() {
get_var _feature_$1_name
}
# Check whether the feature is enabled
get_feature_state() {
for i in `get_var _feature_$1_settings`; do
if test `get_var $i` = "yes"; then
echo "yes"
return
fi
done
echo "no"
}
2009-05-25 20:49:53 +00:00
#
# Engine handling functions
#
# Get the name of the engine
get_engine_name() {
2009-10-05 08:33:46 +00:00
get_var _engine_$1_name
2009-05-25 20:49:53 +00:00
}
# Will this engine be built?
get_engine_build() {
2009-10-05 08:33:46 +00:00
get_var _engine_$1_build
2009-05-25 20:49:53 +00:00
}
2011-07-20 06:58:19 +02:00
# Was this engine set to be built by default?
get_engine_build_default() {
get_var _engine_$1_build_default
}
2009-05-25 20:49:53 +00:00
# Get the subengines
get_engine_subengines() {
2009-10-05 08:33:46 +00:00
get_var _engine_$1_subengines
2009-05-25 20:49:53 +00:00
}
2012-09-08 21:09:03 +02:00
# Get the dependencies
get_engine_dependencies() {
get_var _engine_$1_deps
}
2012-11-18 19:07:46 +01:00
# Get the base engine game support description
get_engine_base() {
get_var _engine_$1_base
}
2009-05-25 20:49:53 +00:00
# Ask if this is a subengine
get_engine_sub() {
2009-10-05 08:33:46 +00:00
sub=`get_var _engine_$1_sub`
2009-05-25 20:49:53 +00:00
if test -z "$sub" ; then
sub=no
fi
echo $sub
}
2012-11-18 19:07:46 +01:00
# Get a subengine's parent (undefined for non-subengines)
get_subengine_parent() {
get_var _engine_$1_parent
}
2009-05-25 20:49:53 +00:00
# Enable *all* engines
engine_enable_all() {
for engine in $_engines; do
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "yes"
2009-05-25 20:49:53 +00:00
done
}
# Disable *all* engines
engine_disable_all() {
for engine in $_engines; do
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "no"
2009-05-25 20:49:53 +00:00
done
}
# Enable all unstable engines
engine_enable_all_unstable() {
for engine in $_engines; do
engine_build_default=`get_engine_build_default $engine`
if test $engine_build_default = no ; then
set_var _engine_${engine}_build "yes"
fi
done
}
# Disable all unstable engines
engine_disable_all_unstable() {
for engine in $_engines; do
engine_build_default=`get_engine_build_default $engine`
if test $engine_build_default = no ; then
set_var _engine_${engine}_build "no"
fi
done
}
2009-05-25 20:49:53 +00:00
# Enable the given engine
engine_enable() {
# Get the parameter
2012-01-06 22:56:21 +01:00
if ( echo $1 | grep ':' ) 2> /dev/null > /dev/null ; then
eng=`echo $1 | cut -d ':' -f 1`
opt=`echo $1 | cut -d ':' -f 2`
2009-05-25 20:49:53 +00:00
else
eng=$1
opt=yes
fi
engine=`echo $eng | sed 's/-/_/g'`
# Filter the parameter for the subengines
2012-11-18 19:07:46 +01:00
if test "`get_engine_sub ${engine}`" != "no" ; then
if test "$opt" != "yes" ; then
subengine_option_error ${engine}
return
fi
parent=`get_subengine_parent ${engine}`
if test `get_engine_build ${parent}` = "no" ; then
set_var _engine_${parent}_build "yes"
fi
2009-05-25 20:49:53 +00:00
fi
if test "$opt" = "static" -o "$opt" = "dynamic" -o "$opt" = "yes" ; then
if test "`get_engine_name ${engine}`" != "" ; then
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "$opt"
2009-05-25 20:49:53 +00:00
else
2012-01-06 22:56:21 +01:00
engine_option_error ${engine}
2009-05-25 20:49:53 +00:00
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
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "no"
2009-05-25 20:49:53 +00:00
else
2012-01-06 22:56:21 +01:00
engine_option_error ${engine}
2009-05-25 20:49:53 +00:00
fi
}
2012-09-08 21:09:03 +02:00
# Check whether the engine's dependencies are met
# If that is not the case disable the engine
check_engine_deps() {
unmet_deps=""
# Check whether the engine is enabled
2012-11-18 19:07:46 +01:00
if test `get_engine_build $1` != "no" ; then
2012-09-08 21:09:03 +02:00
# Collect unmet dependencies
for dep in `get_engine_dependencies $1`; do
if test `get_feature_state $dep` = "no"; then
feature_name=`get_feature_name $dep`
unmet_deps="${unmet_deps}${feature_name} "
fi
done
# Check whether there is any unmet dependency
if test -n "$unmet_deps"; then
echo "WARNING: Disabling engine "`get_engine_name $1`" because the following dependencies are unmet: "$unmet_deps
engine_disable $1
fi
fi
}
2009-05-25 20:49:53 +00:00
# Show the configure help line for a given engine
show_engine_help() {
name=`get_engine_name $1`
2012-01-06 22:56:21 +01:00
option_help "${1}" "${name} engine" " "
2009-05-25 20:49:53 +00:00
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() {
name=`get_engine_name $1`
parent=`get_engine_name $2`
option_help "- ${1}" "${name} in ${parent} engine" " "
2009-05-25 20:49:53 +00:00
}
# 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
2011-07-20 06:58:19 +02:00
string=`get_engine_build_string $1 wip`
if test -n "$string" ; then
_engines_built_wip="${_engines_built_wip}#$string@"
fi
2009-05-25 20:49:53 +00:00
}
# Get the string about building an engine
get_engine_build_string() {
2012-11-18 19:07:46 +01:00
engine=$1
request_status=$2
2009-05-25 20:49:53 +00:00
engine_string=""
engine_build=`get_engine_build $1`
2012-11-18 19:07:46 +01:00
engine_build_default=`get_engine_build_default $engine`
2009-05-25 20:49:53 +00:00
show=no
2012-11-18 19:07:46 +01:00
# Convert static/dynamic to yes to ease the check of subengines
if test $engine_build = no; then
subengine_filter=no
else
subengine_filter=yes
fi
2009-05-25 20:49:53 +00:00
# Check if the current engine should be shown for the current status
2012-11-18 19:07:46 +01:00
if test $engine_build = $request_status ; then
2009-05-25 20:49:53 +00:00
show=yes
else
# Test for disabled sub-engines
2012-11-18 19:07:46 +01:00
if test $request_status = no ; then
for subeng in `get_engine_subengines $engine` ; do
2009-05-25 20:49:53 +00:00
if test `get_engine_build $subeng` = no ; then
2012-11-18 19:07:46 +01:00
# In this case we to display _disabled_ subengines
subengine_filter=no
2009-05-25 20:49:53 +00:00
show=yes
fi
done
fi
2011-07-20 06:58:19 +02:00
# Test for enabled wip sub-engines
2012-11-18 19:07:46 +01:00
if test $request_status = wip ; then
for subeng in `get_engine_subengines $engine` ; do
2011-07-20 06:58:19 +02:00
if test `get_engine_build $subeng` != no -a `get_engine_build_default $subeng` = no ; then
show=yes
fi
done
fi
2009-05-25 20:49:53 +00:00
fi
2011-07-20 06:58:19 +02:00
# Check if it is a wip engine
2012-11-18 19:07:46 +01:00
if test "$request_status" = "wip" -a "$engine_build" != "no" -a "$engine_build_default" = no; then
2011-07-20 06:58:19 +02:00
show=yes
fi
2009-05-25 20:49:53 +00:00
# The engine should be shown, build the string
if test $show = yes ; then
2012-11-18 19:07:46 +01:00
engine_string=`get_subengines_build_string $engine $subengine_filter $request_status`
engine_string="`get_engine_name $engine` $engine_string"
2009-05-25 20:49:53 +00:00
fi
2012-11-18 19:07:46 +01:00
echo "$engine_string"
2009-05-25 20:49:53 +00:00
}
# Get the string about building subengines
get_subengines_build_string() {
2011-07-20 06:58:19 +02:00
parent_engine=$1
2012-11-18 19:07:46 +01:00
subengine_filter=$2
request_status=$3
2011-07-20 06:58:19 +02:00
parent_engine_build_default=`get_engine_build_default $parent_engine`
2012-11-18 19:07:46 +01:00
subengine_string=""
2011-07-20 06:58:19 +02:00
2012-11-18 19:07:46 +01:00
# If the base engine isn't built at all, no need to list subengines
# in any of the possible categories.
if test `get_engine_build $parent_engine` = no; then
return
fi
2011-07-20 06:58:19 +02:00
2012-11-18 19:07:46 +01:00
all=yes
# If there are no subengines, never display "[all games]" (for brevity).
if test -z "`get_engine_subengines $parent_engine`"; then
all=no
fi
# If the base engine does not fit the category we're displaying here
# (WIP or Skipped), we should never show "[all games]"
if test "$request_status" = wip; then
if test $parent_engine_build_default = yes; then
all=no
2011-07-20 06:58:19 +02:00
fi
2012-11-18 19:07:46 +01:00
fi
if test "$request_status" = no; then
# If we're here, the parent engine is built, so no need to check that.
all=no
fi
2011-07-20 06:58:19 +02:00
2012-11-18 19:07:46 +01:00
# In the static/dynamic categories, also display the engine's base games.
if test -n "`get_engine_subengines $parent_engine`" -a $request_status != no -a $request_status != wip; then
subengine_string="[`get_engine_base $parent_engine`]"
2009-05-25 20:49:53 +00:00
fi
2012-11-18 19:07:46 +01:00
for subeng in `get_engine_subengines $parent_engine` ; do
subengine_build=`get_engine_build $subeng`
subengine_build_default=`get_engine_build_default $subeng`
2009-05-25 20:49:53 +00:00
2012-11-18 19:07:46 +01:00
# Display this subengine if it matches the filter, unless it is
# a stable subengine in the WIP request.
if test $subengine_build = $subengine_filter -a \! \( "$request_status" = wip -a "$subengine_build_default" = yes \) ; then
s="[`get_engine_name $subeng`]"
if test -n "$subengine_string"; then
subengine_string="$subengine_string $s"
else
subengine_string="$s"
fi
else
all=no
2012-01-06 22:56:21 +01:00
fi
2012-11-18 19:07:46 +01:00
done
2012-01-06 22:56:21 +01:00
2012-11-18 19:07:46 +01:00
# Summarize the full list, where applicable
if test $all = yes ; then
subengine_string="[all games]"
2012-01-06 22:56:21 +01:00
fi
2012-11-18 19:07:46 +01:00
echo "$subengine_string"
2012-01-06 22:56:21 +01:00
}
2009-05-25 20:49:53 +00:00
#
# 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
2009-05-25 20:49:53 +00:00
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:
2012-01-06 22:56:21 +01:00
-h, --help display this help and exit
--backend=BACKEND backend to build (android, sdl) [sdl]
Installation directories:
2011-04-10 21:59:04 +02:00
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, \`make install' will install all the files in
\`/usr/local/bin', \`/usr/local/lib' etc. You can specify
an installation prefix other than \`/usr/local' using \`--prefix',
for instance \`--prefix=\$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--libdir=DIR object code libraries [EPREFIX/lib]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
2011-04-11 15:40:01 +02:00
--datadir=DIR read-only architecture-independent data
2012-01-06 11:37:57 +01:00
[DATAROOTDIR/residualvm]
2011-04-10 21:59:04 +02:00
--mandir=DIR man documentation [DATAROOTDIR/man]
2012-01-06 11:37:57 +01:00
--docdir=DIR documentation root [DATAROOTDIR/doc/residualvm]
Special configuration feature:
2011-04-10 21:59:04 +02:00
--host=HOST cross-compile to target HOST (arm-linux, ...)
2014-04-05 18:18:42 +02:00
special targets: android-arm for Android ARM
android-x86 for Android x86
2012-05-03 06:42:38 +02:00
ps3 for PlayStation 3
2009-10-05 08:33:46 +00:00
Game engines:
2011-05-18 23:33:39 +02:00
--enable-all-engines enable all engines, including those which are
broken or unsupported
2009-10-05 08:33:46 +00:00
--disable-all-engines disable all engines
--enable-all-unstable-engines enable the engines which are
broken or unsupported
--disable-all-unstable-engines disable only the engines which are
broken or unsupported
2012-01-06 22:56:21 +01:00
--enable-engine=<engine name>[,<engine name>...] enable engine(s) listed
--disable-engine=<engine name>[,<engine name>...] disable engine(s) listed
--enable-engine-static=<engine name>[,<engine name>...]
2012-01-06 22:56:21 +01:00
enable engine(s) listed as static builtin (when plugins are enabled)
--enable-engine-dynamic=<engine name>[,<engine name>...]
enable engine(s) listed as dynamic plugin (when plugins are enabled)
The values of <engine name> for these options are as follows:
2009-10-05 08:33:46 +00:00
$engines_help
Optional Features:
--enable-static build a static binary instead of using shared objects
2013-07-07 15:29:33 +02:00
--enable-c++11 build as C++11 if the compiler allows that
--disable-debug disable building with debugging symbols
--enable-Werror treat warnings as errors
2011-04-11 15:40:01 +02:00
--enable-release enable building in release mode (this activates
optimizations)
2012-01-06 22:56:21 +01:00
--enable-release-mode enable building in release mode (without optimizations)
--enable-optimizations enable optimizations
--enable-asan enable Address Sanitizer for memory-related debugging
--enable-tsan enable Thread Sanitizer for thread-related debugging
2011-04-10 21:59:04 +02:00
--enable-profiling enable profiling
2009-10-05 08:33:46 +00:00
--enable-plugins enable the support for dynamic plugins
--default-dynamic make plugins dynamic by default
2012-01-06 22:56:21 +01:00
--disable-savegame-timestamp don't use timestamps for blank savegame descriptions
2011-04-11 02:28:51 +02:00
--disable-translation don't build support for translated messages
2011-07-20 06:58:19 +02:00
--disable-taskbar don't build support for taskbar and launcher integration
2016-11-12 12:59:06 +01:00
--disable-cloud don't build cloud support
--disable-system-dialogs don't build support for system dialogs
2013-07-07 15:29:33 +02:00
--enable-vkeybd build virtual keyboard support
--enable-eventrecorder enable event recording functionality
--disable-eventrecorder disable event recording functionality
2012-01-06 22:56:21 +01:00
--enable-updates build support for updates
2010-01-21 19:25:03 +00:00
--enable-text-console use text console instead of graphical console
2011-04-11 15:40:01 +02:00
--enable-verbose-build enable regular echoing of commands during build
process
--enable-tts build support for text to speech
--disable-tts don't build support for text to speech
2011-07-20 08:02:02 +02:00
--disable-bink don't build with Bink video support
--no-builtin-resources do not include additional resources (e.g. engine data, fonts)
into the ResidualVM binary
Optional Libraries:
--with-alsa-prefix=DIR prefix where alsa is installed (optional)
2010-01-21 19:25:03 +00:00
--disable-alsa disable ALSA midi sound support [autodetect]
--with-ogg-prefix=DIR prefix where libogg is installed (optional)
--disable-ogg disable Ogg support [autodetect]
--with-vorbis-prefix=DIR prefix where libvorbis is installed (optional)
--disable-vorbis disable 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-fribidi-prefix=DIR prefix where libfribidi is installed
--disable-fribidi disable libfribidi 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)
2012-01-06 22:56:21 +01:00
--disable-zlib disable zlib (compression) support [autodetect]
2011-04-11 15:40:01 +02:00
--with-mpeg2-prefix=DIR prefix where libmpeg2 is installed (optional)
2013-07-07 15:29:33 +02:00
--enable-mpeg2 enable mpeg2 codec for cutscenes [autodetect]
--with-a52-prefix=DIR Prefix where liba52 is installed (optional)
--enable-a52 enable a52 codec for MPEG decoder [autodetect]
2011-04-14 12:41:26 +02:00
--with-opengl-prefix=DIR prefix where OpenGL (ES) is installed (optional)
--disable-opengl-game disable OpenGL (ES) support in game [autodetect]
--disable-opengl-shaders disable use of modern OpenGL with shaders
--force-opengles2 only detect OpenGL ES2
2011-04-14 12:41:26 +02:00
--with-glew-prefix=DIR prefix where GLEW is installed (optional)
--disable-glew disable GLEW support [autodetect]
--with-jpeg-prefix=DIR Prefix where libjpeg is installed (optional)
2013-10-13 11:30:34 +02:00
--disable-jpeg disable JPEG decoder [autodetect]
--with-png-prefix=DIR prefix where libpng is installed (optional)
2012-01-28 10:44:25 +01:00
--disable-png disable PNG decoder [autodetect]
--with-theoradec-prefix=DIR prefix where libtheoradec is installed (optional)
2012-01-28 10:44:25 +01:00
--disable-theoradec disable Theora decoder [autodetect]
--with-faad-prefix=DIR prefix where libfaad is installed (optional)
2012-01-28 10:44:25 +01:00
--disable-faad disable AAC decoder [autodetect]
--with-fluidsynth-prefix=DIR prefix where libfluidsynth is
2011-04-11 15:40:01 +02:00
installed (optional)
2010-01-21 19:25:03 +00:00
--disable-fluidsynth disable fluidsynth MIDI driver [autodetect]
--with-sparkle-prefix=DIR prefix where sparkle is installed
(OS X/Windows only - optional)
--disable-sparkle disable sparkle automatic update support
[OS X/Windows only - autodetect]
--disable-osx-dock-plugin disable the NSDockTilePlugin support
[Mac OS X only - autodetect]
2012-01-06 22:56:21 +01:00
--with-sdl-prefix=DIR prefix where the SDL package is installed (optional)
e.g., if sdl-config script is at:
/opt/mxe/usr/i686-w64-mingw32.static/bin/sdl2-config
then you should pass:
'--with-sdl-prefix=/opt/mxe/usr/i686-w64-mingw32.static'
--with-freetype2-prefix=DIR prefix where the freetype-config script is
installed (optional)
--disable-freetype2 disable freetype2 TTF library usage [autodetect]
2012-02-10 07:51:41 +01:00
--with-nasm-prefix=DIR prefix where nasm executable is installed (optional)
--disable-nasm disable assembly language optimizations [autodetect]
--with-pandoc-format=FORMAT pandoc format to use during the conversion (optional)
--with-readline-prefix=DIR prefix where readline is installed (optional)
--disable-readline disable readline support in text console [autodetect]
--with-libunity-prefix=DIR prefix where libunity is installed (optional)
--disable-libunity disable Unity launcher integration [autodetect]
2011-07-20 06:58:19 +02:00
--with-gtk-prefix=DIR prefix where gtk is installed (optional)
--disable-gtk disable GTK dialog integration [autodetect]
--with-sndio-prefix=DIR prefix where sndio is installed (optional)
2012-07-06 22:05:21 +02:00
--disable-sndio disable sndio MIDI driver [autodetect]
--with-sdlnet-prefix=DIR prefix where SDL_Net is installed (optional)
2016-11-12 12:59:06 +01:00
--disable-sdlnet disable SDL_Net networking library [autodetect]
--with-libcurl-prefix=DIR prefix where libcurl is installed (optional)
2016-11-12 12:59:06 +01:00
--disable-libcurl disable libcurl networking library [autodetect]
--with-iconv-prefix=DIR prefix where libiconv is installed (optional)
--disable-iconv disable libiconv encoding conversion library [autodetect]
--with-discord-prefix=DIR prefix where discord-rpc is installed (optional)
--disable-discord disable Discord rich presence integration [autodetect]
Some influential environment variables:
AR archiver command
AS assembler command
ASFLAGS assembler flags
CONFIGURE_NO_HOST Ignore the cross-compile target set by the --host= option
CPPFLAGS C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
DWP DWARF packing utility command
LD linker command
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
PKG_CONFIG_LIBDIR list of directories where pkg-config .pc files are
looked up
RANLIB archive indexer command
SDL_CONFIG SDL configurer script name (not path)
STRIP symbol stripper command
WINDRES Windows resource compiler command
WINDRESFLAGS Windows resource compiler flags
EOF
exit 0
fi
done # for parm in ...
#
# If we're not showing help, greet the user and start the log file
#
echo "Running ResidualVM configure..."
echo "Configure run on" `date` > $TMPLOG
cat >> $TMPLOG <<EOF
Invocation command line was:
$0 $@
Saved environment variables:
AR="$SAVED_AR" AS="$SAVED_AS" ASFLAGS="$SAVED_ASFLAGS" CPPFLAGS="$SAVED_CPPFLAGS" CXX="$SAVED_CXX" CXXFLAGS="$SAVED_CXXFLAGS" DWP="$SAVED_DWP" LD="$SAVED_LD" LDFLAGS="$SAVED_LDFLAGS" PKG_CONFIG_LIBDIR="$SAVED_PKG_CONFIG_LIBDIR" RANLIB="$SAVED_RANLIB" SDL_CONFIG="$SAVED_SDL_CONFIG" STRIP="$SAVED_STRIP" WINDRES="$SAVED_WINDRES" WINDRESFLAGS="$SAVED_WINDRESFLAGS"
EOF
for ac_option in $@; do
case "$ac_option" in
# Silently ignore options valid for Autotools configure.
--build=*) ;;
--program-prefix=*) ;;
--sbindir=*) ;;
--sysconfdir=*) ;;
--includedir=*) ;;
--libexecdir=*) ;;
--localstatedir=*) ;;
--sharedstatedir=*) ;;
--infodir=*) ;;
--disable-dependency-tracking) ;;
--enable-dependency-tracking) ;;
# End of ignored options.
--enable-static) _static_build=yes ;;
# --disable-16bit) _16bit=no ;; #ResidualVM: not supported
# --enable-highres) _highres=yes ;; #ResidualVM: not supported
# --disable-highres) _highres=no ;; #ResidualVM: not supported
2012-01-06 22:56:21 +01:00
--disable-savegame-timestamp) _savegame_timestamp=no ;;
# --disable-scalers) _build_scalers=no ;; #ResidualVM: not supported
# --disable-hq-scalers) _build_hq_scalers=no ;; #ResidualVM: not supported
--enable-alsa) _alsa=yes ;;
--disable-alsa) _alsa=no ;;
--enable-seq-midi) _seq_midi=yes ;;
--disable-seq-midi) _seq_midi=no ;;
--enable-sndio) _sndio=yes ;;
--disable-sndio) _sndio=no ;;
--enable-timidity) _timidity=yes ;;
--disable-timidity) _timidity=no ;;
--enable-ogg) _ogg=yes ;;
--disable-ogg) _ogg=no ;;
--enable-vorbis) _vorbis=yes ;;
--disable-vorbis) _vorbis=no ;;
--enable-tremor) _tremor=yes ;;
--disable-tremor) _tremor=no ;;
--enable-opl2lpt) _opl2lpt=yes ;;
--disable-opl2lpt) _opl2lpt=no ;;
--enable-flac) _flac=yes ;;
--disable-flac) _flac=no ;;
--enable-mad) _mad=yes ;;
--disable-mad) _mad=no ;;
--enable-fribidi) _fribidi=yes ;;
--disable-fribidi) _fribidi=no ;;
--enable-test-c++11) _test_cxx11=yes ;;
--disable-test-c++11) _test_cxx11=no ;;
--enable-zlib) _zlib=yes ;;
--disable-zlib) _zlib=no ;;
--enable-sparkle) _sparkle=yes ;;
--disable-sparkle) _sparkle=no ;;
--enable-osx-dock-plugin) _osxdockplugin=yes ;;
--disable-osx-dock-plugin) _osxdockplugin=no ;;
--enable-nasm) _nasm=yes ;;
--disable-nasm) _nasm=no ;;
--enable-mpeg2) _mpeg2=yes ;;
--disable-mpeg2) _mpeg2=no ;;
--enable-a52) _a52=yes ;;
--disable-a52) _a52=no ;;
--disable-jpeg) _jpeg=no ;;
--enable-jpeg) _jpeg=yes ;;
--disable-png) _png=no ;;
--enable-png) _png=yes ;;
--disable-theoradec) _theoradec=no ;;
--enable-theoradec) _theoradec=yes ;;
--disable-faad) _faad=no ;;
--enable-faad) _faad=yes ;;
--disable-fluidsynth) _fluidsynth=no ;;
--enable-readline) _readline=yes ;;
--disable-readline) _readline=no ;;
--enable-freetype2) _freetype2=yes ;;
--disable-freetype2) _freetype2=no ;;
--enable-taskbar) _taskbar=yes ;;
--disable-taskbar) _taskbar=no ;;
--enable-system-dialogs) _dialogs=yes ;;
--disable-system-dialogs) _dialogs=no ;;
--enable-sdlnet) _sdlnet=yes ;;
--disable-sdlnet) _sdlnet=no ;;
--enable-libcurl) _libcurl=yes ;;
--disable-libcurl) _libcurl=no ;;
--enable-cloud) _cloud=yes ;;
--disable-cloud) _cloud=no ;;
--enable-updates) _updates=yes ;;
--disable-updates) _updates=no ;;
--enable-libunity) _libunity=yes ;;
--disable-libunity) _libunity=no ;;
--enable-tts) _tts=yes ;;
--disable-tts) _tts=no ;;
--enable-gtk) _gtk=yes ;;
--disable-gtk) _gtk=no ;;
--enable-glew) _glew=yes ;; #ResidualVM specific option
--disable-glew) _glew=no ;; #ResidualVM specific option
--enable-opengl-game) _opengl_game=yes ;; #ResidualVM specific option
--disable-opengl-game) _opengl_game=no ;; #ResidualVM specific option
--enable-opengl-shaders) _opengl_shaders=yes ;; #ResidualVM specific option
--disable-opengl-shaders) _opengl_shaders=no ;; #ResidualVM specific option
--force-opengles2) _opengles2=yes ;; #ResidualVM specific option
--enable-bink) _bink=yes ;;
--disable-bink) _bink=no ;;
--enable-discord) _discord=yes ;;
--disable-discord) _discord=no ;;
# --opengl-mode=*)
# _opengl_mode=`echo $ac_option | cut -d '=' -f 2`
# ;; #ResidualVM: not supported
--enable-verbose-build) _verbose_build=yes ;;
--enable-plugins) _dynamic_modules=yes ;;
--default-dynamic) _plugins_default=dynamic;;
# --enable-mt32emu) _mt32emu=yes ;; #ResidualVM: not supported
# --disable-mt32emu) _mt32emu=no ;; #ResidualVM: not supported
# --enable-lua) _lua=yes ;; #ResidualVM: not supported
# --disable-lua) _lua=no ;; #ResidualVM: not supported
# --enable-nuked-opl) _nuked_opl=yes ;; #ResidualVM: not supported
# --disable-nuked-opl) _nuked_opl=no ;; #ResidualVM: not supported
--enable-translation) _translation=yes ;;
--disable-translation) _translation=no ;;
--enable-vkeybd) _vkeybd=yes ;;
--disable-vkeybd) _vkeybd=no ;;
# --enable-eventrecorder) _eventrec=yes ;; #ResidualVM: not supported
# --disable-eventrecorder) _eventrec=no ;; #ResidualVM: not supported
--enable-text-console) _text_console=yes ;;
--disable-text-console) _text_console=no ;;
--enable-iconv) _iconv=yes ;;
--disable-iconv) _iconv=no ;;
2010-01-21 19:25:03 +00:00
--with-fluidsynth-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
FLUIDSYNTH_CFLAGS="-I$arg/include"
FLUIDSYNTH_LIBS="-L$arg/lib"
;;
2011-05-01 17:49:40 +02:00
--with-mpeg2-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
MPEG2_CFLAGS="-I$arg/include"
MPEG2_LIBS="-L$arg/lib"
;;
--with-a52-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
A52_CFLAGS="-I$arg/include"
A52_LIBS="-L$arg/lib"
;;
2010-01-21 19:25:03 +00:00
--with-alsa-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
ALSA_CFLAGS="-I$arg/include"
ALSA_LIBS="-L$arg/lib"
;;
2012-07-06 22:05:21 +02:00
--with-sndio-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
SNDIO_CFLAGS="-I$arg/include"
SNDIO_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-ieee1284-prefix=*) ;; #ResidualVM: not supported
# arg=`echo $ac_option | cut -d '=' -f 2`
# IEEE1284_CFLAGS="-I$arg/include"
# IEEE1284_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-fribidi-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
FRIBIDI_CFLAGS="-I$arg/include"
FRIBIDI_LIBS="-L$arg/lib"
;;
2013-10-13 11:30:34 +02:00
--with-jpeg-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
JPEG_CFLAGS="-I$arg/include"
JPEG_LIBS="-L$arg/lib"
;;
2012-01-28 10:44:25 +01:00
--with-png-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
PNG_CFLAGS="-I$arg/include"
PNG_LIBS="-L$arg/lib"
;;
--with-theoradec-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
THEORADEC_CFLAGS="-I$arg/include"
THEORADEC_LIBS="-L$arg/lib"
;;
--with-faad-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
FAAD_CFLAGS="-I$arg/include"
FAAD_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"
;;
2012-01-06 22:56:21 +01:00
--with-sparkle-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_sparklepath=$arg
2012-01-06 22:56:21 +01:00
;;
--with-readline-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
READLINE_CFLAGS="-I$arg/include"
READLINE_LIBS="-L$arg/lib"
;;
2011-07-20 08:02:02 +02:00
--with-libunity-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
LIBUNITY_CFLAGS="-I$arg/include"
LIBUNITY_LIBS="-L$arg/lib"
;;
--with-gtk-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
GTK_CFLAGS="-I$arg/include"
GTK_LIBS="-L$arg/lib"
;;
--with-sdlnet-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
SDL_NET_CFLAGS="-I$arg/include"
SDL_NET_LIBS="-L$arg/lib"
;;
#ResidualVM: specific option
--with-opengl-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
OPENGL_CFLAGS="-I$arg/include"
OPENGL_LIBS="-L$arg/lib"
;;
#ResidualVM: specific option
--with-glew-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
GLEW_CFLAGS="-I$arg/include"
GLEW_LIBS="-L$arg/lib"
;;
--with-iconv-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
ICONV_CFLAGS="-I$arg/include"
ICONV_LIBS="-L$arg/lib"
;;
--with-discord-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
DISCORD_CFLAGS="-I$arg/include"
DISCORD_LIBS="-L$arg/lib"
;;
--backend=*)
_backend=`echo $ac_option | cut -d '=' -f 2`
;;
2013-07-07 15:29:33 +02:00
--enable-c++11)
_use_cxx11=yes
;;
--disable-c++11)
_use_cxx11=no
;;
--enable-debug)
_debug_build=yes
;;
--disable-debug)
_debug_build=no
;;
--enable-Werror)
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-Werror"
;;
2012-01-06 22:56:21 +01:00
--enable-release-mode)
_release_build=yes
;;
--disable-release-mode)
_release_build=no
;;
--enable-release)
_release_build=yes
2012-01-06 22:56:21 +01:00
_optimizations=yes
_updates=yes
;;
--disable-release)
_release_build=no
2012-01-06 22:56:21 +01:00
_optimizations=no
;;
--enable-optimizations)
_optimizations=yes
;;
--disable-optimizations)
_optimizations=no
;;
2008-07-18 20:52:11 +00:00
--enable-profiling)
2011-04-10 21:59:04 +02:00
_enable_prof=yes
2008-07-18 20:52:11 +00:00
;;
--enable-asan)
_enable_asan=yes
;;
--enable-tsan)
_enable_tsan=yes
;;
--no-builtin-resources)
_builtin_resources=no
;;
--with-sdl-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_sdlpath="$arg:$arg/bin"
;;
2012-02-10 07:51:41 +01:00
--with-freetype2-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_freetypepath="$arg:$arg/bin"
;;
--with-libcurl-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_libcurlpath="$arg:$arg/bin"
;;
--with-nasm-prefix=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_nasmpath="$arg:$arg/bin"
;;
--with-pandoc-format=*)
arg=`echo $ac_option | cut -d '=' -f 2`
_pandocformat="$arg"
_pandoc=yes
;;
2009-04-04 14:43:23 +00:00
--with-staticlib-prefix=*)
_staticlibpath=`echo $ac_option | cut -d '=' -f 2`
;;
--with-xcodetools-path=*)
_xcodetoolspath=`echo $ac_option | cut -d '=' -f 2`
;;
--host=*)
if test -z "$CONFIGURE_NO_HOST"; then
_host=`echo $ac_option | cut -d '=' -f 2`
else
echo "Ignoring --host option!" >&2
fi
;;
--prefix=*)
2011-04-10 21:59:04 +02:00
prefix=`echo $ac_option | cut -d '=' -f 2`
;;
2011-04-14 12:41:26 +02:00
--exec-prefix=*)
exec_prefix=`echo $ac_option | cut -d '=' -f 2`
;;
--bindir=*)
2011-04-10 21:59:04 +02:00
bindir=`echo $ac_option | cut -d '=' -f 2`
;;
2011-04-14 12:41:26 +02:00
--libdir=*)
libdir=`echo $ac_option | cut -d '=' -f 2`
2011-04-10 21:59:04 +02:00
;;
--datarootdir=*)
datarootdir=`echo $ac_option | cut -d '=' -f 2`
;;
--datadir=*)
2011-04-10 21:59:04 +02:00
datadir=`echo $ac_option | cut -d '=' -f 2`
;;
2011-04-14 12:41:26 +02:00
--mandir=*)
mandir=`echo $ac_option | cut -d '=' -f 2`
;;
--docdir=*)
docdir=`echo $ac_option | cut -d '=' -f 2`
;;
2009-05-25 20:49:53 +00:00
--enable-all-engines)
engine_enable_all
;;
--disable-all-engines)
engine_disable_all
;;
--enable-all-unstable-engines)
engine_enable_all_unstable
;;
--disable-all-unstable-engines)
engine_disable_all_unstable
;;
2012-01-06 22:56:21 +01:00
--enable-engine=* | --enable-engines=*)
for engine_name in `echo $ac_option | cut -d '=' -f 2- | tr ',' '\n'`; do
engine_enable "${engine_name}"
done
;;
--enable-engine-static=* | --enable-engines-static=*)
for engine_name in `echo $ac_option | cut -d '=' -f 2- | tr ',' '\n'`; do
engine_enable "${engine_name}:static"
done
;;
--enable-engine-dynamic=* | --enable-engines-dynamic=*)
for engine_name in `echo $ac_option | cut -d '=' -f 2- | tr ',' '\n'`; do
engine_enable "${engine_name}:dynamic"
done
;;
2012-01-06 22:56:21 +01:00
--disable-engine=* | --disable-engines=*)
for engine_name in `echo $ac_option | cut -d '=' -f 2 | tr ',' '\n'`; do
engine_disable ${engine_name}
done
;;
*)
option_error
;;
esac;
done;
2009-04-04 14:43:23 +00:00
guessed_host=`$_srcdir/config.guess`
get_system_exe_extension $guessed_host
NATIVEEXEEXT=$_exeext
case $_host in
3ds)
_host_os=3ds
_host_cpu=arm
_host_alias=arm-none-eabi
test "x$prefix" = xNONE && prefix=romfs:
datarootdir='${prefix}'
datadir='${datarootdir}'
docdir='${prefix}/doc'
;;
android-arm-v7a | ouya)
2011-04-11 15:40:01 +02:00
_host_os=android
_host_cpu=arm
2011-04-14 12:41:26 +02:00
_host_alias=arm-linux-androideabi
2011-04-11 15:40:01 +02:00
;;
android-arm64-v8a)
_host_os=android
_host_cpu=aarch64
_host_alias=aarch64-linux-android
;;
2014-04-05 18:18:42 +02:00
android-x86)
_host_os=android
_host_cpu=i686
_host_alias=i686-linux-android
;;
android-x86_64)
_host_os=android
_host_cpu=x86_64
_host_alias=x86_64-linux-android
;;
androidsdl-armeabi | androidsdl-armeabi-v7a)
_host_os=androidsdl
_host_cpu=arm
_host_alias=arm-linux-androideabi
;;
androidsdl-arm64-v8a)
_host_os=androidsdl
_host_cpu=aarch64
_host_alias=aarch64-linux-android
;;
androidsdl-mips)
_host_os=androidsdl
_host_cpu=mipsel
_host_alias=mipsel-linux-android
;;
androidsdl-x86)
_host_os=androidsdl
_host_cpu=i686
_host_alias=i686-linux-android
;;
2016-11-12 12:59:06 +01:00
androidsdl-x86_64)
_host_os=androidsdl
_host_cpu=x86_64
_host_alias=x86_64-linux-android
;;
arm-vfp-riscos)
_host_os=riscos
_host_cpu=arm
_host_alias=arm-unknown-riscos
2020-09-12 19:40:51 +02:00
datarootdir='/\<ResidualVM\$$Dir\>'
datadir='${datarootdir}/data'
docdir='${datarootdir}/docs'
;;
arm-*riscos)
_host_os=riscos
_host_cpu=arm
_host_alias=$_host
2018-11-24 22:20:25 +00:00
datarootdir='/\<ResidualVM\$$Dir\>'
datadir='${datarootdir}/data'
docdir='${datarootdir}/docs'
;;
2015-12-22 00:24:01 +01:00
raspberrypi)
_host_os=linux
_host_cpu=arm
# This tuple is the one used by the official Rpi toolchain.
# It may change in the future.
_host_alias=arm-linux-gnueabihf
2015-12-22 00:24:01 +01:00
;;
2011-04-11 15:40:01 +02:00
caanoo)
_host_os=gph-linux
_host_cpu=arm
_host_alias=arm-none-linux-gnueabi
;;
2014-12-04 20:46:56 +01:00
dingux | gcw0)
2011-04-11 15:40:01 +02:00
_host_os=linux
_host_cpu=mipsel
_host_alias=mipsel-linux
;;
dreamcast)
_host_os=dreamcast
_host_cpu=sh
_host_alias=sh-elf
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-ml -m4-single-only"
append_var LDFLAGS "-ml -m4-single-only"
;;
2011-04-11 15:40:01 +02:00
ds)
_host_os=ds
_host_cpu=arm
_host_alias=arm-none-eabi
2011-04-11 15:40:01 +02:00
;;
gamecube)
_host_os=gamecube
2015-01-25 19:31:35 +01:00
_host_cpu=powerpc
2014-01-25 22:16:57 +01:00
_host_alias=powerpc-eabi
;;
2009-04-04 14:43:23 +00:00
gp2x)
2011-04-11 15:40:01 +02:00
_host_os=gph-linux
2009-04-04 14:43:23 +00:00
_host_cpu=arm
_host_alias=arm-open2x-linux
;;
gp2xwiz)
2011-04-11 15:40:01 +02:00
_host_os=gph-linux
_host_cpu=arm
_host_alias=arm-open2x-linux
;;
i586-mingw32msvc)
_host_os=mingw32msvc
_host_cpu=i586
;;
iphone)
_host_os=iphone
_host_cpu=arm
2009-04-04 14:43:23 +00:00
_host_alias=arm-apple-darwin9
;;
2016-01-30 21:18:08 +01:00
ios7)
_host_os=iphone
_host_cpu=arm
_host_alias=arm-apple-darwin11
;;
2012-01-06 22:56:21 +01:00
maemo)
_host_os=maemo
_host_cpu=arm
_host_alias=arm-none-linux-gnueabi
2012-01-06 22:56:21 +01:00
# The prefix is always the same on Maemo so we hardcode the default
# here. It is still possible to define a custom prefix which is
# needed when packaging the app with a user-specific app ID.
2015-08-16 08:49:02 +02:00
test "x$prefix" = xNONE && prefix=/opt/residualvm
2012-01-06 22:56:21 +01:00
# Maemo apps are installed into app-specific directories. The
# default directory structure of ScummVM makes no sense here so we
# hardcode Maemo specific directories here.
datarootdir='${prefix}/share'
2015-08-16 08:49:02 +02:00
datadir=/opt/residualvm/share
docdir='${datarootdir}/doc/residualvm'
2012-01-06 22:56:21 +01:00
;;
2011-04-14 12:41:26 +02:00
n64)
2011-04-11 15:40:01 +02:00
_host_os=n64
_host_cpu=mips
_host_alias=mips64
2009-10-05 08:33:46 +00:00
;;
neuros)
_host_os=linux
_host_cpu=arm
;;
2011-04-11 15:40:01 +02:00
openpandora)
_host_os=linux
_host_cpu=arm
_host_alias=arm-angstrom-linux-gnueabi
;;
ppc-amigaos)
_host_os=amigaos
2015-01-25 19:31:35 +01:00
_host_cpu=powerpc
_host_alias=$_host
2009-04-04 14:43:23 +00:00
;;
ppc-morphos)
_host_os=morphos
_host_cpu=powerpc
_host_alias=$_host
;;
2011-07-20 06:58:19 +02:00
ps3)
_host_os=ps3
2015-01-25 19:31:35 +01:00
_host_cpu=powerpc
2011-07-20 06:58:19 +02:00
_host_alias=powerpc64-ps3-elf
2012-01-06 22:56:21 +01:00
2011-07-20 06:58:19 +02:00
# The prefix is always the same on PS3 so we hardcode the default
# here. It is still possible to define a custom prefix which is
# needed when packaging the app with a user-specific app ID.
2012-04-17 15:54:35 +02:00
test "x$prefix" = xNONE && prefix=/dev_hdd0/game/RESI12000/USRDIR
2012-01-06 22:56:21 +01:00
# PS3 apps are installed into app-specific directories. The
2011-07-20 06:58:19 +02:00
# default directory structure of ScummVM makes no sense here so we
# hardcode PS3 specific directories here.
datarootdir='${prefix}/data'
datadir='${datarootdir}'
docdir='${prefix}/doc'
;;
psp2)
_host_os=psp2
_host_cpu=arm
_host_alias=arm-vita-eabi
# The prefix is always the same on PSP2 so we hardcode the default
# here. It is still possible to define a custom prefix which is
# needed when packaging the app with a user-specific app ID.
test "x$prefix" = xNONE && prefix=app0:
# PSP2 apps are installed into app-specific directories. The
# default directory structure of ScummVM makes no sense here so we
# hardcode PSP2 specific directories here.
datarootdir='${prefix}/data'
datadir='${datarootdir}'
docdir='${prefix}/doc'
;;
psp)
_host_os=psp
_host_cpu=mipsallegrexel
_host_alias=psp
;;
samsungtv)
_host_os=linux
_host_cpu=arm
2011-04-10 21:59:04 +02:00
_host_alias=arm-linux-gnueabi
;;
switch)
_host_os=switch
_host_cpu=aarch64
_host_alias=aarch64-none-elf
test "x$prefix" = xNONE && prefix=.
datarootdir='${prefix}/data'
datadir='${datarootdir}'
docdir='${prefix}/doc'
# Switch SDK has C++11 constructs so we must enable it
_use_cxx11=yes
;;
wii)
_host_os=wii
2015-01-25 19:31:35 +01:00
_host_cpu=powerpc
2014-01-25 22:16:57 +01:00
_host_alias=powerpc-eabi
;;
*)
2009-04-04 14:43:23 +00:00
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/'`
2009-04-04 14:43:23 +00:00
_host_os=`echo $guessed_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
;;
esac
2009-04-04 14:43:23 +00:00
if test -z "$_host_alias"; then
_host_alias="$_host_cpu-$_host_os"
2009-10-05 08:33:46 +00:00
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"
_dwp=$_host_alias-dwp
2009-10-05 08:33:46 +00:00
_windres=$_host_alias-windres
2009-04-04 14:43:23 +00:00
fi
2011-06-09 11:17:15 +02:00
case $_host in
arm-*riscos | caanoo | gp2x | gp2xwiz | openpandora | psp | psp2 | switch)
2011-06-09 11:17:15 +02:00
if test "$_debug_build" = auto; then
2013-07-07 15:29:33 +02:00
# If you want to debug one of these platforms, use '--disable-optimizations --enable-debug'
2011-06-09 11:17:15 +02:00
_debug_build=no
fi
2012-01-06 22:56:21 +01:00
if test "$_optimizations" = auto; then
# Enable optimizations by default.
_optimizations=yes
fi
2011-06-09 11:17:15 +02:00
;;
esac
#
# Determine extension used for executables
#
get_system_exe_extension $_host_os
2011-04-14 12:41:26 +02:00
HOSTEXEPRE=
2009-04-04 14:43:23 +00:00
HOSTEXEEXT=$_exeext
#
# Determine separator used for $PATH
#
case $_host_os in
2011-04-14 12:41:26 +02:00
os2-emx*)
SEPARATOR=";"
;;
2011-04-14 12:41:26 +02:00
*)
SEPARATOR=":"
;;
esac
2009-04-04 14:43:23 +00:00
#
# Platform specific sanity checks
#
case $_host_os in
2011-04-11 15:40:01 +02:00
android)
if test -z "$ANDROID_SDK"; then
echo "Please set ANDROID_SDK in your environment. export ANDROID_SDK=<path to Android SDK>"
exit 1
2011-04-11 15:40:01 +02:00
fi
if test -z "$ANDROID_NDK"; then
echo "Please set ANDROID_NDK in your environment. export ANDROID_NDK=<path to Android NDK>"
exit 1
fi
ndk_version=$(sed -En -e 's/^Pkg.Revision *= *([0-9a-f]+).*/\1/p' "$ANDROID_NDK/source.properties")
if [ -z "$ndk_version" -o "$ndk_version" -lt 18 ]; then
echo "Need Android NDK r18 or later to compile! Found version '$ndk_version'"
exit 1
fi
2012-01-06 22:56:21 +01:00
;;
3ds | ds | gamecube | switch | wii)
2009-04-04 14:43:23 +00:00
if test -z "$DEVKITPRO"; then
echo "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to devkitPRO>"
exit 1
fi
;;
dreamcast)
if test -z "$RONINDIR"; then
echo "Please set RONINDIR in your environment. export RONINDIR=<path to libronin>"
exit 1
fi
;;
2011-04-11 15:40:01 +02:00
n64)
if test -z "$N64SDK"; then
echo "Please set N64SDK in your environment. export N64SDK=<path to n64 sdk>"
exit 1
fi
;;
2011-07-20 06:58:19 +02:00
ps3)
if test -z "$PS3DEV"; then
echo "Please set PS3DEV in your environment. export PS3DEV=<path to ps3 toolchain>"
exit 1
fi
2012-05-03 05:51:15 +02:00
if test -z "$PSL1GHT"; then
echo "Please set PSL1GHT in your environment. export PSL1GHT=<path to psl1ght>"
exit 1
fi
2011-07-20 06:58:19 +02:00
;;
psp2)
if test -z "$VITASDK"; then
echo "Please set VITASDK in your environment. export VITASDK=<path to psp2 toolchain>"
exit 1
fi
;;
2009-04-04 14:43:23 +00:00
psp)
2011-06-09 11:17:15 +02:00
if test -z "$PSPDEV"; then
PSPDEV=`psp-config --pspdev-path`
fi
# TODO: Should we also insist on a valid PSPDEV value?
2010-01-21 19:25:03 +00:00
if test -z "$PSPSDK"; then
2011-06-09 11:17:15 +02:00
PSPSDK=`psp-config --pspsdk-path`
fi
if test -z "$PSPSDK"; then
echo "Please set PSPSDK in your environment. export PSPSDK=<path to psp sdk>"
2010-01-21 19:25:03 +00:00
exit 1
fi
# These have to be set early because the compiler will not link successfully
# during testing otherwise
if test -d "$PSPDEV/psp/lib"; then
append_var LDFLAGS "-L$PSPDEV/psp/lib"
fi
append_var LDFLAGS "-L$PSPSDK/lib"
append_var LDFLAGS "-specs=$_srcdir/backends/platform/psp/psp.spec"
2010-01-21 19:25:03 +00:00
;;
riscos)
if test -z "$GCCSDK_INSTALL_ENV"; then
echo "Please set GCCSDK_INSTALL_ENV in your environment. export GCCSDK_INSTALL_ENV=<path to GCCSDK_INSTALL_ENV>"
exit 1
fi
if test -e "$GCCSDK_INSTALL_ENV/bin/tokenize"; then
add_line_to_config_mk "TOKENIZE := $GCCSDK_INSTALL_ENV/bin/tokenize"
elif `which tokenize >/dev/null 2>&1`; then
add_line_to_config_mk "TOKENIZE := tokenize"
fi
if test -e "$GCCSDK_INSTALL_ENV/bin/bindhelp"; then
add_line_to_config_mk "BINDHELP := $GCCSDK_INSTALL_ENV/bin/bindhelp"
elif `which bindhelp >/dev/null 2>&1`; then
add_line_to_config_mk "BINDHELP := bindhelp"
fi
;;
2009-04-04 14:43:23 +00:00
*)
;;
esac
#
# Determine the C++ compiler
#
echo_n "Looking for C++ compiler... "
2009-04-04 14:43:23 +00:00
# Check whether the given command is a working C++ compiler
test_compiler() {
2011-04-10 21:59:04 +02:00
cat > tmp_cxx_compiler.cpp << EOF
2009-04-04 14:43:23 +00:00
class Foo { int a; };
int main(int argc, char **argv) {
Foo *a = new Foo(); delete a; return 0;
}
EOF
2011-04-10 21:59:04 +02:00
echo "testing compiler: $1" >> "$TMPLOG"
2009-04-04 14:43:23 +00:00
if test -n "$_host"; then
# In cross-compiling mode, we cannot run the result
eval "$1 $CXXFLAGS -o $TMPO.o -c tmp_cxx_compiler.cpp" 2>> "$TMPLOG" && cc_check_clean tmp_cxx_compiler.cpp
2009-04-04 14:43:23 +00:00
else
eval "$1 $CXXFLAGS $LDFLAGS -o $TMPO$HOSTEXEEXT tmp_cxx_compiler.cpp" 2>> "$TMPLOG" && eval "$TMPO$HOSTEXEEXT 2>> $TMPLOG" && cc_check_clean tmp_cxx_compiler.cpp
2009-04-04 14:43:23 +00:00
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
2009-04-04 14:43:23 +00:00
else
if test -n "$_host"; then
compilers="$_host_alias-g++ $_host_alias-c++ $_host-g++ $_host-c++"
else
compilers="g++ c++"
fi
2009-04-04 14:43:23 +00:00
# Iterate over all candidates, pick the first working one
CXX=
for compiler in $compilers; do
if test_compiler $compiler; then
2011-04-11 15:40:01 +02:00
echo "success testing compiler: $compiler" >> "$TMPLOG"
2009-04-04 14:43:23 +00:00
CXX=$compiler
echo $CXX
break
2011-04-11 11:41:07 +02:00
else
2011-04-11 15:40:01 +02:00
echo "failure testing compiler: $compiler" >> "$TMPLOG"
2009-04-04 14:43:23 +00:00
fi
done
fi
if test -z "$CXX"; then
echo "none found!"
exit 1
fi
if test -n "$RANLIB"; then
_ranlib=$RANLIB
fi
if test -n "$STRIP"; then
_strip=$STRIP
fi
if test -n "$AR"; then
_ar="$AR cru"
fi
if test -n "$AS"; then
_as=$AS
fi
if test -n "$DWP"; then
_dwp=$DWP
fi
if test -n "$WINDRES"; then
_windres=$WINDRES
fi
2010-01-21 19:25:03 +00:00
LD=$CXX
#
# Determine the compiler version
2009-04-04 14:43:23 +00:00
#
echocheck "compiler version"
2016-01-01 23:09:40 +01:00
# Some compilers pretend to be gcc to ease compatibility with
# common Linux etc. programs. We first check for some of these here.
have_gcc=no
cc_check_define __GNUC__ && have_gcc=yes
2011-04-14 12:41:26 +02:00
have_icc=no
cc_check_define __INTEL_COMPILER && have_icc=yes
2016-01-01 23:09:40 +01:00
have_clang=no
cc_check_define __clang__ && have_clang=yes
2011-04-14 12:41:26 +02:00
if test "$have_icc" = yes; then
add_line_to_config_mk 'HAVE_ICC = 1'
2016-01-01 23:09:40 +01:00
# Make ICC error out on unknown command line options instead of printing
2011-04-14 12:41:26 +02:00
# a warning. This is for example required to make the -Wglobal-destructors
# detection work correctly.
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-diag-error 10006,10148"
2016-01-01 23:09:40 +01:00
# ICC doesn't accept all gcc options, so we disable have_gcc, even if
# ICC does have the gcc-compatibility defines.
have_gcc=no
2011-04-14 12:41:26 +02:00
fi
2016-01-01 23:09:40 +01:00
if test "$have_clang" = yes; then
add_line_to_config_mk 'HAVE_CLANG = 1'
# clang does accept all gcc options we use, so we keep have_gcc
fi
2011-04-10 21:59:04 +02:00
if test "$have_gcc" = yes; then
add_line_to_config_mk 'HAVE_GCC = 1'
_cxx_major=`gcc_get_define __GNUC__`
_cxx_minor=`gcc_get_define __GNUC_MINOR__`
cxx_version="`( $CXX -dumpversion ) 2>&1`"
2016-01-01 23:09:40 +01:00
if test "$have_clang" = yes; then
# Clang sets a gcc version number for compatibility.
# We keep that as _cxx_minor/_cxx_major for later
# compiler version checks.
# For the version reported in the configure log (cxx_version),
# we get the actual clang version.
cxx_version=`gcc_get_define __clang_version__`
cxx_version="`echo "${cxx_version}" | sed -e 's/"\([^ ]*\) .*/\1/'`"
cxx_version="clang $cxx_version, ok"
elif test "$_cxx_major" -eq 2 && test "$_cxx_minor" -ge 95 || \
2011-04-10 21:59:04 +02:00
test "$_cxx_major" -gt 2 ; then
cxx_version="$cxx_version, ok"
cxx_verc_fail=no
else
cxx_version="$cxx_version, bad"
cxx_verc_fail=yes
fi
2011-04-14 12:41:26 +02:00
elif test "$have_icc" = yes; then
cxx_version="`( $CXX -dumpversion ) 2>/dev/null`"
_cxx_major="`echo "${cxx_version}" | sed -ne 's/\([0-9][0-9]*\)\..*/\1/gp'`"
_cxx_minor="`echo "${cxx_version}" | sed -ne 's/[0-9][0-9]*\.\([0-9][0-9]*\)/\1/gp'`"
cxx_version="ICC $cxx_version, ok"
2011-04-10 21:59:04 +02:00
else
# TODO: Big scary warning about unsupported compilers
2009-10-05 08:33:46 +00:00
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
2009-10-05 08:33:46 +00:00
case $_host_os in
irix*)
case $cxx_version in
7.4.4*)
2011-04-10 21:59:04 +02:00
# We just assume this is SGI MIPSpro
2009-10-05 08:33:46 +00:00
_cxx_major=7
_cxx_minor=4
2011-04-10 21:59:04 +02:00
cxx_verc_fail=no
2009-10-05 08:33:46 +00:00
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
;;
*)
2009-10-05 08:33:46 +00:00
cxx_version="$cxx_version, bad"
cxx_verc_fail=yes
;;
esac
fi
echo "$cxx_version"
2011-06-09 11:17:15 +02:00
#
2012-01-06 22:56:21 +01:00
# Bail out now if no useable compiler was found.
2011-06-09 11:17:15 +02:00
#
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
2013-07-07 15:29:33 +02:00
#
# Check whether the compiler supports C++11
#
have_cxx11=no
cat > $TMPC << EOF
int main(int argc, char *argv[]) { if (argv == nullptr) return -1; else return 0; }
EOF
cc_check -std=c++11 && have_cxx11=yes
if test "$_use_cxx11" = "yes" ; then
_use_cxx11=$have_cxx11
fi
2011-06-09 11:17:15 +02:00
#
# Setup compiler specific CXXFLAGS now that we know the compiler version.
# Foremost, this means enabling various warnings.
# In addition, we set CXX_UPDATE_DEP_FLAG for GCC >= 3.0 and for ICC.
#
if test "$have_gcc" = yes ; then
if test "$_cxx_major" -ge "3" ; then
2013-07-07 15:29:33 +02:00
# Try to use ANSI mode when C++11 is disabled.
if test "$_use_cxx11" = "no" ; then
append_var CXXFLAGS "-ansi"
2013-07-07 15:29:33 +02:00
fi
case $_host_os in
# newlib-based system include files suppress non-C89 function
# declarations under __STRICT_ANSI__, undefine it
3ds | amigaos* | android | androidsdl | dreamcast | ds | gamecube | mingw* | mint* | n64 | psp | ps3 | psp2 | switch | wii )
append_var CXXFLAGS "-U__STRICT_ANSI__"
;;
*)
;;
esac
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-W -Wno-unused-parameter"
2011-06-09 11:17:15 +02:00
add_line_to_config_mk 'HAVE_GCC3 = 1'
add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP'
fi;
if test "$_cxx_major" -eq 4 && test "$_cxx_minor" -ge 3 || \
test "$_cxx_major" -gt 4 ; then
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-Wno-empty-body"
2011-06-09 11:17:15 +02:00
else
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-Wconversion"
2011-06-09 11:17:15 +02:00
fi;
append_var CXXFLAGS "-fno-operator-names"
2011-06-09 11:17:15 +02:00
elif test "$have_icc" = yes ; then
add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP'
fi;
2013-07-07 15:29:33 +02:00
#
# Update status about C++11 mode
#
echo_n "Building as C++11... "
if test "$_use_cxx11" = "yes" ; then
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-std=c++11"
2013-07-07 15:29:33 +02:00
fi
echo $_use_cxx11
#
# Determine extra build flags for debug and/or release builds
#
if test "$_debug_build" = auto && test "$_release_build" = yes; then
_debug_build=no
fi
if test "$_debug_build" != no; then
# debug mode not explicitly disabled -> compile with debug information
echo_n "Checking best debug mode... "
debug_mode=-g
test "$_host_os" = amigaos && debug_mode=-gstabs
append_var CXXFLAGS "$debug_mode"
echo_n -- "$debug_mode"
echo "int main() { return 0; }" > $TMPC
if `which $_dwp >/dev/null 2>&1` && cc_check_no_clean $debug_mode -gsplit-dwarf && `$_dwp -e $TMPO -o /dev/null >/dev/null 2>&1`; then
append_var CXXFLAGS "-gsplit-dwarf"
add_line_to_config_mk "SPLIT_DWARF = 1"
echo_n -- " + split DWARF"
if cc_check_no_clean $debug_mode -gsplit-dwarf -fuse-ld=gold -Wl,--gdb-index; then
append_var LDFLAGS "-fuse-ld=gold"
append_var LDFLAGS "-Wl,--gdb-index"
echo_n -- " + Gold"
fi
fi
if cc_check_no_clean $debug_mode -fvar-tracking-assignments; then
append_var CXXFLAGS "-fvar-tracking-assignments"
echo_n -- " + var tracking"
fi
cc_check_clean
echo ""
fi
if test "$_release_build" = yes; then
# Add a define, which indicates we are doing
# an build for a release version.
append_var DEFINES "-DRELEASE_BUILD"
fi
2011-06-09 11:17:15 +02:00
# By default, we add -pedantic to the CXXFLAGS to catch some potentially
# non-portable constructs, like use of GNU extensions.
# However, some platforms use GNU extensions in system header files, so
# for these we must not use -pedantic.
case $_host_os in
3ds | android | androidsdl | gamecube | psp | switch | wii)
2011-06-09 11:17:15 +02:00
;;
*)
# ICC does not support pedantic, while GCC and clang do.
if test "$have_icc" = no ; then
2013-07-16 22:11:39 +02:00
# We *do* want the 'long long' extension.
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-pedantic -Wno-long-long"
2011-06-09 11:17:15 +02:00
fi
;;
esac
# If possible, we want to use -Wglobal-constructors
# However, not all compilers support that, so check whether the active one does.
echocheck "whether C++ compiler accepts -Wglobal-constructors"
2011-04-11 15:40:01 +02:00
cat > $TMPC << EOF
int main() { return 0; }
EOF
cc_check -Wglobal-constructors -Werror && _global_constructors=yes
2011-04-11 15:40:01 +02:00
if test "$_global_constructors" = yes; then
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-Wglobal-constructors"
2011-04-11 15:40:01 +02:00
fi
echo $_global_constructors
# If the compiler supports the -Wundefined-var-template flag, silence that warning.
# We get this warning a lot with regard to the Singleton class as we explicitly
# instantiate each specialisation. An alternate way to deal with it would be to
# change the way we instantiate the singleton classes as done in PR #967.
# Note: we check the -Wundefined-var-template as gcc does not error out on unknown
# -Wno-xxx flags.
echocheck "whether C++ compiler accepts -Wno-undefined-var-template"
cat > $TMPC << EOF
int main() { return 0; }
EOF
cc_check -Wundefined-var-template -Werror && _no_undefined_var_template=yes
if test "$_no_undefined_var_template" = yes; then
append_var CXXFLAGS "-Wno-undefined-var-template"
fi
echo $_no_undefined_var_template
# Vanilla clang 6 enables the new -Wpragma-pack which warns when leaving an
# included file which changes the current alignment.
# As our common/pack-{start,end}.h trigger this we disable this warning.
# Because there is no correlation between the version reported by Apple Xcode
# clang and vanilla clang we cannot rely on the __clang_major__/clang_minor__
# macros.
# Note: as above, we check for -Wpragma-pack as not all compilers error out on
# unknown -Wno-xxx flags.
echocheck "whether C++ compiler accepts -Wno-pragma-pack"
echo "int main() { return 0; }" >$TMPC
cc_check -Wpragma-pack -Werror && _no_pragma_pack=yes
test "$_no_pragma_pack" = yes && append_var CXXFLAGS "-Wno-pragma-pack"
echo $_no_pragma_pack
if test -n "$STRINGS"; then
_strings=$STRINGS
2014-05-25 07:13:28 +02:00
else
echo_n "Checking for $_host_alias-strings... " >> "$TMPLOG"
if `which $_host_alias-strings >/dev/null 2>&1`; then
_strings=$_host_alias-strings
echo yes >> "$TMPLOG"
else
_strings=strings
echo no >> "$TMPLOG"
fi
2014-05-25 07:13:28 +02:00
fi
#
# Check for endianness
#
echo_n "Checking endianness... "
2011-04-10 21:59:04 +02:00
cat > tmp_endianness_check.cpp << EOF
2011-06-09 11:17:15 +02:00
unsigned short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
unsigned short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
const char * _ascii() { char* s = (char*) ascii_mm; s = (char*) ascii_ii; return s; }
2011-06-09 11:17:15 +02:00
unsigned short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
unsigned short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
const char * _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; return s; }
int main() { _ascii (); _ebcdic (); return 0; }
EOF
$CXX $LDFLAGS $CXXFLAGS -o $TMPO$HOSTEXEEXT tmp_endianness_check.cpp
if $_strings $TMPO$HOSTEXEEXT | grep BIGenDianSyS >/dev/null; then
_endian=big
elif $_strings $TMPO$HOSTEXEEXT | grep LiTTleEnDian >/dev/null; then
_endian=little
fi
echo $_endian;
cc_check_clean tmp_endianness_check.cpp tmp_endianness_check.dwo
2011-06-09 11:17:15 +02:00
case $_endian in
big)
add_line_to_config_h '#undef 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 '#undef SCUMM_BIG_ENDIAN'
;;
*)
exit 1
;;
esac
2009-04-04 14:43:23 +00:00
#
# Determine a data type with the given length
#
find_type_with_size() {
2013-07-16 22:11:39 +02:00
for datatype in int short char long "long long" __int64 "long long int" unknown; do
2011-04-10 21:59:04 +02:00
cat > tmp_find_type_with_size.cpp << EOF
2009-04-04 14:43:23 +00:00
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
2011-04-14 12:41:26 +02:00
if $CXX $CXXFLAGS -c -o $TMPO.o 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
cc_check_clean tmp_find_type_with_size.cpp
echo $datatype
2009-04-04 14:43:23 +00:00
}
#
2012-01-28 10:44:25 +01:00
# Check whether the system is 32-bit
2009-04-04 14:43:23 +00:00
#
2012-01-28 10:44:25 +01:00
pointer_is_32bit() {
cat > tmp_pointer_is_32bit.cpp << EOF
2009-04-04 14:43:23 +00:00
int main() {
2012-01-28 10:44:25 +01:00
static int test_array[1 - 2 * !(sizeof(void *) == 4)];
test_array[0] = 0;
2009-04-04 14:43:23 +00:00
return 0;
}
EOF
2012-01-28 10:44:25 +01:00
$CXX $CXXFLAGS -c -o $TMPO.o tmp_pointer_is_32bit.cpp 2>/dev/null
2009-04-04 14:43:23 +00:00
status=$?
2012-01-28 10:44:25 +01:00
cc_check_clean tmp_pointer_is_32bit.cpp
2009-04-04 14:43:23 +00:00
return $status
}
2012-01-28 10:44:25 +01:00
echo_n "Checking 64-bitness... "
pointer_is_32bit
if test $? -eq 0; then
type_ptr=uint32
2012-01-28 10:44:25 +01:00
echo "no"
else
type_ptr=uint64
2012-01-28 10:44:25 +01:00
echo "yes"
fi
#
# Determine data type sizes
#
echo_n "Type with 1 byte... "
type_1_byte=`find_type_with_size 1`
2011-04-14 12:41:26 +02:00
TMPR="$?"
echo "$type_1_byte"
2011-04-14 12:41:26 +02:00
test $TMPR -eq 0 || exit 1 # check exit code of subshell
echo_n "Type with 2 bytes... "
type_2_byte=`find_type_with_size 2`
2011-04-14 12:41:26 +02:00
TMPR="$?"
echo "$type_2_byte"
2011-04-14 12:41:26 +02:00
test $TMPR -eq 0 || exit 1 # check exit code of subshell
echo_n "Type with 4 bytes... "
type_4_byte=`find_type_with_size 4`
2011-04-14 12:41:26 +02:00
TMPR="$?"
echo "$type_4_byte"
2011-04-14 12:41:26 +02:00
test $TMPR -eq 0 || exit 1 # check exit code of subshell
2008-07-23 20:39:51 +00:00
echo_n "Type with 8 bytes... "
type_8_byte=`find_type_with_size 8`
2011-04-14 12:41:26 +02:00
TMPR="$?"
2008-07-23 20:39:51 +00:00
echo "$type_8_byte"
test $TMPR -eq 0 || exit 1 # check exit code of subshell
2008-07-23 20:39:51 +00:00
2011-06-09 11:17:15 +02:00
#
# Check whether memory alignment is required
#
# For some CPU types, unaligned memory access is either not supported at
# all (and so leads to a crash), requires a super-slow emulation via an
# exception handler, or just results in incorrect results.
# On the other hand, accessing data in a manner that works regardless of
# alignment can be a lot slower than regular access, so we don't want
# to use it if we don't have to.
#
# So we do the following: For CPU families where we know whether unaligned
# access is safe & fast, we enable / disable unaligned access accordingly.
# Otherwise, we just disable memory alignment.
#
# NOTE: In the past, for non-cross compiled builds, we would also run some code
# which would try to test whether unaligned access worked or not. But this test
# could not reliably determine whether unaligned access really worked in all
# situations (and across different implementations of the target CPU arch), nor
# whether it was fast (as opposed to slowly emulated by fault handlers). Hence,
# we do not use this approach anymore.
#
# NOTE: The only kinds of unaligned access we allow are for 2 byte and 4
# byte loads / stores. No promises are made for bigger sizes, such as 8
# or 16 byte loads, for which architectures may behave differently than
# for the smaller sizes.
echo_n "Alignment required... "
case $_host_cpu in
i[3-6]86 | amd64 | x86_64 | powerpc* | ppc*)
2011-06-09 11:17:15 +02:00
# Unaligned access should work
_need_memalign=no
;;
alpha* | arm* | bfin* | hp* | mips* | sh* | sparc* | ia64 | nv1*)
# Unaligned access is not supported or extremely slow.
_need_memalign=yes
;;
*)
# Status of unaligned access is unknown, so assume the worst.
_need_memalign=yes
;;
esac
echo "$_need_memalign"
define_in_config_h_if_yes $_need_memalign 'SCUMM_NEED_ALIGNMENT'
#
2012-01-06 22:56:21 +01:00
# Check the CPU architecture
#
2012-01-06 22:56:21 +01:00
echo_n "Checking host CPU architecture... "
case $_host_cpu in
2012-01-06 22:56:21 +01:00
arm*)
echo "arm"
case $_host in
openpandora)
define_in_config_if_yes yes 'USE_ARM_NEON_ASPECT_CORRECTOR'
;;
androidsdl-armeabi | arm-*riscos | caanoo | ds | gp2x | gp2xwiz | maemo )
2016-01-30 21:18:08 +01:00
define_in_config_if_yes yes 'USE_ARM_SCALER_ASM'
# FIXME: The following feature exhibits a bug. It produces distorted
# sound since 9003ce517ff9906b0288f9f7c02197fd091d4554. The ARM
# assembly will need to be properly adapted to the changes to the C
# code in 8f5a7cde2f99de9fef849b0ff688906f05f4643e.
# See bug #6957: "AUDIO: ARM ASM sound code causes distorted audio on 32 bit armv6"
#define_in_config_if_yes yes 'USE_ARM_SOUND_ASM'
define_in_config_if_yes yes 'USE_ARM_SMUSH_ASM'
define_in_config_if_yes yes 'USE_ARM_GFX_ASM'
# FIXME: The following feature exhibits a bug during the intro scene of Indy 4
# (on Pandora and iPhone at least)
#define_in_config_if_yes yes 'USE_ARM_COSTUME_ASM'
;;
esac
2012-01-06 22:56:21 +01:00
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DARM_TARGET"
2012-01-06 22:56:21 +01:00
;;
aarch64)
echo "aarch64"
;;
2012-01-06 22:56:21 +01:00
i[3-6]86)
echo "x86"
_have_x86=yes
2012-01-06 22:56:21 +01:00
define_in_config_h_if_yes $_have_x86 'HAVE_X86'
;;
2012-01-06 22:56:21 +01:00
mips*)
echo "MIPS"
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DMIPS_TARGET"
;;
powerpc* | ppc*)
2012-01-06 22:56:21 +01:00
echo "PowerPC"
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DPPC_TARGET"
2012-01-06 22:56:21 +01:00
;;
2013-07-07 15:29:33 +02:00
amd64 | x86_64)
2012-01-06 22:56:21 +01:00
echo "x86_64"
2011-06-09 11:17:15 +02:00
;;
*)
2012-01-06 22:56:21 +01:00
echo "unknown ($_host_cpu)"
2011-06-09 11:17:15 +02:00
;;
esac
#
# Determine build settings
#
echo_n "Checking hosttype... "
echo $_host_os
case $_host_os in
3ds)
_optimization_level=-O2
append_var DEFINES "-D__3DS__"
append_var DEFINES "-DARM"
append_var DEFINES "-DARM11"
append_var CXXFLAGS "-march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft"
append_var CXXFLAGS "-mword-relocations"
append_var CXXFLAGS "-ffunction-sections"
append_var CXXFLAGS "-fomit-frame-pointer"
append_var CXXFLAGS "-I$DEVKITPRO/libctru/include"
append_var CXXFLAGS "-I$DEVKITPRO/portlibs/3ds/include"
append_var LDFLAGS "-march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft"
append_var LDFLAGS "-L$DEVKITPRO/libctru/lib"
append_var LDFLAGS "-L$DEVKITPRO/portlibs/3ds/lib"
append_var LDFLAGS "-specs=3dsx.specs -lctru"
append_var LIBS "-lcitro3d"
;;
amigaos*)
if test "$_debug_build" = no; then
_optimization_level=-O2
fi
2016-01-30 21:18:08 +01:00
append_var LDFLAGS "-Wl,--export-dynamic"
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-L/sdk/local/newlib/lib"
# 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'
2014-04-05 18:18:42 +02:00
# Supress format warnings as the long 4 byte causes noisy warnings.
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-Wno-format"
2011-04-14 12:41:26 +02:00
add_line_to_config_mk 'AMIGAOS = 1'
2014-08-04 21:55:19 +02:00
_port_mk="backends/platform/sdl/amigaos/amigaos.mk"
_nuked_opl=no
;;
2011-04-11 15:40:01 +02:00
android)
2011-04-14 12:41:26 +02:00
case $_host in
android-arm-v7a)
# Disable NEON for older devices (like with Tegra 2)
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mfpu=vfp"
# This is really old CPU but might be still used with android 4.1, it slightly increases code size and decreases performance.
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,--fix-cortex-a8"
2014-01-25 22:16:57 +01:00
ABI="armeabi-v7a"
2014-04-05 18:18:42 +02:00
;;
android-arm64-v8a)
ABI="arm64-v8a"
2014-04-05 18:18:42 +02:00
;;
android-x86)
ABI="x86"
2013-10-13 11:30:34 +02:00
;;
android-x86_64)
ABI="x86_64"
;;
ouya)
append_var CXXFLAGS "-mtune=cortex-a9"
ABI="armeabi-v7a"
;;
2011-04-14 12:41:26 +02:00
esac
2014-04-05 18:18:42 +02:00
append_var CXXFLAGS "-Wno-inconsistent-missing-override"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fpic"
append_var CXXFLAGS "-ffunction-sections"
append_var CXXFLAGS "-funwind-tables"
if test "$_debug_build" = no; then
_optimization_level=-Os
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fomit-frame-pointer"
append_var CXXFLAGS "-fstrict-aliasing"
else
_optimization_level=-O0
append_var CXXFLAGS "-fno-omit-frame-pointer"
append_var CXXFLAGS "-fno-strict-aliasing"
2011-04-14 12:41:26 +02:00
fi
# Build ID is needed for native debugging in Android Studio
append_var LDFLAGS "-Wl,--build-id=sha1"
2014-04-05 18:18:42 +02:00
add_line_to_config_mk "ANDROID_SDK = $ANDROID_SDK"
2011-04-11 15:40:01 +02:00
_seq_midi=no
;;
beos*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE"
2010-01-21 19:25:03 +00:00
# Needs -lbind -lsocket for the timidity MIDI driver
2009-01-13 22:51:10 +00:00
LDFLAGS="-L/boot/home/config/lib"
CFLAGS="-I/boot/home/config/include"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fhuge-objects"
append_var LIBS "-lbind -lsocket"
2011-04-11 15:40:01 +02:00
_seq_midi=no
2009-01-13 22:51:10 +00:00
;;
cygwin*)
echo ERROR: Cygwin building is not supported by ScummVM anymore. Consider using MinGW.
exit 1
;;
darwin*)
2015-01-25 19:31:35 +01:00
# Pass -mlongcall to gcc so that it emits long calls
# which will allow for calls larger than 32MB. The linker
# will discard the calls if they are not needed, but we
# need to ensure the compiler emits them in the first place.
# Also the executable has grown to a size where using -Os is necessary to avoid a
# 'virtual memory exhausted' error when running the executable.
2015-01-25 19:31:35 +01:00
case $_host_cpu in
powerpc*)
2015-08-16 08:49:02 +02:00
append_var CFLAGS "-mlongcall"
append_var CXXFLAGS "-mlongcall"
_optimization_level=-Os
2015-01-25 19:31:35 +01:00
;;
esac
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DMACOSX"
append_var LIBS "-framework AudioUnit -framework AudioToolbox -framework Carbon -framework CoreMIDI"
2015-04-19 07:43:34 +02:00
# SDL2 doesn't seem to add Cocoa for us.
2015-08-16 08:49:02 +02:00
append_var LIBS "-framework Cocoa"
add_line_to_config_mk 'MACOSX = 1'
2012-01-06 22:56:21 +01:00
# Now we may have MacPorts or Fink installed
# Which put libraries and headers in non-standard places
# Checking them here
2012-01-28 10:44:25 +01:00
2012-01-06 22:56:21 +01:00
# MacPorts
# There is no way to get the prefix, so implementing a hack here
macport_version=`port version 2>/dev/null`
if test "$?" -eq 0; then
macport_version="`echo "${macport_version}" | sed -ne 's/Version: \([0-9]\.[0-9]\.[0-9]\)/\1/gp'`"
echo_n "You seem to be running MacPorts version ${macport_version}..."
macport_prefix=`which port`
# strip off /bin/port from /opt/local/bin/port
macport_prefix=`dirname ${macport_prefix}`
macport_prefix=`dirname ${macport_prefix}`
echo "adding ${macport_prefix} to paths"
LDFLAGS="-L${macport_prefix}/lib $LDFLAGS"
CXXFLAGS="-I${macport_prefix}/include $CXXFLAGS"
2013-10-13 11:30:34 +02:00
if test -z "$_staticlibpath"; then
_staticlibpath=${macport_prefix}
echo "Set staticlib-prefix to ${_staticlibpath}"
fi
fi
2014-07-02 01:02:35 +02:00
# Fink
# There is no way to get the prefix, so implementing a hack here
fink_version=`fink -V 2>/dev/null`
if test "$?" -eq 0; then
fink_version="`echo "${fink_version}" | sed -ne 's/Package manager version: \([0-9.]*\)/\1/gp'`"
echo_n "You seem to be running Fink version ${fink_version}..."
fink_prefix=`which fink`
# strip off /bin/fink from /sw/bin/port
fink_prefix=`dirname ${fink_prefix}`
fink_prefix=`dirname ${fink_prefix}`
echo "adding ${fink_prefix} to paths"
LDFLAGS="-L${fink_prefix}/lib $LDFLAGS"
CXXFLAGS="-I${fink_prefix}/include $CXXFLAGS"
if test -z "$_staticlibpath"; then
_staticlibpath=${fink_prefix}
echo "Set staticlib-prefix to ${_staticlibpath}"
fi
fi
# Homebrew
brew_version=`brew -v 2>/dev/null`
if test "$?" -eq 0; then
brew_version="`echo "${brew_version}" | sed -ne 's/Homebrew \([0-9.]*\)/\1/gp'`"
echo_n "You seem to be running Homebrew version ${brew_version}..."
brew_prefix=`brew --prefix`
echo "adding ${brew_prefix} to paths"
LDFLAGS="-L${brew_prefix}/lib $LDFLAGS"
CXXFLAGS="-I${brew_prefix}/include $CXXFLAGS"
if test -z "$_staticlibpath"; then
_staticlibpath=${brew_prefix}
echo "Set staticlib-prefix to ${_staticlibpath}"
fi
fi
2013-10-13 11:30:34 +02:00
# If _staticlibpath is not set yet try first /sw (fink) then /usr/local
# (the macports case is handled above).
if test -z "$_staticlibpath"; then
if test -d "/sw"; then
_staticlibpath=/sw
echo "Set staticlib-prefix to ${_staticlibpath}"
elif test -d "/usr/local"; then
_staticlibpath=/usr/local
echo "Set staticlib-prefix to ${_staticlibpath}"
else
echo "Could not determine prefix for static libraries"
fi
2012-01-06 22:56:21 +01:00
fi
# If _xcodetoolspath is not set yet use xcode-select to get the path
if test -z "$_xcodetoolspath"; then
_xcodetoolspath=`xcode-select -print-path`/Tools
if test -d "$_xcodetoolspath"; then
echo "Set xcodetools-path to ${_xcodetoolspath}"
else
_xcodetoolspath=
echo "Could not determine path for Xcode Tools"
fi
fi
# Building with SDK 10.14+ causes blurry display on Retina screens.
# A workaround is to set the LC_VERSION_MIN_MACOSX load command's sdk value
# to n/a (i.e. 0.0). See bug #11430 for details.
echocheck "macOS deployement target"
_macos_min_version=undefined
for _macos_min_version_check in 1030 140 1050 1060 1070 1080 1090 101000 101100 101200 101300 101400 101500 101600; do
cat > $TMPC << EOF
#include "AvailabilityMacros.h"
#if MAC_OS_X_VERSION_MIN_REQUIRED > ${_macos_min_version_check}
error
#endif
int main(int argc, char *argv[]) { return 0; }
EOF
cc_check
if test "$TMPR" -eq 0; then
_macos_min_version=$_macos_min_version_check
break
fi
done
# Also get a dot version of the min version
_macos_min_version_dot=undefined
if test "$_macos_min_version" != undefined ; then
if test "$_macos_min_version" -lt 101000; then
_macos_min_ver_major=$((${_macos_min_version}/100))
_macos_min_ver_minor=$((${_macos_min_version}/10 - 10*${_macos_min_ver_major}))
_macos_min_version_dot=${_macos_min_ver_major}.${_macos_min_ver_minor}
else
_macos_min_ver_major=$((${_macos_min_version}/10000))
_macos_min_ver_minor=$((${_macos_min_version}/100 - 100*${_macos_min_ver_major}))
_macos_min_version_dot=${_macos_min_ver_major}.${_macos_min_ver_minor}
fi
fi
echo $_macos_min_version_dot
# Building with SDK 10.14+ causes blurry display on Retina screens.
# A workaround is to set the LC_VERSION_MIN_MACOSX load command's sdk value
# to n/a (i.e. 0.0). See bug #11430 for details.
# We do it in any case when the linker supports the -platform_version flag,
# even when using an older SDK.
echo_n "Checking if linker supports -platform_version... "
_macos_has_ld_platform_version=no
cat > $TMPC << EOF
int main(int argc, char *argv[]) { return 0; }
EOF
_macos_ldflags_platform_version="-Xlinker -platform_version -Xlinker macos -Xlinker $_macos_min_version_dot -Xlinker 0.0.0"
cc_check $_macos_ldflags_platform_version && _macos_has_ld_platform_version=yes
echo $_macos_has_ld_platform_version
if test "$_macos_has_ld_platform_version" = yes ; then
append_var LDFLAGS "$_macos_ldflags_platform_version"
fi
# When building for MacOS X 10.5 or below we need to use the legacy icon
if test "$_macos_min_version" != undefined -a "$_macos_min_version" -lt 1060 ; then
add_line_to_config_mk 'MACOSX_USE_LEGACY_ICONS = 1'
fi
# When building with SDK 10.14 or above, we cannot compile the 32 bits dock plugin
# Assume the SDK version is the same as the min version.
if test "$_macos_min_version" != undefined -a "$_macos_min_version" -gt 101399 ; then
add_line_to_config_mk 'MACOSX_64_BITS_ONLY = 1'
fi
# Use pandoc to generate README and NEWS file for the bundle
# Also default to HTML rather than plain text as it gives a nicer
# formating, especially for the README. We could consider using RTF
# as well, but TextEdit does not support links within the document,
# and having a TOC with links, which we do with html, is quite convenient.
_pandoc=yes
if test "$_pandocformat" = "default"; then
_pandocformat="html"
fi
;;
dreamcast)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-D__DC__"
append_var DEFINES "-DNONSTANDARD_PORT"
;;
2011-04-11 15:40:01 +02:00
ds)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-D__DS__"
append_var DEFINES "-DNDS"
append_var DEFINES "-DARM9"
append_var DEFINES "-DARM"
append_var DEFINES "-DNONSTANDARD_PORT"
append_var CXXFLAGS "-isystem $DEVKITPRO/libnds/include"
append_var CXXFLAGS "-isystem $DEVKITPRO/portlibs/nds/include"
append_var CXXFLAGS "-isystem $DEVKITPRO/portlibs/armv5te/include"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mcpu=arm9tdmi"
append_var CXXFLAGS "-mtune=arm9tdmi"
append_var CXXFLAGS "-fomit-frame-pointer"
append_var CXXFLAGS "-mthumb-interwork"
append_var CXXFLAGS "-ffunction-sections"
append_var CXXFLAGS "-fdata-sections"
append_var CXXFLAGS "-fno-strict-aliasing"
append_var CXXFLAGS "-fuse-cxa-atexit"
append_var LDFLAGS "-mthumb-interwork"
append_var LDFLAGS "-mfloat-abi=soft"
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,-Map,map.txt"
2011-04-14 12:41:26 +02:00
if test "$_dynamic_modules" = no ; then
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,--gc-sections"
2011-04-14 12:41:26 +02:00
else
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,--no-gc-sections"
2011-05-08 15:38:26 +02:00
# TODO automate this required 2 step linking phase
2015-08-16 08:49:02 +02:00
# append_var LDFLAGS "-Wl,--retain-symbols-file,ds.syms"
2011-04-14 12:41:26 +02:00
fi
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-L$DEVKITPRO/libnds/lib"
append_var LDFLAGS "-L$DEVKITPRO/portlibs/nds/lib"
append_var LDFLAGS "-L$DEVKITPRO/portlibs/armv5te/lib"
append_var LIBS "-specs=ds_arm9.specs"
2015-08-16 08:49:02 +02:00
append_var LIBS "-lnds9"
2011-04-11 15:40:01 +02:00
;;
freebsd* | openbsd*)
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-L/usr/local/lib"
append_var CXXFLAGS "-I/usr/local/include"
;;
gamecube)
2012-01-06 22:56:21 +01:00
_optimization_level=-Os
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mogc"
append_var CXXFLAGS "-mcpu=750"
append_var CXXFLAGS "-meabi"
append_var CXXFLAGS "-mhard-float"
append_var CXXFLAGS "-ffunction-sections"
append_var CXXFLAGS "-fdata-sections"
append_var CXXFLAGS "-fmodulo-sched"
append_var CXXFLAGS "-fuse-cxa-atexit"
append_var CXXFLAGS "-I$DEVKITPRO/libogc/include"
append_var CXXFLAGS "-I$DEVKITPRO/portlibs/ppc/include"
2011-04-11 02:28:51 +02:00
# libogc is required to link the cc tests (includes _start())
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-mogc"
append_var LDFLAGS "-mcpu=750"
append_var LDFLAGS "-L$DEVKITPRO/libogc/lib/cube"
append_var LDFLAGS "-L$DEVKITPRO/portlibs/ppc/lib"
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-logc"
2011-04-14 12:41:26 +02:00
if test "$_dynamic_modules" = "yes" ; then
# retarded toolchain patch forces --gc-sections, overwrite it
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,--no-gc-sections"
2011-04-14 12:41:26 +02:00
fi
;;
2009-01-13 22:51:10 +00:00
haiku*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE"
2010-01-21 19:25:03 +00:00
# Needs -lnetwork for the timidity MIDI driver
2015-08-16 08:49:02 +02:00
append_var LIBS "-lnetwork"
2011-04-11 15:40:01 +02:00
_seq_midi=no
2009-01-13 22:51:10 +00:00
;;
irix*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DIRIX"
append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE"
append_var 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
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "`getconf LFS_CFLAGS 2>/dev/null`"
fi
;;
mingw*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DWIN32"
# append_var DEFINES "-D__USE_MINGW_ANSI_STDIO=0" # Modern MinGW does not need it
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-static-libgcc -static-libstdc++"
append_var LIBS "-lmingw32 -lwinmm -lgdi32"
append_var OBJS "dists/residualvm.o"
2011-04-14 12:41:26 +02:00
add_line_to_config_mk 'WIN32 = 1'
_port_mk="backends/platform/sdl/win32/win32.mk"
;;
mint*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE"
append_var DEFINES "-D_GNU_SOURCE"
append_var DEFINES "-D_ISOC11_SOURCE"
;;
morphos*)
if test "$_debug_build" = no; then
_optimization_level=-O2
fi
append_var LDFLAGS "-Wl,--export-dynamic"
append_var LDFLAGS "-L/usr/local/lib"
append_var CXXFLAGS "-D__MORPHOS_SHAREDLIBS"
# We have to use 'long' for our 4 byte typedef because MorphOS already typedefs (u)int32
# as (unsigned) long, and consequently we'd get a compiler error otherwise.
type_4_byte='long'
# Supress format warnings as the long 4 byte causes noisy warnings.
append_var CXXFLAGS "-Wno-format"
add_line_to_config_mk 'MORPHOS = 1'
_port_mk="backends/platform/sdl/morphos/morphos.mk"
# for use SDL2
_sdlconfig=sdl2-config
_nuked_opl=no
;;
msys)
echo ERROR: Using the MSYS shell in msys mode is not supported. Please use the MSYS shell in mingw mode instead.
exit 1
;;
2011-04-11 15:40:01 +02:00
n64)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-D__N64__"
append_var DEFINES "-DLIMIT_FPS"
append_var DEFINES "-DNONSTANDARD_PORT"
append_var DEFINES "-DDISABLE_COMMAND_LINE"
append_var DEFINES "-DDISABLE_DEFAULT_SAVEFILEMANAGER"
append_var DEFINES "-DDISABLE_DOSBOX_OPL"
append_var DEFINES "-DDISABLE_FANCY_THEMES"
append_var DEFINES "-DDISABLE_NES_APU"
append_var DEFINES "-DDISABLE_SID"
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
add_line_to_config_mk 'N64 = 1'
_nuked_opl=no
;;
2011-07-20 06:58:19 +02:00
ps3)
2012-09-08 21:09:03 +02:00
# Force use of SDL and freetype from the ps3 toolchain
2011-07-20 06:58:19 +02:00
_sdlpath="$PS3DEV/portlibs/ppu:$PS3DEV/portlibs/ppu/bin"
2012-09-08 21:09:03 +02:00
_freetypepath="$PS3DEV/portlibs/ppu:$PS3DEV/portlibs/ppu/bin"
2016-11-12 12:59:06 +01:00
_libcurlpath="$PS3DEV/portlibs/ppu:$PS3DEV/portlibs/ppu/bin"
2012-01-06 22:56:21 +01:00
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DPLAYSTATION3"
append_var CXXFLAGS "-mcpu=cell -mno-fp-in-toc -I$PSL1GHT/ppu/include -I$PS3DEV/portlibs/ppu/include"
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-L$PSL1GHT/ppu/lib -L$PS3DEV/portlibs/ppu/lib"
2016-11-12 12:59:06 +01:00
# The network libraries are statically linked and need to be specified in the following order
append_var SDL_NET_LIBS "-lSDL_net -lnet -lsysmodule"
2011-07-20 06:58:19 +02:00
add_line_to_config_mk 'PLAYSTATION3 = 1'
add_line_to_config_h "#define PREFIX \"${prefix}\""
;;
psp2)
_freetypepath="$VITASDK/arm-vita-eabi/bin"
_freetype2=yes
_libcurlpath="$VITASDK/arm-vita-eabi/bin"
append_var CXXFLAGS "--sysroot=$VITASDK/arm-vita-eabi"
append_var LDFLAGS "--sysroot=$VITASDK/arm-vita-eabi"
append_var DEFINES "-DPSP2 -DSYSTEM_NOT_SUPPORTING_D_TYPE"
append_var CXXFLAGS "-Wl,-q -I$VITASDK/arm-vita-eabi/include"
append_var CXXFLAGS "-march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard"
append_var LDFLAGS "-Wl,-q -L$VITASDK/arm-vita-eabi/lib"
#the next line fixes a crash when starting scumm-7-8 games (The Dig etc.)
#when either -O2, -O3 or -Os optimizations are enabled
append_var CXXFLAGS "-fno-optimize-sibling-calls"
#the next line fixes "branch out of range" error in gob engine when -Os is used
append_var CXXFLAGS "-mlong-calls"
append_var CXXFLAGS "-mword-relocations"
append_var CXXFLAGS "-fomit-frame-pointer"
#use link time optimization to further reduce exe size
append_var CXXFLAGS "-flto=20"
append_var LDFLAGS "-flto=20"
#ensure verbose output during linking to prevent buildbot kills after 1200 seconds
if test "$_verbose_build" = yes ; then
append_var LDFLAGS "-Wl,-v --verbose"
fi
#use linker dead code elimination to further reduce exe size
append_var CXXFLAGS "-ffunction-sections -fdata-sections"
append_var LDFLAGS "-Wl,--gc-sections"
if test "$_debug_build" = no; then
#optimize for smallest file size. This is necessary to prevent a crash on startup
#due to the large executable file size when many engines are enabled
#for example when --enable-all-engines is used to enable all the unstable engines
_optimization_level=-Os
fi
if test "$_debug_build" = yes; then
_optimization_level=-O0
append_var DEFINES "-D__PSP2_DEBUG__"
append_var LIBS "-lpsp2shell"
fi
add_line_to_config_mk 'PSP2 = 1'
add_line_to_config_h "#define PREFIX \"${prefix}\""
;;
psp)
_optimization_level=-O2
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-I$PSPSDK/include"
2011-06-09 11:17:15 +02:00
# FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this.
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-D_PSP_FW_VERSION=150"
add_line_to_config_mk 'PSP = 1'
2009-04-04 14:43:23 +00:00
;;
riscos)
define_in_config_if_yes yes 'RISCOS'
append_var LDFLAGS "-static"
_optimization_level=-O2
_port_mk="backends/platform/sdl/riscos/riscos.mk"
_pandoc=yes
_sdlconfig=sdl-config
_opengl_mode=none
;;
solaris*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DSOLARIS"
append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE"
# Needs -lbind -lsocket for the timidity MIDI driver
2015-08-16 08:49:02 +02:00
append_var LIBS "-lnsl -lsocket"
2009-04-04 14:43:23 +00:00
;;
switch)
_pkgconfig="$DEVKITPRO/portlibs/switch/bin/aarch64-none-elf-pkg-config"
_libcurlpath="$DEVKITPRO/portlibs/switch/bin"
_sdlpath="$DEVKITPRO/portlibs/switch/bin"
append_var DEFINES "-DSWITCH -D__SWITCH__ -DNINTENDO_SWITCH"
append_var CXXFLAGS "-march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -ftls-model=local-exec"
append_var CXXFLAGS "-ffunction-sections -fdata-sections"
append_var CXXFLAGS "-I$DEVKITPRO/libnx/include -I$DEVKITPRO/portlibs/switch/include"
append_var LDFLAGS "-L$DEVKITPRO/libnx/lib -L$DEVKITPRO/portlibs/switch/lib"
append_var LIBS "-specs=$DEVKITPRO/libnx/switch.specs"
add_line_to_config_mk 'SWITCH = 1'
if test "$_debug_build" = yes; then
append_var DEFINES "-D__SWITCH_DEBUG__"
else
_optimization_level=-O3
fi
;;
2009-04-04 14:43:23 +00:00
wii)
2012-01-06 22:56:21 +01:00
_optimization_level=-Os
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mrvl"
append_var CXXFLAGS "-mcpu=750"
append_var CXXFLAGS "-meabi"
append_var CXXFLAGS "-mhard-float"
append_var CXXFLAGS "-ffunction-sections"
append_var CXXFLAGS "-fdata-sections"
append_var CXXFLAGS "-fmodulo-sched"
append_var CXXFLAGS "-fuse-cxa-atexit"
append_var CXXFLAGS "-I$DEVKITPRO/libogc/include"
append_var CXXFLAGS "-I$DEVKITPRO/portlibs/ppc/include"
2011-04-11 02:28:51 +02:00
# libogc is required to link the cc tests (includes _start())
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-mrvl"
append_var LDFLAGS "-mcpu=750"
append_var LDFLAGS "-L$DEVKITPRO/libogc/lib/wii"
append_var LDFLAGS "-L$DEVKITPRO/portlibs/ppc/lib"
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-logc"
2011-04-14 12:41:26 +02:00
if test "$_dynamic_modules" = "yes" ; then
# retarded toolchain patch forces --gc-sections, overwrite it
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,--no-gc-sections"
2011-04-14 12:41:26 +02:00
fi
2009-04-04 14:43:23 +00:00
;;
esac
if test -n "$_host"; then
# Cross-compiling mode - add your target here if needed
2011-04-10 21:59:04 +02:00
echo "Cross-compiling to $_host"
case "$_host" in
3ds)
append_var DEFINES "-DDISABLE_FANCY_THEMES"
append_var DEFINES "-DDISABLE_SID"
append_var DEFINES "-DDISABLE_NES_APU"
_backend="3ds"
_build_scalers=no
_vkeybd=yes
_mt32emu=no
# Should use Tremor instead of Vorbis
_vorbis=no
_port_mk="backends/platform/3ds/3ds.mk"
;;
android-arm-v7a | android-arm64-v8a | android-x86 | android-x86_64 | ouya)
# also __ANDROID__ is defined by Clang in the NDK
DEFINES="$DEFINES -D__ANDROID_PLAIN_PORT__ -DANDROID_PLAIN_PORT"
2011-04-14 12:41:26 +02:00
# we link a .so as default
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-shared"
append_var LDFLAGS "-Wl,-Bsymbolic,--no-undefined"
append_var LDFLAGS "-static-libstdc++"
2011-04-14 12:41:26 +02:00
HOSTEXEPRE=lib
HOSTEXEEXT=.so
2011-04-11 15:40:01 +02:00
_backend="android"
_port_mk="backends/platform/android/android.mk"
2011-04-14 12:41:26 +02:00
_build_scalers=no
2011-04-11 15:40:01 +02:00
_seq_midi=no
2011-04-14 12:41:26 +02:00
_timidity=no
2011-04-11 15:40:01 +02:00
;;
androidsdl | androidsdl-armeabi | androidsdl-armeabi-v7a | androidsdl-mips | androidsdl-x86 | androidsdl-arm64-v8a | androidsdl-x86_64)
DEFINES="$DEFINES -DANDROIDSDL"
_unix=yes
_seq_midi=no
_timidity=no
_backend="androidsdl"
_port_mk="backends/platform/androidsdl/androidsdl.mk"
;;
2011-04-10 21:59:04 +02:00
arm-linux|arm*-linux-gnueabi|arm-*-linux)
2009-10-05 08:33:46 +00:00
;;
arm-vfp-riscos)
append_var LDFLAGS "-L$GCCSDK_INSTALL_ENV/vfp/lib"
append_var CXXFLAGS "-isystem $GCCSDK_INSTALL_ENV/vfp/include"
_sdlpath=$GCCSDK_INSTALL_ENV/vfp/bin
_freetypepath=$GCCSDK_INSTALL_ENV/vfp/bin
_libcurlpath=$GCCSDK_INSTALL_ENV/vfp/bin
append_var CXXFLAGS "-march=armv6zk"
append_var CXXFLAGS "-mtune=cortex-a9"
append_var CXXFLAGS "-mfpu=vfp"
append_var LDFLAGS "-mfpu=vfp"
append_var ASFLAGS "-mfpu=vfp"
;;
arm-*riscos)
append_var LDFLAGS "-L$GCCSDK_INSTALL_ENV/lib"
append_var CXXFLAGS "-isystem $GCCSDK_INSTALL_ENV/include"
_pkgconfig=$GCCSDK_INSTALL_ENV/ro-pkg-config
_sdlpath=$GCCSDK_INSTALL_ENV/bin
_freetypepath=$GCCSDK_INSTALL_ENV/bin
_libcurlpath=$GCCSDK_INSTALL_ENV/bin
append_var CXXFLAGS "-march=armv3m"
append_var CXXFLAGS "-mtune=xscale"
_vorbis=no
;;
bfin*)
;;
2011-04-11 15:40:01 +02:00
caanoo)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DCAANOO"
2012-08-20 08:20:05 +02:00
if test "$_debug_build" = no; then
2011-04-11 15:40:01 +02:00
# Use -O3 on the Caanoo for non-debug builds.
2012-01-06 22:56:21 +01:00
_optimization_level=-O3
2011-04-11 15:40:01 +02:00
fi
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mcpu=arm926ej-s"
append_var CXXFLAGS "-mtune=arm926ej-s"
2011-04-11 15:40:01 +02:00
_backend="gph"
_build_hq_scalers=no
2012-01-06 22:56:21 +01:00
_savegame_timestamp=no
2011-04-11 15:40:01 +02:00
_vkeybd=yes
_seq_midi=no
2011-04-14 12:55:26 +02:00
_mt32emu=no
_timidity=no
2011-04-11 15:40:01 +02:00
_port_mk="backends/platform/gph/caanoo-bundle.mk"
2011-04-14 12:41:26 +02:00
;;
2009-04-04 14:43:23 +00:00
*darwin*)
_ranlib=$_host-ranlib
_strip=$_host-strip
;;
2011-04-11 15:40:01 +02:00
dingux)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DDISABLE_DOSBOX_OPL"
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
append_var CXXFLAGS "-msoft-float"
append_var CXXFLAGS "-mips32"
2011-04-11 15:40:01 +02:00
_backend="dingux"
_mt32emu=no
_nuked_opl=no
2012-07-06 22:05:21 +02:00
_optimization_level=-O3
# Disable alsa midi to get the port build on OpenDingux toolchain
_alsa=no
2016-11-12 12:59:06 +01:00
# Disable cloud and SDL_Net due to outdated toolchain
_cloud=no
_sdlnet=no
_libcurl=no
2011-04-11 15:40:01 +02:00
_vkeybd=yes
_build_hq_scalers=no
# Force disable vorbis on dingux, it has terrible performance compared to tremor
_vorbis=no
# Force disable seq on dingux, no way to use it and it would get enabled by default with configure
_seq_midi=no
_port_mk="backends/platform/dingux/dingux.mk"
;;
2015-12-22 00:24:01 +01:00
raspberrypi)
_libcurlpath=$RPI_ROOT/usr/bin
2015-12-22 00:24:01 +01:00
# This is needed because the official cross compiler doesn't have multiarch enabled
# but Raspbian does.
# Be careful as it's the linker (LDFLAGS) which must know about sysroot.
# These are needed to build against Raspbian's libSDL.
append_var LDFLAGS "--sysroot=$RPI_ROOT"
append_var LDFLAGS "-B$RPI_ROOT/usr/lib/arm-linux-gnueabihf"
append_var LDFLAGS "-Xlinker --rpath-link=$RPI_ROOT/usr/lib/arm-linux-gnueabihf/pulseaudio"
2015-12-22 00:24:01 +01:00
append_var LDFLAGS "-Xlinker --rpath-link=$RPI_ROOT/usr/lib/arm-linux-gnueabihf"
append_var LDFLAGS "-Xlinker --rpath-link=$RPI_ROOT/lib/arm-linux-gnueabihf"
append_var LDFLAGS "-Xlinker --rpath-link=$RPI_ROOT/opt/vc/lib"
append_var LDFLAGS "-L$RPI_ROOT/opt/vc/lib"
append_var CXXFLAGS "-isystem $RPI_ROOT/usr/include/arm-linux-gnueabihf"
append_var CXXFLAGS "-I$RPI_ROOT/usr/include"
2015-12-22 00:24:01 +01:00
# This is so optional OpenGL ES includes are found.
append_var CXXFLAGS "-I$RPI_ROOT/opt/vc/include"
# We prefer SDL2 on the Raspberry Pi: acceleration now depends on it
2015-12-22 00:24:01 +01:00
# since SDL2 manages dispmanx/GLES2 very well internally.
# SDL1 is bit-rotten on this platform.
_sdlconfig=sdl2-config
# OpenGL ES support is mature enough as to be the best option on
2016-01-01 23:09:40 +01:00
# the Raspberry Pi, so it's enabled by default.
# The Raspberry Pi always supports OpenGL ES 2.0 contexts, thus we
# take advantage of those.
_opengl_mode=gles2
2015-12-22 00:24:01 +01:00
;;
dreamcast)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DDISABLE_DEFAULT_SAVEFILEMANAGER"
append_var DEFINES "-DDISABLE_TEXT_CONSOLE"
append_var DEFINES "-DDISABLE_COMMAND_LINE"
2013-07-13 14:30:29 +02:00
# Enable serial debugging output only when --enable-debug is passed
if test "$_release_build" = yes -o "$_debug_build" != yes; then
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DNOSERIAL"
2011-06-09 11:17:15 +02:00
fi
2012-01-06 22:56:21 +01:00
_optimization_level=-O3
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-funroll-loops"
append_var CXXFLAGS "-fschedule-insns2"
append_var CXXFLAGS "-fomit-frame-pointer"
append_var CXXFLAGS "-fdelete-null-pointer-checks"
_backend="dc"
2011-04-11 15:40:01 +02:00
_build_scalers=no
# These two are needed due to shortcomings of the
# detection systems. Do not remove until auto-
# detection works correctly.
2011-04-11 15:40:01 +02:00
_mad=yes
_zlib=yes
2011-04-10 21:59:04 +02:00
_port_mk="backends/platform/dc/dreamcast.mk"
;;
2011-04-11 15:40:01 +02:00
ds)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DDISABLE_COMMAND_LINE"
append_var DEFINES "-DDISABLE_DEFAULT_SAVEFILEMANAGER"
append_var DEFINES "-DDISABLE_DOSBOX_OPL"
append_var DEFINES "-DDISABLE_FANCY_THEMES"
append_var DEFINES "-DDISABLE_SID"
append_var DEFINES "-DDISABLE_NES_APU"
append_var DEFINES "-DDISABLE_TEXT_CONSOLE"
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
append_var DEFINES "-DSTREAM_AUDIO_FROM_DISK"
append_var DEFINES "-DVECTOR_RENDERER_FORMAT=1555"
2011-04-11 15:40:01 +02:00
_backend="ds"
_build_scalers=no
_mt32emu=no
_nuked_opl=no
_bink=no
_lua=no
2011-04-11 15:40:01 +02:00
_port_mk="backends/platform/ds/ds.mk"
;;
gamecube)
_backend="wii"
2011-04-11 15:40:01 +02:00
_build_scalers=no
2011-07-20 08:02:02 +02:00
_vkeybd=yes
2011-04-11 15:40:01 +02:00
_mt32emu=no
_port_mk="backends/platform/wii/wii.mk"
add_line_to_config_mk 'GAMECUBE = 1'
2011-04-11 15:40:01 +02:00
add_line_to_config_h '#define AUDIO_REVERSE_STEREO'
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 */"
2011-04-11 15:40:01 +02:00
add_line_to_config_h "#define USE_WII_DI"
;;
gcw0)
_sysroot=`$CXX --print-sysroot`
_sdlpath=$_sysroot/usr/bin
append_var DEFINES "-DGCW0"
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
append_var CXXFLAGS "-mips32"
2014-12-04 20:46:56 +01:00
_backend="dingux"
_alsa=no
2014-12-04 20:46:56 +01:00
_mt32emu=no
_seq_midi=no
_timidity=no
_build_scalers=no
2014-12-04 20:46:56 +01:00
_optimization_level=-O3
_vkeybd=yes
_vorbis=no
_port_mk="backends/platform/dingux/dingux.mk"
;;
gp2x)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DGP2X"
append_var CXXFLAGS "-march=armv4t"
append_var ASFLAGS "-mfloat-abi=soft"
append_var LDFLAGS "-static"
2011-04-14 12:41:26 +02:00
_backend="gph"
2011-04-11 15:40:01 +02:00
_build_hq_scalers=no
2012-01-06 22:56:21 +01:00
_savegame_timestamp=no
2011-04-11 15:40:01 +02:00
_vkeybd=yes
_seq_midi=no
2011-04-14 12:41:26 +02:00
_mt32emu=no
_timidity=no
_port_mk="backends/platform/gph/gp2x-bundle.mk"
;;
gp2xwiz)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DGP2XWIZ"
append_var CXXFLAGS "-mcpu=arm926ej-s"
append_var CXXFLAGS "-mtune=arm926ej-s"
append_var ASFLAGS "-mfloat-abi=soft"
2011-04-11 15:40:01 +02:00
_backend="gph"
_build_hq_scalers=no
2012-01-06 22:56:21 +01:00
_savegame_timestamp=no
2011-04-11 15:40:01 +02:00
_vkeybd=yes
_seq_midi=no
2011-04-14 12:41:26 +02:00
_mt32emu=no
_timidity=no
2011-04-11 15:40:01 +02:00
_port_mk="backends/platform/gph/gp2xwiz-bundle.mk"
2009-04-04 14:43:23 +00:00
;;
iphone)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DIPHONE"
append_var ASFLAGS "-arch armv6"
_backend="iphone"
2012-03-25 11:41:48 +02:00
_build_scalers=no
_mt32emu=no
2011-04-11 15:40:01 +02:00
_seq_midi=no
2012-03-25 11:41:48 +02:00
_timidity=no
;;
2016-01-30 21:18:08 +01:00
ios7)
append_var DEFINES "-DIPHONE"
_backend="ios7"
_seq_midi=no
_timidity=no
;;
m68k-atari-mint)
2011-04-11 15:40:01 +02:00
_seq_midi=no
_timidity=no
;;
2012-01-06 22:56:21 +01:00
maemo)
_optimization_level=-Os
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mcpu=arm926ej-s"
append_var CXXFLAGS "-fomit-frame-pointer"
append_var INCLUDES "-I/usr/X11R6/include"
append_var LIBS "-L/usr/lib"
2012-01-06 22:56:21 +01:00
_backend="maemo"
_vkeybd=yes
_build_hq_scalers=no
_mt32emu=no
_alsa=no
_mad=yes
_tremor=yes
_zlib=yes
;;
*mingw32*)
_sdlconfig=$_host-sdl-config
_windres=$_host-windres
_ar="$_host-ar cr"
_ranlib=$_host-ranlib
;;
2011-04-11 02:28:51 +02:00
mips-sgi*)
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-static-libgcc"
append_var LIBS "-laudio"
2011-04-11 02:28:51 +02:00
;;
2011-04-11 15:40:01 +02:00
n64)
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mno-extern-sdata"
append_var CXXFLAGS "--param max-inline-insns-auto=20"
append_var CXXFLAGS "-fomit-frame-pointer"
append_var CXXFLAGS "-march=vr4300"
append_var CXXFLAGS "-mtune=vr4300"
append_var CXXFLAGS "-mhard-float"
append_var LDFLAGS "-march=vr4300"
append_var LDFLAGS "-mtune=vr4300"
append_var LDFLAGS "-nodefaultlibs"
append_var LDFLAGS "-nostartfiles"
append_var LDFLAGS "-mno-crt0"
append_var LDFLAGS "-L$N64SDK/hkz-libn64"
append_var LDFLAGS "-L$N64SDK/lib"
append_var LDFLAGS "-T n64ld_cpp.x -Xlinker -Map -Xlinker residualvm.map"
2011-04-11 15:40:01 +02:00
_backend="n64"
_mt32emu=no
_build_scalers=no
2012-01-06 22:56:21 +01:00
_savegame_timestamp=no
2011-04-11 15:40:01 +02:00
_translation=no
_text_console=no
_vkeybd=yes
_dynamic_modules=no
_plugins_default=static
# Force use of libmad, libtremor and zlib
2011-04-14 12:41:26 +02:00
_mad=no
2011-04-11 15:40:01 +02:00
_tremor=yes
_zlib=yes
_port_mk="backends/platform/n64/n64.mk"
2009-10-05 08:33:46 +00:00
;;
neuros)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DNEUROS"
_backend='null'
2011-04-11 15:40:01 +02:00
_build_hq_scalers=no
_mt32emu=no
;;
2011-04-11 15:40:01 +02:00
openpandora)
2013-07-07 15:29:33 +02:00
# Use -O3 on the OpenPandora for optimized builds.
if test "$_optimizations" = yes; then
2012-01-06 22:56:21 +01:00
_optimization_level=-O3
2011-04-11 15:40:01 +02:00
fi
2013-07-07 15:48:28 +02:00
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-march=armv7-a"
append_var CXXFLAGS "-mtune=cortex-a8"
append_var CXXFLAGS "-mfloat-abi=softfp"
append_var CXXFLAGS "-mfpu=neon"
append_var CXXFLAGS "-fsingle-precision-constant"
append_var ASFLAGS "-mfloat-abi=softfp"
2011-04-11 15:40:01 +02:00
_backend="openpandora"
_build_hq_scalers=yes
_vkeybd=no
2011-04-14 12:41:26 +02:00
_mt32emu=no
2011-04-11 15:40:01 +02:00
_seq_midi=no
_port_mk="backends/platform/openpandora/op-bundle.mk"
2011-04-14 12:41:26 +02:00
;;
ppc-amigaos)
2014-12-21 16:09:34 +01:00
# PPC Linker requires this to fix relocation errors
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-mlongcall"
2014-12-21 16:09:34 +01:00
2012-11-18 19:07:46 +01:00
# Only static builds link successfully on buildbot
LDFLAGS=`echo $LDFLAGS | sed 's/-use-dynld//'`
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-static"
2012-11-18 19:07:46 +01:00
2014-08-04 21:55:19 +02:00
_port_mk="backends/platform/sdl/amigaos/amigaos.mk"
;;
ppc-morphos)
# PPC Linker requires this to fix relocation errors
append_var CXXFLAGS "-mlongcall"
# Only static builds link successfully on buildbot
LDFLAGS=`echo $LDFLAGS | sed 's/-use-dynld//'`
append_var LDFLAGS "-static"
_port_mk="backends/platform/sdl/morphos/morphos.mk"
;;
2011-07-20 06:58:19 +02:00
ps3)
_timidity=no
_vkeybd=yes
2014-07-02 01:02:35 +02:00
_port_mk="backends/platform/sdl/ps3/ps3.mk"
2011-07-20 06:58:19 +02:00
;;
psp2)
_backend="psp2"
_vkeybd=yes
_build_scalers=yes
_build_hq_scalers=no
_mt32emu=no
_timidity=no
_port_mk="backends/platform/sdl/psp2/psp2.mk"
#the -gcc- variants allow link time optimization
_ar="$_host_alias-gcc-ar cru"
_ranlib=$_host_alias-gcc-ranlib
;;
psp)
_backend="psp"
2011-04-11 15:40:01 +02:00
_build_scalers=no
_mt32emu=no
_port_mk="backends/platform/psp/psp.mk"
;;
samsungtv)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DSAMSUNGTV"
append_var DEFINES "-DDISABLE_COMMAND_LINE"
append_var ASFLAGS "-mfpu=vfp"
HOSTEXEEXT=".so"
_backend="samsungtv"
2011-04-11 15:40:01 +02:00
_mt32emu=no
_vkeybd=yes
;;
switch)
_backend="switch"
# Switch port crashes when switching between SDL2 and OpenGL
# graphics. But OpenGL works when it is enabled from the start.
# This might be related to a known crash on OpenGL de-init due
# to the OpenGL implementation on this platform.
_opengl_mode=gles2
_vkeybd=yes
_port_mk="backends/platform/sdl/switch/switch.mk"
;;
wii)
_backend="wii"
2011-04-11 15:40:01 +02:00
_build_scalers=no
2011-07-20 08:02:02 +02:00
_vkeybd=yes
_port_mk="backends/platform/wii/wii.mk"
add_line_to_config_mk 'GAMECUBE = 0'
2011-04-11 15:40:01 +02:00
add_line_to_config_h '#define AUDIO_REVERSE_STEREO'
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"
;;
*)
2010-01-21 19:25:03 +00:00
echo "WARNING: Unknown target, continuing with auto-detected values"
;;
esac
2011-06-09 11:17:15 +02:00
fi
2011-06-09 11:17:15 +02:00
#
# Backend related stuff
#
case $_backend in
3ds)
;;
2011-06-09 11:17:15 +02:00
android)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
append_var DEFINES "-DNONSTANDARD_PORT"
append_var INCLUDES '-I$(srcdir)/backends/platform/android'
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-Wa,--noexecstack"
append_var LDFLAGS "-Wl,-z,noexecstack"
# removed the following directive - was causing compilation issues when not also explicitly using --disable-mt32emu
# append_var INCLUDES "-isystem $ANDROID_NDK/sources/cxx-stl/system/include"
_sdl=no
if test "$_host" = ouya; then
_sdlnet=no
fi
2012-01-06 22:56:21 +01:00
;;
androidsdl)
_sdl=auto
2016-11-12 12:59:06 +01:00
;;
2011-06-09 11:17:15 +02:00
dc)
2015-08-16 08:49:02 +02:00
append_var INCLUDES '-I$(srcdir)/backends/platform/dc'
append_var INCLUDES "-isystem $RONINDIR/include"
2015-08-16 08:49:02 +02:00
append_var LDFLAGS "-Wl,-Ttext,0x8c010000"
append_var LDFLAGS "-nostartfiles"
append_var LDFLAGS "-L$RONINDIR/lib"
append_var LDFLAGS "$RONINDIR/lib/crt0.o"
2013-07-13 14:30:29 +02:00
# Enable serial debugging output only when --enable-debug is passed
if test "$_release_build" = yes -o "$_debug_build" != yes; then
2015-08-16 08:49:02 +02:00
append_var LIBS "-lronin-noserial -lm"
append_var LDFLAGS "-lronin-noserial -lm"
2011-06-09 11:17:15 +02:00
else
2015-08-16 08:49:02 +02:00
append_var LIBS "-lronin -lm"
append_var LDFLAGS "-lronin -lm"
2011-06-09 11:17:15 +02:00
fi
;;
dingux)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DDINGUX"
_sdlconfig=sdl-config
_sdl=auto
2011-06-09 11:17:15 +02:00
;;
ds)
2015-08-16 08:49:02 +02:00
append_var INCLUDES '-I$(srcdir)/backends/platform/ds/arm9/source'
append_var INCLUDES '-I$(srcdir)/backends/platform/ds/commoninclude'
append_var INCLUDES '-Ibackends/platform/ds/arm9/data'
2011-06-09 11:17:15 +02:00
;;
gph)
2012-08-20 08:20:05 +02:00
# On the GPH devices we want fancy themes but do not want the load/save thumbnail grid.
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DDISABLE_SAVELOADCHOOSER_GRID"
append_var DEFINES "-DGPH_DEVICE"
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
2012-08-20 08:20:05 +02:00
if test "$_debug_build" = yes; then
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DGPH_DEBUG"
2012-08-20 08:20:05 +02:00
fi
_sdlconfig=sdl-config
_sdl=auto
2011-06-09 11:17:15 +02:00
;;
iphone)
2015-08-16 08:49:02 +02:00
append_var LIBS "-lobjc -framework UIKit -framework CoreGraphics -framework OpenGLES"
append_var LIBS "-framework QuartzCore -framework CoreFoundation -framework Foundation"
append_var LIBS "-framework AudioToolbox -framework CoreAudio"
2011-06-09 11:17:15 +02:00
;;
2016-01-30 21:18:08 +01:00
ios7)
append_var LIBS "-lobjc -framework UIKit -framework CoreGraphics -framework OpenGLES"
append_var LIBS "-framework QuartzCore -framework CoreFoundation -framework Foundation"
append_var LIBS "-framework AudioToolbox -framework CoreAudio -framework SystemConfiguration "
2016-01-30 21:18:08 +01:00
append_var LDFLAGS "-miphoneos-version-min=7.1 -arch armv7"
append_var CFLAGS "-miphoneos-version-min=7.1 -arch armv7"
append_var CXXFLAGS "-miphoneos-version-min=7.1 -arch armv7"
if test -n "$SDKROOT"; then
append_var LDFLAGS "-mlinker-version=134.9 -B/usr/local/bin/arm-apple-darwin11-"
append_var CFLAGS "-isysroot $SDKROOT -F$SDKROOT/System/Library/Frameworks"
append_var CXXFLAGS "-isysroot $SDKROOT -I$SDKROOT/usr/include/c++/4.2.1 -F$SDKROOT/System/Library/Frameworks"
fi
;;
2012-01-06 22:56:21 +01:00
maemo)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DMAEMO"
append_var LIBS "-lX11"
_sdlconfig=sdl-config
_sdl=auto
2012-01-06 22:56:21 +01:00
;;
2011-06-09 11:17:15 +02:00
n64)
2015-08-16 08:49:02 +02:00
append_var INCLUDES '-I$(N64SDK)/include'
append_var INCLUDES '-I$(N64SDK)/mips64/include'
append_var INCLUDES '-I$(N64SDK)/hkz-libn64'
append_var INCLUDES '-I$(srcdir)/backends/platform/n64'
append_var LIBS "-lpakfs -lframfs -ln64 -ln64utils -lromfs"
append_var LIBS "-lm -lstdc++ -lz"
2011-06-09 11:17:15 +02:00
;;
null)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DUSE_NULL_DRIVER"
_text_console=yes
2011-06-09 11:17:15 +02:00
;;
openpandora)
append_var DEFINES "-DOPENPANDORA"
append_var DEFINES "-DREDUCE_MEMORY_USAGE"
if test "$_release_build" = no; then
append_var DEFINES "-DOP_DEBUG"
fi
_sdl=auto
2011-06-09 11:17:15 +02:00
;;
psp)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-D__PSP__"
append_var DEFINES "-DDISABLE_COMMAND_LINE"
append_var DEFINES "-DDISABLE_DOSBOX_OPL"
append_var LIBS "-lpng"
append_var LIBS "-Wl,-Map,mapfile.txt"
_nuked_opl=no
2011-06-09 11:17:15 +02:00
;;
psp2)
append_var LIBS "-lvitashaders -lSDL2 -lvita2d_fbo -lSceCommonDialog_stub"
append_var LIBS "-lSceSysmodule_stub -lSceDisplay_stub -lSceGxm_stub"
append_var LIBS "-lSceAudio_stub -lSceCtrl_stub -lScePower_stub"
append_var LIBS "-lSceNet_stub -lSceNetCtl_stub -lSceAppMgr_stub -lScePgf_stub"
append_var LIBS "-lSceTouch_stub -lSceHid_stub"
_sdl=yes
_sdlversion=2.0.0
append_var MODULES "backends/platform/sdl"
append_var INCLUDES "-I$VITASDK/arm-vita-eabi/include/SDL2"
;;
2011-06-09 11:17:15 +02:00
samsungtv)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DSAMSUNGTV"
append_var LDFLAGS "-shared"
append_var LDFLAGS "-fpic"
_sdl=auto
2011-06-09 11:17:15 +02:00
;;
sdl)
_sdl=auto
;;
switch)
_sdl=auto
append_var MODULES "backends/platform/sdl"
;;
2011-06-09 11:17:15 +02:00
wii)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-D__WII__"
append_var DEFINES "-DGEKKO"
2011-06-09 11:17:15 +02:00
case $_host_os in
gamecube)
2015-08-16 08:49:02 +02:00
append_var LIBS "-lgxflux -liso9660 -lfat -logc -ldb"
;;
*)
2015-08-16 08:49:02 +02:00
append_var LIBS "-lgxflux -ldi -liso9660 -ltinysmb -lfat -lwiiuse -lbte -logc -lwiikeyboard -ldb"
;;
2011-06-09 11:17:15 +02:00
esac
;;
*)
echo "support for $_backend backend not implemented in configure script yet"
exit 1
;;
esac
2015-08-16 08:49:02 +02:00
append_var MODULES "backends/platform/$_backend"
#
# Check for pkg-config
#
echocheck "pkg-config"
_pkg_config=no
command -v $_pkgconfig >/dev/null 2>&1 && _pkg_config=yes
echo "$_pkg_config"
if test "$_pkg_config" = yes && test -n "$_host" && test -z "$PKG_CONFIG_LIBDIR"; then
echo "WARNING: When cross-compiling PKG_CONFIG_LIBDIR must be set to the location of the .pc files for the target"
fi
#
2011-06-09 11:17:15 +02:00
# Setup SDL specifics for SDL based backends
#
if test "$_sdl" = auto ; then
find_sdlconfig
append_var SDL_CFLAGS "`$_sdlconfig --prefix="$_sdlpath" --cflags`"
if test "$_static_build" = yes ; then
append_var SDL_LIBS "`$_sdlconfig --prefix="$_sdlpath" --static-libs`"
else
append_var SDL_LIBS "`$_sdlconfig --prefix="$_sdlpath" --libs`"
fi
_sdlversion=`$_sdlconfig --version`
echocheck "SDL"
_sdl=no
cat > $TMPC << EOF
#include "SDL.h"
int main(int argc, char *argv[]) { SDL_Init(0); return 0; }
EOF
cc_check $LIBS $SDL_LIBS $INCLUDES $SDL_CFLAGS && _sdl=yes
echo "$_sdl"
if test "$_sdl" = no ; then
exit 1
fi
fi
_sdlMajorVersionNumber=0
if test "$_sdl" = yes ; then
append_var DEFINES "-DSDL_BACKEND"
add_line_to_config_mk "SDL_BACKEND = 1"
append_var INCLUDES "$SDL_CFLAGS"
append_var LIBS "$SDL_LIBS"
case $_sdlversion in
2.0.*)
add_line_to_config_mk "USE_SDL2 = 1"
_sdlMajorVersionNumber=2
;;
*)
_sdlMajorVersionNumber=1
;;
esac
fi
#
# Some platforms (eg. Android, iOS) may use an edited version
# of SDL-net or SDL2-net that does not require SDL or SDL2 respectively
#
if test "$_sdlnet" = auto ; then
# If SDL2 was detected, then test for SDL2_net exclusively
# If SDL was detected, then test for SDL_net exclusively
# If neither SDL nor SDL2 detected, then test for both (SDL2_net success takes priority)
set_var SDL2_NET_LIBS "$SDL_NET_LIBS"
set_var SDL2_NET_CFLAGS "$SDL_NET_CFLAGS"
set_var SDL1_NET_LIBS "$SDL_NET_LIBS"
set_var SDL1_NET_CFLAGS "$SDL_NET_CFLAGS"
if test "$_sdl" = no || test "$_sdlMajorVersionNumber" = 2; then
if test "$_pkg_config" = "yes" && $_pkgconfig --exists SDL2_net; then
append_var SDL2_NET_LIBS "`$_pkgconfig --libs SDL2_net`"
append_var SDL2_NET_CFLAGS "`$_pkgconfig --cflags SDL2_net`"
else
append_var SDL2_NET_LIBS "-lSDL2_net"
fi
fi
2016-11-12 12:59:06 +01:00
if test "$_sdl" = no || test "$_sdlMajorVersionNumber" = 1; then
if test "$_pkg_config" = "yes" && $_pkgconfig --exists SDL_net; then
append_var SDL1_NET_LIBS "`$_pkgconfig --libs SDL_net`"
append_var SDL1_NET_CFLAGS "`$_pkgconfig --cflags SDL_net`"
else
append_var SDL1_NET_LIBS "-lSDL_net"
fi
fi
# Check for SDL_Net
echocheck "SDL_Net"
_sdlnet=no
cat > $TMPC << EOF
2016-11-12 12:59:06 +01:00
#include "SDL_net.h"
int main(int argc, char *argv[]) { SDLNet_Init(); return 0; }
EOF
cc_check $SDL2_NET_LIBS $LIBS $INCLUDES $SDL2_NET_CFLAGS && _sdlnet=yes
if test "$_sdlnet" = yes ; then
set_var SDL_NET_LIBS "$SDL2_NET_LIBS"
set_var SDL_NET_CFLAGS "$SDL2_NET_CFLAGS"
else
cat > $TMPC << EOF
#include "SDL_net.h"
int main(int argc, char *argv[]) { SDLNet_Init(); return 0; }
EOF
cc_check $SDL1_NET_LIBS $LIBS $INCLUDES $SDL1_NET_CFLAGS && _sdlnet=yes
set_var SDL_NET_LIBS "$SDL1_NET_LIBS"
set_var SDL_NET_CFLAGS "$SDL1_NET_CFLAGS"
fi
if test "$_sdlnet" = yes ; then
# Some platforms require SDL to be after SDL_Net, thus we prepend var
prepend_var LIBS "$SDL_NET_LIBS"
append_var INCLUDES "$SDL_NET_CFLAGS"
fi
define_in_config_if_yes "$_sdlnet" 'USE_SDL_NET'
echo "$_sdlnet"
fi
2011-06-09 11:17:15 +02:00
#
# Enable 16bit support only for backends which support it
#
case $_backend in
3ds | android | androidsdl | dingux | dc | gph | iphone | ios7 | maemo | null | openpandora | psp | psp2 | samsungtv | sdl | switch | wii)
2011-06-09 11:17:15 +02:00
if test "$_16bit" = auto ; then
_16bit=yes
else
_16bit=no
fi
;;
*)
2011-06-09 11:17:15 +02:00
_16bit=no
;;
esac
#
# Enable High resolution engines (>320x240) support only for backends which support it
#
case $_host in
ds | gcw0)
if test "$_highres" = yes ; then
_highres=yes
else
_highres=no
fi
;;
*)
if test "$_highres" = no ; then
_highres=no
else
_highres=yes
fi
;;
esac
2013-07-07 15:29:33 +02:00
#
# Enable Event Recorder only for backends that support it
#
case $_backend in
sdl)
;;
*)
_eventrec=no
;;
esac
2012-01-06 22:56:21 +01:00
#
# Disable savegame timestamp support for backends which don't have a reliable real time clock
#
case $_backend in
gph | n64)
if test "$_savegame_timestamp" = auto ; then
_savegame_timestamp=no
else
_savegame_timestamp=yes
fi
;;
*)
if test "$_savegame_timestamp" = auto ; then
_savegame_timestamp=yes
else
_savegame_timestamp=no
fi
;;
esac
2011-06-09 11:17:15 +02:00
#
# Determine whether host is POSIX compliant, or at least POSIX
# compatible enough to support our POSIX code (including dlsym(),
# mkdir() and some other APIs).
#
# TODO: Instead of basing this on the host name, we should really base
# this on the presence of features (such as the dlsym and mkdir APIs).
#
echo_n "Checking if host is POSIX compliant... "
case $_host_os in
amigaos* | cygwin* | dreamcast | ds | gamecube | mingw* | morphos | n64 | ps3 | psp2 | psp | riscos | wii)
2011-06-09 11:17:15 +02:00
_posix=no
;;
3ds | android | androidsdl | beos* | bsd* | darwin* | freebsd* | gnu* | gph-linux | haiku* | hpux* | iphone | ios7 | irix*| k*bsd*-gnu* | linux* | maemo | mint* | netbsd* | openbsd* | solaris* | sunos* | switch | uclinux*)
2011-06-09 11:17:15 +02:00
_posix=yes
;;
os2-emx*)
_posix=yes # FIXME: Really???
;;
*)
# given this is a shell script, we might assume some type of posix.
# However, the host system might be a totally different one, so
# we can assume nothing about it.
# Indeed, as mentioned further above, we really should test for the
# presences of relevant APIs on the host anyway...
_posix=no
;;
esac
echo $_posix
2011-06-09 11:17:15 +02:00
if test "$_posix" = yes ; then
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DPOSIX"
2011-06-09 11:17:15 +02:00
add_line_to_config_mk 'POSIX = 1'
echo_n "Checking if posix_spawn is supported... "
cat > $TMPC << EOF
#include <spawn.h>
int main(void) { return posix_spawn(0, 0, 0, 0, 0, 0); }
EOF
cc_check && _has_posix_spawn=yes
echo $_has_posix_spawn
if test "$_has_posix_spawn" = yes ; then
append_var DEFINES "-DHAS_POSIX_SPAWN"
fi
2011-04-11 15:40:01 +02:00
fi
#
# 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'
2009-05-25 20:49:53 +00:00
2012-01-06 22:56:21 +01:00
#
# If a specific optimization level was requested, enable optimizations
#
if test -n "$_optimization_level" ; then
# Ports will specify an optimization level and expect that to be enabled
if test "$_optimizations" != no ; then
_optimizations=yes
fi
else
_optimization_level=$_default_optimization_level
fi
#
# Check whether to enable optimizations
#
if test "$_optimizations" = yes ; then
# Enable optimizations. This also
# makes it possible to use -Wuninitialized, so let's do that.
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "$_optimization_level"
append_var CXXFLAGS "-Wuninitialized"
2012-01-06 22:56:21 +01:00
fi
2009-05-25 20:49:53 +00:00
#
# Check whether plugin support is requested and possible
#
echo_n "Checking whether building plugins was requested... "
echo "$_dynamic_modules"
_mak_plugins=
if test "$_dynamic_modules" = yes ; then
echo_n "Checking whether building plugins is supported... "
case $_host_os in
3ds)
_elf_loader=yes
append_var DEFINES "-DUNCACHED_PLUGINS"
_mak_plugins='
PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/3ds/plugin.ld -march=armv6k -mfloat-abi=hard
'
;;
amigaos | morphos)
_plugin_prefix="lib"
_plugin_suffix=".so"
append_var CXXFLAGS "-fPIC"
append_var LIBS "-use-dynld"
_mak_plugins='
PLUGIN_EXTRA_DEPS =
PLUGIN_LDFLAGS += -shared
PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
'
;;
2011-04-14 12:41:26 +02:00
android)
2011-06-09 11:17:15 +02:00
_plugin_prefix="lib"
_plugin_suffix=".so"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fpic"
append_var LIBS "-ldl"
2011-04-14 12:41:26 +02:00
# Work around an Android 2.0+ run-time linker bug:
# The linker doesn't actually look in previously
# loaded libraries when trying to resolve symbols -
# effectively turning all dlopen(RTLD_GLOBAL) calls
# into dlopen(RTLD_LOCAL). It *does* look in
# DT_NEEDED libraries, so the workaround is to add an
# (otherwise unnecessary) dependency from plugins back
# to the main libscummvm.so.
_mak_plugins='
2012-01-06 11:37:57 +01:00
PLUGIN_EXTRA_DEPS = libresidualvm.so
PLUGIN_LDFLAGS += $(LDFLAGS) -L. -lresidualvm
2011-04-14 12:41:26 +02:00
PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
'
;;
darwin*)
2011-06-09 11:17:15 +02:00
_plugin_prefix=""
_plugin_suffix=".plugin"
2015-08-16 08:49:02 +02:00
append_var LIBS "-ldl"
2009-05-25 20:49:53 +00:00
_mak_plugins='
PLUGIN_EXTRA_DEPS = $(EXECUTABLE)
PLUGIN_LDFLAGS += -bundle -bundle_loader $(EXECUTABLE) -exported_symbols_list "$(srcdir)/plugin.exp"
PRE_OBJS_FLAGS := -all_load
POST_OBJS_FLAGS :=
'
;;
dreamcast)
2011-06-09 11:17:15 +02:00
_plugin_prefix=""
_plugin_suffix=".plg"
_mak_plugins='
2011-04-14 12:41:26 +02:00
PLUGIN_EXTRA_DEPS = $(abspath $(srcdir)/backends/platform/dc/plugin.x $(srcdir)/backends/platform/dc/plugin.syms) $(EXECUTABLE) backends/platform/dc/plugin_head.o
2011-06-09 11:17:15 +02:00
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 backends/platform/dc/plugin_head.o
PRE_OBJS_FLAGS := -Wl,--whole-archive
POST_OBJS_FLAGS := -Wl,--no-whole-archive
2011-04-14 12:41:26 +02:00
'
;;
ds)
_elf_loader=yes
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DELF_LOADER_CXA_ATEXIT"
append_var DEFINES "-DUNCACHED_PLUGINS"
append_var DEFINES "-DELF_NO_MEM_MANAGER"
2011-04-14 12:41:26 +02:00
_mak_plugins='
PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/ds/plugin.ld -mthumb-interwork -mfloat-abi=soft
2009-05-25 20:49:53 +00:00
'
;;
freebsd* | openbsd*)
2011-06-09 11:17:15 +02:00
_plugin_prefix="lib"
_plugin_suffix=".so"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fPIC"
2009-05-25 20:49:53 +00:00
_mak_plugins='
PLUGIN_EXTRA_DEPS =
PLUGIN_LDFLAGS += -shared
PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
2011-04-14 12:41:26 +02:00
'
;;
gamecube | wii)
_elf_loader=yes
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DELF_LOADER_CXA_ATEXIT"
append_var DEFINES "-DUNCACHED_PLUGINS"
2011-04-14 12:41:26 +02:00
_mak_plugins='
PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/wii/plugin.ld
2009-05-25 20:49:53 +00:00
'
;;
2011-04-11 15:40:01 +02:00
gph*)
2011-06-09 11:17:15 +02:00
_plugin_prefix=""
_plugin_suffix=".plugin"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fpic"
append_var LIBS "-ldl"
2009-05-25 20:49:53 +00:00
_mak_plugins='
PLUGIN_EXTRA_DEPS = $(EXECUTABLE)
PLUGIN_LDFLAGS += -shared
PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
2009-05-25 20:49:53 +00:00
'
;;
2012-01-06 22:56:21 +01:00
irix*)
_plugin_prefix="lib"
_plugin_suffix=".so"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fpic"
append_var LIBS "-ldl"
2012-01-06 22:56:21 +01:00
_mak_plugins='
PLUGIN_EXTRA_DEPS =
PLUGIN_LDFLAGS += -shared -static-libgcc
PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
'
;;
2013-07-07 15:29:33 +02:00
linux* | gnu* | k*bsd*-gnu*)
2011-06-09 11:17:15 +02:00
_plugin_prefix="lib"
_plugin_suffix=".so"
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fPIC"
append_var LIBS "-ldl"
2009-06-18 11:52:26 +00:00
_mak_plugins='
PLUGIN_EXTRA_DEPS =
2009-06-18 11:52:26 +00:00
PLUGIN_LDFLAGS += -shared
PRE_OBJS_FLAGS := -Wl,-export-dynamic -Wl,-whole-archive
POST_OBJS_FLAGS := -Wl,-no-whole-archive
'
;;
*mingw32* | mingw64)
2011-06-09 11:17:15 +02:00
_plugin_prefix=""
_plugin_suffix=".dll"
2009-05-25 20:49:53 +00:00
_mak_plugins='
PLUGIN_EXTRA_DEPS = $(EXECUTABLE)
2012-01-06 11:37:57 +01:00
PLUGIN_LDFLAGS := -Wl,--enable-auto-import -shared ./libresidualvm.a
2009-05-25 20:49:53 +00:00
PRE_OBJS_FLAGS := -Wl,--whole-archive
2012-01-06 11:37:57 +01:00
POST_OBJS_FLAGS := -Wl,--export-all-symbols -Wl,--no-whole-archive -Wl,--out-implib,./libresidualvm.a
2010-01-21 19:25:03 +00:00
'
2011-04-14 12:41:26 +02:00
;;
psp)
_elf_loader=yes
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DUNCACHED_PLUGINS"
2010-01-21 19:25:03 +00:00
_mak_plugins='
2011-04-14 12:41:26 +02:00
LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/main_prog.ld
PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/plugin.ld -lstdc++ -lc
2009-05-25 20:49:53 +00:00
'
;;
*)
_dynamic_modules=no
_mak_plugins=
;;
esac
echo "$_dynamic_modules"
fi
2011-04-14 12:41:26 +02:00
#
# Check whether integrated ELF loader support is requested
#
define_in_config_if_yes "$_elf_loader" 'USE_ELF_LOADER'
if test "$_elf_loader" = yes; then
2011-06-09 11:17:15 +02:00
_plugin_prefix=""
_plugin_suffix=".plg"
2011-04-14 12:41:26 +02:00
_mak_plugins='
PLUGIN_EXTRA_DEPS = $(EXECUTABLE)
PLUGIN_LDFLAGS = -nostartfiles backends/plugins/elf/version.o -Wl,-q,--just-symbols,$(EXECUTABLE),--retain-symbols-file,$(srcdir)/backends/plugins/elf/plugin.syms
PRE_OBJS_FLAGS := -Wl,--whole-archive
POST_OBJS_FLAGS := -Wl,--no-whole-archive
'"$_mak_plugins"
fi
2009-05-25 20:49:53 +00:00
2011-06-09 11:17:15 +02:00
#
# Set up some common plugin settings in config.h and config.mk, if enabled
#
define_in_config_if_yes "$_dynamic_modules" 'DYNAMIC_MODULES'
if test "$_dynamic_modules" = yes ; then
add_line_to_config_h "#define PLUGIN_PREFIX \"$_plugin_prefix\""
add_line_to_config_h "#define PLUGIN_SUFFIX \"$_plugin_suffix\""
add_line_to_config_mk "PLUGIN_PREFIX := $_plugin_prefix"
add_line_to_config_mk "PLUGIN_SUFFIX := $_plugin_suffix"
fi
2010-01-21 19:25:03 +00:00
#
# Check whether integrated MT-32 emulator support is requested
#
2011-04-11 15:40:01 +02:00
define_in_config_if_yes "$_mt32emu" 'USE_MT32EMU'
#
# Check whether Lua support is requested
#
define_in_config_if_yes "$_lua" 'USE_LUA'
#
# Check whether Nuked OPL emulator support is disabled
#
define_in_config_if_no "$_nuked_opl" 'DISABLE_NUKED_OPL'
2011-06-09 11:17:15 +02:00
#
# Check whether 16bit color support is requested
#
define_in_config_if_yes "$_16bit" 'USE_RGB_COLOR'
2010-01-21 19:25:03 +00:00
#
# Check whether High resolution graphics support is requested
#
define_in_config_if_yes "$_highres" 'USE_HIGHRES'
2012-01-06 22:56:21 +01:00
#
# Check whether save games use the current time as default description
#
define_in_config_if_yes "$_savegame_timestamp" 'USE_SAVEGAME_TIMESTAMP'
2011-05-01 17:49:40 +02:00
#
2011-06-09 11:17:15 +02:00
# Check whether to enable the (hq) scalers
2011-05-01 17:49:40 +02:00
#
2011-06-09 11:17:15 +02:00
if test "$_build_scalers" = no ; then
_build_hq_scalers=no
fi
define_in_config_if_yes "$_build_scalers" 'USE_SCALERS'
2011-05-01 17:49:40 +02:00
2011-06-09 11:17:15 +02:00
define_in_config_if_yes "$_build_hq_scalers" 'USE_HQ_SCALERS'
2011-04-14 12:41:26 +02:00
#
# Check for math lib
#
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
2015-08-16 08:49:02 +02:00
cc_check -lm && append_var LIBS "-lm"
#
# Check for Ogg
#
echocheck "Ogg"
if test "$_ogg" = auto ; then
_ogg=no
cat > $TMPC << EOF
#include <ogg/ogg.h>
int main(void) { return 0; }
EOF
cc_check $OGG_CFLAGS $OGG_LIBS -logg && _ogg=yes
fi
define_in_config_if_yes "$_ogg" 'USE_OGG'
echo "$_ogg"
#
# Check for TTS
#
echocheck "TTS libraries"
if test "$_tts" = auto ; then
_tts=no
case $_host_os in
mingw*)
cat > $TMPC << EOF
#include <windows.h>
#include <Servprov.h>
#include <sapi.h>
int main(void) { return 0; }
EOF
cc_check -lsapi -lole32 && _tts=yes
;;
linux* | freebsd* | openbsd*)
cat > $TMPC << EOF
#include <speech-dispatcher/libspeechd.h>
int main(void) { return 0; }
EOF
cc_check -lspeechd && _tts=yes
;;
darwin*)
# Check the API is available. The most recent API we need is for the NSSpeechSynthesizerDelegate protocole
cat > $TMPC << EOF
#include <AppKit/NSSpeechSynthesizer.h>
@interface SpeechDelegate : NSObject<NSSpeechSynthesizerDelegate> {
}
@end
int main(void) { return 0; }
EOF
cc_check -ObjC++ -lobjc && _tts=yes
;;
esac
fi
echo "$_tts"
#
# Check for Vorbis
#
echocheck "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
if test "$_ogg" = yes ; then
cc_check $OGG_CFLAGS $OGG_LIBS $VORBIS_CFLAGS $VORBIS_LIBS \
-lvorbisfile -lvorbis -logg && _vorbis=yes
else
cc_check $VORBIS_CFLAGS $VORBIS_LIBS \
-lvorbisfile -lvorbis && _vorbis=yes
fi
fi
if test "$_vorbis" = yes ; then
append_var LIBS "$VORBIS_LIBS -lvorbisfile -lvorbis"
append_var INCLUDES "$VORBIS_CFLAGS"
fi
2011-04-11 15:40:01 +02:00
define_in_config_if_yes "$_vorbis" 'USE_VORBIS'
echo "$_vorbis"
#
# Check for Tremor
#
echocheck "Tremor"
2011-05-01 17:49:40 +02:00
if test "$_tremolo" = yes ; then
_tremor=yes
fi
if test "$_tremor" = auto ; then
_tremor=no
cat > $TMPC << EOF
#include <tremor/ivorbiscodec.h>
2009-04-04 14:43:23 +00:00
int main(void) { vorbis_info_init(0); return 0; }
EOF
if test "$_ogg" = yes ; then
cc_check $TREMOR_CFLAGS $TREMOR_LIBS $OGG_CFLAGS $OGG_LIBS \
-lvorbisidec -logg && _tremor=yes
else
cc_check $TREMOR_CFLAGS $TREMOR_LIBS -lvorbisidec && \
_tremor=yes
fi
fi
if test "$_tremor" = yes && test "$_vorbis" = no; then
2011-04-11 15:40:01 +02:00
add_line_to_config_h '#define USE_TREMOR'
add_line_to_config_h '#define USE_VORBIS'
2011-05-01 17:49:40 +02:00
if test "$_tremolo" = yes ; then
add_line_to_config_h '#define USE_TREMOLO'
2015-08-16 08:49:02 +02:00
append_var LIBS "$TREMOR_LIBS -ltremolo"
2011-05-01 17:49:40 +02:00
else
2015-08-16 08:49:02 +02:00
append_var LIBS "$TREMOR_LIBS -lvorbisidec"
2011-05-01 17:49:40 +02:00
fi
2015-08-16 08:49:02 +02:00
append_var INCLUDES "$TREMOR_CFLAGS"
else
if test "$_vorbis" = yes; then
_tremor="no (Vorbis/Tremor support is mutually exclusive)"
fi
2011-04-11 15:40:01 +02:00
add_line_to_config_h '#undef USE_TREMOR'
fi
add_to_config_mk_if_yes "$_tremor" 'USE_TREMOR = 1'
echo "$_tremor"
#
# Check for IEEE1284 for OPL2lPT
#
echocheck "OPL2LPT"
if test "$_opl2lpt" = yes ; then
_opl2lpt=no
cat > $TMPC << EOF
#include <ieee1284.h>
struct parport_list parports;
int main(void) { ieee1284_find_ports(&parports, 0); return 0; }
EOF
cc_check $IEEE1284_CFLAGS $IEEE1284_LIBS -lieee1284 && \
_opl2lpt=yes
fi
if test "$_opl2lpt" = yes; then
append_var LIBS "$IEEE1284_LIBS -lieee1284"
append_var INCLUDES "$IEEE1284_CFLAGS"
fi
define_in_config_if_yes "$_opl2lpt" 'ENABLE_OPL2LPT'
echo "$_opl2lpt"
#
# Check for FLAC
#
echocheck "FLAC >= 1.0.1"
if test "$_flac" = auto ; then
_flac=no
cat > $TMPC << EOF
#include <FLAC/stream_decoder.h>
#include <FLAC/format.h>
int main(void) {
FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new();
FLAC__stream_decoder_delete(decoder);
return FLAC__STREAM_SYNC_LEN >> 30; /* guaranteed to be 0 */
}
EOF
if test "$_ogg" = yes ; then
2011-04-10 21:59:04 +02:00
cc_check $FLAC_CFLAGS $FLAC_LIBS $OGG_CFLAGS $OGG_LIBS \
2009-04-04 14:43:23 +00:00
-lFLAC -logg && _flac=yes
else
2011-04-10 21:59:04 +02:00
cc_check $FLAC_CFLAGS $FLAC_LIBS \
2009-04-04 14:43:23 +00:00
-lFLAC && _flac=yes
fi
fi
if test "$_flac" = yes ; then
append_var LIBS "$FLAC_LIBS -lFLAC"
2015-08-16 08:49:02 +02:00
append_var INCLUDES "$FLAC_CFLAGS"
fi
2011-04-11 15:40:01 +02:00
define_in_config_if_yes "$_flac" 'USE_FLAC'
echo "$_flac"
# Add the link to ogg only after vorbis, tremor and flac as it might be used by those.
if test "$_ogg" = yes ; then
append_var LIBS "$OGG_LIBS -logg"
append_var INCLUDES "$OGG_CFLAGS"
fi
#
# Check for MAD (MP3 library)
#
echocheck "MAD"
if test "$_mad" = auto ; then
_mad=no
cat > $TMPC << EOF
#include <mad.h>
2009-04-04 14:43:23 +00:00
int main(void) { return 0; }
EOF
2011-04-10 21:59:04 +02:00
cc_check $MAD_CFLAGS $MAD_LIBS -lmad && _mad=yes
fi
if test "$_mad" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$MAD_LIBS -lmad"
append_var INCLUDES "$MAD_CFLAGS"
fi
2011-04-11 15:40:01 +02:00
define_in_config_if_yes "$_mad" 'USE_MAD'
echo "$_mad"
2010-01-21 19:25:03 +00:00
#
# 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
2011-04-10 21:59:04 +02:00
cc_check $ALSA_CFLAGS $ALSA_LIBS -lasound && _alsa=yes
2010-01-21 19:25:03 +00:00
fi
if test "$_alsa" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$ALSA_LIBS -lasound"
append_var INCLUDES "$ALSA_CFLAGS"
2010-01-21 19:25:03 +00:00
fi
2015-08-16 08:49:02 +02:00
define_in_config_if_yes "$_alsa" 'USE_ALSA'
2010-01-21 19:25:03 +00:00
echo "$_alsa"
2013-10-13 11:30:34 +02:00
#
# Check for libjpeg
#
echocheck "libjpeg >= v6b"
if test "$_jpeg" = auto ; then
_jpeg=no
cat > $TMPC << EOF
#include <stdio.h>
#include <jpeglib.h>
int main(void) {
#if JPEG_LIB_VERSION >= 62
#else
syntax error
#endif
return 0;
}
EOF
cc_check $JPEG_CFLAGS $JPEG_LIBS -ljpeg && _jpeg=yes
fi
if test "$_jpeg" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$JPEG_LIBS -ljpeg"
append_var INCLUDES "$JPEG_CFLAGS"
2013-10-13 11:30:34 +02:00
fi
define_in_config_if_yes "$_jpeg" 'USE_JPEG'
echo "$_jpeg"
2012-01-28 10:44:25 +01:00
#
# Check for PNG
#
echocheck "PNG >= 1.2.8"
if test "$_pkg_config" = "yes" && $_pkgconfig --exists libpng; then
append_var PNG_LIBS "`$_pkgconfig --libs libpng`"
append_var PNG_CFLAGS "`$_pkgconfig --cflags libpng`"
else
append_var PNG_LIBS "-lpng -lz"
fi
2012-01-28 10:44:25 +01:00
if test "$_png" = auto ; then
_png=no
cat > $TMPC << EOF
#include <png.h>
int main(void) {
#if PNG_LIBPNG_VER >= 10208
#else
syntax error
#endif
return 0;
}
EOF
cc_check $PNG_CFLAGS $PNG_LIBS && _png=yes
2012-01-28 10:44:25 +01:00
fi
if test "$_png" = yes ; then
append_var LIBS "$PNG_LIBS"
2015-08-16 08:49:02 +02:00
append_var INCLUDES "$PNG_CFLAGS"
2012-01-28 10:44:25 +01:00
fi
define_in_config_if_yes "$_png" 'USE_PNG'
echo "$_png"
#
# Check for Theora Decoder
#
echocheck "libtheoradec >= 1.0"
if test "$_vorbis" = no && test "$_tremor" = no ; then
2012-01-28 10:44:25 +01:00
echo "skipping. no vorbis"
_theoradec=notsupported
fi
if test "$_theoradec" = auto ; then
_theoradec=no
cat > $TMPC << EOF
#include <theora/theoradec.h>
int main(void) { th_ycbcr_buffer yuv; th_decode_ycbcr_out(NULL, yuv); }
EOF
cc_check $THEORADEC_CFLAGS $THEORADEC_LIBS -ltheoradec && _theoradec=yes
fi
if test "$_theoradec" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$THEORADEC_LIBS -ltheoradec"
append_var INCLUDES "$THEORADEC_CFLAGS"
2012-01-28 10:44:25 +01:00
fi
define_in_config_if_yes "$_theoradec" 'USE_THEORADEC'
if test ! "$_theoradec" = notsupported ; then
echo "$_theoradec"
fi
#
# Check for the AAC decoder
#
echocheck "libfaad"
if test "$_faad" = auto ; then
_faad=no
cat > $TMPC << EOF
#include <neaacdec.h>
int main(void) { NeAACDecGetCapabilities(); return 0; }
EOF
cc_check $FAAD_CFLAGS $FAAD_LIBS -lfaad && _faad=yes
fi
if test "$_faad" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$FAAD_LIBS -lfaad"
append_var INCLUDES "$FAAD_CFLAGS"
2012-01-28 10:44:25 +01:00
fi
define_in_config_if_yes "$_faad" 'USE_FAAD'
echo "$_faad"
2011-04-11 15:40:01 +02:00
#
# Check for SEQ MIDI
#
echocheck "SEQ MIDI"
if test "$_seq_midi" = auto ; then
# TODO: Test for /dev/sequencer presence? Or maybe just for /dev ?
2011-06-09 11:17:15 +02:00
# For now, we just always enable it when "posix" mode is on (backends
2011-04-11 15:40:01 +02:00
# that do not want it can disable it by setting _seq_midi=no).
2011-06-09 11:17:15 +02:00
_seq_midi="$_posix"
2011-04-11 15:40:01 +02:00
fi
define_in_config_h_if_yes "$_seq_midi" 'USE_SEQ_MIDI'
echo "$_seq_midi"
2012-07-06 22:05:21 +02:00
#
# Check for sndio
#
echocheck "sndio"
if test "$_sndio" = auto ; then
_sndio=no
cat > $TMPC << EOF
#include <sndio.h>
int main(void) { struct sio_par par; sio_initpar(&par); return 0; }
EOF
cc_check $SNDIO_CFLAGS $SNDIO_LIBS -lsndio && _sndio=yes
fi
if test "$_sndio" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$SNDIO_LIBS -lsndio"
append_var INCLUDES "$SNDIO_CFLAGS"
2012-07-06 22:05:21 +02:00
fi
define_in_config_h_if_yes "$_sndio" 'USE_SNDIO'
echo "$_sndio"
2011-04-14 12:41:26 +02:00
#
# Check for TiMidity(++)
#
echocheck "TiMidity"
if test "$_timidity" = auto ; then
# TODO: Is there a good possibility of auto detecting whether we
# should include TiMidity support? It can only be used on Unix
# currently so we use that as "detection" for now.
2011-06-09 11:17:15 +02:00
_timidity="$_posix"
2011-04-14 12:41:26 +02:00
fi
define_in_config_h_if_yes "$_timidity" 'USE_TIMIDITY'
echo "$_timidity"
#
# 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 $ZLIB_CFLAGS $ZLIB_LIBS -lz && _zlib=yes
fi
if test "$_zlib" = yes ; then
append_var ZLIB_LIBS "-lz"
append_var LIBS "$ZLIB_LIBS"
2015-08-16 08:49:02 +02:00
append_var INCLUDES "$ZLIB_CFLAGS"
fi
2011-04-11 15:40:01 +02:00
define_in_config_if_yes "$_zlib" 'USE_ZLIB'
echo "$_zlib"
2012-01-06 22:56:21 +01:00
#
2011-05-01 17:49:40 +02:00
# Check for LibMPEG2
#
2013-07-07 15:29:33 +02:00
echocheck "libmpeg2 >= 0.4.0"
2011-05-01 17:49:40 +02:00
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;
2013-07-07 15:29:33 +02:00
extern "C" {
2011-05-01 17:49:40 +02:00
#include <mpeg2dec/mpeg2.h>
2013-07-07 15:29:33 +02:00
}
2011-05-01 17:49:40 +02:00
int main(void) {
2013-07-07 15:29:33 +02:00
#if MPEG2_RELEASE < MPEG2_VERSION(0, 4, 0)
#error libmpeg2 version too low
#endif
2011-05-01 17:49:40 +02:00
/* mpeg2_state_t first appears in 0.4.0 */
mpeg2_state_t state;
2013-07-07 15:29:33 +02:00
return 0;
2011-05-01 17:49:40 +02:00
}
EOF
if test -n "$_host"; then
# don't execute while cross compiling
cc_check $MPEG2_CFLAGS $MPEG2_LIBS -lmpeg2 && _mpeg2=yes
else
cc_check_no_clean $MPEG2_CFLAGS $MPEG2_LIBS -lmpeg2 && $TMPO$HOSTEXEEXT && _mpeg2=yes
cc_check_clean
fi
fi
if test "$_mpeg2" = yes ; then
2015-08-16 08:49:02 +02:00
append_var INCLUDES "$MPEG2_CFLAGS"
append_var LIBS "$MPEG2_LIBS -lmpeg2"
2011-05-01 17:49:40 +02:00
fi
define_in_config_if_yes "$_mpeg2" 'USE_MPEG2'
echo "$_mpeg2"
2013-07-07 15:29:33 +02:00
#
# Check for liba52
2013-07-07 15:29:33 +02:00
#
echocheck "liba52"
if test "$_a52" = auto ; then
_a52=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;
extern "C" {
#include <a52dec/a52.h>
}
int main(void) {
a52_state_t *state = a52_init(0);
a52_free(state);
return 0;
}
EOF
if test -n "$_host"; then
# don't execute while cross compiling
cc_check $A52_CFLAGS $A52_LIBS -la52 && _a52=yes
else
cc_check_no_clean $A52_CFLAGS $A52_LIBS -la52 && $TMPO$HOSTEXEEXT && _a52=yes
cc_check_clean
fi
fi
if test "$_a52" = yes ; then
INCLUDES="$INCLUDES $A52_FLAGS"
LIBS="$LIBS $A52_LIBS -la52"
fi
define_in_config_if_yes "$_a52" 'USE_A52'
echo "$_a52"
#
# Check for Sparkle if updates support is enabled
#
case $_host_os in
darwin*)
echocheck "Sparkle"
if test "$_updates" = no; then
_sparkle=no
else
if test -z $_sparklepath; then
_sparklepath=/Library/Frameworks
fi
SPARKLE_CFLAGS="-F$_sparklepath"
SPARKLE_LIBS="-F$_sparklepath"
if test "$_sparkle" = auto ; then
_sparkle=no
cat > $TMPC << EOF
2013-07-07 15:29:33 +02:00
#include <Cocoa/Cocoa.h>
#include <Sparkle/Sparkle.h>
int main(void) { SUUpdater *updater = [SUUpdater sharedUpdater]; return 0; }
EOF
cc_check $SPARKLE_CFLAGS $SPARKLE_LIBS -framework Sparkle -ObjC++ -lobjc && _sparkle=yes
fi
if test "$_sparkle" = yes ; then
append_var LIBS "$SPARKLE_LIBS -framework Sparkle"
append_var INCLUDES "$SPARKLE_CFLAGS"
fi
define_in_config_if_yes "$_sparkle" 'USE_SPARKLE'
fi
echo "$_sparkle"
;;
mingw*)
echocheck "Sparkle"
if test "$_updates" = no; then
_sparkle=no
else
if test ! -z $_sparklepath ; then
SPARKLE_CFLAGS="-I$_sparklepath/include"
SPARKLE_LIBS="-L$_sparklepath/Release -L$_sparklepath/x64/Release"
fi
if test "$_sparkle" = auto ; then
_sparkle=no
cat > $TMPC << EOF
#include <winsparkle.h>
int main(void) { win_sparkle_get_update_check_interval(); return 0; }
EOF
cc_check $SPARKLE_CFLAGS $SPARKLE_LIBS -lWinSparkle && _sparkle=yes
fi
if test "$_sparkle" = yes ; then
append_var LIBS "$SPARKLE_LIBS -lWinSparkle"
append_var INCLUDES "$SPARKLE_CFLAGS"
fi
define_in_config_if_yes "$_sparkle" 'USE_SPARKLE'
fi
echo "$_sparkle"
;;
*)
_sparkle=no
;;
esac
2016-11-12 12:59:06 +01:00
#
# Check for libcurl to be present
#
if test "$_libcurl" != "no"; then
# Look for the curl-config script
find_libcurlconfig
if test -z "$_libcurlconfig"; then
_libcurl=no
else
if test -n "$_staticlibpath"; then
LIBCURL_LIBS=`$_libcurlconfig --static-libs`
else
LIBCURL_LIBS=`$_libcurlconfig --libs`
fi
2016-11-12 12:59:06 +01:00
LIBCURL_CFLAGS=`$_libcurlconfig --cflags`
case $_host_os in
amigaos* | morphos*)
2016-11-12 12:59:06 +01:00
append_var LIBCURL_LIBS "-lpthread"
;;
# macOS does not allow static libs, overriding
darwin*)
LIBCURL_LIBS=`$_libcurlconfig --libs`
;;
psp2*)
append_var LIBCURL_LIBS "-lssl -lcrypto"
;;
2016-11-12 12:59:06 +01:00
esac
if test "$_libcurl" = "auto"; then
_libcurl=no
cat > $TMPC << EOF
#include <curl/curl.h>
int main(int argc, char *argv[]) {
int x;
curl_easy_setopt(NULL,CURLOPT_URL,NULL);
x=CURL_ERROR_SIZE;
x=CURLOPT_WRITEFUNCTION;
x=CURLOPT_WRITEDATA;
x=CURLOPT_ERRORBUFFER;
x=CURLOPT_STDERR;
x=CURLOPT_VERBOSE;
curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
if (data->features & CURL_VERSION_SSL)
return 0;
return 1;
}
EOF
cc_check_no_clean $LIBCURL_CFLAGS $LIBCURL_LIBS
if test "$?" -eq 0; then
if test -n "$_host"; then
# In cross-compiling mode, we cannot run the result, assume SSL is available
_libcurl=yes
else
$TMPO$HOSTEXEEXT
if test "$?" -eq 0; then
_libcurl=yes
else
_libcurl="no SSL support"
fi
fi
fi
cc_check_clean
fi
if test "$_libcurl" = "yes"; then
append_var LIBS "$LIBCURL_LIBS"
append_var INCLUDES "$LIBCURL_CFLAGS"
fi
fi
fi
echocheck "libcurl"
echo "$_libcurl"
define_in_config_if_yes "$_libcurl" "USE_LIBCURL"
#
# Check whether to build cloud integration support
#
echo_n "Cloud integration... "
if test "$_cloud" = "no"; then
echo "no"
else
_cloud=no
if test "$_sdlnet" = "yes"; then
_cloud=yes
echo_n "local"
fi
if test "$_libcurl" = "yes"; then
if test "$_cloud" = "yes"; then echo_n ", "; fi
_cloud=yes
echo_n "servers"
fi
if test "$_cloud" = "no"; then
echo_n "no"
fi
echo # newline
fi
define_in_config_if_yes $_cloud 'USE_CLOUD'
#
# Check is NSDockTilePlugIn protocol is supported
#
case $_host_os in
darwin*)
# NSDockTilePlugIn was added in OS X 10.6, so will not be available when compiling on older OS X versions.
echocheck "DockTilePlugin"
if test "$_osxdockplugin" = auto ; then
_osxdockplugin=no
cat > $TMPC << EOF
#include <Cocoa/Cocoa.h>
@interface ScummVMDockTilePlugIn : NSObject <NSDockTilePlugIn> {
}
@end
EOF
cc_check -c -ObjC++ && _osxdockplugin=yes
fi
define_in_config_if_yes "$_osxdockplugin" 'USE_DOCKTILEPLUGIN'
echo "$_osxdockplugin"
;;
*)
_osxdockplugin=no
;;
esac
2013-07-07 15:29:33 +02:00
2010-01-21 19:25:03 +00:00
#
# Check for FluidSynth
2010-01-21 19:25:03 +00:00
#
2016-01-30 21:18:08 +01:00
echocheck "FluidSynth"
append_var FLUIDSYNTH_LIBS "-lfluidsynth"
case $_host_os in
mingw*)
FLUIDSYNTH_STATIC_LIBS="$FLUIDSYNTH_LIBS -lglib-2.0 -lintl -liconv -lws2_32 -lole32 -lshlwapi -lpcre -ldsound -lwinmm"
2016-01-30 21:18:08 +01:00
;;
darwin*)
FLUIDSYNTH_STATIC_LIBS="$FLUIDSYNTH_LIBS -framework Foundation -framework CoreMIDI -framework CoreAudio -lglib-2.0 -lintl -liconv -lreadline"
;;
iphone)
FLUIDSYNTH_STATIC_LIBS="$FLUIDSYNTH_LIBS -framework Foundation -framework CoreMIDI -lglib-2.0 -lintl -liconv"
;;
switch)
FLUIDSYNTH_STATIC_LIBS="$FLUIDSYNTH_LIBS -lnx"
;;
2016-01-30 21:18:08 +01:00
*)
FLUIDSYNTH_STATIC_LIBS="$FLUIDSYNTH_LIBS -lglib-2.0 -lintl -liconv"
;;
esac
if test "$_fluidsynth" = auto; then
2010-01-21 19:25:03 +00:00
_fluidsynth=no
cat > $TMPC << EOF
#include <fluidsynth.h>
2016-01-30 21:18:08 +01:00
int main(void) { delete_fluid_settings(new_fluid_settings()); return 0; }
2010-01-21 19:25:03 +00:00
EOF
2016-01-30 21:18:08 +01:00
cc_check_no_clean $FLUIDSYNTH_CFLAGS $FLUIDSYNTH_LIBS && _fluidsynth=yes
if test "$_fluidsynth" != yes && test "$_pkg_config" = "yes" && $_pkgconfig --exists fluidsynth; then
FLUIDSYNTH_LIBS="`$_pkgconfig --static --libs fluidsynth`"
cc_check_no_clean $FLUIDSYNTH_CFLAGS $FLUIDSYNTH_LIBS && _fluidsynth=yes
fi
2016-01-30 21:18:08 +01:00
if test "$_fluidsynth" != yes; then
FLUIDSYNTH_LIBS="$FLUIDSYNTH_STATIC_LIBS"
cc_check_no_clean $FLUIDSYNTH_CFLAGS $FLUIDSYNTH_LIBS && _fluidsynth=yes
fi
cc_check_clean
2010-01-21 19:25:03 +00:00
fi
2016-01-30 21:18:08 +01:00
if test "$_fluidsynth" = yes; then
append_var LIBS "$FLUIDSYNTH_LIBS"
2015-08-16 08:49:02 +02:00
append_var INCLUDES "$FLUIDSYNTH_CFLAGS"
2010-01-21 19:25:03 +00:00
fi
2012-08-20 08:20:05 +02:00
define_in_config_if_yes "$_fluidsynth" 'USE_FLUIDSYNTH'
2010-01-21 19:25:03 +00:00
echo "$_fluidsynth"
#
# 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
2011-04-11 15:40:01 +02:00
cc_check_no_clean $READLINE_CFLAGS $READLINE_LIBS $_READLINE_LIBS && _readline=yes
2010-01-21 19:25:03 +00:00
if test "$_readline" = no ; then
_READLINE_LIBS="-lreadline -ltermcap"
2011-04-11 15:40:01 +02:00
cc_check_no_clean $READLINE_CFLAGS $READLINE_LIBS $_READLINE_LIBS && _readline=yes
2010-01-21 19:25:03 +00:00
fi
fi
2011-04-11 15:40:01 +02:00
cc_check_clean
2010-01-21 19:25:03 +00:00
echo "$_readline"
else
_readline=no
echo "skipping (text console disabled)"
fi
if test "$_readline" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$READLINE_LIBS $_READLINE_LIBS"
append_var INCLUDES "$READLINE_CFLAGS"
2014-01-25 22:16:57 +01:00
#
# Check the type of rl_completion_entry_function.
# It can be int(*)(const char *, int) or char *(*)(const char *, int).
#
cat > $TMPC << EOF
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int readline_completionFunction(const char *, int);
int main(void) {
char *x = readline("");
rl_completion_entry_function = &readline_completionFunction;
}
EOF
cc_check -c && add_line_to_config_h '#define USE_READLINE_INT_COMPLETION'
2010-01-21 19:25:03 +00:00
fi
2011-04-11 15:40:01 +02:00
define_in_config_h_if_yes "$_readline" 'USE_READLINE'
2010-01-21 19:25:03 +00:00
2011-06-09 11:17:15 +02:00
define_in_config_h_if_yes "$_text_console" 'USE_TEXT_CONSOLE_FOR_DEBUGGER'
2011-07-20 06:58:19 +02:00
#
# Check for Unity if taskbar integration is enabled
#
echocheck "libunity"
if test "$_unix" = no || test "$_taskbar" = no || test "$_pkg_config" = no; then
2011-07-20 06:58:19 +02:00
_libunity=no
else
if test "$_libunity" = auto ; then
case $_host_os in
mingw*)
# pkgconfig and unity are not supported on mingw
_libunity=no
;;
*)
# Unity has a lots of dependencies, update the libs and cflags var with them
LIBUNITY_LIBS="$LIBUNITY_LIBS `$_pkgconfig --libs 'unity > 3.8.1' 2>> "$TMPLOG"`"
LIBUNITY_CFLAGS="$LIBUNITY_CFLAGS `$_pkgconfig --cflags 'unity > 3.8.1' 2>> "$TMPLOG"`"
2011-07-20 06:58:19 +02:00
_libunity=no
cat > $TMPC << EOF
#include <unity.h>
int main(void) {
2012-01-06 11:37:57 +01:00
unity_launcher_entry_get_for_desktop_id("residualvm.desktop");
2011-07-20 06:58:19 +02:00
return 0;
}
EOF
cc_check $LIBUNITY_CFLAGS $LIBUNITY_LIBS && _libunity=yes
;;
esac
fi
if test "$_libunity" = yes ; then
2014-12-04 20:46:56 +01:00
if test "$LIBUNITY_CFLAGS" = "" || test "$LIBUNITY_LIBS" = ""; then
LIBUNITY_LIBS="$LIBUNITY_LIBS `$_pkgconfig --libs 'unity > 3.8.1' 2>> "$TMPLOG"`"
LIBUNITY_CFLAGS="$LIBUNITY_CFLAGS `$_pkgconfig --cflags 'unity > 3.8.1' 2>> "$TMPLOG"`"
2014-12-04 20:46:56 +01:00
fi
2015-08-16 08:49:02 +02:00
append_var LIBS "$LIBUNITY_LIBS"
append_var CXXFLAGS "$LIBUNITY_CFLAGS"
2011-07-20 06:58:19 +02:00
fi
2014-01-25 22:16:57 +01:00
define_in_config_h_if_yes "$_libunity" 'USE_UNITY'
2011-07-20 06:58:19 +02:00
fi
echo "$_libunity"
#
# Check for GTK if system dialogs are enabled
#
echocheck "gtk"
if test "$_unix" = no || test "$_dialogs" = no || test "$_pkg_config" = no; then
_gtk=no
else
if test "$_gtk" = auto ; then
case $_host_os in
mingw*)
# pkgconfig and gtk are not supported on mingw
_gtk=no
;;
*)
# GTK has a lots of dependencies, update the libs and cflags var with them
GTK_LIBS="$GTK_LIBS `$_pkgconfig --libs gtk+-3.0 2>> "$TMPLOG"`"
GTK_CFLAGS="$GTK_CFLAGS `$_pkgconfig --cflags gtk+-3.0 2>> "$TMPLOG"`"
_gtk=no
cat > $TMPC << EOF
#include <gtk/gtk.h>
int main(void) {
gtk_init_check(NULL, NULL);
return 0;
}
EOF
cc_check $GTK_CFLAGS $GTK_LIBS && _gtk=yes
;;
esac
fi
if test "$_gtk" = yes ; then
if test "$GTK_CFLAGS" = "" || test "$GTK_LIBS" = ""; then
GTK_LIBS="$GTK_LIBS `$_pkgconfig --libs gtk+-3.0 2>> "$TMPLOG"`"
GTK_CFLAGS="$GTK_CFLAGS `$_pkgconfig --cflags gtk+-3.0 2>> "$TMPLOG"`"
fi
append_var LIBS "$GTK_LIBS"
append_var CXXFLAGS "$GTK_CFLAGS"
fi
define_in_config_h_if_yes "$_gtk" 'USE_GTK'
fi
echo "$_gtk"
2012-02-10 07:51:41 +01:00
#
# Check for FreeType2 to be present
#
find_freetype() {
# Wrapper function which tries to find freetype
# either by calling freetype-config or by using
# pkg-config.
# As of freetype-2.9.1 the freetype-config file
# no longer gets installed by default.
if test "$_pkg_config" = "yes" && $_pkgconfig --exists freetype2; then
FREETYPE2_LIBS=`$_pkgconfig --libs freetype2`
FREETYPE2_CFLAGS=`$_pkgconfig --cflags freetype2`
FREETYPE2_STATIC_LIBS=`$_pkgconfig --static --libs freetype2`
_freetype_found="true"
2012-02-10 07:51:41 +01:00
else
# Look for the freetype-config script
find_freetypeconfig
if test -n "$_freetypeconfig"; then
# Since 2.3.12, freetype-config prepends $SYSROOT to everything.
# This means we can't pass it a --prefix that includes $SYSROOT.
freetypeprefix="$_freetypepath"
if test -n "$SYSROOT" -a "$SYSROOT" != "/"; then
teststring=VeryImplausibleSysrootX1Y2Z3
if ( env SYSROOT=/$teststring "$_freetypeconfig" --cflags | grep $teststring 2> /dev/null > /dev/null ); then
echo "Adapting FreeType prefix to SYSROOT" >> "$TMPLOG"
freetypeprefix="${freetypeprefix##$SYSROOT}"
fi
fi
FREETYPE2_LIBS=`$_freetypeconfig --prefix="$freetypeprefix" --libs`
FREETYPE2_CFLAGS=`$_freetypeconfig --prefix="$freetypeprefix" --cflags`
FREETYPE2_STATIC_LIBS=`$_freetypeconfig --prefix="$freetypeprefix" --static --libs 2>/dev/null`
_freetype_found="true"
fi
fi
}
if test "$_freetype2" != "no"; then
find_freetype
if test $_freetype_found != true; then
_freetype2=no
else
2012-02-10 07:51:41 +01:00
if test "$_freetype2" = "auto"; then
_freetype2=no
cat > $TMPC << EOF
#include <ft2build.h>
#include FT_FREETYPE_H
int main(int argc, char *argv[]) {
FT_Library library;
FT_Error error = FT_Init_FreeType(&library);
FT_Done_FreeType(library);
}
EOF
2016-01-30 21:18:08 +01:00
cc_check_no_clean $FREETYPE2_CFLAGS $FREETYPE2_LIBS && _freetype2=yes
# Modern freetype-config scripts accept --static to get all
# required flags for static linking. We abuse this to detect
# FreeType2 builds which are static themselves.
if test "$_freetype2" != "yes"; then
FREETYPE2_LIBS="$FREETYPE2_STATIC_LIBS"
2016-01-30 21:18:08 +01:00
cc_check_no_clean $FREETYPE2_CFLAGS $FREETYPE2_LIBS && _freetype2=yes
fi
cc_check_clean
2012-02-10 07:51:41 +01:00
fi
if test "$_freetype2" = "yes"; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$FREETYPE2_LIBS"
append_var CXXFLAGS "$FREETYPE2_CFLAGS"
2012-02-10 07:51:41 +01:00
fi
fi
fi
echocheck "FreeType2"
echo "$_freetype2"
2012-03-21 05:47:06 +01:00
define_in_config_if_yes "$_freetype2" "USE_FREETYPE2"
2012-02-10 07:51:41 +01:00
# ResidualVM specific start ->
#
# Check for GLEW
#
echocheck "GL Extension Wrangler (GLEW)"
if test "$_glew" != "no" && test "$_opengl_mode" = "no"; then
_glew=no
echo "cannot use GLEW without OpenGL"
elif test "$_glew" != "no" && test "$_opengles2" = "yes"; then
_glew=no
echo "not needed with OpenGL ES v2"
else
case $_host_os in
mingw*)
_GLEW_CFLAGS="-DGLEW_STATIC"
_GLEW_LIBS="-lglew32"
;;
*)
_GLEW_LIBS="-lGLEW"
;;
esac
if test "$_glew" = auto; then
_glew=no
cat > $TMPC << EOF
#include <GL/glew.h>
int main(void) {
glewInit();
return 0;
}
EOF
cc_check $DEFINES $GLEW_CFLAGS $_GLEW_CFLAGS $GLEW_LIBS $_GLEW_LIBS && _glew=yes
fi
if test "$_glew" = yes ; then
append_var LIBS "$GLEW_LIBS $_GLEW_LIBS"
append_var INCLUDES "$GLEW_CFLAGS $_GLEW_CFLAGS"
fi
echo "$_glew"
fi
define_in_config_if_yes "$_glew" "USE_GLEW"
# ResidualVM specific ends here <-
2011-04-14 12:41:26 +02:00
#
# Check for OpenGL (ES)
#
echocheck "OpenGL"
2012-08-20 08:20:05 +02:00
case $_backend in
openpandora)
# Only enable OpenGL ES on the OpanPandora if --opengl-mode=gles is passed in explicitly.
if test "$_opengl_mode" = "gles" ; then
append_var LIBS "-lGLES_CM -lEGL -lX11"
else
_opengl_mode=none
2012-08-20 08:20:05 +02:00
fi
;;
esac
if test "$_opengl_mode" = auto ; then
case $_backend in
android)
# Android always runs in GLES mode
_opengl_mode=gles
;;
sdl)
case $_sdlversion in
1.2.*)
# Stock SDL 1.2 only supports OpenGL contexts.
_opengl_mode=gl
;;
2.0.*)
# SDL2 supports both OpenGL + OpenGL ES contexts.
# However, Mac OS X only allows OpenGL context creation at
# this time, thus we limit us to OpenGL on that platform.
case $_host_os in
darwin*)
_opengl_mode=gl
;;
*)
_opengl_mode=any
;;
esac
;;
esac
;;
*)
_opengl_mode=none
;;
esac
fi
_opengl=yes
case $_opengl_mode in
auto)
# This case should never occur but better safe than sorry.
echo "no"
_opengl=no
;;
none)
echo "no"
_opengl=no
;;
any)
echo "yes (runtime detection)"
add_line_to_config_h "#undef USE_GLES_MODE"
;;
gl)
echo "yes (OpenGL)"
add_line_to_config_h "#define USE_GLES_MODE 0"
;;
gles)
echo "yes (OpenGL ES)"
add_line_to_config_h "#define USE_GLES_MODE 1"
;;
gles2)
echo "yes (OpenGL ES 2)"
add_line_to_config_h "#define USE_GLES_MODE 2"
;;
*)
echo "invalid mode specification '$_opengl_mode'. Aborting."
exit 1
;;
esac
# ResidualVM specific start ->
#
# Check for OpenGL (ES) for game
#
echocheck "OpenGL for game"
if test "$_opengl_game" = auto ; then
_opengl_game=no
if test "$_backend" = "sdl" || test "$_backend" = "android"; then
2012-02-24 12:15:44 +01:00
# Try different header filenames
# 1) GL/gl.h This is usually used on POSIX and Windows systems
# 2) OpenGL/gl.h This is used on Mac OS X
# 3) GLES2/gl2.h This is used for OpenGL ES 2.x
# 4) GLES/gl.h This is used for OpenGL ES 1.x
for i in "GL/gl.h" "OpenGL/gl.h" "GLES2/gl2.h" "GLES/gl.h"; do
2012-02-24 12:15:44 +01:00
# Test the current header for OpenGL
if test "$_opengles2" = no ; then
cat > $TMPC << EOF
2011-04-14 12:41:26 +02:00
#include <$i>
2013-07-07 15:29:33 +02:00
#include <stdio.h>
int main(void) { printf("ANTIVIRUS FALSE POSITIVE WORKAROUND"); return GL_VERSION_1_1; }
2011-04-14 12:41:26 +02:00
EOF
cc_check $DEFINES $OPENGL_CFLAGS $OPENGL_LIBS && _opengl_game=yes && break
fi
2011-04-14 12:41:26 +02:00
# Test the current header for OpenGL ES2
2012-02-24 12:15:44 +01:00
cat > $TMPC << EOF
2011-04-14 12:41:26 +02:00
#include <$i>
int main(void) { return GL_ES_VERSION_2_0; }
EOF
cc_check $DEFINES $OPENGL_CFLAGS $OPENGL_LIBS && _opengl_game=yes && _opengles2=yes && break
# Test the current header for OpenGL ES
if test "$_opengles2" = no ; then
cat > $TMPC << EOF
#include <$i>
2011-04-14 12:41:26 +02:00
int main(void) { return GL_OES_VERSION_1_1; }
EOF
cc_check $DEFINES $OPENGL_CFLAGS $OPENGL_LIBS && _opengl_game=yes && _opengles=yes && break
fi
2012-02-24 12:15:44 +01:00
done
fi
2011-04-14 12:41:26 +02:00
fi
if test "$_opengl_game" = yes ; then
2011-04-14 12:41:26 +02:00
# Our simple test case
cat > $TMPC << EOF
int main(void) { return 0; }
EOF
_opengl_game=no
2011-04-14 12:41:26 +02:00
# Try different library names
if test "$_opengles" = "yes" ; then
# 1) GLES_CM This is usually used for OpenGL ES 1.1 (Common profile)
# 2) GLESv1_CM This is used by the Windows Mali OpenGL ES 1.1 Emulator
# 3) glesv1 This is used by the Linux Mali OpenGL ES 1.1 Emulator
_opengles=no
for lib in "-lGLES_CM" "-lGLESv1_CM" "-lglesv1"; do
if cc_check_no_clean $DEFINES $OPENGL_CFLAGS $OPENGL_LIBS $lib
then
_opengl_game=yes
2011-04-14 12:41:26 +02:00
_opengles=yes
2015-08-16 08:49:02 +02:00
append_var OPENGL_LIBS "$lib"
2011-04-14 12:41:26 +02:00
break
fi
done
elif test "$_opengles2" = yes ; then
# 1) GLESv2 This is generally used by nearly all platforms for OpenGL ES 2
2019-08-10 14:11:03 +02:00
# 2) ogles2 This is used by AmigaOS4 (and probably others)
_opengles2=no
for lib in "-lGLESv2" "-logles2"; do
if cc_check_no_clean $DEFINES $OPENGL_CFLAGS $OPENGL_LIBS $lib
then
_opengl_game=yes
_opengles2=yes
_opengl_shaders=yes
append_var OPENGL_LIBS "$lib"
break
fi
done
2011-04-14 12:41:26 +02:00
else
2011-04-14 15:56:58 +02:00
case $_host_os in
darwin*)
OPENGL_LIBS="-framework OpenGL"
;;
mingw*)
2014-07-19 12:45:09 +02:00
OPENGL_LIBS="-lopengl32"
2011-04-14 15:56:58 +02:00
;;
*)
2014-07-19 12:45:09 +02:00
OPENGL_LIBS="-lGL"
2011-04-14 15:56:58 +02:00
;;
esac
if cc_check_no_clean $DEFINES $OPENGL_CFLAGS $OPENGL_LIBS
then
_opengl_game=yes
2011-04-14 15:56:58 +02:00
fi
2011-04-14 12:41:26 +02:00
fi
if test "$_opengl_game" = yes ; then
2015-08-16 08:49:02 +02:00
append_var LIBS "$OPENGL_LIBS"
append_var INCLUDES "$OPENGL_CFLAGS"
if test "$_opengl_shaders" = auto; then
_opengl_shaders=$_glew
fi
if test "$_opengl_shaders" = yes && test "$_opengles2" = no && test "$_glew" = no; then
echo "WARNING: OpenGL Shader support requires GLEW!"
_opengl_shaders=no
2012-12-06 22:47:48 +01:00
fi
else
_opengl_shaders=no
2011-04-14 12:41:26 +02:00
fi
cc_check_clean
2011-04-14 12:41:26 +02:00
fi
# Make sure both flags are synced to proper compile with USE_OPENGL
if test "$_opengl" = "no" || test "$_opengl_game" = "no" ; then
_opengl=no
_opengl_game=no
_opengles=no
_opengles2=no
fi
2012-01-28 10:44:25 +01:00
2011-04-14 12:41:26 +02:00
if test "$_opengles" = "yes" ; then
echo "yes (OpenGL ES)"
2013-02-07 18:17:53 +01:00
elif test "$_opengles2" = "yes" ; then
echo "yes (OpenGL ES2)"
2011-04-14 12:41:26 +02:00
else
if test "$_opengl_shaders" = "yes" ; then
echo "$_opengl_game (shaders enabled)"
elif test "$_opengl" = "yes" ; then
echo "$_opengl_game (shaders disabled)"
else
echo "no"
fi
2011-04-14 12:41:26 +02:00
fi
# ResidualVM specific ends here <-
2011-04-14 12:41:26 +02:00
define_in_config_if_yes "$_opengl" "USE_OPENGL"
define_in_config_if_yes "$_opengles" "USE_GLES" # ResidualVM
define_in_config_if_yes "$_opengles2" "USE_GLES2" # ResidualVM
define_in_config_if_yes "$_opengl_shaders" "USE_OPENGL_SHADERS" # ResidualVM
#
# Check for iconv
#
echo_n "Checking whether iconv.h is present... "
if test "$_iconv" = auto ; then
_iconv=no
cat > $TMPC << EOF
#include <iconv.h>
int main(int, char **) {
return 0;
}
EOF
cc_check $ICONV_CFLAGS $ICONV_LIBS && _iconv=yes
fi
create_iconv_test() {
cat > $TMPC << EOF
#include <iconv.h>
int main(int, char **) {
iconv_t iconv = iconv_open("UTF-32", "SJIS");
iconv_close(iconv);
return 0;
}
EOF
}
echo "$_iconv"
if test "$_iconv" = yes ; then
echo_n "Checking whether iconv needs linking against libiconv... "
needs_iconvlib='auto'
create_iconv_test
cc_check $ICONV_CFLAGS $ICONV_LIBS -liconv && needs_iconvlib='yes'
# We do check linking without -liconv here too, just in case
# it would fail otherwise too
create_iconv_test
cc_check $ICONV_CFLAGS $ICONV_LIBS && needs_iconvlib='no'
if test "$needs_iconvlib" = auto ; then
_iconv=no
echo "does not link at all"
else
if test "$needs_iconvlib" = yes ; then
append_var ICONV_LIBS "-liconv"
fi
echo "$needs_iconvlib"
echo_n "Checking signature of iconv... "
uses_const=no
cat > $TMPC << EOF
#include <iconv.h>
int main(int argc, char **argv) {
iconv_t iconvP;
const char **inbuf = 0;
iconv(iconvP, inbuf, 0, 0, 0);
return 0;
}
EOF
cc_check $ICONV_CFLAGS $ICONV_LIBS && uses_const=yes
if test "$uses_const" = yes ; then
echo "iconv_t, const char **, size_t *, char **, size_t *"
else
echo "iconv_t, char **, size_t *, char **, size_t *"
fi
define_in_config_if_yes "$uses_const" 'ICONV_USES_CONST'
fi
fi
if test "$_iconv" = yes ; then
append_var LIBS "$ICONV_LIBS"
append_var INCLUDES "$ICONV_CFLAGS"
fi
echocheck "iconv"
define_in_config_if_yes "$_iconv" 'USE_ICONV'
echo "$_iconv"
#
# Check for Linux CD-ROM support
#
case $_host_os in
*linux*)
echocheck "Linux CD-ROM"
linuxcd=no
cat > $TMPC << EOF
#include <linux/cdrom.h>
#include <sys/sysmacros.h>
#include <sys/types.h>
int main(void) {
int x = CDROMREADAUDIO;
dev_t dev;
return major(dev) + x;
}
EOF
cc_check && linuxcd=yes
define_in_config_if_yes "$linuxcd" 'USE_LINUXCD'
echo "$linuxcd"
;;
esac
#
# 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"
2011-04-10 21:59:04 +02:00
NASMFLAGS="-O1 -g"
echo $NASM
break
fi
done
2011-04-10 21:59:04 +02:00
# fallback to the nasm compatible yasm
if test x$NASM = x -o x$NASM = x'"$NASM"'; then
for path_dir in $_nasmpath; do
if test -x "$path_dir/yasm$NATIVEEXEEXT" ; then
NASM="$path_dir/yasm$NATIVEEXEEXT"
NASMFLAGS="-a x86 -m x86"
echo $NASM
break
fi
done
fi
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
2011-04-14 12:41:26 +02:00
darwin*)
2015-08-16 08:49:02 +02:00
append_var NASMFLAGS "-f macho"
;;
mingw*)
2015-08-16 08:49:02 +02:00
append_var NASMFLAGS "-f win32"
;;
2011-04-14 12:41:26 +02:00
os2-emx*)
2015-08-16 08:49:02 +02:00
append_var NASMFLAGS "-f aout"
;;
*)
2015-08-16 08:49:02 +02:00
append_var NASMFLAGS "-f elf"
;;
esac
_nasm=yes
fi
fi
fi
2011-04-11 15:40:01 +02:00
define_in_config_if_yes $_nasm 'USE_NASM'
#
# Check for pandoc
#
if test "$_pandoc" = yes ; then
echocheck "pandoc"
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$SEPARATOR
for path_dir in $_pandocpath; do
if test -x "$path_dir/pandoc$NATIVEEXEEXT" ; then
PANDOC="$path_dir/pandoc$NATIVEEXEEXT"
break
fi
done
IFS="$ac_save_ifs"
if ! test "$PANDOC" ; then
_pandoc=no
fi
echo $_pandoc
fi
define_in_config_if_yes $_pandoc 'USE_PANDOC'
#
# Check for FriBidi
#
echocheck "FriBidi"
if test "$_pkg_config" = "yes" && $_pkgconfig --exists fribidi; then
append_var FRIBIDI_LIBS "`$_pkgconfig --libs fribidi`"
append_var FRIBIDI_CFLAGS "`$_pkgconfig --cflags fribidi`"
else
append_var FRIBIDI_LIBS "-lfribidi"
fi
if test "$_fribidi" = auto ; then
_fribidi=no
cat > $TMPC << EOF
#include <fribidi/fribidi.h>
int main(void) { return 0; }
EOF
cc_check $FRIBIDI_CFLAGS $FRIBIDI_LIBS && _fribidi=yes
fi
if test "$_fribidi" = yes ; then
append_var LIBS "$FRIBIDI_LIBS -lfribidi"
append_var INCLUDES "$FRIBIDI_CFLAGS"
fi
define_in_config_if_yes "$_fribidi" 'USE_FRIBIDI'
echo "$_fribidi"
#
# Test C++11 Compatibility
#
define_in_config_if_yes "$_test_cxx11" 'ENABLE_TEST_CPP_11'
echo_n "Test C++11 compatibility during compilation... "
echo "$_test_cxx11"
# Default to plain text output for pandoc
if test -z "$_pandocformat" -o "$_pandocformat" = "default"; then
_pandocformat="plain"
fi
if test "$_pandocext" = "default"; then
if test "$_pandocformat" = plain; then
_pandocext=""
else
_pandocext=".$_pandocformat"
fi
fi
#
# Check for Discord
#
echocheck "Discord RPC"
if test "$_discord" = auto ; then
_discord=no
cat > $TMPC << EOF
#include <discord_rpc.h>
int main(void) { Discord_Shutdown(); return 0; }
EOF
cc_check $DISCORD_CFLAGS $DISCORD_LIBS -ldiscord-rpc && _discord=yes
fi
if test "$_discord" = yes ; then
append_var LIBS "$DISCORD_LIBS -ldiscord-rpc"
append_var INCLUDES "$DISCORD_CFLAGS"
fi
define_in_config_if_yes "$_discord" 'USE_DISCORD'
echo "$_discord"
#
# Enable vkeybd / event recorder
#
2011-06-09 11:17:15 +02:00
define_in_config_if_yes $_vkeybd 'ENABLE_VKEYBD'
2013-07-07 15:29:33 +02:00
define_in_config_if_yes $_eventrec 'ENABLE_EVENTRECORDER'
2011-04-11 02:28:51 +02:00
# Check whether to build translation support
#
echo_n "Building translation support... "
2011-04-11 15:40:01 +02:00
define_in_config_if_yes $_translation 'USE_TRANSLATION'
2011-04-11 02:28:51 +02:00
if test "$_translation" = no ; then
echo "no"
else
echo_n "yes ("
2011-07-20 06:58:19 +02:00
if test "$_detectlang" != yes ; then
cat > $TMPC << EOF
2011-04-11 02:28:51 +02:00
#include <locale.h>
int main(void) { setlocale(LC_ALL, ""); return 0; }
EOF
2011-07-20 06:58:19 +02:00
_detectlang=no
cc_check && _detectlang=yes
2011-07-20 06:58:19 +02:00
fi
2011-04-11 02:28:51 +02:00
2011-04-11 15:40:01 +02:00
define_in_config_h_if_yes $_detectlang 'USE_DETECTLANG'
2011-04-11 02:28:51 +02:00
if test "$_detectlang" = yes ; then
2011-04-11 11:41:07 +02:00
echo "with runtime language detection)"
2011-04-11 02:28:51 +02:00
else
echo "without runtime language detection)"
fi
fi
2011-07-20 06:58:19 +02:00
#
# Check whether to build taskbar integration support
#
echo_n "Building taskbar integration support... "
2014-01-25 22:16:57 +01:00
if test "$_taskbar" = "no"; then
echo "no"
else
2011-07-20 06:58:19 +02:00
case $_host_os in
mingw*)
2015-08-16 08:49:02 +02:00
append_var LIBS "-lole32 -luuid"
2011-07-20 06:58:19 +02:00
echo "win32"
2014-01-25 22:16:57 +01:00
_taskbar=yes
2011-07-20 06:58:19 +02:00
;;
2014-04-05 18:18:42 +02:00
darwin*)
echo "osx"
_taskbar=yes
;;
2011-07-20 06:58:19 +02:00
*)
if test "$_libunity" = yes; then
echo "unity"
2014-01-25 22:16:57 +01:00
_taskbar=yes
2011-07-20 06:58:19 +02:00
else
2014-01-25 22:16:57 +01:00
echo "no"
_taskbar=no
2011-07-20 06:58:19 +02:00
fi
;;
esac
fi
2014-01-25 22:16:57 +01:00
define_in_config_if_yes $_taskbar 'USE_TASKBAR'
2011-07-20 06:58:19 +02:00
#
# Check whether to build system dialogs support
#
echo_n "Building system dialogs support... "
if test "$_dialogs" = "no"; then
echo "no"
else
case $_host_os in
mingw*)
append_var LIBS "-lole32 -luuid"
echo "win32"
_dialogs=yes
;;
darwin*)
echo "osx"
_dialogs=yes
;;
*)
if test "$_gtk" = yes; then
echo "gtk"
_dialogs=yes
else
echo "no"
_dialogs=no
fi
;;
esac
fi
define_in_config_if_yes $_dialogs 'USE_SYSDIALOGS'
#
# Check whether to build TTS integration support
#
echo_n "Building text-to-speech support... "
if test "$_tts" = "no"; then
echo "no"
else
case $_host_os in
linux* | freebsd* | openbsd*)
echo "speech dispatcher"
_tts=yes
define_in_config_if_yes $_tts 'USE_SPEECH_DISPATCHER'
append_var LIBS '-lspeechd -lpthread'
;;
mingw*)
echo "win32"
_tts=yes
append_var LIBS '-lsapi -lole32'
;;
darwin*)
echo "osx"
_tts=yes
;;
*)
echo "no"
_tts=no
;;
esac
fi
define_in_config_if_yes $_tts 'USE_TTS'
2011-07-20 08:02:02 +02:00
#
# Check whether to build Bink video support
#
echo_n "Building Bink video support... "
define_in_config_if_yes $_bink 'USE_BINK'
echo "$_bink"
2012-01-06 22:56:21 +01:00
#
# Check whether to build updates support
#
echo_n "Building updates support... "
if test "$_updates" = yes; then
if test "$_sparkle" = yes; then
echo "Sparkle"
else
_updates=no;
2012-01-06 22:56:21 +01:00
echo "$_updates"
fi
else
echo "$_updates"
fi
define_in_config_if_yes $_updates 'USE_UPDATES'
2012-01-06 22:56:21 +01:00
#
# Check whether to create a build with all resources files linked into the binary
#
define_in_config_if_yes "$_builtin_resources" 'BUILTIN_RESOURCES'
#
2012-02-24 21:45:36 +01:00
# Check whether to activate engines (ResidualVM specific)
#
if test `get_engine_build monkey4` = yes && test ! "$_mpeg2" = yes ; then
2012-02-24 21:42:53 +01:00
echo "...disabling support for video cutscenes in PS2 version of Escape from Monkey Island. mpeg2dec is required"
fi
# Added define for ICB - ResidualVM specific
# TODO: remove it
if test `get_engine_build icb` = yes ; then
append_var DEFINES "-D_PC=1"
fi
#
2009-04-04 14:43:23 +00:00
# Figure out installation directories
#
2011-04-10 21:59:04 +02:00
test "x$prefix" = xNONE && prefix=/usr/local
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
2013-07-13 14:30:29 +02:00
case $_host_os in
mingw*)
# Windows stores all the external data files in executable file.
;;
*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DDATA_PATH=\\\"$datadir\\\""
2013-07-13 14:30:29 +02:00
;;
esac
2011-04-14 12:41:26 +02:00
case $_backend in
3ds)
append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"$datadir/plugins\\\""
;;
2011-04-14 12:41:26 +02:00
openpandora)
# Add ../plugins as a path so plugins can be found when running from a .PND.
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"../plugins\\\""
2011-04-14 12:41:26 +02:00
;;
maemo)
# The Maemo apps want the plugins in the "lib" directory
2011-05-18 23:33:39 +02:00
# without a scummvm sub directory.
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"$libdir\\\""
;;
2011-04-14 12:41:26 +02:00
*)
2015-08-16 08:49:02 +02:00
append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"$libdir/residualvm\\\""
2011-04-14 12:41:26 +02:00
;;
esac
2011-04-10 21:59:04 +02:00
#
# Set variables for profiling.
# We need to do it here to prevent mess-ups with the tests e.g. on the PSP
#
if test "$_enable_prof" = yes ; then
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-pg"
append_var LDFLAGS "-pg"
append_var DEFINES "-DENABLE_PROFILING"
2011-04-10 21:59:04 +02:00
fi
echo_n "Enabling Address Sanitizer... "
if test "$_enable_asan" = yes ; then
if test "$_enable_tsan" = yes ; then
echo_n "conflicting with tsan, disabling... "
_enable_asan=no
else
append_var CXXFLAGS "-fsanitize=address -fno-omit-frame-pointer"
append_var LDFLAGS "-fsanitize=address -fno-omit-frame-pointer"
fi
fi
echo "$_enable_asan"
echo_n "Enabling Thread Sanitizer... "
if test "$_enable_tsan" = yes ; then
append_var CXXFLAGS "-fsanitize=thread"
append_var LDFLAGS "-fsanitize=thread"
fi
echo "$_enable_tsan"
2009-05-25 20:49:53 +00:00
echo_n "Backend... "
echo_n "$_backend"
2010-01-23 09:44:55 +00:00
if test "$_sdl" = yes -a -n "$_sdlversion"; then
if test "$_backend" = sdl; then
echo_n " ($_sdlversion)"
else
echo_n " (SDL $_sdlversion)"
fi
2011-07-20 06:58:19 +02:00
fi
if test "$_nasm" = yes ; then
echo_n ", assembly routines"
fi
2012-01-06 22:56:21 +01:00
2012-05-03 05:51:15 +02:00
if test "$_16bit" = yes ; then
: # residualvm not use it
2012-05-03 05:51:15 +02:00
fi
if test "$_highres" = yes ; then
: # residualvm not use it
fi
2012-01-06 22:56:21 +01:00
if test "$_savegame_timestamp" = yes ; then
echo_n ", savegame timestamp"
fi
2012-05-03 05:51:15 +02:00
if test "$_build_scalers" = yes ; then
if test "$_build_hq_scalers" = yes ; then
: # residualvm not use it
2012-05-03 05:51:15 +02:00
else
: # residualvm not use it
2012-05-03 05:51:15 +02:00
fi
fi
2010-01-21 19:25:03 +00:00
if test "$_mt32emu" = yes ; then
echo_n ", MT-32 emulator"
2010-01-21 19:25:03 +00:00
fi
if test "$_lua" = yes ; then
echo_n ", Lua"
fi
if test "$_nuked_opl" = yes ; then
echo_n ", Nuked OPL emulator"
fi
2010-01-21 19:25:03 +00:00
if test "$_text_console" = yes ; then
echo_n ", text console"
fi
if test "$_vkeybd" = yes ; then
echo_n ", virtual keyboard"
fi
2013-07-07 15:29:33 +02:00
if test "$_eventrec" = yes ; then
2016-11-12 12:59:06 +01:00
echo_n ", event recorder"
fi
if test "$_cloud" = yes ; then
echo ", cloud"
else
echo
fi
2009-05-25 20:49:53 +00:00
#
# Some last-minute platform specific stuff, executed
2011-06-09 11:17:15 +02:00
# after all of CXXFLAGS, LDFLAGS, LIBS etc. have been setup
#
case $_host_os in
3ds)
if test "$_freetype2" = yes -a "$_png" = yes; then
append_var LIBS "-lbz2"
append_var LIBS "-lpng"
fi
if test "$_tremor" = yes -o "$_flac" = yes; then
append_var LIBS "-logg"
fi
# Moved -Wl,--gc-sections here to avoid it interfering with the library checks
if test "$_dynamic_modules" = no ; then
append_var LDFLAGS "-Wl,--gc-sections"
else
append_var LDFLAGS "-Wl,--no-gc-sections"
fi
;;
2011-04-11 15:40:01 +02:00
android)
2011-07-20 06:58:19 +02:00
# ssp at this point so the cxxtests link
if test "$_debug_build" = yes; then
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fstack-protector"
2011-07-20 06:58:19 +02:00
else
2015-08-16 08:49:02 +02:00
append_var CXXFLAGS "-fno-stack-protector"
2011-07-20 06:58:19 +02:00
fi
2011-04-11 15:40:01 +02:00
static_libs=''
system_libs=''
for lib in $LIBS; do
case $lib in
-lz|-lm|-ldl|-lGLESv2) # ResidualVM
2011-04-11 15:40:01 +02:00
system_libs="$system_libs $lib"
;;
*)
static_libs="$static_libs $lib"
;;
esac
done
# -lgcc is carefully placed here - we want to catch
# all toolchain symbols in *our* libraries rather
# than pick up anything unhygenic from the Android libs.
LIBS="-Wl,-Bstatic $static_libs -Wl,-Bdynamic -lgcc $system_libs -llog -landroid -lGLESv1_CM"
2009-10-05 08:33:46 +00:00
;;
riscos)
append_var CXXFLAGS "-mno-poke-function-name"
append_var CXXFLAGS "-ffunction-sections"
append_var CXXFLAGS "-fdata-sections"
append_var LDFLAGS "-Wl,--gc-sections"
;;
2011-04-11 15:40:01 +02:00
n64)
2012-01-06 22:56:21 +01:00
# Move some libs down here, otherwise some symbols requires by libvorbis aren't found
2011-06-09 11:17:15 +02:00
# during linking stage
2015-08-16 08:49:02 +02:00
append_var LIBS "-lc -lgcc -lnosys"
;;
esac
2009-04-04 14:43:23 +00:00
2009-05-25 20:49:53 +00:00
#
# Engine selection
#
_engines_built_static=""
_engines_built_dynamic=""
_engines_skipped=""
2012-01-06 22:56:21 +01:00
# Show a message if looping over engines takes longer than 5 secs
sh -c "
touch config.gnomes
sleep 5
if test -f config.gnomes; then
printf 'Employing little gnomes...'
rm -f config.gnomes
fi" 2>/dev/null &
2009-05-25 20:49:53 +00:00
for engine in $_engines; do
2012-09-08 21:09:03 +02:00
# Check whether all dependencies are available
check_engine_deps $engine
2009-05-25 20:49:53 +00:00
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
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "static"
2009-05-25 20:49:53 +00:00
else
# If it wasn't explicitly marked as static or
# dynamic, use the configured default
if test `get_engine_build $engine` = yes ; then
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "${_plugins_default}"
2009-05-25 20:49:53 +00:00
fi
fi
# Prepare the defines
if test `get_engine_build $engine` = dynamic ; then
isbuilt=DYNAMIC_PLUGIN
else
2009-10-05 08:33:46 +00:00
set_var _engine_${engine}_build "static"
2009-05-25 20:49:53 +00:00
isbuilt=STATIC_PLUGIN
fi
fi
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
2013-12-08 13:25:24 +01:00
# Sort engines to place our headline engine at start...
# No technical reason, just historical convention
2013-12-08 17:00:04 +01:00
headline_engine=grim
2013-12-08 13:25:24 +01:00
_sorted_engines="${headline_engine}"
2012-11-18 19:07:46 +01:00
for engine in $_engines; do
2013-12-08 13:25:24 +01:00
if test "${engine}" != "${headline_engine}" ; then
_sorted_engines="${_sorted_engines} ${engine}"
fi
done
# Prepare the information to be shown
for engine in $_sorted_engines; do
2012-11-18 19:07:46 +01:00
if test "`get_engine_sub $engine`" = "no" ; then
# It's a main engine
prepare_engine_build_strings $engine
fi
done
2011-07-20 06:58:19 +02:00
#
# Detection of WIP/unstable engines
#
for engine in $_engines; do
engine_build=`get_engine_build $engine`
engine_build_default=`get_engine_build_default $engine`
if test $engine_build != no -a $engine_build_default = no ; then
set_var _tainted_build "yes"
fi
done
add_to_config_h_if_yes `get_var _tainted_build` '#define TAINTED_BUILD'
2012-01-06 22:56:21 +01:00
# Complete the message on slow systems
if test -f config.gnomes ; then
# Kill does not work well here as it produces nasty 'Killed' message
rm -rf config.gnomes
else
echo " work is done"
fi
2009-05-25 20:49:53 +00:00
#
# Show which engines ("frontends") are to be built
#
echo
if test -n "$_engines_built_static" ; then
echo "Engines (builtin):"
2012-11-18 19:07:46 +01:00
echo "$_engines_built_static" | sed 's/@/\
2009-05-25 20:49:53 +00:00
/g
s/#/ /g'
fi
if test -n "$_engines_built_dynamic" ; then
echo "Engines (plugins):"
2012-11-18 19:07:46 +01:00
echo "$_engines_built_dynamic" | sed 's/@/\
2009-05-25 20:49:53 +00:00
/g
s/#/ /g'
fi
if test -n "$_engines_skipped" ; then
echo "Engines Skipped:"
2012-11-18 19:07:46 +01:00
echo "$_engines_skipped" | sed 's/@/\
2009-05-25 20:49:53 +00:00
/g
s/#/ /g'
fi
2011-07-20 06:58:19 +02:00
if test -n "$_engines_built_wip" ; then
2012-01-06 22:56:21 +01:00
echo "WARNING: This ResidualVM build contains the following UNSTABLE engines:"
2012-11-18 19:07:46 +01:00
echo "$_engines_built_wip" | sed 's/@/\
2011-07-20 06:58:19 +02:00
/g
s/#/ /g'
fi
2009-05-25 20:49:53 +00:00
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 */
#ifndef SCUMMVM_DONT_DEFINE_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 unsigned $type_8_byte uint64;
typedef signed $type_1_byte int8;
typedef signed $type_2_byte int16;
typedef signed $type_4_byte int32;
typedef signed $type_8_byte int64;
#endif
2011-03-21 08:32:36 +08:00
typedef $type_ptr uintptr;
2012-01-28 10:44:25 +01:00
2011-06-03 21:01:09 +02:00
#if defined(__APPLE__) && !defined(__ppc__)
2011-03-21 08:32:36 +08:00
#ifndef _UINT64
#define _UINT64
#endif
#endif
2009-05-25 20:49:53 +00:00
#endif /* CONFIG_H */
EOF
echo "Creating config.mk"
cat > config.mk << EOF
# -------- Generated by configure -----------
SAVED_CONFIGFLAGS := $SAVED_CONFIGFLAGS
SAVED_AR := $SAVED_AR
SAVED_AS := $SAVED_AS
SAVED_ASFLAGS := $SAVED_ASFLAGS
SAVED_CPPFLAGS := $SAVED_CPPFLAGS
SAVED_CXX := $SAVED_CXX
SAVED_CXXFLAGS := $SAVED_CXXFLAGS
SAVED_DWP := $SAVED_DWP
SAVED_LD := $SAVED_LD
SAVED_LDFLAGS := $SAVED_LDFLAGS
SAVED_PKG_CONFIG_LIBDIR := $SAVED_PKG_CONFIG_LIBDIR
SAVED_RANLIB := $SAVED_RANLIB
SAVED_SDL_CONFIG := $SAVED_SDL_CONFIG
SAVED_STRIP := $SAVED_STRIP
SAVED_WINDRES := $SAVED_WINDRES
SAVED_WINDRESFLAGS := $SAVED_WINDRESFLAGS
CXX := $CXX
CXXFLAGS := $CXXFLAGS
2010-01-21 19:25:03 +00:00
LD := $LD
LIBS += $LIBS
RANLIB := $_ranlib
2009-04-04 14:43:23 +00:00
STRIP := $_strip
AR := $_ar
2009-10-05 08:33:46 +00:00
AS := $_as
ASFLAGS := $ASFLAGS
DWP := $_dwp
WINDRES := $_windres
2009-10-05 08:33:46 +00:00
WINDRESFLAGS := $WINDRESFLAGS
2011-07-20 06:58:19 +02:00
STAGINGPATH=$_stagingpath
WIN32PATH=$_win32path
2014-08-18 05:21:52 +02:00
AMIGAOSPATH=$_amigaospath
MORPHOSPATH=$_morphospath
2009-04-04 14:43:23 +00:00
STATICLIBPATH=$_staticlibpath
XCODETOOLSPATH=$_xcodetoolspath
SPARKLEPATH=$_sparklepath
2016-01-01 23:09:40 +01:00
SDLCONFIG=$_sdlconfig
ABI := $ABI
BACKEND := $_backend
MODULES += $MODULES
MODULE_DIRS += $MODULE_DIRS
2011-04-14 12:41:26 +02:00
EXEPRE := $HOSTEXEPRE
2009-04-04 14:43:23 +00:00
EXEEXT := $HOSTEXEEXT
NASM := $NASM
NASMFLAGS := $NASMFLAGS
PANDOC := $PANDOC
PANDOCFORMAT := $_pandocformat
PANDOCEXT := $_pandocext
ZLIB_LIBS := $ZLIB_LIBS
ZLIB_CFLAGS := $ZLIB_CFLAGS
2011-04-10 21:59:04 +02:00
prefix = $prefix
exec_prefix = $exec_prefix
bindir = $bindir
2011-04-14 12:41:26 +02:00
libdir = $libdir
2011-04-10 21:59:04 +02:00
datarootdir = $datarootdir
datadir = $datadir
mandir = $mandir
2011-04-14 12:41:26 +02:00
docdir = $docdir
$_config_mk_data
INCLUDES += $INCLUDES
OBJS += $OBJS
DEFINES += $DEFINES
LDFLAGS += $LDFLAGS
$_mak_plugins
2009-10-05 08:33:46 +00:00
port_mk = $_port_mk
EOF
#
# Create a custom Makefile when building outside the source tree
# TODO: Add a better check than just looking for 'Makefile'
#
2010-01-21 19:25:03 +00:00
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)
2010-01-21 19:25:03 +00:00
vpath %.mm \$(srcdir)
vpath %.asm \$(srcdir)
vpath %.s \$(srcdir)
2009-04-04 14:43:23 +00:00
vpath %.S \$(srcdir)
vpath %.rc \$(srcdir)
vpath %.md \$(srcdir)
include \$(srcdir)/Makefile
EOF
fi
2013-12-08 13:25:24 +01:00
# Ensure engines folder exists prior to trying to generate
# files into it (used for out-of-tree-builds)
mkdir -p engines
echo "Creating engines/engines.mk"
cat > engines/engines.mk << EOF
# This file is automatically generated by configure
# DO NOT EDIT MANUALLY
# This file is being included by "Makefile.common"
EOF
for engine in $_sorted_engines; do
j=`echo $engine | tr '[:lower:]' '[:upper:]'`
if test "`get_engine_sub $engine`" = "no" ; then
# main engine
cat >> engines/engines.mk << EOF
ifdef ENABLE_$j
DEFINES += -DENABLE_$j=\$(ENABLE_$j)
MODULES += engines/$engine
EOF
for subeng in `get_engine_subengines $engine` ; do
k=`echo $subeng | tr '[:lower:]' '[:upper:]'`
cat >> engines/engines.mk << EOF
ifdef ENABLE_$k
DEFINES += -DENABLE_$k
endif
EOF
done
cat >> engines/engines.mk << EOF
endif
EOF
fi
done
echo "Creating engines/plugins_table.h"
cat > engines/plugins_table.h << EOF
/* This file is automatically generated by configure */
/* DO NOT EDIT MANUALLY */
// This file is being included by "base/plugins.cpp"
EOF
for engine in $_sorted_engines; do
if test "`get_engine_sub $engine`" = "no" ; then
j=`echo $engine | tr '[:lower:]' '[:upper:]'`
cat >> engines/plugins_table.h << EOF
#if PLUGIN_ENABLED_STATIC($j)
LINK_PLUGIN($j)
#endif
EOF
fi
done