# $Id$ # This file is part of OpenTTD. # OpenTTD 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, version 2. # OpenTTD 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 OpenTTD. If not, see . log() { if [ $1 = "1" ]; then shift echo "$@" else shift fi echo "$@" >> $config_log } set_default() { ignore_extra_parameters="0" # We set all kinds of defaults for params. Later on the user can override # most of them; but if they don't, this default is used. build="" host="" cc_build="" cc_host="" cxx_build="" cxx_host="" windres="" strip="" lipo="" awk="awk" pkg_config="pkg-config" os="DETECT" endian="AUTO" cpu_type="DETECT" config_log="config.log" prefix_dir="/usr/local" binary_dir="games" data_dir="share/games/openttd" doc_dir="1" icon_dir="share/pixmaps" icon_theme_dir="1" personal_dir="1" shared_dir="1" install_dir="/" man_dir="1" menu_dir="1" menu_group="Game;" menu_name="OpenTTD" binary_name="openttd" enable_debug="0" enable_desync_debug="0" enable_profiling="0" enable_lto="0" enable_dedicated="0" enable_network="1" enable_static="1" enable_translator="0" enable_unicode="1" enable_console="1"; enable_assert="1" enable_strip="0" enable_universal="0" enable_osx_g5="0" enable_cocoa_quartz="1" enable_cocoa_quickdraw="1" with_osx_sysroot="1" with_application_bundle="1" with_menu_entry="1" with_allegro="1" with_sdl="1" with_cocoa="1" with_zlib="1" with_lzma="1" with_lzo2="1" with_xdg_basedir="1" with_png="1" enable_builtin_depend="1" with_makedepend="0" with_direct_music="1" with_sort="1" with_iconv="1" with_midi="" with_midi_arg="" with_libtimidity="1" with_freetype="1" with_fontconfig="1" with_icu_layout="1" with_icu_sort="1" static_icu="0" with_psp_config="1" with_threads="1" with_distcc="1" with_ccache="1" with_nforenum="1" with_grfcodec="1" with_sse="1" save_params_array=" build host cc_build cc_host cxx_build cxx_host windres strip lipo awk pkg_config os endian cpu_type config_log prefix_dir binary_dir data_dir doc_dir icon_dir icon_theme_dir man_dir menu_dir personal_dir shared_dir install_dir menu_group menu_name binary_name enable_debug enable_desync_debug enable_profiling enable_lto enable_dedicated enable_network enable_static enable_translator enable_unicode enable_console enable_assert enable_strip enable_universal enable_osx_g5 enable_cocoa_quartz enable_cocoa_quickdraw with_osx_sysroot with_application_bundle with_allegro with_sdl with_cocoa with_zlib with_lzma with_lzo2 with_xdg_basedir with_png enable_builtin_depend with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_libtimidity with_freetype with_fontconfig with_icu_layout with_icu_sort static_icu with_psp_config with_threads with_distcc with_ccache with_grfcodec with_nforenum with_sse CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD" } detect_params() { # Walk over all params from the user and override any default settings if # needed. This also handles any invalid option. for p in "$@"; do if [ -n "$prev_p" ]; then eval "$prev_p=\$p" prev_p= continue fi optarg=`expr "x$p" : 'x[^=]*=\(.*\)'` case "$p" in --help | -h | -\?) showhelp; exit 0;; --config-log) prev_p="config_log";; --config-log=*) config_log="$optarg";; --build) prev_p="build";; --build=*) build="$optarg";; --host) prev_p="host";; --host=*) host="$optarg";; --os) prev_p="os";; --os=*) os="$optarg";; --cpu-type) prev_p="cpu_type";; --cpu-type=*) cpu_type="$optarg";; --cc-build) prev_p="cc_build";; --cc-build=*) cc_build="$optarg";; --cc-host) prev_p="cc_host";; --cc-host=*) cc_host="$optarg";; --cxx-build) prev_p="cxx_build";; --cxx-build=*) cxx_build="$optarg";; --cxx-host) prev_p="cxx_host";; --cxx-host=*) cxx_host="$optarg";; --windres) prev_p="windres";; --windres=*) windres="$optarg";; --awk) prev_p="awk";; --awk=*) awk="$optarg";; --pkg-config) prev_p="pkg_config";; --pkg-config=*) pkg_config="$optarg";; --strip) prev_p="strip";; --strip=*) strip="$optarg";; --lipo) prev_p="lipo";; --lipo=*) lipo="$optarg";; --endian) prev_p="endian";; --endian=*) endian="$optarg";; # Alias --prefix with --prefix-dir, for compatibility with GNU autotools --prefix-dir | --prefix) prev_p="prefix_dir";; --prefix-dir=* | --prefix=*) prefix_dir="$optarg";; --binary-dir) prev_p="binary_dir";; --binary-dir=*) binary_dir="$optarg";; --data-dir) prev_p="data_dir";; --data-dir=*) data_dir="$optarg";; --doc-dir) prev_p="doc_dir";; --doc-dir=*) doc_dir="$optarg";; --icon-dir) prev_p="icon_dir";; --icon-dir=*) icon_dir="$optarg";; --icon-theme-dir) prev_p="icon_theme_dir";; --icon-theme-dir=*) icon_theme_dir="$optarg";; --without-icon-theme) icon_theme_dir="";; --menu-dir) prev_p="menu_dir";; --menu-dir=*) menu_dir="$optarg";; --without-menu-entry) menu_dir="";; --menu-name) prev_p="menu_name";; --menu-name=*) menu_name="$optarg";; --binary-name) prev_p="binary_name";; --binary-name=*) binary_name="$optarg";; --man-dir) prev_p="man_dir";; --man-dir=*) man_dir="$optarg";; --personal-dir) prev_p="personal_dir";; --personal-dir=*) personal_dir="$optarg";; --without-personal-dir) personal_dir="";; --shared-dir) prev_p="shared_dir";; --shared-dir=*) shared_dir="$optarg";; --without-shared-dir) shared_dir="";; --install-dir) prev_p="install_dir";; --install-dir=*) install_dir="$optarg";; --menu-group) prev_p="menu_group";; --menu-group=*) menu_group="$optarg";; --enable-debug) enable_debug="1";; --enable-debug=*) enable_debug="$optarg";; --enable-desync-debug) enable_desync_debug="1";; --enable-desync-debug=*) enable_desync_debug="$optarg";; --enable-profiling) enable_profiling="1";; --enable-profiling=*) enable_profiling="$optarg";; --enable-lto) enable_lto="1";; --enable-lto=*) enable_lto="$optarg";; --enable-ipo) enable_lto="1";; --enable-ipo=*) enable_lto="$optarg";; --enable-dedicated) enable_dedicated="1";; --enable-dedicated=*) enable_dedicated="$optarg";; --enable-network) enable_network="2";; --enable-network=*) enable_network="$optarg";; --disable-network) enable_network="0";; --disable-static) enable_static="0";; --enable-static) enable_static="2";; --enable-static=*) enable_static="$optarg";; --disable-translator) enable_translator="0";; --enable-translator) enable_translator="2";; --enable-translator=*) enable_translator="$optarg";; --disable-assert) enable_assert="0";; --enable-assert) enable_assert="2";; --enable-assert=*) enable_assert="$optarg";; --disable-strip) enable_strip="0";; --enable-strip) enable_strip="2";; --enable-strip=*) enable_strip="$optarg";; --disable-universal) enable_universal="0";; --enable-universal) enable_universal="i386 ppc";; --enable-universal=*) enable_universal="$optarg";; --disable-osx-g5) enable_osx_g5="0";; --enable-osx-g5) enable_osx_g5="2";; --enable-osx-g5=*) enable_osx_g5="$optarg";; --disable-unicode) enable_unicode="0";; --enable-unicode) enable_unicode="2";; --enable-unicode=*) enable_unicode="$optarg";; --disable-console) enable_console="0";; --enable-console) enable_console="2";; --enable-console=*) enable_console="$optarg";; --disable-cocoa-quartz) enable_cocoa_quartz="0";; --enable-cocoa-quartz) enable_cocoa_quartz="2";; --enable-cocoa-quartz=*) enable_cocoa_quartz="$optarg";; --disable-cocoa-quickdraw) enable_cocoa_quickdraw="0";; --enable-cocoa-quickdraw) enable_cocoa_quickdraw="2";; --enable-cocoa-quickdraw=*) enable_cocoa_quickdraw="$optarg";; --with-allegro) with_allegro="2";; --without-allegro) with_allegro="0";; --with-allegro=*) with_allegro="$optarg";; --with-sdl) with_sdl="2";; --without-sdl) with_sdl="0";; --with-sdl=*) with_sdl="$optarg";; --with-cocoa) with_cocoa="2";; --without-cocoa) with_cocoa="0";; --with-cocoa=*) with_cocoa="$optarg";; --with-zlib) with_zlib="2";; --without-zlib) with_zlib="0";; --with-zlib=*) with_zlib="$optarg";; --with-lzma) with_lzma="2";; --without-lzma) with_lzma="0";; --with-lzma=*) with_lzma="$optarg";; --with-liblzma) with_lzma="2";; --without-liblzma) with_lzma="0";; --with-liblzma=*) with_lzma="$optarg";; --with-lzo2) with_lzo2="2";; --without-lzo2) with_lzo2="0";; --with-lzo2=*) with_lzo2="$optarg";; --with-liblzo2) with_lzo2="2";; --without-liblzo2) with_lzo2="0";; --with-liblzo2=*) with_lzo2="$optarg";; --with-xdg-basedir) with_xdg_basedir="2";; --without-xdg-basedir) with_xdg_basedir="0";; --with-xdg-basedir=*) with_xdg_basedir="$optarg";; --with-libxdg-basedir) with_xdg_basedir="2";; --without-libxdg-basedir) with_xdg_basedir="0";; --with-libxdg-basedir=*) with_xdg_basedir="$optarg";; --with-png) with_png="2";; --without-png) with_png="0";; --with-png=*) with_png="$optarg";; --with-libpng) with_png="2";; --without-libpng) with_png="0";; --with-libpng=*) with_png="$optarg";; --with-libtimidity) with_libtimidity="2";; --without-libtimidity) with_libtimidity="0";; --with-libtimidity=*) with_libtimidity="$optarg";; --with-freetype) with_freetype="2";; --without-freetype) with_freetype="0";; --with-freetype=*) with_freetype="$optarg";; --with-libfreetype) with_freetype="2";; --without-libfreetype) with_freetype="0";; --with-libfreetype=*) with_freetype="$optarg";; --with-fontconfig) with_fontconfig="2";; --without-fontconfig) with_fontconfig="0";; --with-fontconfig=*) with_fontconfig="$optarg";; --with-libfontconfig) with_fontconfig="2";; --without-libfontconfig) with_fontconfig="0";; --with-libfontconfig=*) with_fontconfig="$optarg";; --with-icu) with_icu_layout="2";with_icu_sort="2";; --without-icu) with_icu_layout="0";with_icu_sort="0";; --with-icu=*) with_icu_layout="$optarg";with_icu_sort="$optarg";; --with-libicu) with_icu_layout="2";with_icu_sort="2";; --without-libicu) with_icu_layout="0";with_icu_sort="0";; --with-libicu=*) with_icu_layout="$optarg";with_icu_sort="$optarg";; --with-icu-layout) with_icu_layout="2";; --without-icu-layout) with_icu_layout="0";; --with-icu-layout=*) with_icu_layout="$optarg";; --with-icu-sort) with_icu_sort="2";; --without-icu-sort) with_icu_sort="0";; --with-icu-sort=*) with_icu_sort="$optarg";; --static-icu) static_icu="1";; --static-icu=*) static_icu="$optarg";; --static-libicu) static_icu="1";; --static-libicu=*) static_icu="$optarg";; --with-psp-config) with_psp_config="2";; --without-psp-config) with_psp_config="0";; --with-psp-config=*) with_psp_config="$optarg";; --disable-builtin-depend) enable_builtin_depend="0";; --enable-builtin-depend) enable_builtin_depend="2";; --enable-builtin-depend=*) enable_builtin_depend="$optarg";; --with-makedepend) with_makedepend="2";; --without-makedepend) with_makedepend="0";; --with-makedepend=*) with_makedepend="$optarg";; --with-direct-music) with_direct_music="2";; --without-direct-music) with_direct_music="0";; --with-direct-music=*) with_direct_music="$optarg";; --with-sort) with_sort="2";; --without-sort) with_sort="0";; --with-sort=*) with_sort="$optarg";; --with-iconv) with_iconv="2";; --without-iconv) with_iconv="0";; --with-iconv=*) with_iconv="$optarg";; --with-midi=*) with_midi="$optarg";; --with-midi-arg=*) with_midi_arg="$optarg";; --without-distcc) with_distcc="0";; --with-distcc) with_distcc="2";; --with-distcc=*) with_distcc="$optarg";; --without-ccache) with_ccache="0";; --with-ccache) with_ccache="2";; --with-ccache=*) with_ccache="$optarg";; --without-nforenum) with_nforenum="0";; --with-nforenum) with_nforenum="2";; --with-nforenum=*) with_nforenum="$optarg";; --without-grfcodec) with_grfcodec="0";; --with-grfcodec) with_grfcodec="2";; --with-grfcodec=*) with_grfcodec="$optarg";; --without-osx-sysroot) with_osx_sysroot="0";; --with-osx-sysroot) with_osx_sysroot="2";; --with-osx-sysroot=*) with_osx_sysroot="$optarg";; --without-application-bundle) with_application_bundle="0";; --with-application-bundle) with_application_bundle="1";; --with-application-bundle=*) with_application_bundle="$optarg";; --without-threads) with_threads="0";; --with-threads) with_threads="1";; --with-threads=*) with_threads="$optarg";; --without-sse) with_sse="0";; --with-sse) with_sse="1";; --with-sse=*) with_sse="$optarg";; CC=* | --CC=*) CC="$optarg";; CXX=* | --CXX=*) CXX="$optarg";; CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";; CXXFLAGS=* | --CXXFLAGS=*) CXXFLAGS="$optarg";; LDFLAGS=* | --LDFLAGS=*) LDFLAGS="$optarg";; CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*) CFLAGS_BUILD="$optarg";; CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";; LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*) LDFLAGS_BUILD="$optarg";; --ignore-extra-parameters) ignore_extra_parameters="1";; --* | -*) if [ "$ignore_extra_parameters" = "0" ]; then log 1 "Unknown option $p" exit 1 else log 1 "Unknown option $p ignored" fi ;; esac done if [ -n "$prev_p" ]; then log 1 "configure: error: missing argument to --$prev_p" exit 1 fi # Clean the logfile echo "" > $config_log log 2 "Invocation: $0 $*" } save_params() { # Here we save all params, so we can later on do an exact redo of this # configuration, without having the user to re-input stuff echo "Running configure with following options:" >> $config_log echo "" >> $config_log configure="$CONFIGURE_EXECUTABLE --ignore-extra-parameters" for p in $save_params_array; do eval "v=\"\$$p\"" p=`echo "$p" | sed 's@_@-@g;s@\n@@g;s@ @\\ @g'` # Only save those params that aren't empty configure="$configure --$p=\"$v\"" done echo "$configure" >> $config_log echo "$configure" > config.cache echo "" >> $config_log } check_params() { # Some params want to be in full uppercase, else they might not work as # expected.. fix that here endian=`echo $endian | tr '[a-z]' '[A-Z]'` os=`echo $os | tr '[a-z]' '[A-Z]'` cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'` # Check if all params have valid values # Endian only allows AUTO, LE and, BE if [ -z "`echo $endian | egrep '^(AUTO|LE|BE|PREPROCESSOR)$'`" ]; then log 1 "configure: error: invalid option --endian=$endian" log 1 " Available options are: --endian=[AUTO|LE|BE]" exit 1 fi if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then log 1 "configure: error: invalid option --endian=$endian" log 1 " PREPROCESSOR is only available for OSX" exit 1 fi # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then log 1 "configure: error: invalid option --os=$os" log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]" exit 1 fi # cpu_type can be either 32 or 64 if [ -z "`echo $cpu_type | egrep '^(32|64|DETECT)$'`" ]; then log 1 "configure: error: invalid option --cpu-type=$cpu_type" log 1 " Available options are: --cpu-type[=DETECT|32|64]" exit 1 fi # enable_debug should be between 0 and 4 if [ -z "`echo $enable_debug | egrep '^[0123]$'`" ]; then log 1 "configure: error: invalid option --enable-debug=$enable_debug" log 1 " Available options are: --enable-debug[=0123]" exit 1 fi # enable_desync_debug should be between 0 and 3 if [ -z "`echo $enable_desync_debug | egrep '^[012]$'`" ]; then log 1 "configure: error: invalid option --enable-desync-debug=$enable_desync_debug" log 1 " Available options are: --enable-desync-debug[=012]" exit 1 fi detect_awk detect_os check_build check_host # Check for universal builds; they only make sense for OSX, so fail if enabled for another OS if [ "$enable_universal" = "0" ]; then log 1 "checking universal build... no" else if [ "$os" != "OSX" ]; then log 1 "configure: error: --enable-universal only works on OSX" exit 1 fi log 1 "checking universal build... yes, for: $enable_universal" fi # Already detected by check_build log 1 "checking build cc... $cc_build" log 1 "checking host cc... $cc_host" check_cxx_build check_cxx_host check_windres if [ "$enable_strip" != "0" ]; then check_strip else log 1 "checking strip... disabled" fi check_lipo if [ "$enable_builtin_depend" != "0" ]; then log 1 "checking builtin depend... yes" makedepend="\$(SRC_OBJS_DIR)/\$(DEPEND)" else log 1 "checking builtin depend... no" fi check_makedepend detect_cputype detect_sse_capable_architecture if [ "$enable_static" = "1" ]; then if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then enable_static="2" else enable_static="0" fi fi if [ "$enable_static" != "0" ]; then log 1 "checking static... yes" if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "DOS" ]; then log 1 "WARNING: static is only known to work on Windows, DOS, MacOSX and MorphOS" log 1 "WARNING: use static at your own risk on this platform" sleep 5 fi else log 1 "checking static... no" fi if [ "$enable_unicode" = "1" ]; then if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ]; then enable_unicode="2" else enable_unicode="0" fi fi if [ "$enable_unicode" != "0" ]; then log 1 "checking unicode... yes" else log 1 "checking unicode... no" fi # Show what we configured if [ "$enable_debug" = "0" ]; then log 1 "using debug level... no" elif [ "$enable_profiling" != "0" ]; then log 1 "using debug level... profiling (debug level $enable_debug)" else log 1 "using debug level... level $enable_debug" fi if [ "$enable_desync_debug" = "0" ]; then log 1 "using desync debug level... no" else log 1 "using desync debug level... level $enable_desync_debug" log 1 "WARNING: desync debug functions slow down the game considerably." log 1 "WARNING: use only when you are instructed to do so" log 1 " or when you know what you are doing." sleep 5 fi if [ "$enable_lto" != "0" ]; then # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}' has_lto=`($cxx_build -dumpspecs 2>&1 | grep '\%{flto') || ($cxx_build -help ipo 2>&1 | grep '\-ipo')` if [ -n "$has_lto" ]; then log 1 "using link time optimization... yes" else enable_lto="0" log 1 "using link time optimization... no" log 1 "WARNING: you selected link time optimization but it is not found." sleep 5 fi else log 1 "using link time optimization... no" fi if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then if [ "$with_osx_sysroot" = "1" ]; then with_osx_sysroot="0" log 1 "checking OSX sysroot... not OSX, skipping" else log 1 "configure: error: --with-osx-sysroot only works if OSX is the target" exit 1 fi fi if [ "$with_osx_sysroot" != "0" ]; then if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then # Sysroot manually specified? Check for usability log 1 "checking OSX sysroot... $with_osx_sysroot" if ! check_osx_sdk "$with_osx_sysroot"; then log 1 "Passed sysroot not found/not functional" exit 1 fi else # If autodetect and no universal, use system default if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then log 1 "checking OSX sysroot... no (use system default)" else log 1 "checking OSX sysroot... automatically" detect_osx_sdk fi fi if [ -n "$osx_sdk_path" ]; then if [ "$enable_universal" != "0" ]; then if [ -z "$osx_sdk_104_path" ]; then log 1 "WARNING: Could not find a usable 10.4u SDK, the resulting" log 1 "WARNING: binary will only run on OSX 10.5 or later" osx_sdk_104_path="$osx_sdk_path" fi OSX_SYSROOT="-isysroot $osx_sdk_104_path" OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_104_path" else OSX_SYSROOT="-isysroot $osx_sdk_path" OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_path" fi fi else if [ "$os" = "OSX" ]; then log 1 "checking OSX sysroot... no (use system default)" fi fi detect_allegro detect_sdl detect_cocoa if [ "$enable_dedicated" != "0" ]; then log 1 "checking GDI video driver... dedicated server, skipping" log 1 "checking dedicated... found" if [ "$enable_network" = "0" ]; then log 1 "configure: error: building a dedicated server without network support is pointless" exit 1 fi else if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then log 1 "checking GDI video driver... found" else log 1 "checking GDI video driver... not Windows, skipping" fi if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then log 1 "configure: error: no video driver development files found" log 1 " If you want a dedicated server use --enable-dedicated as parameter" exit 1 else log 1 "checking dedicated... not selected" fi fi if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then log 1 "checking console application... not Windows, skipping" elif [ "$enable_console" = "1" ] && [ "$enable_dedicated" != "0" ]; then log 1 "checking console application... dedicated server, enabled" enable_console="2" elif [ "$enable_console" = "1" ]; then log 1 "checking console application... disabled (only used when forced)" enable_console="0" elif [ "$enable_console" = "0" ]; then log 1 "checking console application... disabled" else log 1 "checking console application... enabled" fi if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then log 1 "checking network... DOS, skipping" enable_network=0 elif [ "$enable_network" != "0" ]; then log 1 "checking network... found" else log 1 "checking network... disabled" fi log 1 "checking squirrel... found" SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include" if [ "$enable_translator" != "0" ]; then log 1 "checking translator... debug" # -t shows TODO items, normally they are muted strgen_flags="-t" else log 1 "checking translator... no" strgen_flags="" fi if [ "$enable_assert" != "0" ]; then log 1 "checking assert... enabled" else log 1 "checking assert... disabled" fi pre_detect_with_zlib=$with_zlib detect_zlib if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then log 1 "WARNING: zlib was not detected or disabled" log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features" log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps," log 1 "WARNING: using PNG, or using fonts, ...) will be disabled." if [ "$pre_detect_with_zlib" = "0" ]; then log 1 "WARNING: We strongly suggest you to install zlib." else log 1 "configure: error: no zlib detected" log 1 " If you want to compile without zlib use --without-zlib as parameter" exit fi fi pre_detect_with_lzma=$with_lzma detect_lzma if [ "$with_lzma" = "0" ] || [ -z "$lzma_config" ]; then log 1 "WARNING: lzma was not detected or disabled" log 1 "WARNING: OpenTTD doesn't require lzma, but it does mean that many features" log 1 "WARNING: (like loading most savegames/scenarios and joining most servers)" log 1 "WARNING: will be disabled." if [ "$pre_detect_with_lzma" = "0" ]; then log 1 "WARNING: We strongly suggest you to install liblzma." log 1 "configure: error: no liblzma detected" else log 1 " If you want to compile without lzma use --without-lzma as parameter" exit fi fi pre_detect_with_lzo2=$with_lzo2 detect_lzo2 if [ "$with_lzo2" = "0" ] || [ -z "$lzo2" ]; then log 1 "WARNING: liblzo2 was not detected or disabled" log 1 "WARNING: OpenTTD doesn't require liblzo2, but it does mean that" log 1 "WARNING: loading old savegames/scenarios will be disabled." if [ "$pre_detect_with_lzo2" = "0" ]; then log 1 "WARNING: We strongly suggest you to install liblzo2." else log 1 "configure: error: no liblzo2 detected" log 1 " If you want to compile without liblzo2 use --without-liblzo2 as parameter" exit fi fi detect_xdg_basedir detect_png detect_freetype detect_fontconfig detect_icu_layout detect_icu_sort detect_pspconfig detect_libtimidity if [ "$with_direct_music" != "0" ]; then if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then if [ "$with_direct_music" != "1" ]; then log 1 "configure: error: direct-music is only supported on Win32 targets" exit 1 fi with_direct_music="0" log 1 "checking direct-music... not Windows, skipping" else check_direct_music fi fi detect_sort if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then endian="PREPROCESSOR" fi log 1 "checking endianness... $endian" # Suppress language errors when there is a version defined, indicating a release # It just isn't pretty if any release produces warnings in the languages. if [ -f "$ROOT_DIR/version" ]; then lang_suppress="yes" log 1 "suppress language errors... yes" else lang_suppress="" log 1 "suppress language errors... no" fi if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then if [ "$os" = "MORPHOS" ]; then strip_arg="--strip-all --strip-unneeded --remove-section .comment" elif [ "$os" = "OSX" ]; then strip_arg="" elif [ "$os" = "OS2" ]; then strip_arg="" # OS2 uses strip via gcc, because it needs to be feed to emxbind LDFLAGS="$LDFLAGS -s" elif [ "$os" = "SUNOS" ]; then # The GNU strip does know -s, the non-GNU doesn't # So try to detect it (in a bit of an ugly way) strip_arg="`$strip -s strip.test 2>/dev/null && echo \"-s\"`" else strip_arg="-s" fi log 1 "checking stripping... $strip $strip_arg" else strip="" log 1 "checking stripping... skipped" fi if [ "$with_distcc" = "0" ]; then log 1 "checking distcc... no" elif [ "$with_distcc" = "1" ]; then with_distcc="0" log 1 "checking distcc... no (only used when forced)" elif [ "$with_distcc" = "2" ]; then distcc="distcc" else distcc="$with_distcc" fi if [ "$with_distcc" != "0" ]; then res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`" if [ "$res" != "distcc" ]; then distcc="" log 1 "checking distcc... no" if [ "$with_distcc" = "2" ]; then log 1 "configure: error: no distcc detected, but was forced to be used" exit 1 fi if [ "$with_distcc" != "1" ]; then log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me" exit 1 fi fi log 1 "checking distcc... $distcc" fi if [ "$with_ccache" = "0" ]; then log 1 "checking ccache... no" elif [ "$with_ccache" = "1" ]; then with_ccache="0" log 1 "checking ccache... no (only used when forced)" elif [ "$with_ccache" = "2" ]; then ccache="ccache" else ccache="$with_ccache" fi if [ "$with_ccache" != "0" ]; then res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`" if [ "$res" != "ccache" ]; then ccache="" log 1 "checking ccache... no" if [ "$with_ccache" = "2" ]; then log 1 "configure: error: no ccache detected, but was forced to be used" exit 1 fi if [ "$with_ccache" != "1" ]; then log 1 "configure: error: '$with_ccache' doesn't seem a ccache to me" exit 1 fi fi log 1 "checking ccache... $ccache" fi detect_grfcodec detect_nforenum if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum" nforenum="" fi if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec" grfcodec="" fi if [ "$os" = "DOS" ]; then with_threads="0" fi if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then if [ "$with_application_bundle" = "1" ]; then with_application_bundle="0" log 1 "checking OSX application bundle... not OSX, skipping" else log 1 "configure: error: --with-application-bundle only works if OSX is the target" exit 1 fi fi if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then OSXAPP="OpenTTD.app" else OSXAPP="" fi if [ "$os" = "OSX" ]; then # Test on ppc970 (G5) - we can optimize there if [ "$enable_osx_g5" != "0" ]; then log 1 "detecting ppc970 (G5)... yes (forced)" else # First, are we a real OSX system, else we can't detect it native=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | grep darwin` # If $host doesn't match $build , we are cross-compiling if [ -n "$native" ] && [ "$build" = "$host" ]; then $cxx_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector res=`./G5_detector` rm -f G5_detector if [ -n "$res" ]; then # This is G5, add flags for it enable_osx_g5="2" log 1 "detecting ppc970 (G5)... yes" else enable_osx_g5="0" log 1 "detecting ppc970 (G5)... no" fi else enable_osx_g5="0" log 1 "detecting ppc970 (G5)... no (cross-compiling)" fi fi else if [ "$enable_osx_g5" != "0" ]; then log 1 "configure: error: ppc970 (OSX G5) selected, but not compiling for OSX" log 1 "configure: error: either select OSX as OS, or deselect ppc970" exit 1 fi fi if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then log 1 "checking revision... svn detection" elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && [ -n "`LC_ALL=C svn info $ROOT_DIR/.. | grep '^URL:.*tags$'`" ]; then # subversion changed its behaviour; now not all folders have a .svn folder, # but only the root folder. Since making tags requires a (sparse) checkout # of the tags folder, the folder of the tag does not have a .svn folder # anymore and this fails to detect the subversion repository checkout. log 1 "checking revision... svn detection (tag)" elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then log 1 "checking revision... git detection" elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then log 1 "checking revision... hg detection" elif [ -f "$ROOT_DIR/.ottdrev" ]; then log 1 "checking revision... source tarball" else log 1 "checking revision... no detection" log 1 "WARNING: there is no means to determine the version." log 1 "WARNING: please use a subversion, mercurial, or git checkout of OpenTTD." log 1 "WARNING: you can only join game servers that have been compiled without" log 1 "WARNING: version detection." log 1 "WARNING: there is a great chance you desync." log 1 "WARNING: USE WITH CAUTION!" sleep 5 fi if [ "$doc_dir" = "1" ]; then if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then doc_dir="share/doc/openttd" else doc_dir="$data_dir/docs" fi else doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$icon_theme_dir" = "1" ]; then if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then icon_theme_dir="share/icons/hicolor" else icon_theme_dir="" fi else icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$personal_dir" = "1" ]; then if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then personal_dir="OpenTTD" elif [ "$os" = "OSX" ]; then personal_dir="Documents/OpenTTD" else personal_dir=".openttd" fi else personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$shared_dir" = "1" ]; then # we are using default values if [ "$os" = "OSX" ]; then shared_dir="/Library/Application\\\\ Support/OpenTTD" else shared_dir="" fi else shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$man_dir" = "1" ]; then # add manpage on UNIX systems if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then man_dir="share/man/man6" else man_dir="" fi else man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi if [ "$menu_dir" = "1" ]; then # add a freedesktop menu item only for some UNIX systems if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then menu_dir="share/applications" else menu_dir="" fi else menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`" fi detect_iconv if [ -n "$personal_dir" ] then log 1 "personal home directory... $personal_dir" else log 1 "personal home directory... none" fi if [ -n "$shared_dir" ] then log 1 "shared data directory... $shared_dir" else log 1 "shared data directory... none" fi if [ -n "$install_dir" ] then log 1 "installation directory... $install_dir" else log 1 "installation directory... none" fi if [ -n "$icon_theme_dir" ] then log 1 "icon theme directory... $icon_theme_dir" else log 1 "icon theme directory... none" fi if [ -n "$man_dir" ] then log 1 "manual page directory... $man_dir" else log 1 "manual page directory... none" fi if [ -n "$menu_dir" ] then log 1 "menu item directory... $menu_dir" else log 1 "menu item directory... none" fi } make_compiler_cflags() { # Params: # $1 - compiler # $2 - name of the cflags variable # $3 - name of the cxxflags variable # $4 - name of the ldflags variable # $5 - name of the features variable eval eval "flags=\\\$$2" eval eval "cxxflags=\\\$$3" eval eval "ldflags=\\\$$4" eval eval "features=\\\$$5" if [ `basename $1 | cut -c 1-3` = "icc" ]; then # Enable some things only for certain ICC versions cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g` flags="$flags -rdynamic" ldflags="$ldflags -rdynamic" if [ -z "$first_time_icc_check" ]; then first_time_icc_check=no if [ $cc_version -lt 90 ]; then log 1 "WARNING: you seem to be using a very old version of ICC" log 1 "WARNING: OpenTTD hasn't been tested with this version" sleep 5 elif [ $cc_version -lt 120 ]; then log 1 "WARNING: you seem to be using an unsupported ICC version" log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD" sleep 5 fi fi flags="$flags -Wall" # remark #111: statement is unreachable flags="$flags -wd111" # remark #181: argument is incompatible with corresponding format string conversion # ICC is very picky about signedness of operands, warnings provided by GCC are enough flags="$flags -wd181" # remark #271: trailing comma is nonstandard flags="$flags -wd271" # remark #280: selector expression is constant flags="$flags -wd280" # remark #304: access control not specified ("public" by default) flags="$flags -wd304" # remark #383: value copied to temporary, reference to temporary used flags="$flags -wd383" # remark #444: destructor for base class ... is not virtual flags="$flags -wd444" # remark #593: variable ... was set but never used flags="$flags -wd593" # warning #654: overloaded virtual function ... is only partially overridden in class ... flags="$flags -wd654" # remark #810: conversion from ... to ... may lose significant bits flags="$flags -wd810" # remark #869: parameter ... was never referenced flags="$flags -wd869" # warning #873: function ... ::operator new ... has no corresponding operator delete ... flags="$flags -wd873" # remark #981: operands are evaluated in unspecified order flags="$flags -wd981" # remark #1418: external function definition with no prior declaration flags="$flags -wd1418" # remark #1419: external declaration in primary source file flags="$flags -wd1419" # remark #1572: floating-point equality and inequality flags="$flags -wd1572" # remark #1599: declaration hides variable/parameter ... flags="$flags -wd1599" # remark #1720: function ... ::operator new ... has no corresponding member operator delete ... flags="$flags -wd1720" if [ $cc_version -lt 110 ]; then # warns about system headers with recent glibc: # warning #1292: attribute "__nonnull__" ignored flags="$flags -wd1292" fi if [ $cc_version -ge 100 ]; then # warning #1899: multicharacter character literal (potential portability problem) flags="$flags -wd1899" # vec report defaults to telling where it did loop vectorisation, which is not very important flags="$flags -vec-report=0 " fi if [ $cc_version -ge 110 ]; then # remark #2259: non-pointer conversion from ... to ... may lose significant bits flags="$flags -wd2259" # Use c++0x mode so static_assert() is available cxxflags="$cxxflags -std=c++11" fi if [ $cc_version -lt 140 ]; then log 1 "configure: error: ICC version is too old: `$1 -dumpversion`, minumum: 14.0" exit 1 fi if [ "$enable_lto" != "0" ]; then has_ipo=`$1 -help ipo | grep '\-ipo'` if [ -n "$has_ipo" ]; then # Use IPO (only if we see IPO exists and is requested) flags="$flags -ipo" features="$features lto" fi fi elif [ `basename $1 | grep 'clang'` ]; then # Enable some things only for certain clang versions cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`" # aliasing rules are not held in openttd code flags="$flags -fno-strict-aliasing" # -W alone doesn't enable all warnings enabled by -Wall; on the other hand, # -Weverything enables too many useless warnings that can't be disabled (as of 3.0) flags="$flags -Wall -W -Wextra" # warning: unused parameter '...' flags="$flags -Wno-unused-parameter" # warning: expression result unused flags="$flags -Wno-unused-value" # warning: multi-character character constant flags="$flags -Wno-multichar" # warning: explicitly assigning a variable of type '...' to itself # it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro flags="$flags -Wno-self-assign" if [ "$cc_version" -lt "30" ]; then # warning: equality comparison with extraneous parentheses flags="$flags -Wno-parentheses" # warning: operands of ? are integers of different signs: 'unsigned int' and 'int' flags="$flags -Wno-sign-compare" fi if [ "$cc_version" -ge "30" ]; then # warning: equality comparison with extraneous parentheses # this warning could be useful, but it warns about code in squirrel flags="$flags -Wno-parentheses-equality" fi if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then # ccache and distcc run separate preprocess and compile passes, # both are fed with the same CFLAGS. Unfortunately, clang # complains about -I when compiling preprocessed files: # "clang: warning: argument unused during compilation: '-I /usr/include'" flags="$flags -Qunused-arguments" fi if [ "$enable_assert" -eq "0" ]; then # do not warn about unused variables when building without asserts flags="$flags -Wno-unused-variable" fi if [ "$cc_version" -ge "33" ]; then # clang completed C++11 support in version 3.3 flags="$flags -std=c++11" else log 1 "configure: error: clang version is too old: `$1 -v 2>&1 | head -n 1`, minumum: 3.3" exit 1 fi # rdynamic is used to get useful stack traces from crash reports. ldflags="$ldflags -rdynamic" else # Enable some things only for certain GCC versions # cc_version = major_version * 100 + minor_version # For example: "3.3" -> 303, "4.9.2" -> 409, "6" -> 600, "23.5" -> 2305 cc_version=`$1 -dumpversion | $awk -F . '{printf "%d%02d", $1, $2}'` if [ $cc_version -lt 303 ]; then log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support" exit 1 fi flags="$flags -Wall -Wno-multichar -Wsign-compare -Wundef" flags="$flags -Wwrite-strings -Wpointer-arith" flags="$flags -W -Wno-unused-parameter -Wredundant-decls" flags="$flags -Wformat=2 -Wformat-security" if [ $enable_assert -eq 0 ]; then # Do not warn about unused variables when building without asserts flags="$flags -Wno-unused-variable" if [ $cc_version -ge 406 ]; then # GCC 4.6 gives more warnings, disable them too flags="$flags -Wno-unused-but-set-variable" flags="$flags -Wno-unused-but-set-parameter" fi fi if [ $cc_version -ge 304 ]; then # Warn when a variable is used to initialise itself: # int a = a; flags="$flags -Winit-self" fi if [ $cc_version -ge 400 ]; then # GCC 4.0+ complains about that we break strict-aliasing. # On most places we don't see how to fix it, and it doesn't # break anything. So disable strict-aliasing to make the # compiler all happy. flags="$flags -fno-strict-aliasing" # Warn about casting-out 'const' with regular C-style cast. # The preferred way is const_cast<>() which doesn't warn. flags="$flags -Wcast-qual" fi if [ $cc_version -ge 402 ]; then # GCC 4.2+ automatically assumes that signed overflows do # not occur in signed arithmetics, whereas we are not # sure that they will not happen. It furthermore complains # about its own optimized code in some places. flags="$flags -fno-strict-overflow" # GCC 4.2 no longer includes -Wnon-virtual-dtor in -Wall. # Enable it in order to be consistent with older GCC versions. flags="$flags -Wnon-virtual-dtor" fi if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then # Use gnu++0x mode so static_assert() is available. # Don't use c++0x, it breaks mingw (with gcc 4.4.0). cxxflags="$cxxflags -std=gnu++11" fi if [ $cc_version -eq 405 ]; then # Prevent optimisation supposing enums are in a range specified by the standard # For details, see http://gcc.gnu.org/PR43680 flags="$flags -fno-tree-vrp" fi if [ $cc_version -eq 407 ]; then # Disable -Wnarrowing which gives many warnings, such as: # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing] # They are valid according to the C++ standard, but useless. cxxflags="$cxxflags -Wno-narrowing" fi if [ $cc_version -ge 407 ]; then # Disable bogus 'attempt to free a non-heap object' warning flags="$flags -Wno-free-nonheap-object" else log 1 "configure: error: GCC version is too old: `$1 -dumpversion`, minumum: 4.7" exit 1 fi if [ $cc_version -ge 600 ]; then # -flifetime-dse=2 (default since GCC 6) doesn't play # well with our custom pool item allocator cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14" fi if [ "$enable_lto" != "0" ]; then # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}' has_lto=`$1 -dumpspecs | grep '\%{flto'` if [ -n "$has_lto" ]; then # Use LTO only if we see LTO exists and is requested if [ $cc_version -lt 406 ]; then flags="$flags -flto" else flags="$flags -flto=jobserver" fi ldflags="$ldflags -fwhole-program" features="$features lto" fi fi has_rdynamic=`$1 -dumpspecs | grep rdynamic` if [ -n "$has_rdynamic" ]; then # rdynamic is used to get useful stack traces from crash reports. flags="$flags -rdynamic" ldflags="$ldflags -rdynamic" fi fi eval "$2=\"$flags\"" eval "$3=\"$cxxflags\"" eval "$4=\"$ldflags\"" eval "$5=\"$features\"" } make_cflags_and_ldflags() { # General CFlags for BUILD CFLAGS_BUILD="$CFLAGS_BUILD" # Special CXXFlags for BUILD CXXFLAGS_BUILD="$CXXFLAGS_BUILD" # LDFLAGS for BUILD LDFLAGS_BUILD="$LDFLAGS_BUILD" # FEATURES for BUILD (lto) FEATURES_BUILD="" # General CFlags for HOST CFLAGS="$CFLAGS" # Special CXXFlags for HOST CXXFLAGS="$CXXFLAGS" # Libs to compile. In fact this is just LDFLAGS LIBS="-lstdc++" # LDFLAGS used for HOST LDFLAGS="$LDFLAGS" # FEATURES for HOST (lto) FEATURES="" make_compiler_cflags "$cc_build" "CFLAGS_BUILD" "CXXFLAGS_BUILD" "LDFLAGS_BUILD" "FEATURES_BUILD" make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES" CFLAGS="$CFLAGS -D$os" CFLAGS_BUILD="$CFLAGS_BUILD -D$os" if [ "$enable_debug" = "0" ]; then # No debug, add default stuff OBJS_SUBDIR="release" if [ "$os" = "MORPHOS" ]; then CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS" LDFLAGS="$LDFLAGS -noixemul" fi if [ "$enable_profiling" = "0" ]; then # -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible) CFLAGS="-fomit-frame-pointer $CFLAGS" fi CFLAGS="-O2 $CFLAGS" else OBJS_SUBDIR="debug" # Each debug level reduces the optimization by a bit if [ $enable_debug -ge 1 ]; then CFLAGS="$CFLAGS -g -D_DEBUG" if [ "$os" = "PSP" ]; then CFLAGS="$CFLAGS -G0" fi fi if [ $enable_debug -ge 2 ]; then CFLAGS="$CFLAGS -fno-inline" fi if [ $enable_debug -ge 3 ]; then CFLAGS="$CFLAGS -O0" else CFLAGS="$CFLAGS -O2" fi fi if [ $enable_debug -le 2 ]; then cc_host_is_gcc=`basename "$cc_host" | grep "gcc" 2>/dev/null` if [ -n "$cc_host_is_gcc" ]; then # Define only when compiling with GCC. Some GLIBC versions use GNU # extensions in a way that breaks build with at least ICC. # This requires -O1 or more, so debug level 3 (-O0) is excluded. CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2" fi cc_build_is_gcc=`basename "$cc_build" | grep "gcc" 2>/dev/null` if [ -n "$cc_build_is_gcc" ]; then # Add -O1 and fortify source to the tools needed for building, on gcc CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1" elif [ -n "`basename "$cc_build" | grep "clang" 2>/dev/null`" ]; then # Add -O1 to the tools needed for building, on clang CFLAGS_BUILD="$CFLAGS_BUILD -O1" fi fi if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization, # wrongly optimizing ^= in loops. This disables the failing optimisation. CFLAGS="$CFLAGS -fno-expensive-optimizations" fi if [ "$enable_profiling" != "0" ]; then CFLAGS="$CFLAGS -pg" LDFLAGS="$LDFLAGS -pg" fi if [ "$with_threads" = "0" ]; then CFLAGS="$CFLAGS -DNO_THREADS" fi if [ "$with_sse" = "1" ]; then CFLAGS="$CFLAGS -DWITH_SSE" fi if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then if [ "$os" = "CYGWIN" ]; then flags="$flags -mwin32" LDFLAGS="$LDFLAGS -mwin32" fi if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then if [ $cc_version -lt 406 ]; then flags="$flags -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin" fi if [ "$enable_console" != "0" ]; then LDFLAGS="$LDFLAGS -Wl,--subsystem,console" else LDFLAGS="$LDFLAGS -Wl,--subsystem,windows" fi LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32" if [ $cc_version -ge 404 ]; then LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++" fi if [ $cc_version -ge 407 ]; then CFLAGS="$CFLAGS -mno-ms-bitfields" fi fi fi if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then LIBS="$LIBS -lpthread" fi if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then LIBS="$LIBS -lc" fi if [ "$os" = "WINCE" ]; then LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup" fi if [ "$os" = "PSP" ]; then CFLAGS="$CFLAGS -I`$psp_config -p`/include" LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib" CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150" LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm" fi if [ "$os" = "MORPHOS" ]; then # -Wstrict-prototypes generates much noise because of system headers CFLAGS="$CFLAGS -Wno-strict-prototypes" fi if [ "$os" = "OPENBSD" ]; then LIBS="$LIBS -pthread" fi if [ "$os" = "OSX" ]; then LDFLAGS="$LDFLAGS -framework Cocoa" # Add macports include dir which is not always set a default system dir. This avoids zillions of bogus warnings. CFLAGS="$CFLAGS -isystem/opt/local/include" if [ "$enable_dedicated" = "0" ] && ([ "$cpu_type" = "32" ] || [ "$enable_universal" != "0" ]); then LIBS="$LIBS -framework QuickTime" else CFLAGS="$CFLAGS -DNO_QUICKTIME" fi if [ "$enable_universal" = "0" ]; then # Universal builds set this elsewhere CFLAGS="$OSX_SYSROOT $CFLAGS" LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS" fi fi if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then LIBS="$LIBS -lmidi -lbe" fi # Most targets act like UNIX, just with some additions if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then CFLAGS="$CFLAGS -DUNIX" fi # And others like Windows if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then CFLAGS="$CFLAGS -DWIN" fi if [ -n "$allegro_config" ]; then CFLAGS="$CFLAGS -DWITH_ALLEGRO" CFLAGS="$CFLAGS `$allegro_config --cflags`" if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$allegro_config --static --libs`" else LIBS="$LIBS `$allegro_config --libs`" fi fi fi if [ -n "$sdl_config" ]; then CFLAGS="$CFLAGS -DWITH_SDL" # SDL must not add _GNU_SOURCE as it breaks many platforms CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`" if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$sdl_config --static-libs`" else LIBS="$LIBS `$sdl_config --libs`" fi fi fi if [ "$with_cocoa" != "0" ]; then CFLAGS="$CFLAGS -DWITH_COCOA" LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox" if [ "$enable_cocoa_quartz" != "0" ]; then CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ" fi if [ "$enable_cocoa_quickdraw" != "0" ]; then CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW" fi fi if [ "$with_zlib" != "0" ]; then CFLAGS="$CFLAGS -DWITH_ZLIB" CFLAGS="$CFLAGS `$zlib_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$zlib_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$zlib_config --libs | tr '\n\r' ' '`" fi fi if [ -n "$lzma_config" ]; then CFLAGS="$CFLAGS -DWITH_LZMA" CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then CFLAGS="$CFLAGS -DLZMA_API_STATIC" LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$lzma_config --libs | tr '\n\r' ' '`" fi fi if [ "$with_lzo2" != "0" ]; then if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then LIBS="$LIBS $lzo2" else LIBS="$LIBS -llzo2" fi CFLAGS="$CFLAGS -DWITH_LZO" fi if [ -n "$xdg_basedir_config" ]; then CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR" CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' ' '`" fi fi # 64bit machines need -D_SQ64 if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then CFLAGS="$CFLAGS -D_SQ64" fi CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR" if [ -n "$png_config" ]; then CFLAGS="$CFLAGS -DWITH_PNG" CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$png_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$png_config --libs | tr '\n\r' ' '`" fi fi if [ -n "$fontconfig_config" ]; then CFLAGS="$CFLAGS -DWITH_FONTCONFIG" CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' ' '`" fi fi if [ -n "$freetype_config" ]; then CFLAGS="$CFLAGS -DWITH_FREETYPE" CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`" fi fi if [ -n "$icu_layout_config" ]; then CFLAGS="$CFLAGS -DWITH_ICU_LAYOUT" CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' ' '`" if [ "$static_icu" != "0" ]; then LIBS="$LIBS `$icu_layout_config --libs --static | tr '\n\r' ' ' | sed s/-licu/-lsicu/g`" else LIBS="$LIBS `$icu_layout_config --libs | tr '\n\r' ' '`" fi fi if [ -n "$icu_sort_config" ]; then CFLAGS="$CFLAGS -DWITH_ICU_SORT" CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' ' '`" if [ "$static_icu" != "0" ]; then LIBS="$LIBS `$icu_sort_config --libs --static | tr '\n\r' ' ' | sed s/-licu/-lsicu/g`" else LIBS="$LIBS `$icu_sort_config --libs | tr '\n\r' ' '`" fi fi if [ "$with_direct_music" != "0" ]; then CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT" # GCC 4.0+ doesn't like the DirectX includes (gives tons of # warnings on it we won't be able to fix). For now just # suppress those warnings. if [ $cc_version -ge 400 ]; then CFLAGS="$CFLAGS -Wno-non-virtual-dtor" fi fi if [ -n "$libtimidity_config" ]; then CFLAGS="$CFLAGS -DLIBTIMIDITY" CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' ' '`" if [ "$enable_static" != "0" ]; then LIBS="$LIBS `$libtimidity_config --libs --static | tr '\n\r' ' '`" else LIBS="$LIBS `$libtimidity_config --libs | tr '\n\r' ' '`" fi fi if [ "$with_iconv" != "0" ]; then CFLAGS="$CFLAGS -DWITH_ICONV" if [ "$link_to_iconv" = "yes" ]; then LIBS="$LIBS -liconv" if [ "$with_iconv" != "2" ]; then CFLAGS="$CFLAGS -I$with_iconv/include" LIBS="$LIBS -L$with_iconv/lib" fi fi if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV" fi fi if [ -n "$with_midi" ]; then CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\"" fi if [ -n "$with_midi_arg" ]; then CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\"" fi if [ "$enable_dedicated" != "0" ]; then CFLAGS="$CFLAGS -DDEDICATED" fi if [ "$enable_unicode" != "0" ]; then CFLAGS="$CFLAGS -DUNICODE -D_UNICODE" fi if [ "$enable_network" != "0" ]; then CFLAGS="$CFLAGS -DENABLE_NETWORK" if [ "$os" = "BEOS" ]; then LDFLAGS="$LDFLAGS -lbind -lsocket" fi if [ "$os" = "HAIKU" ]; then LDFLAGS="$LDFLAGS -lnetwork" fi if [ "$os" = "SUNOS" ]; then LDFLAGS="$LDFLAGS -lnsl -lsocket" fi fi if [ "$enable_static" != "0" ]; then # OSX can't handle -static in LDFLAGS if [ "$os" != "OSX" ]; then LDFLAGS="$LDFLAGS -static" fi fi if [ "$enable_assert" = "0" ]; then CFLAGS="$CFLAGS -DNDEBUG" CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG" fi if [ "$enable_desync_debug" != "0" ]; then CFLAGS="$CFLAGS -DRANDOM_DEBUG" fi if [ "$enable_osx_g5" != "0" ]; then CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt" fi if [ -n "$personal_dir" ]; then CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\"" fi if [ -n "$shared_dir" ]; then CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\"" fi CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\"" if [ "$enable_lto" != "0" ]; then lto_build=`echo "$FEATURES_BUILD" | grep "lto"` lto_host=`echo "$FEATURES" | grep "lto"` if [ -z "$lto_build$lto_host" ]; then log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it" log 1 "WARNING: LTO/IPO has been disabled" fi if [ -n "$lto_build" ]; then LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD" fi if [ -n "$lto_host" ]; then LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS" fi fi log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD" log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD" log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD" log 1 "using CFLAGS... $CFLAGS" log 1 "using CXXFLAGS... $CXXFLAGS" log 1 "using LDFLAGS... $LIBS $LDFLAGS" # Makedepend doesn't like something like: -isysroot /OSX/blabla # so convert it to: -isysroot -OSX/blabla. makedepend just ignores # any - command it doesn't know, so we are pretty save. # Lovely hackish, not? # Btw, this almost always comes from outside the configure, so it is # not something we can control. # Also make makedepend aware of compiler's built-in defines. if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then # Append CXXFLAGS possibly containing -std=c++0x cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`" # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`" else makedepend="" fi if [ "$with_distcc" != "0" ]; then cc_host="$distcc $cc_host" cxx_host="$distcc $cxx_host" log 1 "" log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc" log 1 "" fi if [ "$with_ccache" != "0" ]; then cc_host="$ccache $cc_host" cxx_host="$ccache $cxx_host" fi } check_compiler() { # Params: # $1 - Type for message (build / host) # $2 - What to fill with the found compiler # $3 - System to try # $4 - Compiler to try # $5 - Env-setting to try # $6 - GCC alike to try # $7 - CC alike to try # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo # $9 - What the command is to check for if [ -n "$3" ]; then # Check for system if [ -z "$6" ]; then compiler="$3" else compiler="$3-$6" fi machine=`eval $compiler $9 2>/dev/null` ret=$? eval "$2=\"$compiler\"" log 2 "executing $compiler $9" log 2 " returned $machine" log 2 " exit code $ret" if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then if [ -z "$5" ]; then log 1 "checking $1... $compiler not found" log 1 "I couldn't detect any $6 binary for $3" exit 1 else compiler="$3-$5" fi machine=`eval $compiler $9 2>/dev/null` ret=$? eval "$2=\"$compiler\"" log 2 "executing $compiler $9" log 2 " returned $machine" log 2 " exit code $ret" if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then log 1 "checking $1... $compiler not found" log 1 "I couldn't detect any $5 binary for $3" exit 1 fi fi if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then log 1 "checking $1... expected $3, found $machine" log 1 "the compiler suggests it doesn't build code for the machine you specified" exit 1 fi elif [ -n "$4" ]; then # Check for manual compiler machine=`$4 $9 2>/dev/null` ret=$? eval "$2=\"$4\"" log 2 "executing $4 $9" log 2 " returned $machine" log 2 " exit code $ret" if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then log 1 "checking $1... $4 not found" log 1 "the selected binary doesn't seem to be a $6 binary" exit 1 fi else # Nothing given, autodetect if [ -n "$5" ]; then machine=`$5 $9 2>/dev/null` ret=$? eval "$2=\"$5\"" log 2 "executing $5 $9" log 2 " returned $machine" log 2 " exit code $ret" # The user defined a GCC that doesn't reply to $9.. abort if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then log 1 "checking $1... $5 unusable" log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary" log 1 "please redefine the CC/CXX environment to a $6 binary" exit 1 fi else log 2 "checking $1... CC/CXX not set (skipping)" # No $5, so try '$6' machine=`$6 $9 2>/dev/null` ret=$? eval "$2=\"$6\"" log 2 "executing $6 $9" log 2 " returned $machine" log 2 " exit code $ret" if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then # Maybe '$7'? machine=`$7 $9 2>/dev/null` ret=$? eval "$2=\"$7\"" log 2 "executing $7 $9" log 2 " returned $machine" log 2 " exit code $ret" # All failed, abort if [ -z "$machine" ]; then log 1 "checking $1... $6 not found" log 1 "I couldn't detect any $6 binary on your system" log 1 "please define the CC/CXX environment to where it is located" exit 1 fi fi fi fi if [ "$8" != "0" ]; then eval "res=\$$2" log 1 "checking $1... $res" else log 1 "checking $1... $machine" fi } check_build() { if [ "$os" = "FREEBSD" ]; then # FreeBSD's C compiler does not support dump machine. # However, removing C support is not possible because PSP must be linked with the C compiler. check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine" else check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine" fi } check_host() { # By default the host is the build if [ -z "$host" ]; then host="$build"; fi if [ "$os" = "FREEBSD" ]; then # FreeBSD's C compiler does not support dump machine. # However, removing C support is not possible because PSP must be linked with the C compiler. check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine" else check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine" fi } check_cxx_build() { check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine" } check_cxx_host() { # By default the host is the build if [ -z "$host" ]; then host="$build"; fi check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine" } check_windres() { if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V" fi } check_strip() { if [ "$os" = "OS2" ]; then # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly log 1 "checking host strip... using gcc -s option" elif [ "$os" = "OSX" ]; then # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something echo "int main(int argc, char *argv[]) { }" > strip.test.c $cxx_host strip.test.c -o strip.test check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test" rm -f strip.test.c strip.test else check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V" fi } check_lipo() { if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then echo "int main(int argc, char *argv[]) { }" > lipo.test.c $cxx_host lipo.test.c -o lipo.test check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test" rm -f lipo.test.c lipo.test fi } check_osx_sdk() { local sysroot="" if [ -n "$1" ]; then if echo "$1" | grep -q / ; then # Seems to be a file system path osx_sdk_path="$1" else osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk" fi if [ ! -d "$osx_sdk_path" ]; then # No directory, not present or garbage return 1 fi # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4" fi cat > tmp.osx.mm << EOF #include int main() { kCGBitmapByteOrder32Host; return 0; } EOF execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1" eval $execute > /dev/null ret=$? log 2 "executing $execute" log 2 " exit code $ret" rm -f tmp.osx.mm tmp.osx return $ret } check_direct_music() { echo " #include #include #include #include #include int main(int argc, char *argv[]) { }" > direct_music.test.c $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null res=$? rm -f direct_music.test.c direct_music.test if [ "$res" != "0" ]; then if [ "$with_direct_music" != "1" ]; then log 1 "configure: error: direct-music is not available on this system" exit 1 fi with_direct_music="0" log 1 "checking direct-music... not found" else log 1 "checking direct-music... found" fi } check_makedepend() { if [ "$enable_builtin_depend" != "0" ]; then with_makedepend="0" fi if [ "$with_makedepend" = "0" ]; then log 1 "checking makedepend... disabled" return fi if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then makedepend="makedepend" else makedepend="$with_makedepend" fi rm -f makedepend.tmp touch makedepend.tmp res=`$makedepend -fmakedepend.tmp 2>/dev/null` res=$? log 2 "executing $makedepend -f makedepend.tmp" log 2 " returned `cat makedepend.tmp`" log 2 " exit code $ret" if [ ! -s makedepend.tmp ]; then rm -f makedepend.tmp makedepend.tmp.bak if [ "$with_makedepend" = "2" ]; then log 1 "checking makedepend... not found" log 1 "I couldn't detect any makedepend on your system" log 1 "please locate it via --makedepend=[binary]" exit 1 elif [ "$with_makedepend" != "1" ]; then log 1 "checking makedepend... $makedepend not found" log 1 "the selected file doesn't seem to be a valid makedepend binary" exit 1 else log 1 "checking makedepend... not found" with_makedepend="0" return fi fi rm -f makedepend.tmp makedepend.tmp.bak log 1 "checking makedepend... $makedepend" } check_version() { # $1 - requested version (major.minor) # $2 - version we got (major.minor) if [ -z "$2" ]; then return 0 fi req_major=`echo $1 | cut -d. -f1` got_major=`echo $2 | cut -d. -f1` if [ $got_major -lt $req_major ]; then return 0 elif [ $got_major -gt $req_major ]; then return 1 fi req_minor=`echo $1 | cut -d. -f2` got_minor=`echo $2 | cut -d. -f2` if [ $got_minor -lt $req_minor ]; then return 0 fi return 1 } detect_awk() { # Not all awks allow gsub(), so we test for that here! It is in fact all we need... # These awks are known to work. Test for them explicit awks="gawk mawk nawk" awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | " awk_param="' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", \$0); print \$0; }' 2>/dev/null" awk_result="a.o b.o c.o " log 2 "Detecing awk..." log 2 "Trying: $awk_prefix $awk $awk_param" res=`eval $awk_prefix $awk $awk_param` log 2 "Result: '$res'" if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then # User didn't supply his own awk, so try to detect some other known working names for an awk for awk in $awks; do log 2 "Trying: $awk_prefix $awk $awk_param" res=`eval $awk_prefix $awk $awk_param` log 2 "Result: '$res'" if [ "$res" = "$awk_result" ]; then break; fi done if [ "$res" != "$awk_result" ]; then log 1 "checking awk... not found" log 1 "configure: error: no awk found" log 1 "configure: error: please install one of the following: $awks" exit 1 fi fi if [ "$res" != "$awk_result" ]; then log 1 "checking awk... not found" log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk" exit 1 fi log 1 "checking awk... $awk" } detect_os() { if [ "$os" = "DETECT" ]; then # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP # Try first via dumpmachine, then via uname os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk ' /linux/ { print "UNIX"; exit} /darwin/ { print "OSX"; exit} /freebsd/ { print "FREEBSD"; exit} /dragonfly/ { print "DRAGONFLY"; exit} /openbsd/ { print "OPENBSD"; exit} /netbsd/ { print "NETBSD"; exit} /hp-ux/ { print "HPUX"; exit} /morphos/ { print "MORPHOS"; exit} /beos/ { print "BEOS"; exit} /haiku/ { print "HAIKU"; exit} /sunos/ { print "SUNOS"; exit} /solaris/ { print "SUNOS"; exit} /cygwin/ { print "CYGWIN"; exit} /mingw/ { print "MINGW"; exit} /os2/ { print "OS2"; exit} /dos/ { print "DOS"; exit} /wince/ { print "WINCE"; exit} /psp/ { print "PSP"; exit} '` if [ -z "$os" ]; then os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk ' /linux/ { print "UNIX"; exit} /darwin/ { print "OSX"; exit} /freebsd/ { print "FREEBSD"; exit} /dragonfly/ { print "DRAGONFLY"; exit} /openbsd/ { print "OPENBSD"; exit} /netbsd/ { print "NETBSD"; exit} /hp-ux/ { print "HPUX"; exit} /morphos/ { print "MORPHOS"; exit} /beos/ { print "BEOS"; exit} /haiku/ { print "HAIKU"; exit} /sunos/ { print "SUNOS"; exit} /cygwin/ { print "CYGWIN"; exit} /mingw/ { print "MINGW"; exit} /os\/2/ { print "OS2"; exit} /gnu/ { print "UNIX"; exit} '` fi if [ -z "$os" ]; then log 1 "detecting OS... none detected" log 1 "I couldn't detect your OS. Please use --os=OS to force one" log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP" exit 1 fi log 1 "detecting OS... $os" else log 1 "forcing OS... $os" fi } detect_allegro() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_allegro" = "0" ]; then log 1 "checking Allegro... disabled" allegro_config="" return 0 fi if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then log 1 "configure: error: it is impossible to compile both Allegro and COCOA" log 1 "configure: error: please deselect one of them and try again" exit 1 fi if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then log 1 "configure: error: it is impossible to compile a dedicated with Allegro" log 1 "configure: error: please deselect one of them and try again" exit 1 fi if [ "$enable_dedicated" != "0" ]; then log 1 "checking Allegro... dedicated server, skipping" allegro_config="" return 0 fi # By default on OSX we don't use Allegro. The rest is auto-detect if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then log 1 "checking Allegro... OSX, skipping" allegro_config="" return 0 fi detect_pkg_config "$with_allegro" "allegro" "allegro_config" "4.4" } detect_sdl() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_sdl" = "0" ]; then log 1 "checking SDL... disabled" sdl_config="" return 0 fi if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then log 1 "configure: error: it is impossible to compile both SDL and COCOA" log 1 "configure: error: please deselect one of them and try again" exit 1 fi if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then log 1 "configure: error: it is impossible to compile a dedicated with SDL" log 1 "configure: error: please deselect one of them and try again" exit 1 fi if [ "$enable_dedicated" != "0" ]; then log 1 "checking SDL... dedicated server, skipping" sdl_config="" return 0 fi # By default on OSX we don't use SDL. The rest is auto-detect if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then log 1 "checking SDL... OSX, skipping" sdl_config="" return 0 fi if [ "$os" = "OSX" ]; then log 1 "WARNING: sdl is known to fail on some versions of Mac OS X" log 1 "WARNING: with some hardware configurations. Use at own risk!" sleep 5 fi detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2" } detect_osx_sdk() { # Try to find the best SDK available. For a normal build this # is currently the 10.5 SDK as this is needed to compile all # optional code. Because such an executable won't run on 10.4 # or lower, also check for the 10.4u SDK when doing an universal # build. # Check for the 10.5 SDK, but try 10.6 if that fails check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path="" if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then # No better SDK or universal build enabled? Check 10.4u SDK as well local old_sdk="$osx_sdk_path" if check_osx_sdk "10.4u"; then osx_sdk_104_path="$osx_sdk_path" else osx_sdk_104_path="" fi if [ -z "$old_sdk" ]; then osx_sdk_path="$osx_sdk_104_path" else osx_sdk_path="$old_sdk" fi fi if [ -z "$osx_sdk_path" ]; then log 1 "Your system SDK is probably too old" log 1 "Please install/upgrade your Xcode to >= 2.5" exit 1 fi } detect_cocoa() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_cocoa" = "0" ]; then log 1 "checking COCOA... disabled" return 0 fi if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then log 1 "configure: error: it is impossible to compile a dedicated with COCOA" log 1 "configure: error: please deselect one of them and try again" exit 1 fi if [ "$enable_dedicated" != "0" ]; then log 1 "checking COCOA... dedicated server, skipping" with_cocoa="0" return 0 fi # By default on OSX we use COCOA. The rest doesn't support it if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then log 1 "checking COCOA... not OSX, skipping" with_cocoa="0" return 0 fi if [ "$os" != "OSX" ]; then log 1 "checking COCOA... not OSX" log 1 "configure: error: COCOA video driver is only supported for OSX" exit 1 fi log 1 "checking COCOA... found" if [ "$enable_cocoa_quartz" != "0" ]; then log 1 "checking whether to enable the Quartz window subdriver... yes" else log 1 "checking whether to enable the Quartz window subdriver... no" fi detect_quickdraw } detect_quickdraw() { # 0 means no, 1 is auto-detect, 2 is force if [ "$enable_cocoa_quickdraw" = "0" ]; then log 1 "checking Quickdraw window subdriver... disabled" return 0 fi # Assume QuickDraw is available when doing an universal build if [ "$enable_universal" != "0" ]; then log 1 "checking Quickdraw window subdriver... found" return 0 fi # 64 bits doesn't have quickdraw if [ "$cpu_type" = "64" ]; then enable_cocoa_quickdraw="0" log 1 "checking Quickdraw window subdriver... disabled (64 bits)" return 0 fi cat > tmp.osx.mm << EOF #include #import int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; } EOF execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1" eval $execute > /dev/null ret=$? log 2 "executing $execute" log 2 " exit code $ret" rm -f tmp.osx.mm tmp.osx if [ "$ret" != "0" ]; then log 1 "checking Quickdraw window subdriver... not found" # It was forced, so it should be found. if [ "$enable_cocoa_quickdraw" != "1" ]; then log 1 "configure: error: Quickdraw window driver could not be found" exit 1 fi enable_cocoa_quickdraw=0 return 0 fi enable_cocoa_quickdraw=1 log 1 "checking Quickdraw window subdriver... found" } detect_library() { # $1 - config-param ($with_zlib value) # $2 - library name ('zlib', sets $zlib) # $3 - static library name (libz.a) # $4 - header directory () # $5 - header name (zlib.h) # $6 - force static (if non-empty) if [ -n "$6" ]; then force_static="1"; fi # 0 means no, 1 is auto-detect, 2 is force if [ "$1" = "0" ]; then log 1 "checking $2... disabled" eval "$2=\"\"" return 0 fi log 2 "detecting $2" if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`" eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /usr/include/$4$5... no" eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`" fi eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /usr/local/include/$4$5... no" eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`" fi eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /mingw/include/$4$5... no" eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`" fi eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /opt/local/include/$4$5... no" fi if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`" eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /usr/pkg/include/$4$5... no" fi fi if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then if [ -z "$includeDir" ]; then includeDir=`finddir B_SYSTEM_HEADERS_DIRECTORY` fi eval "$2=`ls -1 $includeDir/$4*.h 2>/dev/null | egrep \"\/$5\$\"`" eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying $includeDir/$4$5... no" fi fi eval "res=\$$2" if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then eval "res=\$$2" log 2 " trying $res... found" # Now find the static lib, if needed eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`" eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /lib/$3... no" eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`" fi eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /usr/lib/$3... no" eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`" fi eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /usr/local/lib/$3... no" eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`" fi eval "res=\$$2" if [ -z "$res" ]; then log 2 " trying /mingw/lib/$3... no" log 1 "configure: error: $2 couldn't be found" log 1 "configure: error: you requested a static link, but I can't find $3" exit 1 fi fi else # Make sure it exists if [ -f "$1" ]; then eval "$2=`ls $1 2>/dev/null`" else eval "$2=`ls $1/$3 2>/dev/null`" fi fi eval "res=\$$2" if [ -z "$res" ]; then log 1 "checking $2... not found" if [ "$1" = "2" ]; then log 1 "configure: error: $2 couldn't be found" exit 1 elif [ "$1" != "1" ]; then log 1 "configure: error: $2 couldn't be found" log 1 "configure: error: you supplied '$1', but it seems invalid" exit 1 fi eval "with_$2=0" return 0 fi eval "res=\$$2" log 2 " trying $res... found" log 1 "checking $2... found" } detect_zlib() { detect_pkg_config "$with_zlib" "zlib" "zlib_config" "1.2" } detect_lzo2() { detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h" } detect_libtimidity() { detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1" } detect_pkg_config() { # $1 - config-param ($with_lzma value) # $2 - package name ('liblzma') # $3 - config name ('lzma_config', sets $lzma_config) # $4 - minimum module version ('2.3') # $5 - check for dedicated, 1 is "skif if dedicated" # 0 means no, 1 is auto-detect, 2 is force if [ "$1" = "0" ]; then log 1 "checking $2... disabled" eval "$3=\"\"" return 0 fi if [ "$5" = "1" ] && [ "$1" = "1" ] && [ "$enable_dedicated" != "0" ]; then log 1 "checking $2... dedicated server, skipping" eval "$3=\"\"" return 0 fi log 2 "detecting $2" if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then pkg_config_call="$pkg_config $2" else pkg_config_call="$1" fi version=`$pkg_config_call --modversion 2>/dev/null` ret=$? check_version "$4" "$version" version_ok=$? log 2 "executing $pkg_config_call --modversion" log 2 " returned $version" log 2 " exit code $ret" if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then if [ -n "$version" ] && [ "$version_ok" != "1" ]; then log 1 "checking $2... needs at least version $4, $2 NOT enabled" else log 1 "checking $2... not found" fi # It was forced, so it should be found. if [ "$1" != "1" ]; then log 1 "configure: error: $pkg_config $2 couldn't be found" log 1 "configure: error: you supplied '$1', but it seems invalid" exit 1 fi eval "$3=\"\"" return 0 fi eval "$3=\"$pkg_config_call\"" log 1 "checking $2... found" } detect_lzma() { detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0" } detect_xdg_basedir() { detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2" } detect_png() { detect_pkg_config "$with_png" "libpng" "png_config" "1.2" } detect_freetype() { detect_pkg_config "$with_freetype" "freetype2" "freetype_config" "2.2" "1" } detect_fontconfig() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_fontconfig" = "0" ]; then log 1 "checking libfontconfig... disabled" fontconfig_config="" return 0 fi if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then log 1 "checking libfontconfig... WIN32, skipping" fontconfig_config="" return 0 fi if [ "$os" = "OSX" ]; then log 1 "checking libfontconfig... OSX, skipping" fontconfig_config="" return 0 fi detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3" "1" } detect_icu_layout() { detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1" } detect_icu_sort() { detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1" } detect_pspconfig() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_psp_config" = "0" ]; then log 1 "checking psp-config... disabled" psp_config="" return 0 fi if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then log 1 "checking psp-config... not PSP, skipping" psp_config=""; return 0 fi if [ "$os" != "PSP" ]; then log 1 "checking psp-config... not PSP" log 1 "configure: error: psp-config is only supported for PSP" exit 1 fi if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then psp_config="psp-config" else psp_config="$with_psp_config" fi version=`$psp_config -p 2>/dev/null` ret=$? log 2 "executing $psp_config -p" log 2 " returned $version" log 2 " exit code $ret" if [ -z "$version" ] || [ "$ret" != "0" ]; then log 1 "checking psp-config... not found" log 1 "configure: error: psp-config couldn't be found" # It was forced, so it should be found. if [ "$with_psp_config" != "1" ]; then log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid" fi exit 1 fi log 1 "checking psp-config... found" } detect_iconv() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_iconv" = "0" ]; then log 1 "checking iconv... disabled" return 0 fi if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then log 1 "checking iconv... not OSX, skipping" with_iconv="0" return 0 fi # Try to find iconv.h, seems to only thing to detect iconv with if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"` if [ -z "$iconv" ]; then iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"` fi else # Make sure it exists iconv=`ls $with_iconv/include/iconv.h 2>/dev/null` fi if [ -z "$iconv" ]; then log 1 "checking iconv... not found" if [ "$with_iconv" = "2" ]; then log 1 "configure: error: iconv couldn't be found" exit 1 elif [ "$with_iconv" != "1" ]; then log 1 "configure: error: iconv couldn't be found" log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it" exit 1 fi return 0 fi if [ "$with_iconv" = "1" ]; then with_iconv="2" fi log 2 "found iconv in $iconv" log 1 "checking iconv... found" # There are different implementations of iconv. The older ones, # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g. # IEEE 1003.1 (2004), pass a non-const pointer. cat > tmp.iconv.cpp << EOF #include "src/stdafx.h" #include int main() { static char buf[1024]; iconv_t convd = 0; const char *inbuf = ""; char *outbuf = buf; size_t outlen = 1023; size_t inlen = 0; return iconv(convd, &inbuf, &inlen, &outbuf, &outlen); } EOF execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1" eval $execute > /dev/null ret=$? log 2 "executing $execute" log 2 " exit code $ret" if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv" cat > tmp.iconv.cpp << EOF #include "src/stdafx.h" #include int main() { static char buf[1024]; iconv_t convd = 0; char *inbuf = ""; char *outbuf = buf; size_t outlen = 1023; size_t inlen = 0; return iconv(convd, &inbuf, &inlen, &outbuf, &outlen); } EOF execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1" eval $execute > /dev/null ret=$? log 2 "executing $execute" log 2 " exit code $ret" if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi log 1 "checking whether to link to iconv... $link_to_iconv" rm -f tmp.iconv tmp.iconv.cpp } _detect_sort() { sort_test_in="d a c b" sort_test_out="a b c d" log 2 "running echo | $1" if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then sort="$1" log 2 " result was valid" else log 2 " result was invalid" fi } detect_sort() { if [ "$with_sort" = "0" ]; then log 1 "checking sort... disabled" return fi if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then _detect_sort "sort" if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi else _detect_sort "$with_sort" fi if [ -z "$sort" ]; then if [ "$with_sort" = "2" ]; then log 1 "checking sort... not found" log 1 "configure: error: couldn't detect sort on your system" exit 1 elif [ "$with_sort" != "1" ]; then log 1 "checking sort... $with_sort not found" log 1 "configure: error: '$with_sort' doesn't look like a sort to me" log 1 "configure: error: please verify its location and function and try again" exit 1 else log 1 "checking sort... not found" fi else log 1 "checking sort... $sort" fi } detect_grfcodec() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_grfcodec" = "0" ]; then log 1 "checking grfcodec... disabled" grfcodec="" return 0 fi if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then grfcodec="grfcodec" else grfcodec="$with_grfcodec" fi version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'` ret=$? log 2 "executing grfcodec -v" log 2 " returned $version" log 2 " exit code $ret" if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then if [ -n "$version" ] && [ "$version" -lt "985" ]; then log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled" else log 1 "checking grfcodec... not found" fi # It was forced, so it should be found. if [ "$with_grfcodec" != "1" ]; then log 1 "configure: error: grfcodec couldn't be found" log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid" exit 1 fi grfcodec="" return 0 fi log 1 "checking grfcodec... found" } detect_nforenum() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_nforenum" = "0" ]; then log 1 "checking nforenum... disabled" nforenum="" return 0 fi if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then nforenum="nforenum" else nforenum="$with_nforenum" fi version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'` ret=$? log 2 "executing nforenum -v" log 2 " returned $version" log 2 " exit code $ret" if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then if [ -n "$version" ] && [ "$version" -lt "985" ]; then log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled" else log 1 "checking nforenum... not found" fi # It was forced, so it should be found. if [ "$with_nforenum" != "1" ]; then log 1 "configure: error: nforenum couldn't be found" log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid" exit 1 fi nforenum="" return 0 fi log 1 "checking nforenum... found" } _detect_cputype_width() { echo "#define _SQ64 1" > $1.cpp echo "#include \"src/stdafx.h\"" >> $1.cpp echo "assert_compile(sizeof(size_t) == $2);" >> $1.cpp echo "int main() { return 0; }" >> $1.cpp execute="$cxx_host $CFLAGS -std=c++11 $1.cpp -o $1 -DTESTING 2>&1" cpu_type="`eval $execute 2>/dev/null`" ret=$? log 2 "executing $execute" log 2 " returned $cpu_type" log 2 " exit code $ret" rm -f $1 $1.cpp return $ret } detect_cputype() { if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then log 1 "forcing cpu-type... $cpu_type bits" return; fi _detect_cputype_width tmp.32bit 4 result32=$? _detect_cputype_width tmp.64bit 8 result64=$? if [ "$result32" = 0 ] && [ "$result64" != 0 ]; then cpu_type="32" elif [ "$result32" != 0 ] && [ "$result64" = 0 ]; then cpu_type="64" else log 1 "configure: unable to determine cpu-type (pointer width)" exit 1 fi log 1 "detecting cpu-type... $cpu_type bits" } detect_sse_capable_architecture() { # 0 means no, 1 is auto-detect, 2 is force if [ "$with_sse" = "0" ]; then log 1 "checking SSE... disabled" return fi echo "#define _SQ64 1" > tmp.sse.cpp echo "#include " >> tmp.sse.cpp echo "#include " >> tmp.sse.cpp echo "#include " >> tmp.sse.cpp echo "int main() { return 0; }" >> tmp.sse.cpp execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1" sse="`eval $execute 2>/dev/null`" ret=$? log 2 "executing $execute" log 2 " returned $sse" log 2 " exit code $ret" if [ "$ret" = "0" ]; then log 1 "detecting SSE... found" else # It was forced, so it should be found. if [ "$with_sse" != "1" ]; then log 1 "configure: error: SSE couln't be found" log 1 "configure: error: you force enabled SSE, but it seems unavailable" exit 1 fi log 1 "detecting SSE... not found" with_sse="0" fi rm -f tmp.sse tmp.exe tmp.sse.cpp } make_sed() { T_CFLAGS="$CFLAGS" T_CXXFLAGS="$CXXFLAGS" T_LDFLAGS="$LDFLAGS" SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR" # All the data needed to compile a single target # Make sure if you compile multiple targets to # use multiple OBJS_DIR, because all in-between # binaries are stored in there, and nowhere else. SRC_REPLACE=" s@!!CC_HOST!!@$cc_host@g; s@!!CXX_HOST!!@$cxx_host@g; s@!!CC_BUILD!!@$cc_build@g; s@!!CXX_BUILD!!@$cxx_build@g; s@!!WINDRES!!@$windres@g; s@!!STRIP!!@$strip $strip_arg@g; s@!!LIPO!!@$lipo@g; s@!!CFLAGS!!@$T_CFLAGS@g; s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g; s@!!CXXFLAGS!!@$T_CXXFLAGS@g; s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g; s@!!STRGEN_FLAGS!!@$strgen_flags@g; s@!!LIBS!!@$LIBS@g; s@!!LDFLAGS!!@$T_LDFLAGS@g; s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g; s@!!BIN_DIR!!@$BIN_DIR@g; s@!!ROOT_DIR!!@$ROOT_DIR@g; s@!!MEDIA_DIR!!@$MEDIA_DIR@g; s@!!SOURCE_LIST!!@$SOURCE_LIST@g; s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g; s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g; s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g; s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g; s@!!SRC_DIR!!@$SRC_DIR@g; s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g; s@!!OSXAPP!!@$OSXAPP@g; s@!!LANG_DIR!!@$LANG_DIR@g; s@!!TTD!!@$TTD@g; s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g; s@!!DATA_DIR!!@$prefix_dir/$data_dir@g; s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g; s@!!MAN_DIR!!@$prefix_dir/$man_dir@g; s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g; s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g; s@!!PERSONAL_DIR!!@$personal_dir@g; s@!!SHARED_DIR!!@$shared_dir@g; s@!!INSTALL_DIR!!@$install_dir@g; s@!!BINARY_NAME!!@$binary_name@g; s@!!STRGEN!!@$STRGEN@g; s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g; s@!!DEPEND!!@$DEPEND@g; s@!!SETTINGSGEN!!@$SETTINGSGEN@g; s@!!ENDIAN_FORCE!!@$endian@g; s@!!STAGE!!@$STAGE@g; s@!!MAKEDEPEND!!@$makedepend@g; s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g; s@!!SORT!!@$sort@g; s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g; s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g; s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g; s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g; s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g; s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g; s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g; s@!!LANG_SUPPRESS!!@$lang_suppress@g; s@!!OBJS_C!!@$OBJS_C@g; s@!!OBJS_CPP!!@$OBJS_CPP@g; s@!!OBJS_MM!!@$OBJS_MM@g; s@!!OBJS_RC!!@$OBJS_RC@g; s@!!SRCS!!@$SRCS@g; s@!!OS!!@$os@g; s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g; s@!!AWK!!@$awk@g; s@!!DISTCC!!@$distcc@g; s@!!NFORENUM!!@$nforenum@g; s@!!GRFCODEC!!@$grfcodec@g; " if [ "$icon_theme_dir" != "" ]; then SRC_REPLACE="$SRC_REPLACE s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g; " else SRC_REPLACE="$SRC_REPLACE s@!!ICON_THEME_DIR!!@@g; " fi if [ "$man_dir" != "" ]; then SRC_REPLACE="$SRC_REPLACE s@!!MAN_DIR!!@$prefix_dir/$man_dir@g; " else SRC_REPLACE="$SRC_REPLACE s@!!MAN_DIR!!@@g; " fi if [ "$menu_dir" != "" ]; then SRC_REPLACE="$SRC_REPLACE s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g; " else SRC_REPLACE="$SRC_REPLACE s@!!MENU_DIR!!@@g; " fi } generate_menu_item() { MENU_REPLACE=" s@!!TTD!!@$TTD@g; s@!!MENU_GROUP!!@$menu_group@g; s@!!MENU_NAME!!@$menu_name@g " log 1 "Generating menu item..." mkdir -p media < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop } generate_main() { STAGE="[MAIN]" make_sed # Create the main Makefile log 1 "Generating Makefile..." echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am echo >> Makefile.am # Make the copy of the source-list, so we don't trigger an unwanted recompile cp $SOURCE_LIST config.cache.source.list # Add the current directory, so we don't trigger an unwanted recompile echo "`pwd`" > config.cache.pwd # Make sure config.cache is OLDER then config.cache.source.list touch config.cache touch config.pwd if [ "$menu_dir" != "" ]; then generate_menu_item fi } generate_lang() { STAGE="[LANG]" make_sed # Create the language file mkdir -p $LANG_OBJS_DIR log 1 "Generating lang/Makefile..." echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am } generate_settings() { STAGE="[SETTING]" make_sed # Create the language file mkdir -p $SETTING_OBJS_DIR log 1 "Generating setting/Makefile..." echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am } generate_grf() { STAGE="[BASESET]" make_sed # Create the language file mkdir -p $GRF_OBJS_DIR log 1 "Generating grf/Makefile..." echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am } generate_src_normal() { STAGE=$1 make_sed # Create the source file mkdir -p $SRC_OBJS_DIR log 1 "Generating $2/Makefile..." echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am } generate_src_osx() { cc_host_orig="$cc_host" cxx_host_orig="$cxx_host" CFLAGS_orig="$CFLAGS" LDFLAGS_orig="$LDFLAGS" for type in $enable_universal; do if [ -n "$osx_sdk_104_path" ]; then # Use 10.4 SDK for 32-bit targets CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig" LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig" fi # We don't want to duplicate the x86_64 stuff for each target, so do it once here if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV # and they also removed support for QuickTime/QuickDraw if [ -n "$osx_sdk_path" ]; then CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig" LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig" fi CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW" LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`" fi case $type in ppc) BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc" cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3" cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3" generate_src_normal "[ppc]" "objs/ppc";; ppc970) BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970" cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt" cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt" generate_src_normal "[ppc970]" "objs/ppc970";; i386) BASE_SRC_OBJS_DIR="$OBJS_DIR/i386" cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4" cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4" generate_src_normal "[i386]" "objs/i386";; ppc64) BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64" cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5" cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5" generate_src_normal "[ppc64]" "objs/ppc64";; x86_64) BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64" cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5" cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5" generate_src_normal "[x86_64]" "objs/x86_64";; *) log 1 "Unknown architecture requested for universal build: $type";; esac done } generate_src() { if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then generate_src_osx else generate_src_normal "[SRC]" "objs" fi } showhelp() { echo "'configure' configures OpenTTD." echo "" echo "Usage: $0 [OPTION]... [VAR=VALUE]..." echo "" echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as" echo "VAR=VALUE. See below for descriptions of some of the useful variables." echo "" echo "Defaults for the options are specified in brackets." echo "" echo "Configuration:" echo " -h, --help display this help and exit" echo "" echo "System types:" echo " --build=BUILD configure for building on BUILD [guessed]" echo " --host=HOST cross-compile to build programs to run" echo " on HOST [BUILD]" echo " --windres=WINDRES the windres to use [HOST-windres]" echo " --strip=STRIP the strip to use [HOST-strip]" echo " --awk=AWK the awk to use in configure [awk]" echo " --pkg-config=PKG-CONFIG the pkg-config to use in configure [pkg-config]" echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]" echo " --os=OS the OS we are compiling for [DETECT]" echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/" echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/" echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU" echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)" echo "" echo "Paths:" echo " --prefix-dir=dir specifies the prefix for all installed" echo " files [/usr/local]" echo " --binary-dir=dir location of the binary. Will be prefixed" echo " with the prefix-dir [games]" echo " --data-dir=dir location of data files (lang, data, gm)." echo " Will be prefixed with the prefix-dir" echo " [share/games/openttd]" echo " --doc-dir=dir location of the doc files" echo " Will be prefixed with the prefix-dir" echo " [$doc_dir]" echo " --icon-dir=dir location of icons. Will be prefixed" echo " with the prefix-dir [share/pixmaps]" echo " --icon-theme-dir=dir location of icon theme." echo " Will be prefixed with the prefix-dir" echo " and postfixed with size-dirs [$icon_theme_dir]" echo " --man-dir=dir location of the manual page (UNIX only)" echo " Will be prefixed with the prefix-dir" echo " [$man_dir]" echo " --menu-dir=dir location of the menu item. (UNIX only, except OSX)" echo " Will be prefixed with the prefix-dir" echo " [share/applications]" echo " --personal-dir=dir location of the personal directory" echo " [os-dependent default]" echo " --shared-dir=dir location of shared data files" echo " [os-dependent default]" echo " --install-dir=dir specifies the root to install to." echo " Useful to install into jails [/]" echo " --binary-name the name used for the binary, icons," echo " desktop file, etc. when installing [openttd]" echo "" echo "Features and packages:" echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)" echo " --enable-desync-debug=[LVL] enable desync debug options (LVL=[012], 0 is none" echo " --enable-profiling enables profiling" echo " --enable-lto enables GCC's Link Time Optimization (LTO)/ICC's" echo " Interprocedural Optimization if available" echo " --enable-dedicated compile a dedicated server (without video)" echo " --enable-static enable static compile (doesn't work for" echo " all HOSTs)" echo " --enable-translator enable extra output for translators" echo " --enable-universal[=ARCH] enable universal builds (OSX ONLY). Allowed is any combination" echo " of architectures: i386 ppc ppc970 ppc64 x86_64" echo " Default architectures are: i386 ppc" echo " --enable-osx-g5 enables optimizations for ppc970 (G5) (OSX ONLY)" echo " --disable-cocoa-quartz disable the quartz window mode driver for Cocoa (OSX ONLY)" echo " --disable-cocoa-quickdraw disable the quickdraw window mode driver for Cocoa (OSX ONLY)" echo " --disable-unicode disable unicode support to build win9x" echo " version (Win32 ONLY)" echo " --enable-console compile as a console application instead of as a GUI application." echo " If this setting is active, debug output will appear in the same" echo " console instead of opening a new window. (Win32 ONLY)" echo " --disable-network disable network support" echo " --disable-assert disable asserts (continue on errors)" echo " --enable-strip enable any possible stripping" echo " --without-osx-sysroot disable the automatic adding of sysroot " echo " (OSX ONLY)" echo " --without-application-bundle disable generation of application bundle" echo " (OSX ONLY)" echo " --without-menu-entry Don't generate a menu item (Freedesktop based only)" echo " --menu-group=group Category in which the menu item will be placed (Freedesktop based only)" echo " --menu-name=name Name of the menu item when placed [OpenTTD]" echo " --with-direct-music enable direct music support (Win32 ONLY)" echo " --with-sort=sort define a non-default location for sort" echo " --with-midi=midi define which midi-player to use" echo " --with-midi-arg=arg define which args to use for the" echo " midi-player" echo " --with-libtimidity[=\"pkg-config libtimidity\"]" echo " enables libtimidity support" echo " --with-allegro[=\"pkg-config allegro\"]" echo " enables Allegro video driver support" echo " --with-cocoa enables COCOA video driver (OSX ONLY)" echo " --with-sdl[=\"pkg-config sdl\"] enables SDL video driver support" echo " --with-zlib[=\"pkg-config zlib\"]" echo " enables zlib support" echo " --with-liblzma[=\"pkg-config liblzma\"]" echo " enables liblzma support" echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support" echo " --with-png[=\"pkg-config libpng\"]" echo " enables libpng support" echo " --with-freetype[=\"pkg-config freetype2\"]" echo " enables libfreetype support" echo " --with-fontconfig[=\"pkg-config fontconfig\"]" echo " enables fontconfig support" echo " --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]" echo " enables XDG base directory support" echo " --with-icu enables icu components for layout and sorting" echo " --with-icu-layout[=\"pkg-config icu-lx\"]" echo " enables icu components for layouting (right-to-left support)" echo " --with-icu-sort[=\"pkg-config icu-i18n\"]" echo " enables icu components for locale specific string sorting" echo " --static-icu try to link statically (libsicu instead of" echo " libicu; can fail as the new name is guessed)" echo " --with-iconv[=iconv-path] enables iconv support" echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)" echo " --disable-builtin-depend disable use of builtin deps finder" echo " --with-makedepend[=makedepend] enables makedepend support" echo " --with-ccache enables ccache support" echo " --with-distcc enables distcc support" echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets" echo " --without-threads disable threading support" echo " --without-sse disable SSE support (x86/x86_64 only)" echo "" echo "Some influential environment variables:" echo " CC C compiler command" echo " CXX C++ compiler command" echo " CFLAGS C compiler flags" echo " CXXFLAGS C++ compiler flags" echo " WINDRES windres command" echo " LDFLAGS linker flags, e.g. -L if you" echo " have libraries in a nonstandard" echo " directory " echo " CFLAGS_BUILD C compiler flags for build time tool generation" echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation" echo " LDFLAGS_BUILD linker flags for build time tool generation" echo "" echo "Use these variables to override the choices made by 'configure' or to help" echo "it to find libraries and programs with nonstandard names/locations." }