diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 1487 |
1 files changed, 963 insertions, 524 deletions
@@ -35,6 +35,7 @@ SAVED_CXXFLAGS=$CXXFLAGS SAVED_CPPFLAGS=$CPPFLAGS SAVED_ASFLAGS=$ASFLAGS SAVED_WINDRESFLAGS=$WINDRESFLAGS +SAVED_SDL_CONFIG=$SDL_CONFIG # Use environment vars if set CXXFLAGS="$CXXFLAGS $CPPFLAGS" @@ -68,6 +69,16 @@ get_var() { eval echo \$${1} } +append_var() { + VAR=${1} + shift + if eval test -z \"\$${VAR}\" ; then + eval ${VAR}='$@' + else + eval ${VAR}=\"\$${VAR} \"'$@' + fi +} + # Add an engine: id name build subengines base-games dependencies add_engine() { _engines="${_engines} ${1}" @@ -97,7 +108,9 @@ add_feature() { _srcdir=`dirname $0` # Read list of engines -. $_srcdir/engines/configure.engines +for i in $_srcdir/engines/*/configure.engine; do + . "$i" +done # # Default settings @@ -113,7 +126,9 @@ _seq_midi=auto _sndio=auto _timidity=auto _zlib=auto +_mpeg2=auto _sparkle=auto +_jpeg=auto _png=auto _theoradec=auto _faad=auto @@ -122,7 +137,7 @@ _opengl=auto _opengles=auto _readline=auto _freetype2=auto -_taskbar=yes +_taskbar=auto _updates=no _libunity=auto # Default option behavior yes/no @@ -138,9 +153,10 @@ _build_hq_scalers=yes _enable_prof=no _global_constructors=no _bink=yes -# Default vkeybd/keymapper options +# Default vkeybd/keymapper/eventrec options _vkeybd=no _keymapper=no +_eventrec=auto # GUI translation options _translation=yes # Default platform settings @@ -163,8 +179,8 @@ _as="as" _windres=windres _stagingpath="staging" _win32path="c:/scummvm" -_aos4path="Games:ScummVM" -_staticlibpath=/sw +_amigaospath="Games:ScummVM" +_staticlibpath= _sdlconfig=sdl-config _freetypeconfig=freetype-config _sdlpath="$PATH" @@ -186,6 +202,7 @@ add_feature faad "libfaad" "_faad" add_feature flac "FLAC" "_flac" add_feature freetype2 "FreeType2" "_freetype2" add_feature mad "MAD" "_mad" +add_feature jpeg "JPEG" "_jpeg" add_feature png "PNG" "_png" add_feature theoradec "libtheoradec" "_theoradec" add_feature vorbis "Vorbis file support" "_vorbis _tremor" @@ -347,7 +364,7 @@ define_in_config_if_yes() { # TODO: small bit of code to test sdl usability find_sdlconfig() { echo_n "Looking for sdl-config... " - sdlconfigs="$_sdlconfig:sdl-config:sdl11-config:sdl12-config" + sdlconfigs="$SDL_CONFIG:$_sdlconfig:sdl-config:sdl11-config:sdl12-config" _sdlconfig= IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="$SEPARATOR" @@ -816,9 +833,9 @@ Usage: $0 [OPTIONS]... Configuration: -h, --help display this help and exit - --backend=BACKEND backend to build (android, bada, dc, dingux, ds, gph, - iphone, linuxmoto, maemo, n64, null, openpandora, ps2, - psp, samsungtv, sdl, webos, wii, wince) [sdl] + --backend=BACKEND backend to build (android, tizen, dc, dingux, ds, gcw0, + gph, iphone, linuxmoto, maemo, n64, null, openpandora, + ps2, psp, samsungtv, sdl, webos, wii, wince) [sdl] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -844,13 +861,16 @@ Fine tuning of the installation directories: Special configuration feature: --host=HOST cross-compile to target HOST (arm-linux, ...) - special targets: android for Android - bada for Samsung BADA + special targets: android-arm for Android ARM + android-mips for Android MIPS + android-x86 for Android x86 + tizen for Samsung Tizen caanoo for Caanoo dingux for Dingux dreamcast for Sega Dreamcast ds for Nintendo DS gamecube for Nintendo GameCube + gcw0 for GCW Zero gp2x for GP2X gp2xwiz for GP2X Wiz iphone for Apple iPhone @@ -860,6 +880,7 @@ Special configuration feature: motomagx for MotoMAGX n64 for Nintendo 64 openpandora for OpenPandora + ouya for OUYA ps2 for PlayStation 2 ps3 for PlayStation 3 psp for PlayStation Portable @@ -898,6 +919,10 @@ Optional Features: --disable-hq-scalers exclude HQ2x and HQ3x scalers --disable-translation don't build support for translated messages --disable-taskbar don't build support for taskbar and launcher integration + --enable-vkeybd build virtual keyboard support + --enable-keymapper build key mapper support + --enable-eventrecorder enable event recording functionality + --disable-eventrecorder disable event recording functionality --enable-updates build support for updates --enable-text-console use text console instead of graphical console --enable-verbose-build enable regular echoing of commands during build @@ -924,9 +949,15 @@ Optional Libraries: --with-zlib-prefix=DIR Prefix where zlib is installed (optional) --disable-zlib disable zlib (compression) support [autodetect] + --with-mpeg2-prefix=DIR Prefix where libmpeg2 is installed (optional) + --enable-mpeg2 enable mpeg2 codec for cutscenes [autodetect] + --with-opengl-prefix=DIR Prefix where OpenGL (ES) is installed (optional) --disable-opengl disable OpenGL (ES) support [autodetect] + --with-jpeg-prefix=DIR Prefix where libjpeg is installed (optional) + --disable-jpeg disable JPEG decoder [autodetect] + --with-png-prefix=DIR Prefix where libpng is installed (optional) --disable-png disable PNG decoder [autodetect] @@ -948,6 +979,7 @@ Optional Libraries: --with-freetype2-prefix=DIR Prefix where the freetype-config script is installed (optional) + --disable-freetype2 disable freetype2 TTF library usage [autodetect] --with-nasm-prefix=DIR Prefix where nasm executable is installed (optional) --disable-nasm disable assembly language optimizations [autodetect] @@ -1004,6 +1036,10 @@ for ac_option in $@; do --disable-sparkle) _sparkle=no ;; --enable-nasm) _nasm=yes ;; --disable-nasm) _nasm=no ;; + --enable-mpeg2) _mpeg2=yes ;; + --disable-mpeg2) _mpeg2=no ;; + --disable-jpeg) _jpeg=no ;; + --enable-jpeg) _jpeg=yes ;; --disable-png) _png=no ;; --enable-png) _png=yes ;; --disable-theoradec) _theoradec=no ;; @@ -1036,6 +1072,8 @@ for ac_option in $@; do --disable-vkeybd) _vkeybd=no ;; --enable-keymapper) _keymapper=yes ;; --disable-keymapper) _keymapper=no ;; + --enable-eventrecorder) _eventrec=yes ;; + --disable-eventrecorder) _eventrec=no ;; --enable-text-console) _text_console=yes ;; --disable-text-console) _text_console=no ;; --with-fluidsynth-prefix=*) @@ -1043,6 +1081,11 @@ for ac_option in $@; do FLUIDSYNTH_CFLAGS="-I$arg/include" FLUIDSYNTH_LIBS="-L$arg/lib" ;; + --with-mpeg2-prefix=*) + arg=`echo $ac_option | cut -d '=' -f 2` + MPEG2_CFLAGS="-I$arg/include" + MPEG2_LIBS="-L$arg/lib" + ;; --with-alsa-prefix=*) arg=`echo $ac_option | cut -d '=' -f 2` ALSA_CFLAGS="-I$arg/include" @@ -1078,6 +1121,11 @@ for ac_option in $@; do MAD_CFLAGS="-I$arg/include" MAD_LIBS="-L$arg/lib" ;; + --with-jpeg-prefix=*) + arg=`echo $ac_option | cut -d '=' -f 2` + JPEG_CFLAGS="-I$arg/include" + JPEG_LIBS="-L$arg/lib" + ;; --with-png-prefix=*) arg=`echo $ac_option | cut -d '=' -f 2` PNG_CFLAGS="-I$arg/include" @@ -1134,7 +1182,7 @@ for ac_option in $@; do _debug_build=no ;; --enable-Werror) - CXXFLAGS="$CXXFLAGS -Werror" + append_var CXXFLAGS "-Werror" ;; --enable-release-mode) _release_build=yes @@ -1238,31 +1286,31 @@ get_system_exe_extension $guessed_host NATIVEEXEEXT=$_exeext case $_host in -android | android-v7a) +android | android-arm | android-v7a | android-arm-v7a | ouya) _host_os=android _host_cpu=arm _host_alias=arm-linux-androideabi ;; +android-mips) + _host_os=android + _host_cpu=mipsel + _host_alias=mipsel-linux-android + ;; +android-x86) + _host_os=android + _host_cpu=i686 + _host_alias=i686-linux-android + ;; arm-riscos) _host_os=riscos _host_cpu=arm ;; -bada) - _host_os=bada - if test "$_debug_build" = yes; then - _host_cpu=i686 - _host_alias=i686-mingw32 - else - _host_cpu=arm - _host_alias=arm-samsung-nucleuseabi - fi - ;; caanoo) _host_os=gph-linux _host_cpu=arm _host_alias=arm-none-linux-gnueabi ;; -dingux) +dingux | gcw0) _host_os=linux _host_cpu=mipsel _host_alias=mipsel-linux @@ -1271,8 +1319,8 @@ dreamcast) _host_os=dreamcast _host_cpu=sh _host_alias=sh-elf - CXXFLAGS="$CXXFLAGS -ml -m4-single-only" - LDFLAGS="$LDFLAGS -ml -m4-single-only" + append_var CXXFLAGS "-ml -m4-single-only" + append_var LDFLAGS "-ml -m4-single-only" ;; ds) _host_os=ds @@ -1281,8 +1329,8 @@ ds) ;; gamecube) _host_os=gamecube - _host_cpu=ppc - _host_alias=powerpc-gekko + _host_cpu=powerpc + _host_alias=powerpc-eabi ;; gp2x) _host_os=gph-linux @@ -1349,16 +1397,19 @@ openpandora) ;; ppc-amigaos) _host_os=amigaos - _host_cpu=ppc + _host_cpu=powerpc ;; ps2) _host_os=ps2 _host_cpu=mips64r5900el _host_alias=ee + # PS2 bogus dirs: they actually depend on launch medium + datadir='host:data' + docdir='host:docs' ;; ps3) _host_os=ps3 - _host_cpu=ppc + _host_cpu=powerpc _host_alias=powerpc64-ps3-elf # The prefix is always the same on PS3 so we hardcode the default @@ -1382,6 +1433,11 @@ samsungtv) _host_cpu=arm _host_alias=arm-linux-gnueabi ;; +tizen) + _host_os=tizen + _host_cpu=arm + _host_alias=arm-linux-gnueabi + ;; webos) _host_os=webos _host_cpu=arm @@ -1399,8 +1455,8 @@ webos) ;; wii) _host_os=wii - _host_cpu=ppc - _host_alias=powerpc-gekko + _host_cpu=powerpc + _host_alias=powerpc-eabi ;; wince) _host_os=wince @@ -1447,14 +1503,22 @@ caanoo | gp2x | gp2xwiz | openpandora | ps2) esac if test "$_debug_build" != no; then - # debug mode not explicitly disabled -> compile with -g - CXXFLAGS="$CXXFLAGS -g" + # debug mode not explicitly disabled -> compile with debug information + case $_host_os in + amigaos*) + # AmigaOS debugger uses plain stabs, with no gdb extensions. + append_var CXXFLAGS "-gstabs" + ;; + *) + # Use the system default format for debug info. + append_var CXXFLAGS "-g" + esac fi if test "$_release_build" = yes; then # Add a define, which indicates we are doing # an build for a release version. - DEFINES="$DEFINES -DRELEASE_BUILD" + append_var DEFINES "-DRELEASE_BUILD" fi @@ -1491,12 +1555,6 @@ android) exit 1 fi ;; -bada) - if test -z "$BADA_SDK"; then - echo "Please set BADA_SDK in your environment. export BADA_SDK=<path to Bada SDK>" - exit 1 - fi - ;; ds | gamecube | wii) if test -z "$DEVKITPRO"; then echo "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to devkitPRO>" @@ -1538,6 +1596,12 @@ psp) exit 1 fi ;; +tizen) + if test -z "$TIZEN_ROOTSTRAP"; then + echo "Please set TIZEN_ROOTSTRAP in your environment. export TIZEN_ROOTSTRAP=<path to Tizen SDK device profile>" + exit 1 + fi + ;; webos) if test -z "$WEBOS_SDK"; then echo "Please set WEBOS_SDK in your environment. export WEBOS_SDK=<path to WebOS SDK>" @@ -1626,7 +1690,7 @@ if test "$have_icc" = yes; then # Make ICC error our on unknown command line options instead of printing # a warning. This is for example required to make the -Wglobal-destructors # detection work correctly. - CXXFLAGS="$CXXFLAGS -diag-error 10006,10148" + append_var CXXFLAGS "-diag-error 10006,10148" fi have_gcc=no @@ -1731,23 +1795,23 @@ if test "$have_gcc" = yes ; then case $_host_os in # newlib-based system include files suppress non-C89 function # declarations under __STRICT_ANSI__ - amigaos* | android | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince ) + amigaos* | android | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | tizen | wii | wince ) ;; *) - CXXFLAGS="$CXXFLAGS -ansi" + append_var CXXFLAGS "-ansi" ;; esac fi - CXXFLAGS="$CXXFLAGS -W -Wno-unused-parameter" + append_var CXXFLAGS "-W -Wno-unused-parameter" 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 - CXXFLAGS="$CXXFLAGS -Wno-empty-body" + append_var CXXFLAGS "-Wno-empty-body" else - CXXFLAGS="$CXXFLAGS -Wconversion" + append_var CXXFLAGS "-Wconversion" fi; elif test "$have_icc" = yes ; then add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP' @@ -1758,7 +1822,7 @@ fi; # echo_n "Building as C++11... " if test "$_use_cxx11" = "yes" ; then - CXXFLAGS="$CXXFLAGS -std=c++11" + append_var CXXFLAGS "-std=c++11" fi echo $_use_cxx11 @@ -1767,12 +1831,13 @@ echo $_use_cxx11 # However, some platforms use GNU extensions in system header files, so # for these we must not use -pedantic. case $_host_os in -android | gamecube | psp | wii | webos) +android | gamecube | psp | tizen | wii | webos) ;; *) # ICC does not support pedantic, while GCC and clang do. if test "$have_icc" = no ; then - CXXFLAGS="$CXXFLAGS -pedantic" + # We *do* want the 'long long' extension. + append_var CXXFLAGS "-pedantic -Wno-long-long" fi ;; esac @@ -1786,10 +1851,19 @@ EOF cc_check -Wglobal-constructors && _global_constructors=yes if test "$_global_constructors" = yes; then - CXXFLAGS="$CXXFLAGS -Wglobal-constructors" + append_var CXXFLAGS "-Wglobal-constructors" fi echo $_global_constructors +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 + # # Check for endianness # @@ -1804,9 +1878,9 @@ void _ebcdic() { char* s = (char*) ebcdic_mm; s = (char*) ebcdic_ii; } int main() { _ascii (); _ebcdic (); return 0; } EOF $CXX $CXXFLAGS -c -o $TMPO.o tmp_endianness_check.cpp -if strings $TMPO.o | grep BIGenDianSyS >/dev/null; then +if $_strings $TMPO.o | grep BIGenDianSyS >/dev/null; then _endian=big -elif strings $TMPO.o | grep LiTTleEnDian >/dev/null; then +elif $_strings $TMPO.o | grep LiTTleEnDian >/dev/null; then _endian=little fi echo $_endian; @@ -1830,7 +1904,7 @@ esac # Determine a data type with the given length # find_type_with_size() { - for datatype in int short char long "long long" unknown; do + for datatype in int short char long "long long" __int64 "long long int" unknown; do cat > tmp_find_type_with_size.cpp << EOF typedef $datatype ac__type_sizeof_; int main() { @@ -1941,7 +2015,7 @@ cc_check_clean tmp_find_type_with_size.cpp # for the smaller sizes. echo_n "Alignment required... " case $_host_cpu in - i[3-6]86 | amd64 | x86_64 | ppc*) + i[3-6]86 | amd64 | x86_64 | powerpc*) # Unaligned access should work _need_memalign=no ;; @@ -1973,7 +2047,7 @@ case $_host_cpu in # (on Pandora and iPhone at least) #define_in_config_if_yes yes 'USE_ARM_COSTUME_ASM' - DEFINES="$DEFINES -DARM_TARGET" + append_var DEFINES "-DARM_TARGET" ;; i[3-6]86) echo "x86" @@ -1982,11 +2056,11 @@ case $_host_cpu in ;; mips*) echo "MIPS" - DEFINES="$DEFINES -DMIPS_TARGET" + append_var DEFINES "-DMIPS_TARGET" ;; - ppc*) + powerpc*) echo "PowerPC" - DEFINES="$DEFINES -DPPC_TARGET" + append_var DEFINES "-DPPC_TARGET" ;; amd64 | x86_64) echo "x86_64" @@ -2004,70 +2078,113 @@ echo_n "Checking hosttype... " echo $_host_os case $_host_os in amigaos*) - LDFLAGS="$LDFLAGS -use-dynld" - LDFLAGS="$LDFLAGS -L/sdk/local/newlib/lib" + append_var LDFLAGS "-use-dynld -Wl,--export-dynamic" + 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' + # Supress format warnings as the long 4 byte causes noisy warnings. + append_var CXXFLAGS "-Wno-format" add_line_to_config_mk 'AMIGAOS = 1' + _port_mk="backends/platform/sdl/amigaos/amigaos.mk" ;; android) case $_host in - android) - CXXFLAGS="$CXXFLAGS -march=armv5te" - CXXFLAGS="$CXXFLAGS -mtune=xscale" - CXXFLAGS="$CXXFLAGS -msoft-float" + android | android-arm) + append_var CXXFLAGS "-march=armv5te" + append_var CXXFLAGS "-mtune=xscale" + append_var CXXFLAGS "-msoft-float" + ABI="armeabi" + ANDROID_PLATFORM=4 + ANDROID_PLATFORM_ARCH="arm" + ;; + android-v7a | android-arm-v7a) + append_var CXXFLAGS "-march=armv7-a" + append_var CXXFLAGS "-mfloat-abi=softfp" + append_var CXXFLAGS "-mfpu=vfp" + append_var LDFLAGS "-Wl,--fix-cortex-a8" + ABI="armeabi-v7a" + ANDROID_PLATFORM=4 + ANDROID_PLATFORM_ARCH="arm" ;; - android-v7a) - CXXFLAGS="$CXXFLAGS -march=armv7-a" - CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp" - CXXFLAGS="$CXXFLAGS -mfpu=vfp" - LDFLAGS="$LDFLAGS -Wl,--fix-cortex-a8" + android-mips) + append_var CXXFLAGS "-march=mips32" + append_var CXXFLAGS "-mtune=mips32" + ABI="mips" + # Platform version 9 is needed as earlier versions of platform do not support this arch. + ANDROID_PLATFORM=9 + ANDROID_PLATFORM_ARCH="mips" + ;; + android-x86) + append_var CXXFLAGS "-march=i686" + append_var CXXFLAGS "-mtune=i686" + ABI="x86" + # Platform version 9 is needed as earlier versions of platform do not support this arch. + ANDROID_PLATFORM=9 + ANDROID_PLATFORM_ARCH="x86" + ;; + ouya) + append_var CXXFLAGS "-march=armv7-a" + append_var CXXFLAGS "-mtune=cortex-a9" + append_var CXXFLAGS "-mfloat-abi=softfp" + append_var CXXFLAGS "-mfpu=neon" + ABI="armeabi-v7a" + ANDROID_PLATFORM=4 + ANDROID_PLATFORM_ARCH="arm" ;; esac - CXXFLAGS="$CXXFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm" - CXXFLAGS="$CXXFLAGS -fpic" - CXXFLAGS="$CXXFLAGS -ffunction-sections" - CXXFLAGS="$CXXFLAGS -funwind-tables" + + # Setup platform version and arch + append_var CXXFLAGS "--sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ANDROID_PLATFORM_ARCH" + append_var LDFLAGS "--sysroot=$ANDROID_NDK/platforms/android-$ANDROID_PLATFORM/arch-$ANDROID_PLATFORM_ARCH" + + append_var CXXFLAGS "-fpic" + append_var CXXFLAGS "-ffunction-sections" + append_var CXXFLAGS "-funwind-tables" if test "$_debug_build" = yes; then - CXXFLAGS="$CXXFLAGS -fno-omit-frame-pointer" - CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" + append_var CXXFLAGS "-fno-omit-frame-pointer" + append_var CXXFLAGS "-fno-strict-aliasing" else - CXXFLAGS="$CXXFLAGS -fomit-frame-pointer" - CXXFLAGS="$CXXFLAGS -fstrict-aliasing" + append_var CXXFLAGS "-fomit-frame-pointer" + append_var CXXFLAGS "-fstrict-aliasing" fi - CXXFLAGS="$CXXFLAGS -finline-limit=300" + append_var CXXFLAGS "-finline-limit=300" _optimization_level=-Os - CXXFLAGS="$CXXFLAGS -mthumb-interwork" - # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this. - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5__" - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5T__" - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5E__" - CXXFLAGS="$CXXFLAGS -D__ARM_ARCH_5TE__" - # supress 'mangling of 'va_list' has changed in GCC 4.4' - CXXFLAGS="$CXXFLAGS -Wno-psabi" - LDFLAGS="$LDFLAGS --sysroot=$ANDROID_NDK/platforms/android-4/arch-arm" - LDFLAGS="$LDFLAGS -mthumb-interwork" + + if test "$_host" = android -o "$_host" = android-arm; then + append_var CXXFLAGS "-mthumb-interwork" + # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this. + append_var CXXFLAGS "-D__ARM_ARCH_5__" + append_var CXXFLAGS "-D__ARM_ARCH_5T__" + append_var CXXFLAGS "-D__ARM_ARCH_5E__" + append_var CXXFLAGS "-D__ARM_ARCH_5TE__" + fi + + # surpress 'mangling of 'va_list' has changed in GCC 4.4' warning + append_var CXXFLAGS "-Wno-psabi" + + if test "$_host" = android -o "$_host" = android-arm; then + append_var LDFLAGS "-mthumb-interwork" + fi + + append_var LDFLAGS "-L$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/`$CXX -dumpversion`/libs/$ABI/" + append_var LIBS "-lsupc++" add_line_to_config_mk "ANDROID_SDK = $ANDROID_SDK" + if test -d "$ANDROID_SDK"/build-tools; then + _build_tools_version=`cd "$ANDROID_SDK"/build-tools && ls -1 | sort -rn | head -1` + add_line_to_config_mk "ANDROID_BTOOLS = build-tools/$_build_tools_version" + else + add_line_to_config_mk "ANDROID_BTOOLS = platform-tools" + fi _seq_midi=no ;; - bada) - BADA_SDK_ROOT="`cygpath -m ${BADA_SDK}`" - add_line_to_config_mk "BADA_SDK = $BADA_SDK" - add_line_to_config_mk "BADA_SDK_ROOT = $BADA_SDK_ROOT" - - # assume dependencies have been installed in cygwin's /usr/local - CYGWIN_USR_LOCAL="`cygpath -m /usr/local`" - LDFLAGS="$LDFLAGS -L${CYGWIN_USR_LOCAL}/lib" - CXXFLAGS="$CXXFLAGS -I${CYGWIN_USR_LOCAL}/include" - ;; beos*) - DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE" + append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE" # Needs -lbind -lsocket for the timidity MIDI driver LDFLAGS="-L/boot/home/config/lib" CFLAGS="-I/boot/home/config/include" - CXXFLAGS="$CXXFLAGS -fhuge-objects" - LIBS="$LIBS -lbind -lsocket" + append_var CXXFLAGS "-fhuge-objects" + append_var LIBS "-lbind -lsocket" _seq_midi=no ;; cygwin*) @@ -2075,8 +2192,21 @@ case $_host_os in exit 1 ;; darwin*) - DEFINES="$DEFINES -DMACOSX" - LIBS="$LIBS -framework AudioUnit -framework AudioToolbox -framework Carbon -framework CoreMIDI" + # 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. + case $_host_cpu in + powerpc*) + append_var CFLAGS "-mlongcall" + append_var CXXFLAGS "-mlongcall" + ;; + esac + + append_var DEFINES "-DMACOSX" + append_var LIBS "-framework AudioUnit -framework AudioToolbox -framework Carbon -framework CoreMIDI" + # SDL2 doesn't seem to add Cocoa for us. + append_var LIBS "-framework Cocoa" add_line_to_config_mk 'MACOSX = 1' # Now we may have MacPorts or Fink installed @@ -2099,197 +2229,267 @@ case $_host_os in LDFLAGS="-L${macport_prefix}/lib $LDFLAGS" CXXFLAGS="-I${macport_prefix}/include $CXXFLAGS" + + if test -z "$_staticlibpath"; then + _staticlibpath=${macport_prefix} + echo "Set staticlib-prefix to ${_staticlibpath}" + fi + fi + + # 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 + + # 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 fi ;; dreamcast) - DEFINES="$DEFINES -D__DC__" - DEFINES="$DEFINES -DNONSTANDARD_PORT" + append_var DEFINES "-D__DC__" + append_var DEFINES "-DNONSTANDARD_PORT" ;; ds) - DEFINES="$DEFINES -D__DS__" - DEFINES="$DEFINES -DNDS" - DEFINES="$DEFINES -DARM9" - DEFINES="$DEFINES -DARM" - DEFINES="$DEFINES -DNONSTANDARD_PORT" - CXXFLAGS="$CXXFLAGS -isystem $DEVKITPRO/libnds/include" - CXXFLAGS="$CXXFLAGS -isystem $DEVKITPRO/devkitARM/arm-eabi/include" - CXXFLAGS="$CXXFLAGS -mcpu=arm9tdmi" - CXXFLAGS="$CXXFLAGS -mtune=arm9tdmi" - CXXFLAGS="$CXXFLAGS -fomit-frame-pointer" - CXXFLAGS="$CXXFLAGS -mthumb-interwork" - CXXFLAGS="$CXXFLAGS -ffunction-sections" - CXXFLAGS="$CXXFLAGS -fdata-sections" - CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" - CXXFLAGS="$CXXFLAGS -fuse-cxa-atexit" - LDFLAGS="$LDFLAGS -specs=ds_arm9.specs" - LDFLAGS="$LDFLAGS -mthumb-interwork" - LDFLAGS="$LDFLAGS -mno-fpu" - LDFLAGS="$LDFLAGS -Wl,-Map,map.txt" + 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/devkitARM/arm-eabi/include" + 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 "-specs=ds_arm9.specs" + append_var LDFLAGS "-mthumb-interwork" + append_var LDFLAGS "-mno-fpu" + append_var LDFLAGS "-Wl,-Map,map.txt" if test "$_dynamic_modules" = no ; then - LDFLAGS="$LDFLAGS -Wl,--gc-sections" + append_var LDFLAGS "-Wl,--gc-sections" else - LDFLAGS="$LDFLAGS -Wl,--no-gc-sections" + append_var LDFLAGS "-Wl,--no-gc-sections" # TODO automate this required 2 step linking phase - # LDFLAGS="$LDFLAGS -Wl,--retain-symbols-file,ds.syms" + # append_var LDFLAGS "-Wl,--retain-symbols-file,ds.syms" fi - LDFLAGS="$LDFLAGS -L$DEVKITPRO/libnds/lib" - LIBS="$LIBS -lnds9" + append_var LDFLAGS "-L$DEVKITPRO/libnds/lib" + append_var LIBS "-lnds9" ;; freebsd*) - LDFLAGS="$LDFLAGS -L/usr/local/lib" - CXXFLAGS="$CXXFLAGS -I/usr/local/include" + append_var LDFLAGS "-L/usr/local/lib" + append_var CXXFLAGS "-I/usr/local/include" ;; gamecube) _optimization_level=-Os - CXXFLAGS="$CXXFLAGS -mogc" - CXXFLAGS="$CXXFLAGS -mcpu=750" - CXXFLAGS="$CXXFLAGS -meabi" - CXXFLAGS="$CXXFLAGS -mhard-float" - CXXFLAGS="$CXXFLAGS -ffunction-sections" - CXXFLAGS="$CXXFLAGS -fdata-sections" - CXXFLAGS="$CXXFLAGS -fmodulo-sched" - CXXFLAGS="$CXXFLAGS -fuse-cxa-atexit" - CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include" + 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" # libogc is required to link the cc tests (includes _start()) - LDFLAGS="$LDFLAGS -mogc" - LDFLAGS="$LDFLAGS -mcpu=750" - LDFLAGS="$LDFLAGS -L$DEVKITPRO/libogc/lib/cube" - LDFLAGS="$LDFLAGS -logc" + append_var LDFLAGS "-mogc" + append_var LDFLAGS "-mcpu=750" + append_var LDFLAGS "-L$DEVKITPRO/libogc/lib/cube" + append_var LDFLAGS "-logc" if test "$_dynamic_modules" = "yes" ; then # retarded toolchain patch forces --gc-sections, overwrite it - LDFLAGS="$LDFLAGS -Wl,--no-gc-sections" + append_var LDFLAGS "-Wl,--no-gc-sections" fi ;; haiku*) - DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE" + append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE" # Needs -lnetwork for the timidity MIDI driver - LIBS="$LIBS -lnetwork" + append_var LIBS "-lnetwork" _seq_midi=no ;; irix*) - DEFINES="$DEFINES -DIRIX" - DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE" - LIBS="$LIBS -lmd -lfastm -lm" + 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 - CXXFLAGS="$CXXFLAGS $(getconf LFS_CFLAGS 2>/dev/null)" + append_var CXXFLAGS "`getconf LFS_CFLAGS 2>/dev/null`" fi ;; maemo) - DEFINES="$DEFINES -DMAEMO" + append_var DEFINES "-DMAEMO" ;; mingw*) - DEFINES="$DEFINES -DWIN32" - DEFINES="$DEFINES -D__USE_MINGW_ANSI_STDIO=0" - LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++" - LIBS="$LIBS -lmingw32 -lwinmm -lgdi32" - OBJS="$OBJS scummvmwinres.o" + append_var DEFINES "-DWIN32" + append_var DEFINES "-D__USE_MINGW_ANSI_STDIO=0" + append_var LDFLAGS "-static-libgcc -static-libstdc++" + append_var LIBS "-lmingw32 -lwinmm -lgdi32" + append_var OBJS "scummvmwinres.o" add_line_to_config_mk 'WIN32 = 1' ;; mint*) - DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE" + append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE" ;; n64) - DEFINES="$DEFINES -D__N64__" - DEFINES="$DEFINES -DLIMIT_FPS" - DEFINES="$DEFINES -DNONSTANDARD_PORT" - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - DEFINES="$DEFINES -DDISABLE_DEFAULT_SAVEFILEMANAGER" - DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL" - DEFINES="$DEFINES -DDISABLE_FANCY_THEMES" - DEFINES="$DEFINES -DDISABLE_NES_APU" - DEFINES="$DEFINES -DDISABLE_SID" - DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE" + 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" ;; ps2) - CXXFLAGS="$CXXFLAGS -G2" - DEFINES="$DEFINES -D_EE" - DEFINES="$DEFINES -D__PLAYSTATION2__" + append_var CXXFLAGS "-G2" + append_var DEFINES "-D_EE" + append_var DEFINES "-D__PLAYSTATION2__" + if test -z "$PS2SDK_OLD"; then + append_var DEFINES "-D__NEW_PS2SDK__" + fi ;; ps3) # Force use of SDL and freetype from the ps3 toolchain _sdlpath="$PS3DEV/portlibs/ppu:$PS3DEV/portlibs/ppu/bin" _freetypepath="$PS3DEV/portlibs/ppu:$PS3DEV/portlibs/ppu/bin" - DEFINES="$DEFINES -DPLAYSTATION3" - CXXFLAGS="$CXXFLAGS -mcpu=cell -mminimal-toc -I$PSL1GHT/ppu/include -I$PS3DEV/portlibs/ppu/include" - LDFLAGS="$LDFLAGS -L$PSL1GHT/ppu/lib -L$PS3DEV/portlibs/ppu/lib" + append_var DEFINES "-DPLAYSTATION3" + append_var CXXFLAGS "-mcpu=cell -mminimal-toc -I$PSL1GHT/ppu/include -I$PS3DEV/portlibs/ppu/include" + append_var LDFLAGS "-L$PSL1GHT/ppu/lib -L$PS3DEV/portlibs/ppu/lib" add_line_to_config_mk 'PLAYSTATION3 = 1' add_line_to_config_h "#define PREFIX \"${prefix}\"" ;; psp) if test -d "$PSPDEV/psp/lib"; then - LDFLAGS="$LDFLAGS -L$PSPDEV/psp/lib" + append_var LDFLAGS "-L$PSPDEV/psp/lib" fi - LDFLAGS="$LDFLAGS -L$PSPSDK/lib" - LDFLAGS="$LDFLAGS -specs=$_srcdir/backends/platform/psp/psp.spec" + append_var LDFLAGS "-L$PSPSDK/lib" + append_var LDFLAGS "-specs=$_srcdir/backends/platform/psp/psp.spec" _optimization_level=-O3 - CXXFLAGS="$CXXFLAGS -I$PSPSDK/include" + append_var CXXFLAGS "-I$PSPSDK/include" # FIXME: Why is the following in CXXFLAGS and not in DEFINES? Change or document this. - CXXFLAGS="$CXXFLAGS -D_PSP_FW_VERSION=150" + append_var CXXFLAGS "-D_PSP_FW_VERSION=150" ;; solaris*) - DEFINES="$DEFINES -DSOLARIS" - DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE" + append_var DEFINES "-DSOLARIS" + append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE" # Needs -lbind -lsocket for the timidity MIDI driver - LIBS="$LIBS -lnsl -lsocket" + append_var LIBS "-lnsl -lsocket" + ;; + tizen) + add_line_to_config_mk "TIZEN_ROOTSTRAP = $TIZEN_ROOTSTRAP" + append_var LDFLAGS "--sysroot=${TIZEN_ROOTSTRAP}" + append_var LDFLAGS "-L${TIZEN_LIBS}/lib" + append_var CXXFLAGS "-I${TIZEN_LIBS}/include" ;; webos) - CXXFLAGS="$CXXFLAGS --sysroot=$WEBOS_PDK/arm-gcc/sysroot" - CXXFLAGS="$CXXFLAGS -I$WEBOS_PDK/include" - CXXFLAGS="$CXXFLAGS -I$WEBOS_PDK/include/SDL" - CXXFLAGS="$CXXFLAGS -I$WEBOS_PDK/device/usr/include" + append_var CXXFLAGS "--sysroot=$WEBOS_PDK/arm-gcc/sysroot" + append_var CXXFLAGS "-I$WEBOS_PDK/include" + append_var CXXFLAGS "-I$WEBOS_PDK/include/SDL" + append_var CXXFLAGS "-I$WEBOS_PDK/device/usr/include" # These compiler options are needed to support the Palm Pixi - CXXFLAGS="$CXXFLAGS -mcpu=arm1136jf-s" - CXXFLAGS="$CXXFLAGS -mfpu=vfp " - CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp" - LDFLAGS="$LDFLAGS -L$WEBOS_PDK/device/lib" - LDFLAGS="$LDFLAGS -L$WEBOS_PDK/device/usr/lib" - LDFLAGS="$LDFLAGS -Wl,--allow-shlib-undefined" - LDFLAGS="$LDFLAGS --sysroot=$WEBOS_PDK/arm-gcc/sysroot" + append_var CXXFLAGS "-mcpu=arm1136jf-s" + append_var CXXFLAGS "-mfpu=vfp " + append_var CXXFLAGS "-mfloat-abi=softfp" + append_var LDFLAGS "-L$WEBOS_PDK/device/lib" + append_var LDFLAGS "-L$WEBOS_PDK/device/usr/lib" + append_var LDFLAGS "-Wl,--allow-shlib-undefined" + append_var LDFLAGS "--sysroot=$WEBOS_PDK/arm-gcc/sysroot" add_line_to_config_mk "WEBOS_SDK = $WEBOS_SDK" _seq_midi=no ;; wii) _optimization_level=-Os - CXXFLAGS="$CXXFLAGS -mrvl" - CXXFLAGS="$CXXFLAGS -mcpu=750" - CXXFLAGS="$CXXFLAGS -meabi" - CXXFLAGS="$CXXFLAGS -mhard-float" - CXXFLAGS="$CXXFLAGS -ffunction-sections" - CXXFLAGS="$CXXFLAGS -fdata-sections" - CXXFLAGS="$CXXFLAGS -fmodulo-sched" - CXXFLAGS="$CXXFLAGS -fuse-cxa-atexit" - CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include" + 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" # libogc is required to link the cc tests (includes _start()) - LDFLAGS="$LDFLAGS -mrvl" - LDFLAGS="$LDFLAGS -mcpu=750" - LDFLAGS="$LDFLAGS -L$DEVKITPRO/libogc/lib/wii" - LDFLAGS="$LDFLAGS -logc" + append_var LDFLAGS "-mrvl" + append_var LDFLAGS "-mcpu=750" + append_var LDFLAGS "-L$DEVKITPRO/libogc/lib/wii" + append_var LDFLAGS "-logc" if test "$_dynamic_modules" = "yes" ; then # retarded toolchain patch forces --gc-sections, overwrite it - LDFLAGS="$LDFLAGS -Wl,--no-gc-sections" + append_var LDFLAGS "-Wl,--no-gc-sections" fi ;; wince) _optimization_level=-O3 - CXXFLAGS="$CXXFLAGS -fno-inline-functions" - CXXFLAGS="$CXXFLAGS -march=armv4" - CXXFLAGS="$CXXFLAGS -mtune=xscale" - DEFINES="$DEFINES -D_WIN32_WCE=300" - DEFINES="$DEFINES -D__ARM__" - DEFINES="$DEFINES -D_ARM_" - DEFINES="$DEFINES -DUNICODE" - DEFINES="$DEFINES -DFPM_DEFAULT" - DEFINES="$DEFINES -DNONSTANDARD_PORT" - DEFINES="$DEFINES -DWRAP_MALLOC" - DEFINES="$DEFINES -DWIN32" - DEFINES="$DEFINES -Dcdecl=" - DEFINES="$DEFINES -D__cdecl__=" + append_var CXXFLAGS "-fno-inline-functions" + append_var CXXFLAGS "-march=armv4" + append_var CXXFLAGS "-mtune=xscale" + append_var DEFINES "-D_WIN32_WCE=300" + append_var DEFINES "-D__ARM__" + append_var DEFINES "-D_ARM_" + append_var DEFINES "-DUNICODE" + append_var DEFINES "-DFPM_DEFAULT" + append_var DEFINES "-DNONSTANDARD_PORT" + append_var DEFINES "-DWRAP_MALLOC" + append_var DEFINES "-DWIN32" + append_var DEFINES "-Dcdecl=" + append_var DEFINES "-D__cdecl__=" add_line_to_config_mk "WRAP_MALLOC = 1" ;; esac @@ -2298,10 +2498,10 @@ if test -n "$_host"; then # Cross-compiling mode - add your target here if needed echo "Cross-compiling to $_host" case "$_host" in - android | android-v7a) + android | android-arm | android-v7a | android-arm-v7a | android-mips | android-x86 | ouya) # we link a .so as default - LDFLAGS="$LDFLAGS -shared" - LDFLAGS="$LDFLAGS -Wl,-Bsymbolic,--no-undefined" + append_var LDFLAGS "-shared" + append_var LDFLAGS "-Wl,-Bsymbolic,--no-undefined" HOSTEXEPRE=lib HOSTEXEEXT=.so _backend="android" @@ -2314,35 +2514,18 @@ if test -n "$_host"; then arm-linux|arm*-linux-gnueabi|arm-*-linux) ;; arm-riscos|linupy) - DEFINES="$DEFINES -DLINUPY" - ;; - bada) - _unix=yes - _backend="bada" - _port_mk="backends/platform/bada/bada.mk" - if test "$_debug_build" = yes; then - _arm_asm=no - else - _arm_asm=yes - fi - _taskbar=no - _build_scalers=no - _seq_midi=no - _mt32emu=no - _timidity=no - _vkeybd=yes + append_var DEFINES "-DLINUPY" ;; bfin*) ;; caanoo) - DEFINES="$DEFINES -DCAANOO" + append_var DEFINES "-DCAANOO" if test "$_debug_build" = no; then # Use -O3 on the Caanoo for non-debug builds. _optimization_level=-O3 fi - CXXFLAGS="$CXXFLAGS -mcpu=arm926ej-s" - CXXFLAGS="$CXXFLAGS -mtune=arm926ej-s" - ASFLAGS="$ASFLAGS" + append_var CXXFLAGS "-mcpu=arm926ej-s" + append_var CXXFLAGS "-mtune=arm926ej-s" _backend="gph" _build_hq_scalers=no _savegame_timestamp=no @@ -2357,12 +2540,11 @@ if test -n "$_host"; then _strip=$_host-strip ;; dingux) - DEFINES="$DEFINES -DDINGUX" - DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL" - DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE" - ASFLAGS="$ASFLAGS" - CXXFLAGS="$CXXFLAGS -msoft-float" - CXXFLAGS="$CXXFLAGS -mips32" + append_var DEFINES "-DDINGUX" + append_var DEFINES "-DDISABLE_DOSBOX_OPL" + append_var DEFINES "-DREDUCE_MEMORY_USAGE" + append_var CXXFLAGS "-msoft-float" + append_var CXXFLAGS "-mips32" _backend="dingux" _mt32emu=no _optimization_level=-O3 @@ -2378,17 +2560,20 @@ if test -n "$_host"; then _port_mk="backends/platform/dingux/dingux.mk" ;; dreamcast) - DEFINES="$DEFINES -DDISABLE_DEFAULT_SAVEFILEMANAGER" - DEFINES="$DEFINES -DDISABLE_TEXT_CONSOLE" - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - if test "$_release_build" = yes; then - DEFINES="$DEFINES -DNOSERIAL" + append_var DEFINES "-DDISABLE_DEFAULT_SAVEFILEMANAGER" + append_var DEFINES "-DDISABLE_TEXT_CONSOLE" + append_var DEFINES "-DDISABLE_COMMAND_LINE" + # Enable serial debugging output only when --enable-debug is passed + if test "$_release_build" = yes -o "$_debug_build" != yes; then + append_var DEFINES "-DNOSERIAL" fi _optimization_level=-O3 - CXXFLAGS="$CXXFLAGS -funroll-loops" - CXXFLAGS="$CXXFLAGS -fschedule-insns2" - CXXFLAGS="$CXXFLAGS -fomit-frame-pointer" - CXXFLAGS="$CXXFLAGS -fdelete-null-pointer-checks" + append_var CXXFLAGS "-funroll-loops" + append_var CXXFLAGS "-fschedule-insns2" + append_var CXXFLAGS "-fomit-frame-pointer" + append_var CXXFLAGS "-fdelete-null-pointer-checks" + # no-delayed-branch is a workaround for GCC bug #42841 - "SH: Assembler complains pcrel too far." + append_var CXXFLAGS "-fno-delayed-branch" _backend="dc" _build_scalers=no _mad=yes @@ -2397,16 +2582,16 @@ if test -n "$_host"; then _port_mk="backends/platform/dc/dreamcast.mk" ;; ds) - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - DEFINES="$DEFINES -DDISABLE_DEFAULT_SAVEFILEMANAGER" - DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL" - DEFINES="$DEFINES -DDISABLE_FANCY_THEMES" - DEFINES="$DEFINES -DDISABLE_SID" - DEFINES="$DEFINES -DDISABLE_NES_APU" - DEFINES="$DEFINES -DDISABLE_TEXT_CONSOLE" - DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE" - DEFINES="$DEFINES -DSTREAM_AUDIO_FROM_DISK" - DEFINES="$DEFINES -DVECTOR_RENDERER_FORMAT=1555" + 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" _backend="ds" _build_scalers=no _mt32emu=no @@ -2426,11 +2611,29 @@ if test -n "$_host"; then add_line_to_config_h "/* #define DEBUG_WII_GDB */" add_line_to_config_h "#define USE_WII_DI" ;; + gcw0) + append_var DEFINES "-DDINGUX -DGCW0" + append_var DEFINES "-DREDUCE_MEMORY_USAGE" + append_var CXXFLAGS "-mips32" + _backend="dingux" + _mt32emu=no + _optimization_level=-O3 + # Disable alsa midi to get the port build on OpenDingux toolchain + _alsa=no + _vkeybd=yes + _build_hq_scalers=no + _keymapper=yes + # 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" + ;; gp2x) - DEFINES="$DEFINES -DGP2X" - CXXFLAGS="$CXXFLAGS -march=armv4t" - ASFLAGS="$ASFLAGS -mfloat-abi=soft" - LDFLAGS="$LDFLAGS -static" + append_var DEFINES "-DGP2X" + append_var CXXFLAGS "-march=armv4t" + append_var ASFLAGS "-mfloat-abi=soft" + append_var LDFLAGS "-static" _backend="gph" _build_hq_scalers=no _savegame_timestamp=no @@ -2441,10 +2644,10 @@ if test -n "$_host"; then _port_mk="backends/platform/gph/gp2x-bundle.mk" ;; gp2xwiz) - DEFINES="$DEFINES -DGP2XWIZ" - CXXFLAGS="$CXXFLAGS -mcpu=arm926ej-s" - CXXFLAGS="$CXXFLAGS -mtune=arm926ej-s" - ASFLAGS="$ASFLAGS -mfloat-abi=soft" + append_var DEFINES "-DGP2XWIZ" + append_var CXXFLAGS "-mcpu=arm926ej-s" + append_var CXXFLAGS "-mtune=arm926ej-s" + append_var ASFLAGS "-mfloat-abi=soft" _backend="gph" _build_hq_scalers=no _savegame_timestamp=no @@ -2455,7 +2658,8 @@ if test -n "$_host"; then _port_mk="backends/platform/gph/gp2xwiz-bundle.mk" ;; iphone) - DEFINES="$DEFINES -DIPHONE" + append_var DEFINES "-DIPHONE" + append_var ASFLAGS "-arch armv6" _backend="iphone" _build_scalers=no _mt32emu=no @@ -2463,18 +2667,18 @@ if test -n "$_host"; then _timidity=no ;; m68k-atari-mint) - DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE" + append_var DEFINES "-DSYSTEM_NOT_SUPPORTING_D_TYPE" _ranlib=m68k-atari-mint-ranlib _ar="m68k-atari-mint-ar cru" _seq_midi=no ;; maemo) _optimization_level=-Os - CXXFLAGS="$CXXFLAGS -mcpu=arm926ej-s" - CXXFLAGS="$CXXFLAGS -fomit-frame-pointer" - INCLUDES="$INCLUDES -I/usr/X11R6/include" - LIBS="$LIBS -lX11" - LIBS="$LIBS -L/usr/lib" + append_var CXXFLAGS "-mcpu=arm926ej-s" + append_var CXXFLAGS "-fomit-frame-pointer" + append_var INCLUDES "-I/usr/X11R6/include" + append_var LIBS "-lX11" + append_var LIBS "-L/usr/lib" _backend="maemo" _vkeybd=yes @@ -2493,12 +2697,12 @@ if test -n "$_host"; then _ranlib=$_host-ranlib ;; mips-sgi*) - LDFLAGS="$LDFLAGS -static-libgcc" - LIBS="$LIBS -laudio" + append_var LDFLAGS "-static-libgcc" + append_var LIBS "-laudio" ;; motoezx) - DEFINES="$DEFINES -DMOTOEZX" - ASFLAGS="$ASFLAGS -mfpu=vfp" + append_var DEFINES "-DMOTOEZX" + append_var ASFLAGS "-mfpu=vfp" _backend="linuxmoto" _build_hq_scalers=no _mt32emu=no @@ -2507,8 +2711,8 @@ if test -n "$_host"; then _port_mk="backends/platform/linuxmoto/linuxmoto.mk" ;; motomagx) - DEFINES="$DEFINES -DMOTOMAGX" - ASFLAGS="$ASFLAGS -mfpu=vfp" + append_var DEFINES "-DMOTOMAGX" + append_var ASFLAGS "-mfpu=vfp" _backend="linuxmoto" _build_hq_scalers=no _mt32emu=no @@ -2517,20 +2721,20 @@ if test -n "$_host"; then _port_mk="backends/platform/linuxmoto/linuxmoto.mk" ;; n64) - CXXFLAGS="$CXXFLAGS -mno-extern-sdata" - CXXFLAGS="$CXXFLAGS --param max-inline-insns-auto=20" - CXXFLAGS="$CXXFLAGS -fomit-frame-pointer" - CXXFLAGS="$CXXFLAGS -march=vr4300" - CXXFLAGS="$CXXFLAGS -mtune=vr4300" - CXXFLAGS="$CXXFLAGS -mhard-float" - LDFLAGS="$LDFLAGS -march=vr4300" - LDFLAGS="$LDFLAGS -mtune=vr4300" - LDFLAGS="$LDFLAGS -nodefaultlibs" - LDFLAGS="$LDFLAGS -nostartfiles" - LDFLAGS="$LDFLAGS -mno-crt0" - LDFLAGS="$LDFLAGS -L$N64SDK/hkz-libn64" - LDFLAGS="$LDFLAGS -L$N64SDK/lib" - LDFLAGS="$LDFLAGS -T n64ld_cpp.x -Xlinker -Map -Xlinker scummvm.map" + 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 scummvm.map" _backend="n64" _mt32emu=no _build_scalers=no @@ -2548,16 +2752,16 @@ if test -n "$_host"; then _port_mk="backends/platform/n64/n64.mk" ;; neuros) - DEFINES="$DEFINES -DNEUROS" + append_var DEFINES "-DNEUROS" _backend='null' _build_hq_scalers=no _mt32emu=no ;; openpandora) - DEFINES="$DEFINES -DOPENPANDORA" - DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE" + append_var DEFINES "-DOPENPANDORA" + append_var DEFINES "-DREDUCE_MEMORY_USAGE" if test "$_release_build" = no; then - DEFINES="$DEFINES -DOP_DEBUG" + append_var DEFINES "-DOP_DEBUG" fi # Use -O3 on the OpenPandora for optimized builds. @@ -2566,12 +2770,12 @@ if test -n "$_host"; then fi define_in_config_if_yes yes 'USE_ARM_NEON_ASPECT_CORRECTOR' - CXXFLAGS="$CXXFLAGS -march=armv7-a" - CXXFLAGS="$CXXFLAGS -mtune=cortex-a8" - CXXFLAGS="$CXXFLAGS -mfloat-abi=softfp" - CXXFLAGS="$CXXFLAGS -mfpu=neon" - CXXFLAGS="$CXXFLAGS -fsingle-precision-constant" - ASFLAGS="$ASFLAGS -mfloat-abi=softfp" + 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" _backend="openpandora" _build_hq_scalers=yes _vkeybd=no @@ -2580,9 +2784,12 @@ if test -n "$_host"; then _port_mk="backends/platform/openpandora/op-bundle.mk" ;; ppc-amigaos) + # 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//'` - LDFLAGS="$LDFLAGS -static" + append_var LDFLAGS "-static" # toolchain binaries prefixed by host _ranlib=$_host-ranlib @@ -2590,13 +2797,17 @@ if test -n "$_host"; then _ar="$_host-ar cru" _as="$_host-as" _windres=$_host-windres + + _port_mk="backends/platform/sdl/amigaos/amigaos.mk" ;; ps2) - DEFINES="$DEFINES -DDISABLE_TEXT_CONSOLE" - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL" - DEFINES="$DEFINES -DDISABLE_SID" - DEFINES="$DEFINES -DDISABLE_NES_APU" + append_var DEFINES "-DDISABLE_TEXT_CONSOLE" + append_var DEFINES "-DDISABLE_COMMAND_LINE" + append_var DEFINES "-DDISABLE_DOSBOX_OPL" + append_var DEFINES "-DDISABLE_SID" + append_var DEFINES "-DDISABLE_NES_APU" + append_var CXXFLAGS "-fno-exceptions" + append_var CXXFLAGS "-fno-rtti" _backend="ps2" _build_scalers=no _mt32emu=no @@ -2604,30 +2815,37 @@ if test -n "$_host"; then # This trick doesn't work for tremor right now, as the PS2 port the resulting library # libtremor, while our code later on expects it to be called libvorbisidec. # TODO: Enable tremor, e.g. by adding -ltremor or by renaming the lib. + # Disable this for older SDK as this breaks the build otherwise... + if test -z "$PS2SDK_OLD"; then + _tremor=yes + fi _mad=yes _zlib=yes # HACK to fix compilation of C source files for now. - add_line_to_config_mk 'CC = ee-gcc' + add_line_to_config_mk 'CC := ee-gcc' + add_line_to_config_mk 'CFLAGS := -std=c99 -W -Wno-unused-parameter -Wconversion -pedantic -G2 -s -O2 -Wuninitialized' # HACK to fix linking for now. It seems ee-g++ does not handle linking correctly. LD=ee-gcc if test "$_debug_build" = yes; then # TODO: Setup debug build properly - DEFINES="$DEFINES -D__PS2_DEBUG__" - #INCLUDES="$INCLUDES -I$(PS2GDB)/ee" - #LDFLAGS="$LDFLAGS -L$(PS2GDB)/lib" - LDFLAGS="$LDFLAGS -lps2gdbStub" - LDFLAGS="$LDFLAGS -lps2ip" - LDFLAGS="$LDFLAGS -ldebug" + append_var DEFINES "-D__PS2_DEBUG__" + #append_var INCLUDES "-I$(PS2GDB)/ee" + #append_var LDFLAGS "-L$(PS2GDB)/lib" + append_var LDFLAGS "-lps2gdbStub" + append_var LDFLAGS "-lps2ip" + append_var LDFLAGS "-ldebug" else # If not building for debug mode, strip binaries. - CXXFLAGS="$CXXFLAGS -s" + append_var CXXFLAGS "-s" fi ;; ps3) _mt32emu=no _timidity=no _vkeybd=yes + _eventrec=no + _port_mk="backends/platform/sdl/ps3/ps3.mk" ;; psp) _backend="psp" @@ -2636,14 +2854,25 @@ if test -n "$_host"; then _port_mk="backends/platform/psp/psp.mk" ;; samsungtv) - DEFINES="$DEFINES -DSAMSUNGTV" - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - ASFLAGS="$ASFLAGS -mfpu=vfp" + append_var DEFINES "-DSAMSUNGTV" + append_var DEFINES "-DDISABLE_COMMAND_LINE" + append_var ASFLAGS "-mfpu=vfp" HOSTEXEEXT=".so" _backend="samsungtv" _mt32emu=no _vkeybd=yes ;; + tizen) + _unix=yes + _backend="tizen" + _port_mk="backends/platform/tizen/tizen.mk" + _arm_asm=yes + _build_scalers=no + _seq_midi=no + _mt32emu=no + _timidity=no + _vkeybd=yes + ;; webos) _backend="webos" _port_mk="backends/platform/webos/webos.mk" @@ -2671,7 +2900,7 @@ if test -n "$_host"; then add_line_to_config_h "#define USE_WII_KBD" ;; wince) - LDFLAGS="$LDFLAGS -Wl,--stack,65536" + append_var LDFLAGS "-Wl,--stack,65536" _tremolo=yes _backend="wince" _detectlang=yes @@ -2689,148 +2918,140 @@ fi # case $_backend in android) - DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE" - CXXFLAGS="$CXXFLAGS -Wa,--noexecstack" - LDFLAGS="$LDFLAGS -Wl,-z,noexecstack" - INCLUDES="$INCLUDES -I$ANDROID_NDK/sources/cxx-stl/system/include" - ;; - bada) - # dirent.h not available. NONSTANDARD_PORT==ensure portdefs.h is included - DEFINES="$DEFINES -DBADA -DDISABLE_STDIO_FILESTREAM -DNONSTANDARD_PORT" - DEFINES="$DEFINES -DNO_STDERR_STDOUT" - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/bada ' - INCLUDES="$INCLUDES "'-I$(BADA_SDK)/include' - INCLUDES="$INCLUDES "'-I$(BADA_SDK_ROOT)/Include' - if test "$_debug_build" = yes; then - # debug using with the simulator - CXXFLAGS="$CXXFLAGS -D_DEBUG -DSHP -DBUILD_DLL -fmessage-length=0" - else - # created a shared library for inclusion via the eclipse build - CXXFLAGS="$CXXFLAGS -DSHP" - CXXFLAGS="$CXXFLAGS -fpic" - CXXFLAGS="$CXXFLAGS -fshort-wchar" - CXXFLAGS="$CXXFLAGS -mcpu=cortex-a8" - CXXFLAGS="$CXXFLAGS -mfpu=vfpv3" - CXXFLAGS="$CXXFLAGS -mfloat-abi=hard" - CXXFLAGS="$CXXFLAGS -mlittle-endian" - CXXFLAGS="$CXXFLAGS -mthumb-interwork" - CXXFLAGS="$CXXFLAGS -Wno-psabi" - CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" - CXXFLAGS="$CXXFLAGS -fno-short-enums" - fi - HOSTEXEPRE=lib - HOSTEXEEXT=.a + append_var DEFINES "-DREDUCE_MEMORY_USAGE" + append_var CXXFLAGS "-Wa,--noexecstack" + append_var LDFLAGS "-Wl,-z,noexecstack" + append_var INCLUDES "-I$ANDROID_NDK/sources/cxx-stl/system/include" ;; dc) - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/dc' - INCLUDES="$INCLUDES "'-isystem $(ronindir)/include' - LDFLAGS="$LDFLAGS -Wl,-Ttext,0x8c010000" - LDFLAGS="$LDFLAGS -nostartfiles" - LDFLAGS="$LDFLAGS "'$(ronindir)/lib/crt0.o' - LDFLAGS="$LDFLAGS "'-L$(ronindir)/lib' - if test "$_release_build" = yes; then - LIBS="$LIBS -lronin-noserial -lm" + append_var INCLUDES '-I$(srcdir)/backends/platform/dc' + append_var INCLUDES '-isystem $(ronindir)/include' + append_var LDFLAGS "-Wl,-Ttext,0x8c010000" + append_var LDFLAGS "-nostartfiles" + append_var LDFLAGS '$(ronindir)/lib/crt0.o' + append_var LDFLAGS '-L$(ronindir)/lib' + # Enable serial debugging output only when --enable-debug is passed + if test "$_release_build" = yes -o "$_debug_build" != yes; then + append_var LIBS "-lronin-noserial -lm" else - LIBS="$LIBS -lronin -lm" + append_var LIBS "-lronin -lm" fi ;; dingux) - DEFINES="$DEFINES -DDINGUX" + append_var DEFINES "-DDINGUX" ;; ds) - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/ds/arm9/source' - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/ds/commoninclude' - INCLUDES="$INCLUDES "'-Ibackends/platform/ds/arm9/data' + 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' ;; gph) # On the GPH devices we want fancy themes but do not want the load/save thumbnail grid. - DEFINES="$DEFINES -DDISABLE_SAVELOADCHOOSER_GRID" - DEFINES="$DEFINES -DGPH_DEVICE" - DEFINES="$DEFINES -DREDUCE_MEMORY_USAGE" + append_var DEFINES "-DDISABLE_SAVELOADCHOOSER_GRID" + append_var DEFINES "-DGPH_DEVICE" + append_var DEFINES "-DREDUCE_MEMORY_USAGE" if test "$_debug_build" = yes; then - DEFINES="$DEFINES -DGPH_DEBUG" + append_var DEFINES "-DGPH_DEBUG" fi ;; iphone) - LIBS="$LIBS -lobjc -framework UIKit -framework CoreGraphics -framework OpenGLES" - LIBS="$LIBS -framework QuartzCore -framework GraphicsServices -framework CoreFoundation" - LIBS="$LIBS -framework Foundation -framework AudioToolbox -framework CoreAudio" + 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" ;; linuxmoto) - DEFINES="$DEFINES -DLINUXMOTO" + append_var DEFINES "-DLINUXMOTO" ;; maemo) - DEFINES="$DEFINES -DMAEMO" + append_var DEFINES "-DMAEMO" ;; n64) - INCLUDES="$INCLUDES "'-I$(N64SDK)/include' - INCLUDES="$INCLUDES "'-I$(N64SDK)/mips64/include' - INCLUDES="$INCLUDES "'-I$(N64SDK)/hkz-libn64' - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/n64' - LIBS="$LIBS -lpakfs -lframfs -ln64 -ln64utils -lromfs" - LIBS="$LIBS -lm -lstdc++ -lz" + 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" ;; null) - DEFINES="$DEFINES -DUSE_NULL_DRIVER" + append_var DEFINES "-DUSE_NULL_DRIVER" ;; openpandora) ;; ps2) - DEFINES="$DEFINES -D_EE" - DEFINES="$DEFINES -DFORCE_RTL" - INCLUDES="$INCLUDES -I$PS2SDK/ee/include" - INCLUDES="$INCLUDES -I$PS2SDK/common/include" - INCLUDES="$INCLUDES -I$PS2SDK/ports/include" + append_var DEFINES "-D_EE" + append_var DEFINES "-DFORCE_RTL" + append_var INCLUDES "-I$PS2SDK/ee/include" + append_var INCLUDES "-I$PS2SDK/common/include" + append_var INCLUDES "-I$PS2SDK/ports/include" if test "$_dynamic_modules" = no ; then - LDFLAGS="$LDFLAGS -mno-crt0" - LDFLAGS="$LDFLAGS $PS2SDK/ee/startup/crt0.o" - LDFLAGS="$LDFLAGS -T $PS2SDK/ee/startup/linkfile" + append_var LDFLAGS "-mno-crt0" + append_var LDFLAGS "$PS2SDK/ee/startup/crt0.o" + append_var LDFLAGS "-T $PS2SDK/ee/startup/linkfile" fi - LDFLAGS="$LDFLAGS -L$PS2SDK/ee/lib" - LDFLAGS="$LDFLAGS -L$PS2SDK/ports/lib" - LIBS="$LIBS -lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm" - LIBS="$LIBS -lm -lc -lfileXio -lkernel -lstdc++" + append_var LDFLAGS "-L$PS2SDK/ee/lib" + append_var LDFLAGS "-L$PS2SDK/ports/lib" + append_var LIBS "-lmc -lpad -lmouse -lhdd -lpoweroff -lsjpcm" + append_var LIBS "-lm -lc -lfileXio -lkernel -lstdc++" ;; psp) - DEFINES="$DEFINES -D__PSP__" - DEFINES="$DEFINES -DDISABLE_COMMAND_LINE" - DEFINES="$DEFINES -DDISABLE_DOSBOX_OPL" - LIBS="$LIBS -lpng" - LIBS="$LIBS -Wl,-Map,mapfile.txt" + 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" ;; samsungtv) - DEFINES="$DEFINES -DSAMSUNGTV" - LDFLAGS="$LDFLAGS -shared" - LDFLAGS="$LDFLAGS -fpic" + append_var DEFINES "-DSAMSUNGTV" + append_var LDFLAGS "-shared" + append_var LDFLAGS "-fpic" + ;; + tizen) + # dirent.h not available. NONSTANDARD_PORT==ensure portdefs.h is included + append_var DEFINES "-DTIZEN -DDISABLE_STDIO_FILESTREAM -DNONSTANDARD_PORT" + append_var DEFINES "-DNO_STDERR_STDOUT" + append_var DEFINES "-DDISABLE_COMMAND_LINE" + append_var INCLUDES '-I$(srcdir)/backends/platform/tizen' + append_var INCLUDES '-I$(TIZEN_ROOTSTRAP)/usr/include' + append_var INCLUDES '-I$(TIZEN_ROOTSTRAP)/usr/include/osp' + if test "$_debug_build" = yes; then + append_var CXXFLAGS "-D_DEBUG -DBUILD_DLL -O0 -g3" + fi + # created a shared library for inclusion via the eclipse build + append_var CXXFLAGS "-Wno-psabi" + append_var CXXFLAGS "--sysroot=${TIZEN_ROOTSTRAP}" + append_var CXXFLAGS "-fmessage-length=0" + append_var CXXFLAGS "-fPIC" + HOSTEXEPRE=lib + HOSTEXEEXT=.a ;; webos) # There is no sdl-config in the WebOS PDK so we don't use find_sdlconfig here. # The PDL library acts as the WebOS device toolchain, and is required to control the virtual keyboard among other OS-level events. - LIBS="$LIBS -lSDL -lpdl" - DEFINES="$DEFINES -DWEBOS" - DEFINES="$DEFINES -DSDL_BACKEND" + append_var LIBS "-lSDL -lpdl" + append_var DEFINES "-DWEBOS" + append_var DEFINES "-DSDL_BACKEND" add_line_to_config_mk "SDL_BACKEND = 1" - MODULES="$MODULES backends/platform/sdl" + append_var MODULES "backends/platform/sdl" ;; wii) - DEFINES="$DEFINES -D__WII__" - DEFINES="$DEFINES -DGEKKO" + append_var DEFINES "-D__WII__" + append_var DEFINES "-DGEKKO" case $_host_os in gamecube) - LIBS="$LIBS -lgxflux -liso9660 -lfat -logc -ldb" + append_var LIBS "-lgxflux -liso9660 -lfat -logc -ldb" ;; *) - LIBS="$LIBS -lgxflux -ldi -liso9660 -ltinysmb -lfat -lwiiuse -lbte -logc -lwiikeyboard -ldb" + append_var LIBS "-lgxflux -ldi -liso9660 -ltinysmb -lfat -lwiiuse -lbte -logc -lwiikeyboard -ldb" ;; esac ;; wince) - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/wince' - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/wince/CEgui' - INCLUDES="$INCLUDES "'-I$(srcdir)/backends/platform/wince/CEkeys' - LIBS="$LIBS -static -lSDL" - DEFINES="$DEFINES -DSDL_BACKEND" + append_var INCLUDES '-I$(srcdir)/backends/platform/wince' + append_var INCLUDES '-I$(srcdir)/backends/platform/wince/CEgui' + append_var INCLUDES '-I$(srcdir)/backends/platform/wince/CEkeys' + append_var LIBS "-static -lSDL" + append_var DEFINES "-DSDL_BACKEND" add_line_to_config_mk "SDL_BACKEND = 1" ;; sdl) @@ -2840,7 +3061,7 @@ case $_backend in exit 1 ;; esac -MODULES="$MODULES backends/platform/$_backend" +append_var MODULES "backends/platform/$_backend" # # Setup SDL specifics for SDL based backends @@ -2848,9 +3069,9 @@ MODULES="$MODULES backends/platform/$_backend" case $_backend in dingux | gph | linuxmoto | maemo | openpandora | samsungtv | sdl) find_sdlconfig - INCLUDES="$INCLUDES `$_sdlconfig --prefix="$_sdlpath" --cflags`" - LIBS="$LIBS `$_sdlconfig --prefix="$_sdlpath" --libs`" - DEFINES="$DEFINES -DSDL_BACKEND" + append_var INCLUDES "`$_sdlconfig --prefix="$_sdlpath" --cflags`" + append_var LIBS "`$_sdlconfig --prefix="$_sdlpath" --libs`" + append_var DEFINES "-DSDL_BACKEND" add_line_to_config_mk "SDL_BACKEND = 1" _sdlversion=`$_sdlconfig --version` @@ -2858,6 +3079,9 @@ case $_backend in 1.3.*) add_line_to_config_mk "USE_SDL13 = 1" ;; + 2.0.*) + add_line_to_config_mk "USE_SDL2 = 1" + ;; *) ;; esac @@ -2869,7 +3093,7 @@ esac # Enable 16bit support only for backends which support it # case $_backend in - android | bada | dingux | dc | gph | iphone | maemo | openpandora | psp | samsungtv | sdl | webos | wii) + android | dingux | dc | gph | iphone | maemo | openpandora | psp | samsungtv | sdl | tizen | webos | wii) if test "$_16bit" = auto ; then _16bit=yes else @@ -2882,6 +3106,20 @@ case $_backend in esac # +# Enable Event Recorder only for backends that support it +# +case $_backend in + sdl) + if test "$_eventrec" = auto ; then + _eventrec=yes + fi + ;; + *) + _eventrec=no + ;; +esac + +# # Disable savegame timestamp support for backends which don't have a reliable real time clock # case $_backend in @@ -2933,7 +3171,7 @@ esac echo $_posix if test "$_posix" = yes ; then - DEFINES="$DEFINES -DPOSIX" + append_var DEFINES "-DPOSIX" add_line_to_config_mk 'POSIX = 1' fi @@ -2963,8 +3201,8 @@ fi if test "$_optimizations" = yes ; then # Enable optimizations. This also # makes it possible to use -Wuninitialized, so let's do that. - CXXFLAGS="$CXXFLAGS $_optimization_level" - CXXFLAGS="$CXXFLAGS -Wuninitialized" + append_var CXXFLAGS "$_optimization_level" + append_var CXXFLAGS "-Wuninitialized" fi # @@ -2980,8 +3218,8 @@ if test "$_dynamic_modules" = yes ; then android) _plugin_prefix="lib" _plugin_suffix=".so" - CXXFLAGS="$CXXFLAGS -fpic" - LIBS="$LIBS -ldl" + append_var CXXFLAGS "-fpic" + append_var LIBS "-ldl" # 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 - @@ -3000,7 +3238,7 @@ POST_OBJS_FLAGS := -Wl,-no-whole-archive darwin*) _plugin_prefix="" _plugin_suffix=".plugin" - LIBS="$LIBS -ldl" + append_var LIBS "-ldl" _mak_plugins=' PLUGIN_EXTRA_DEPS = $(EXECUTABLE) PLUGIN_LDFLAGS += -bundle -bundle_loader $(EXECUTABLE) -exported_symbols_list "$(srcdir)/plugin.exp" @@ -3020,9 +3258,9 @@ POST_OBJS_FLAGS := -Wl,--no-whole-archive ;; ds) _elf_loader=yes - DEFINES="$DEFINES -DELF_LOADER_CXA_ATEXIT" - DEFINES="$DEFINES -DUNCACHED_PLUGINS" - DEFINES="$DEFINES -DELF_NO_MEM_MANAGER" + append_var DEFINES "-DELF_LOADER_CXA_ATEXIT" + append_var DEFINES "-DUNCACHED_PLUGINS" + append_var DEFINES "-DELF_NO_MEM_MANAGER" _mak_plugins=' PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/ds/plugin.ld -mthumb-interwork -mno-fpu ' @@ -3030,7 +3268,7 @@ PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/ds/plugin.ld -mthumb-interwo freebsd*) _plugin_prefix="lib" _plugin_suffix=".so" - CXXFLAGS="$CXXFLAGS -fPIC" + append_var CXXFLAGS "-fPIC" _mak_plugins=' PLUGIN_EXTRA_DEPS = PLUGIN_LDFLAGS += -shared @@ -3040,8 +3278,8 @@ POST_OBJS_FLAGS := -Wl,-no-whole-archive ;; gamecube | wii) _elf_loader=yes - DEFINES="$DEFINES -DELF_LOADER_CXA_ATEXIT" - DEFINES="$DEFINES -DUNCACHED_PLUGINS" + append_var DEFINES "-DELF_LOADER_CXA_ATEXIT" + append_var DEFINES "-DUNCACHED_PLUGINS" _mak_plugins=' PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/wii/plugin.ld ' @@ -3049,8 +3287,8 @@ PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/wii/plugin.ld gph*) _plugin_prefix="" _plugin_suffix=".plugin" - CXXFLAGS="$CXXFLAGS -fpic" - LIBS="$LIBS -ldl" + append_var CXXFLAGS "-fpic" + append_var LIBS "-ldl" _mak_plugins=' PLUGIN_EXTRA_DEPS = $(EXECUTABLE) PLUGIN_LDFLAGS += -shared @@ -3061,8 +3299,8 @@ POST_OBJS_FLAGS := -Wl,-no-whole-archive irix*) _plugin_prefix="lib" _plugin_suffix=".so" - CXXFLAGS="$CXXFLAGS -fpic" - LIBS="$LIBS -ldl" + append_var CXXFLAGS "-fpic" + append_var LIBS "-ldl" _mak_plugins=' PLUGIN_EXTRA_DEPS = PLUGIN_LDFLAGS += -shared -static-libgcc @@ -3074,8 +3312,8 @@ POST_OBJS_FLAGS := -Wl,-no-whole-archive linux* | gnu* | k*bsd*-gnu*) _plugin_prefix="lib" _plugin_suffix=".so" - CXXFLAGS="$CXXFLAGS -fPIC" - LIBS="$LIBS -ldl" + append_var CXXFLAGS "-fPIC" + append_var LIBS "-ldl" _mak_plugins=' PLUGIN_EXTRA_DEPS = PLUGIN_LDFLAGS += -shared @@ -3094,7 +3332,7 @@ POST_OBJS_FLAGS := -Wl,--export-all-symbols -Wl,--no-whole-archive -Wl,--out-im ' ;; wince) - DEFINES="$DEFINES -DUNCACHED_PLUGINS" + append_var DEFINES "-DUNCACHED_PLUGINS" HOSTEXEEXT=".dll" _plugin_prefix="" _plugin_suffix=".plugin" @@ -3107,14 +3345,15 @@ POST_OBJS_FLAGS := -Wl,--export-all-symbols -Wl,--no-whole-archive -Wl,--out-im ;; ps2) _elf_loader=yes + append_var DEFINES "-DUNCACHED_PLUGINS" _mak_plugins=' -LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld -PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc +LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/main_prog.ld +PLUGIN_LDFLAGS += -mno-crt0 $(PS2SDK)/ee/startup/crt0.o -Wl,-T$(srcdir)/backends/plugins/ps2/plugin.ld -lstdc++ -lc ' ;; psp) _elf_loader=yes - DEFINES="$DEFINES -DUNCACHED_PLUGINS" + append_var DEFINES "-DUNCACHED_PLUGINS" _mak_plugins=' LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/main_prog.ld PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/plugin.ld -lstdc++ -lc @@ -3123,8 +3362,8 @@ PLUGIN_LDFLAGS += -Wl,-T$(srcdir)/backends/plugins/psp/plugin.ld -lstdc++ -lc webos) _plugin_prefix="lib" _plugin_suffix=".so" - CXXFLAGS="$CXXFLAGS -fpic" - LIBS="$LIBS -ldl" + append_var CXXFLAGS "-fpic" + append_var LIBS "-ldl" _mak_plugins=' PLUGIN_EXTRA_DEPS = PLUGIN_LDFLAGS += -shared $(LDFLAGS) @@ -3200,7 +3439,7 @@ define_in_config_if_yes "$_build_hq_scalers" 'USE_HQ_SCALERS' cat > $TMPC << EOF int main(void) { return 0; } EOF -cc_check -lm && LIBS="$LIBS -lm" +cc_check -lm && append_var LIBS "-lm" # # Check for Ogg Vorbis @@ -3216,8 +3455,8 @@ EOF -lvorbisfile -lvorbis -logg && _vorbis=yes fi if test "$_vorbis" = yes ; then - LIBS="$LIBS $OGG_LIBS $VORBIS_LIBS -lvorbisfile -lvorbis -logg" - INCLUDES="$INCLUDES $OGG_CFLAGS $VORBIS_CFLAGS" + append_var LIBS "$OGG_LIBS $VORBIS_LIBS -lvorbisfile -lvorbis -logg" + append_var INCLUDES "$OGG_CFLAGS $VORBIS_CFLAGS" fi define_in_config_if_yes "$_vorbis" 'USE_VORBIS' echo "$_vorbis" @@ -3244,11 +3483,13 @@ if test "$_tremor" = yes && test "$_vorbis" = no; then add_line_to_config_h '#define USE_VORBIS' if test "$_tremolo" = yes ; then add_line_to_config_h '#define USE_TREMOLO' - LIBS="$LIBS $TREMOR_LIBS -ltremolo" + append_var LIBS "$TREMOR_LIBS -ltremolo" + elif test "$_host" = ps2 ; then + LIBS="-ltremor $LIBS" else - LIBS="$LIBS $TREMOR_LIBS -lvorbisidec" + append_var LIBS "$TREMOR_LIBS -lvorbisidec" fi - INCLUDES="$INCLUDES $TREMOR_CFLAGS" + append_var INCLUDES "$TREMOR_CFLAGS" else if test "$_vorbis" = yes; then _tremor="no (Ogg Vorbis/Tremor support is mutually exclusive)" @@ -3278,11 +3519,11 @@ EOF fi if test "$_flac" = yes ; then if test "$_vorbis" = yes ; then - LIBS="$LIBS $FLAC_LIBS $OGG_LIBS -lFLAC -logg" + append_var LIBS "$FLAC_LIBS $OGG_LIBS -lFLAC -logg" else - LIBS="$LIBS $FLAC_LIBS -lFLAC" + append_var LIBS "$FLAC_LIBS -lFLAC" fi - INCLUDES="$INCLUDES $FLAC_CFLAGS" + append_var INCLUDES "$FLAC_CFLAGS" fi define_in_config_if_yes "$_flac" 'USE_FLAC' echo "$_flac" @@ -3300,8 +3541,8 @@ EOF cc_check $MAD_CFLAGS $MAD_LIBS -lmad && _mad=yes fi if test "$_mad" = yes ; then - LIBS="$LIBS $MAD_LIBS -lmad" - INCLUDES="$INCLUDES $MAD_CFLAGS" + append_var LIBS "$MAD_LIBS -lmad" + append_var INCLUDES "$MAD_CFLAGS" fi define_in_config_if_yes "$_mad" 'USE_MAD' echo "$_mad" @@ -3319,13 +3560,39 @@ EOF cc_check $ALSA_CFLAGS $ALSA_LIBS -lasound && _alsa=yes fi if test "$_alsa" = yes ; then - LIBS="$LIBS $ALSA_LIBS -lasound" - INCLUDES="$INCLUDES $ALSA_CFLAGS" + append_var LIBS "$ALSA_LIBS -lasound" + append_var INCLUDES "$ALSA_CFLAGS" fi -define_in_config_h_if_yes "$_alsa" 'USE_ALSA' +define_in_config_if_yes "$_alsa" 'USE_ALSA' echo "$_alsa" # +# 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 + append_var LIBS "$JPEG_LIBS -ljpeg" + append_var INCLUDES "$JPEG_CFLAGS" +fi +define_in_config_if_yes "$_jpeg" 'USE_JPEG' +echo "$_jpeg" + +# # Check for PNG # echocheck "PNG >= 1.2.8" @@ -3341,11 +3608,11 @@ int main(void) { return 0; } EOF - cc_check $PNG_CFLAGS $PNG_LIBS -lpng && _png=yes + cc_check $PNG_CFLAGS $PNG_LIBS -lpng -lz && _png=yes fi if test "$_png" = yes ; then - LIBS="$LIBS $PNG_LIBS -lpng" - INCLUDES="$INCLUDES $PNG_CFLAGS" + append_var LIBS "$PNG_LIBS -lpng -lz" + append_var INCLUDES "$PNG_CFLAGS" fi define_in_config_if_yes "$_png" 'USE_PNG' echo "$_png" @@ -3368,8 +3635,8 @@ EOF cc_check $THEORADEC_CFLAGS $THEORADEC_LIBS -ltheoradec && _theoradec=yes fi if test "$_theoradec" = yes ; then - LIBS="$LIBS $THEORADEC_LIBS -ltheoradec" - INCLUDES="$INCLUDES $THEORADEC_CFLAGS" + append_var LIBS "$THEORADEC_LIBS -ltheoradec" + append_var INCLUDES "$THEORADEC_CFLAGS" fi define_in_config_if_yes "$_theoradec" 'USE_THEORADEC' if test ! "$_theoradec" = notsupported ; then @@ -3389,8 +3656,8 @@ EOF cc_check $FAAD_CFLAGS $FAAD_LIBS -lfaad && _faad=yes fi if test "$_faad" = yes ; then - LIBS="$LIBS $FAAD_LIBS -lfaad" - INCLUDES="$INCLUDES $FAAD_CFLAGS" + append_var LIBS "$FAAD_LIBS -lfaad" + append_var INCLUDES "$FAAD_CFLAGS" fi define_in_config_if_yes "$_faad" 'USE_FAAD' echo "$_faad" @@ -3421,8 +3688,8 @@ EOF cc_check $SNDIO_CFLAGS $SNDIO_LIBS -lsndio && _sndio=yes fi if test "$_sndio" = yes ; then - LIBS="$LIBS $SNDIO_LIBS -lsndio" - INCLUDES="$INCLUDES $SNDIO_CFLAGS" + append_var LIBS "$SNDIO_LIBS -lsndio" + append_var INCLUDES "$SNDIO_CFLAGS" fi define_in_config_h_if_yes "$_sndio" 'USE_SNDIO' echo "$_sndio" @@ -3454,13 +3721,59 @@ EOF cc_check $ZLIB_CFLAGS $ZLIB_LIBS -lz && _zlib=yes fi if test "$_zlib" = yes ; then - LIBS="$LIBS $ZLIB_LIBS -lz" - INCLUDES="$INCLUDES $ZLIB_CFLAGS" + append_var LIBS "$ZLIB_LIBS -lz" + append_var INCLUDES "$ZLIB_CFLAGS" fi define_in_config_if_yes "$_zlib" 'USE_ZLIB' echo "$_zlib" # +# Check for LibMPEG2 +# +echocheck "libmpeg2 >= 0.4.0" +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; + +extern "C" { +#include <mpeg2dec/mpeg2.h> +} + +int main(void) { + #if MPEG2_RELEASE < MPEG2_VERSION(0, 4, 0) + #error libmpeg2 version too low + #endif + + /* mpeg2_state_t first appears in 0.4.0 */ + mpeg2_state_t state; + + return 0; +} +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 + append_var INCLUDES "$MPEG2_CFLAGS" + append_var LIBS "$MPEG2_LIBS -lmpeg2" +fi +define_in_config_if_yes "$_mpeg2" 'USE_MPEG2' +echo "$_mpeg2" + +# # Check for Sparkle if updates support is enabled # echocheck "Sparkle" @@ -3477,8 +3790,8 @@ EOF cc_check $SPARKLE_CFLAGS $SPARKLE_LIBS -framework Sparkle -ObjC++ -lobjc && _sparkle=yes fi if test "$_sparkle" = yes ; then - LIBS="$LIBS $SPARKLE_LIBS -framework Sparkle" - INCLUDES="$INCLUDES $SPARKLE_CFLAGS" + append_var LIBS "$SPARKLE_LIBS -framework Sparkle" + append_var INCLUDES "$SPARKLE_CFLAGS" fi define_in_config_if_yes "$_sparkle" 'USE_SPARKLE' fi @@ -3499,13 +3812,13 @@ fi if test "$_fluidsynth" = yes ; then case $_host_os in mingw*) - LIBS="$LIBS $FLUIDSYNTH_LIBS -lfluidsynth -ldsound -lwinmm" + append_var LIBS "$FLUIDSYNTH_LIBS -lfluidsynth -ldsound -lwinmm" ;; *) - LIBS="$LIBS $FLUIDSYNTH_LIBS -lfluidsynth" + append_var LIBS "$FLUIDSYNTH_LIBS -lfluidsynth" ;; esac - INCLUDES="$INCLUDES $FLUIDSYNTH_CFLAGS" + append_var INCLUDES "$FLUIDSYNTH_CFLAGS" fi define_in_config_if_yes "$_fluidsynth" 'USE_FLUIDSYNTH' echo "$_fluidsynth" @@ -3541,8 +3854,27 @@ else fi if test "$_readline" = yes ; then - LIBS="$LIBS $READLINE_LIBS $_READLINE_LIBS" - INCLUDES="$INCLUDES $READLINE_CFLAGS" + append_var LIBS "$READLINE_LIBS $_READLINE_LIBS" + append_var INCLUDES "$READLINE_CFLAGS" + + # + # 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' + fi define_in_config_h_if_yes "$_readline" 'USE_READLINE' @@ -3563,8 +3895,8 @@ if test "$_libunity" = auto ; then ;; *) # Unity has a lots of dependencies, update the libs and cflags var with them - LIBUNITY_LIBS="$LIBUNITY_LIBS $(pkg-config --libs unity = 3.8.4 2>> "$TMPLOG")" - LIBUNITY_CFLAGS="$LIBUNITY_CFLAGS $(pkg-config --cflags unity = 3.8.4 2>> "$TMPLOG")" + LIBUNITY_LIBS="$LIBUNITY_LIBS `pkg-config --libs 'unity > 3.8.1' 2>> "$TMPLOG"`" + LIBUNITY_CFLAGS="$LIBUNITY_CFLAGS `pkg-config --cflags 'unity > 3.8.1' 2>> "$TMPLOG"`" _libunity=no cat > $TMPC << EOF #include <unity.h> @@ -3578,10 +3910,14 @@ EOF esac fi if test "$_libunity" = yes ; then - LIBS="$LIBS $LIBUNITY_LIBS" - INCLUDES="$INCLUDES $LIBUNITY_CFLAGS" + if test "$LIBUNITY_CFLAGS" = "" || test "$LIBUNITY_LIBS" = ""; then + LIBUNITY_LIBS="$LIBUNITY_LIBS `pkg-config --libs 'unity > 3.8.1' 2>> "$TMPLOG"`" + LIBUNITY_CFLAGS="$LIBUNITY_CFLAGS `pkg-config --cflags 'unity > 3.8.1' 2>> "$TMPLOG"`" + fi + append_var LIBS "$LIBUNITY_LIBS" + append_var INCLUDES "$LIBUNITY_CFLAGS" fi -define_in_config_h_if_yes "$_libunity" 'USE_TASKBAR_UNITY' +define_in_config_h_if_yes "$_libunity" 'USE_UNITY' fi echo "$_libunity" @@ -3617,8 +3953,8 @@ EOF fi if test "$_freetype2" = "yes"; then - LIBS="$LIBS $FREETYPE2_LIBS" - INCLUDES="$INCLUDES $FREETYPE2_CFLAGS" + append_var LIBS "$FREETYPE2_LIBS" + append_var INCLUDES "$FREETYPE2_CFLAGS" fi fi @@ -3642,8 +3978,8 @@ case $_backend in _opengles=yes OPENGL_LIBS="-lGLES_CM -lEGL -lX11" OPENGL_CFLAGS="$OPENGL_LIBS" - LIBS="$LIBS $OPENGL_LIBS" - INCLUDES="$INCLUDES $OPENGL_CFLAGS" + append_var LIBS "$OPENGL_LIBS" + append_var INCLUDES "$OPENGL_CFLAGS" fi ;; esac @@ -3715,13 +4051,13 @@ EOF cc_check_clean if test "$_opengl" = yes ; then - LIBS="$LIBS $OPENGL_LIBS" - INCLUDES="$INCLUDES $OPENGL_CFLAGS" + append_var LIBS "$OPENGL_LIBS" + append_var INCLUDES "$OPENGL_CFLAGS" fi fi case $_host_os in - bada) + tizen) # components live in non-standard locations so just assume sane SDK _opengl=yes _opengles=yes @@ -3777,16 +4113,16 @@ if test "$_have_x86" = yes ; then else case $_host_os in darwin*) - NASMFLAGS="$NASMFLAGS -f macho" + append_var NASMFLAGS "-f macho" ;; mingw*) - NASMFLAGS="$NASMFLAGS -f win32" + append_var NASMFLAGS "-f win32" ;; os2-emx*) - NASMFLAGS="$NASMFLAGS -f aout" + append_var NASMFLAGS "-f aout" ;; *) - NASMFLAGS="$NASMFLAGS -f elf" + append_var NASMFLAGS "-f elf" ;; esac _nasm=yes @@ -3797,10 +4133,21 @@ fi define_in_config_if_yes $_nasm 'USE_NASM' # -# Enable vkeybd / keymapper +# Enable vkeybd / keymapper / event recorder # define_in_config_if_yes $_vkeybd 'ENABLE_VKEYBD' define_in_config_if_yes $_keymapper 'ENABLE_KEYMAPPER' +define_in_config_if_yes $_eventrec 'ENABLE_EVENTRECORDER' + +# +# Check if the keymapper and the event recorder are enabled simultaneously +# +if test "$_keymapper" = yes ; then + if test "$_eventrec" = yes ; then + echo "ERROR: The keymapper and the event recorder cannot be enabled simultaneously currently, please disable one of the two" + exit 1 + fi +fi # Check whether to build translation support # @@ -3832,24 +4179,31 @@ fi # Check whether to build taskbar integration support # echo_n "Building taskbar integration support... " -define_in_config_if_yes $_taskbar 'USE_TASKBAR' -if test "$_taskbar" = yes; then +if test "$_taskbar" = "no"; then + echo "no" +else case $_host_os in mingw*) - LIBS="$LIBS -lole32 -luuid" + append_var LIBS "-lole32 -luuid" echo "win32" + _taskbar=yes + ;; + darwin*) + echo "osx" + _taskbar=yes ;; *) if test "$_libunity" = yes; then echo "unity" + _taskbar=yes else - echo "$_taskbar" + echo "no" + _taskbar=no fi ;; esac -else - echo "$_taskbar" fi +define_in_config_if_yes $_taskbar 'USE_TASKBAR' # # Check whether to build Bink video support @@ -3879,20 +4233,31 @@ fi test "x$prefix" = xNONE && prefix=/usr/local test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -DEFINES="$DEFINES -DDATA_PATH=\\\"$datadir\\\"" +case $_host_os in + mingw*) + # Windows stores all the external data files in executable file. + ;; + *) + append_var DEFINES "-DDATA_PATH=\\\"$datadir\\\"" + ;; +esac case $_backend in openpandora) # Add ../plugins as a path so plugins can be found when running from a .PND. - DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"../plugins\\\"" + append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"../plugins\\\"" ;; maemo | webos) # The WebOS and Maemo apps want the plugins in the "lib" directory # without a scummvm sub directory. - DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"$libdir\\\"" + append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"$libdir\\\"" + ;; + ps2) + # PS2 bogus dir: it actually depends on launch medium + append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"host:plugins\\\"" ;; *) - DEFINES="$DEFINES -DPLUGIN_DIRECTORY=\\\"$libdir/scummvm\\\"" + append_var DEFINES "-DPLUGIN_DIRECTORY=\\\"$libdir/scummvm\\\"" ;; esac @@ -3901,9 +4266,9 @@ esac # We need to do it here to prevent mess-ups with the tests e.g. on the PSP # if test "$_enable_prof" = yes ; then - CXXFLAGS="$CXXFLAGS -pg" - LDFLAGS="$LDFLAGS -pg" - DEFINES="$DEFINES -DENABLE_PROFILING" + append_var CXXFLAGS "-pg" + append_var LDFLAGS "-pg" + append_var DEFINES "-DENABLE_PROFILING" fi echo_n "Backend... " @@ -3946,7 +4311,11 @@ if test "$_vkeybd" = yes ; then fi if test "$_keymapper" = yes ; then - echo ", keymapper" + echo_n ", keymapper" +fi + +if test "$_eventrec" = yes ; then + echo ", event recorder" else echo fi @@ -3959,9 +4328,9 @@ case $_backend in android) # ssp at this point so the cxxtests link if test "$_debug_build" = yes; then - CXXFLAGS="$CXXFLAGS -fstack-protector" + append_var CXXFLAGS "-fstack-protector" else - CXXFLAGS="$CXXFLAGS -fno-stack-protector" + append_var CXXFLAGS "-fno-stack-protector" fi static_libs='' @@ -3985,7 +4354,7 @@ case $_backend in n64) # Move some libs down here, otherwise some symbols requires by libvorbis aren't found # during linking stage - LIBS="$LIBS -lc -lgcc -lnosys" + append_var LIBS "-lc -lgcc -lnosys" ;; esac @@ -4053,8 +4422,18 @@ for engine in $_engines; do fi done -# Prepare the information to be shown +# Sort engines to place our headline engine at start... +# No technical reason, just historical convention +headline_engine=scumm +_sorted_engines="${headline_engine}" for engine in $_engines; do + 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 if test "`get_engine_sub $engine`" = "no" ; then # It's a main engine prepare_engine_build_strings $engine @@ -4149,6 +4528,7 @@ $_def_64bit_type_unsigned #else $_def_64bit_type_unsigned #endif +#define HAVE_INT64 EOF fi @@ -4174,9 +4554,11 @@ WINDRES := $_windres WINDRESFLAGS := $WINDRESFLAGS STAGINGPATH=$_stagingpath WIN32PATH=$_win32path -AOS4PATH=$_aos4path +AMIGAOSPATH=$_amigaospath STATICLIBPATH=$_staticlibpath +ABI := $ABI + BACKEND := $_backend MODULES += $MODULES MODULE_DIRS += $MODULE_DIRS @@ -4212,6 +4594,7 @@ SAVED_CXXFLAGS := $SAVED_CXXFLAGS SAVED_CPPFLAGS := $SAVED_CPPFLAGS SAVED_ASFLAGS := $SAVED_ASFLAGS SAVED_WINDRESFLAGS := $SAVED_WINDRESFLAGS +SAVED_SDL_CONFIG := $SAVED_SDL_CONFIG EOF # @@ -4236,3 +4619,59 @@ include \$(srcdir)/Makefile EOF fi + +# 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 |