rubidium@5643: rubidium@5643: log() { rubidium@5643: if [ $1 = "1" ]; then echo "$2"; fi rubidium@5643: echo "$2" >> $config_log rubidium@5643: } rubidium@5643: rubidium@5643: set_default() { rubidium@5643: ignore_extra_parameters="0" rubidium@5643: # We set all kinds of defaults for params. Later on the user can override rubidium@5643: # most of them; but if they don't, this default is used. rubidium@5643: build="" rubidium@5643: host="" rubidium@5643: cc_build="" rubidium@5643: cc_host="" celestar@5650: cxx_build="" rubidium@5643: cxx_host="" rubidium@5643: windres="" rubidium@5643: strip="" rubidium@5643: lipo="" rubidium@5643: os="DETECT" rubidium@5643: endian="AUTO" rubidium@5643: revision="" rubidium@5643: config_log="config.log" rubidium@5643: prefix_dir="/usr/local" rubidium@5643: binary_dir="games" rubidium@5643: data_dir="share/games/openttd" rubidium@5643: icon_dir="share/pixmaps" rubidium@5643: personal_dir="" rubidium@5643: custom_lang_dir="" rubidium@5643: second_data_dir="" rubidium@5643: install_dir="/" rubidium@5643: enable_install="0" rubidium@5643: enable_debug="0" rubidium@5643: enable_profiling="0" rubidium@5643: enable_dedicated="0" rubidium@5643: enable_network="1" rubidium@5643: enable_static="1" rubidium@5643: enable_translator="0" rubidium@5643: enable_assert="1" rubidium@5643: enable_strip="1" rubidium@5643: enable_universal="1" rubidium@5643: enable_osx_g5="0" rubidium@5643: with_osx_sysroot="1" rubidium@5643: with_application_bundle="1" rubidium@5643: with_sdl="1" rubidium@5643: with_cocoa="1" rubidium@5643: with_zlib="1" rubidium@5643: with_png="1" rubidium@5643: with_makedepend="1" rubidium@5643: with_direct_music="1" rubidium@5643: with_sort="1" rubidium@5643: with_iconv="1" rubidium@5643: with_midi="" rubidium@5643: with_midi_arg="" celestar@5648: with_freetype="1" rubidium@5643: with_fontconfig="1" rubidium@5643: celestar@5650: save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip lipo os revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_osx_sysroot enable_universal enable_osx_g5 with_application_bundle with_sdl with_cocoa with_zlib with_png with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_freetype with_fontconfig CC CXX CFLAGS LDFLAGS" rubidium@5643: } rubidium@5643: rubidium@5643: detect_params() { rubidium@5643: # Walk over all params from the user and override any default settings if rubidium@5643: # needed. This also handles any invalid option. celestar@5648: for p in "$@"; do celestar@5648: if [ -n "$prev_p" ]; then rubidium@5643: eval "$prev_p=\$p" rubidium@5643: prev_p= rubidium@5643: continue rubidium@5643: fi rubidium@5643: rubidium@5643: optarg=`expr "x$p" : 'x[^=]*=\(.*\)'` rubidium@5643: rubidium@5643: case "$p" in celestar@5648: --help | -h) showhelp; exit 0;; rubidium@5643: celestar@5648: --config-log) prev_p="config_log";; celestar@5648: --config-log=*) config_log="$optarg";; rubidium@5643: celestar@5648: --build) prev_p="build";; celestar@5648: --build=*) build="$optarg";; celestar@5648: celestar@5648: --host) prev_p="host";; celestar@5648: --host=*) host="$optarg";; celestar@5648: celestar@5648: --os) prev_p="os";; celestar@5648: --os=*) os="$optarg";; celestar@5648: celestar@5648: --revision=*) revision="$optarg";; celestar@5648: celestar@5648: --cc-build) prevp_p="cc_build";; celestar@5648: --cc-build=*) cc_build="$optarg";; celestar@5648: --cc-host) prevp_p="cc_host";; celestar@5648: --cc-host=*) cc_host="$optarg";; celestar@5650: --cxx-build) prevp_p="cxx_build";; celestar@5650: --cxx-build=*) cxx_build="$optarg";; celestar@5648: --cxx-host) prevp_p="cxx_host";; celestar@5648: --cxx-host=*) cxx_host="$optarg";; celestar@5648: --windres) prevp_p="windres";; celestar@5648: --windres=*) windres="$optarg";; celestar@5648: --strip) prevp_p="strip";; celestar@5648: --strip=*) strip="$optarg";; celestar@5648: --lipo) prevp_p="lipo";; celestar@5648: --lipo=*) lipo="$optarg";; celestar@5648: celestar@5648: --endian) prev_p="endian";; celestar@5648: --endian=*) endian="$optarg";; rubidium@5643: rubidium@5643: rubidium@5643: celestar@5648: --prefix-dir) prevp_p="prefix-dir";; celestar@5648: --prefix-dir=*) prefix_dir="$optarg";; rubidium@5643: celestar@5648: --binary-dir) prevp_p="binary-dir";; celestar@5648: --binary-dir=*) binary_dir="$optarg";; rubidium@5643: celestar@5648: --data-dir) prevp_p="data-dir";; celestar@5648: --data-dir=*) data_dir="$optarg";; rubidium@5643: celestar@5648: --icon-dir) prevp_p="icon-dir";; celestar@5648: --icon-dir=*) icon_dir="$optarg";; rubidium@5643: celestar@5648: --personal-dir) prevp_p="personal-dir";; celestar@5648: --personal-dir=*) personal_dir="$optarg";; celestar@5648: celestar@5648: --install-dir) prevp_p="install-dir";; celestar@5648: --install-dir=*) install_dir="$optarg";; rubidium@5643: rubidium@5643: # TODO: The next few cases will be removed when the search path patch is applied celestar@5648: --custom-lang-dir) prevp_p="custom-lang-dir";; celestar@5648: --custom-lang-dir=*) custom_lang_dir="$optarg";; rubidium@5643: celestar@5648: --second-data-dir) prevp_p="second-data-dir";; celestar@5648: --second-data-dir=*) second_data_dir="$optarg";; rubidium@5643: celestar@5648: --enable-install) enable_install="1";; celestar@5648: --enable-install=*) enable_install="$optarg";; rubidium@5643: # TODO: End of to be removed cases rubidium@5643: rubidium@5643: celestar@5648: --enable-debug) enable_debug="1";; celestar@5648: --enable-debug=*) enable_debug="$optarg";; celestar@5648: --enable-profiling) enable_profiling="1";; celestar@5648: --enable-profiling=*) enable_profiling="$optarg";; celestar@5648: --enable-dedicated) enable_dedicated="1";; celestar@5648: --enable-dedicated=*) enable_dedicated="$optarg";; celestar@5648: --enable-network=*) enable_network="$optarg";; celestar@5648: --disable-network) enable_network="0";; celestar@5648: --disable-static) enable_static="0";; celestar@5648: --enable-static) enable_static="2";; celestar@5648: --enable-static=*) enable_static="$optarg";; celestar@5648: --disable-translator) enable_translator="0";; celestar@5648: --enable-translator) enable_translator="2";; celestar@5648: --enable-translator=*) enable_translator="$optarg";; celestar@5648: --disable-assert) enable_assert="0";; celestar@5648: --enable-assert) enable_assert="2";; celestar@5648: --enable-assert=*) enable_assert="$optarg";; celestar@5648: --disable-strip) enable_strip="0";; celestar@5648: --enable-strip) enable_strip="2";; celestar@5648: --enable-strip=*) enable_strip="$optarg";; celestar@5648: --disable-universal) enable_universal="0";; celestar@5648: --enable-universal) enable_universal="2";; celestar@5648: --enable-universal=*) enable_universal="$optarg";; celestar@5648: --disable-osx-g5) enable_osx_g5="0";; celestar@5648: --enable-osx-g5) enable_osx_g5="2";; celestar@5648: --enable-osx-g5=*) enable_osx_g5="$optarg";; rubidium@5643: celestar@5648: --with-sdl) with_sdl="2";; celestar@5648: --without-sdl) with_sdl="0";; celestar@5648: --with-sdl=*) with_sdl="$optarg";; rubidium@5643: celestar@5648: --with-cocoa) with_cocoa="2";; celestar@5648: --without-cocoa) with_cocoa="0";; celestar@5648: --with-cocoa=*) with_cocoa="$optarg";; rubidium@5643: celestar@5648: --with-zlib) with_zlib="2";; celestar@5648: --without-zlib) with_zlib="0";; celestar@5648: --with-zlib=*) with_zlib="$optarg";; rubidium@5643: celestar@5648: --with-png) with_png="2";; celestar@5648: --without-png) with_png="0";; celestar@5648: --with-png=*) with_png="$optarg";; celestar@5648: --with-libpng) with_png="2";; celestar@5648: --without-libpng) with_png="0";; celestar@5648: --with-libpng=*) with_png="$optarg";; rubidium@5643: celestar@5648: --with-freetype) with_freetype="2";; celestar@5648: --without-freetype) with_freetype="0";; celestar@5648: --with-freetype=*) with_freetype="$optarg";; celestar@5648: --with-libfreetype) with_freetype="2";; celestar@5648: --without-libfreetype) with_freetype="0";; celestar@5648: --with-libfreetype=*) with_freetype="$optarg";; rubidium@5643: celestar@5648: --with-fontconfig) with_fontconfig="2";; celestar@5648: --without-fontconfig) with_fontconfig="0";; celestar@5648: --with-fontconfig=*) with_fontconfig="$optarg";; celestar@5648: --with-libfontconfig) with_fontconfig="2";; celestar@5648: --without-libfontconfig) with_fontconfig="0";; celestar@5648: --with-libfontconfig=*) with_fontconfig="$optarg";; celestar@5648: celestar@5648: --with-makedepend) with_makedepend="2";; celestar@5648: --without-makedepend) with_makedepend="0";; celestar@5648: --with-makedepend=*) with_makedepend="$optarg";; celestar@5648: celestar@5648: --with-direct-music) with_direct_music="2";; celestar@5648: --without-direct-music) with_direct_music="0";; celestar@5648: --with-direct-music=*) with_direct_music="$optarg";; celestar@5648: celestar@5648: --with-sort) with_sort="2";; celestar@5648: --without-sort) with_sort="0";; celestar@5648: --with-sort=*) with_sort="$optarg";; celestar@5648: celestar@5648: --with-iconv) with_iconv="2";; celestar@5648: --without-iconv) with_iconv="0";; celestar@5648: --with-iconv=*) with_iconv="$optarg";; celestar@5648: celestar@5648: --with-midi=*) with_midi="$optarg";; celestar@5648: --with-midi-arg=*) with_midi_arg="$optarg";; celestar@5648: celestar@5648: --without-osx-sysroot) with_osx_sysroot="0";; celestar@5648: --with-osx-sysroot) with_osx_sysroot="2";; celestar@5648: --with-osx-sysroot=*) with_osx_sysroot="$optarg";; celestar@5648: celestar@5648: --without-application-bundle) with_applicant_bundle="0";; celestar@5648: --with-application-bundle) with_applicant_bundle="1";; celestar@5648: --with-application-bundle=*) with_applicant_bundle="$optarg";; celestar@5648: celestar@5648: CC=* | --CC=*) CC="$optarg";; celestar@5648: CXX=* | --CXX=*) CXX="$optarg";; celestar@5648: CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";; celestar@5648: LDFLAGS=* | --LDFLAGS=*) LDFLAGS="$optarg";; celestar@5648: celestar@5648: --ignore-extra-parameters) ignore_extra_parameters="1";; rubidium@5643: rubidium@5643: --*) celestar@5648: if [ "$ignore_extra_parameters" = "0" ]; then rubidium@5643: echo "Unknown option $p" rubidium@5643: exit 1 rubidium@5643: else rubidium@5643: echo "Unknown option $p ignored" rubidium@5643: fi rubidium@5643: ;; rubidium@5643: esac rubidium@5643: done rubidium@5643: celestar@5648: if [ -n "$prev_p" ]; then rubidium@5643: echo "configure: error: missing argument to --$prev_p" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: # Clean the logfile rubidium@5643: echo "" > $config_log rubidium@5643: } rubidium@5643: rubidium@5643: save_params() { rubidium@5643: # Here we save all params, so we can later on do an exact redo of this rubidium@5643: # configuration, without having the user to re-input stuff rubidium@5643: rubidium@5643: echo "Running configure with following options:" >> $config_log rubidium@5643: echo "" >> $config_log rubidium@5643: rubidium@5643: configure="$0 --ignore-extra-parameters" celestar@5648: for p in $save_params_array; do celestar@5648: eval "v=\"\$$p\"" rubidium@5643: p=`echo "$p" | sed 's/_/-/g;s/\n//g;'` rubidium@5643: # Only save those params that aren't empty celestar@5648: configure="$configure --$p=\"$v\"" rubidium@5643: done rubidium@5643: rubidium@5643: echo "$configure" >> $config_log rubidium@5643: echo "$configure" > config.cache rubidium@5643: echo "" >> $config_log rubidium@5643: } rubidium@5643: rubidium@5643: check_params() { rubidium@5643: # Some params want to be in full uppercase, else they might not work as rubidium@5643: # expected.. fix that here rubidium@5643: rubidium@5643: endian=`echo $endian | tr [:lower:] [:upper:]` rubidium@5643: os=`echo $os | tr [:lower:] [:upper:]` rubidium@5643: rubidium@5643: # Check if all params have valid values rubidium@5643: rubidium@5643: # Endian only allows AUTO, LE and, BE celestar@5648: if ! echo $endian | grep -Eq "^(AUTO|LE|BE)$"; then rubidium@5643: echo "configure: error: invalid option --endian=$endian" rubidium@5643: echo " Available options are: --endian=[AUTO|LE|BE]" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: # OS only allows DETECT, UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, and MINGW, OS2 celestar@5648: if ! echo $os | grep -Eq "^(DETECT|UNIX|OSX|FREEBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2)$"; then rubidium@5643: echo "configure: error: invalid option --os=$os" rubidium@5643: echo " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|MORPHOS|BEOS|SUNOS|CYGWIN|MINGW|OS2]" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: # enable_debug should be between 0 and 4 celestar@5648: if ! echo $enable_debug | grep -q "^[0123]$"; then rubidium@5643: echo "configure: error: invalid option --enable-debug=$enable_debug" rubidium@5643: echo " Available options are: --enable-debug[=0123]" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: check_build rubidium@5643: check_host rubidium@5643: rubidium@5643: detect_os rubidium@5643: rubidium@5643: # We might enable universal builds always on OSX targets.. but currently we don't celestar@5648: # if [ "$enable_universal" = "1" ] && [ "$os" != "OSX" ]; then celestar@5648: if [ "$enable_universal" = "1" ]; then rubidium@5643: enable_universal="0" rubidium@5643: fi celestar@5648: if [ "$enable_universal" = "2" ] && [ "$os" != "OSX" ]; then rubidium@5643: log 1 "configure: error: --enable-universal only works on OSX" rubidium@5643: exit 1 rubidium@5643: fi celestar@5648: if [ "$enable_universal" = "0" ]; then rubidium@5643: log 1 "checking universal build... no" rubidium@5643: else rubidium@5643: log 1 "checking universal build... yes" rubidium@5643: fi rubidium@5643: rubidium@5643: # Already detected by check_build rubidium@5643: log 1 "checking for build gcc... $cc_build" rubidium@5643: log 1 "checking for host gcc... $cc_host" rubidium@5643: celestar@5650: check_cxx_build celestar@5650: check_cxx_host rubidium@5643: check_windres rubidium@5643: check_strip rubidium@5643: check_lipo rubidium@5643: check_makedepend rubidium@5643: celestar@5648: if [ "$enable_static" = "1" ]; then celestar@5648: if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "OSX" ]; then rubidium@5643: enable_static="2" rubidium@5643: else rubidium@5643: enable_static="0" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_static" != "0" ]; then rubidium@5643: log 1 "checking for static... yes" rubidium@5643: celestar@5648: if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ]; then rubidium@5643: log 1 "WARNING: static is only known to work on Windows, MacOSX and MorphOS" rubidium@5643: log 1 "WARNING: use static at your own risk on this platform" rubidium@5643: rubidium@5643: sleep 5 rubidium@5643: fi rubidium@5643: else rubidium@5643: log 1 "checking for static... no" rubidium@5643: fi rubidium@5643: rubidium@5643: # Show what we configured celestar@5648: if [ "$enable_debug" = "0" ]; then rubidium@5643: log 1 "using debug level... no" celestar@5648: elif [ "$enable_profiling" != "0" ]; then rubidium@5643: log 1 "using debug level... profiling (debug level $enable_debug)" rubidium@5643: else rubidium@5643: log 1 "using debug level... level $enable_debug" rubidium@5643: fi rubidium@5643: rubidium@5643: detect_sdl rubidium@5643: detect_cocoa rubidium@5643: celestar@5648: if [ "$enable_dedicated" != "0" ]; then rubidium@5643: log 1 "checking GDI video driver... skipping" rubidium@5643: log 1 "checking dedicated... found" rubidium@5643: celestar@5648: if [ "$enable_network" = "0" ]; then rubidium@5643: log 1 "WARNING: compiling a dedicated server without network is pointless" rubidium@5643: sleep 5 rubidium@5643: fi rubidium@5643: else celestar@5648: if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then rubidium@5643: log 1 "checking GDI video driver... found" rubidium@5643: else rubidium@5643: log 1 "checking GDI video driver... not Windows, skipping" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then rubidium@5643: log 1 "WARNING: no video driver found, building dedicated only" rubidium@5643: enable_dedicated="1" rubidium@5643: sleep 1 rubidium@5643: rubidium@5643: log 1 "checking dedicated... found" rubidium@5643: else rubidium@5643: log 1 "checking dedicated... not selected" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_network" != "0" ]; then rubidium@5643: log 1 "checking network... found" rubidium@5643: else rubidium@5643: log 1 "checking network... disabled" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_translator" != "0" ]; then rubidium@5643: log 1 "checking translator... debug" rubidium@5645: # -t shows TODO items, normally they are muted rubidium@5645: strgen_flags="-t" rubidium@5643: else rubidium@5643: log 1 "checking translator... no" rubidium@5645: strgen_flags="" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_assert" != "0" ]; then rubidium@5643: log 1 "checking assert... enabled" rubidium@5643: else rubidium@5643: log 1 "checking assert... disabled" rubidium@5643: fi rubidium@5643: rubidium@5643: detect_zlib rubidium@5643: detect_png rubidium@5643: detect_freetype rubidium@5643: detect_fontconfig rubidium@5643: detect_iconv rubidium@5643: celestar@5648: if [ "$with_direct_music" = "1" ] || [ "$with_direct_music" = "2" ]; then celestar@5648: if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then celestar@5648: if [ "$with_direct_music" = "2" ]; then rubidium@5643: log 1 "configure: error: direct-music is only supported on Win32 targets" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: with_direct_music="0" rubidium@5643: rubidium@5643: log 1 "checking direct-music... not Windows, skipping" rubidium@5643: else rubidium@5643: check_direct_music rubidium@5643: fi rubidium@5643: fi rubidium@5643: rubidium@5643: detect_sort rubidium@5643: celestar@5648: if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then rubidium@5643: endian="PREPROCESSOR" rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking endianess... $endian" rubidium@5643: rubidium@5643: # Suppress language errors when there is a version defined, indicating a release rubidium@5643: # It just isn't pretty if any release produces warnings in the languages. celestar@5648: if [ -f "$ROOT_DIR/version" ]; then rubidium@5643: lang_suppress="yes" rubidium@5643: log 1 "suppress language errors... yes" rubidium@5643: else rubidium@5643: lang_suppress="" rubidium@5643: log 1 "suppress language errors... no" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then celestar@5648: if [ "$os" = "MORPHOS" ]; then rubidium@5643: strip_arg="--strip-all --strip-unneeded --remove-section .comment" celestar@5648: elif [ "$os" = "OSX" ]; then rubidium@5643: strip_arg="" celestar@5648: elif [ "$os" = "OS2" ]; then celestar@5648: strip_arg="" celestar@5648: # OS2 uses strip via gcc, because it needs to be feed to emxbind celestar@5648: LDFLAGS="$LDFLAGS -s" rubidium@5643: else rubidium@5643: strip_arg="-s" rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking stripping... $strip $strip_arg" rubidium@5643: else rubidium@5643: strip="" rubidium@5643: log 1 "checking stripping... skipped" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then celestar@5648: if [ "$with_osx_sysroot" = "1" ]; then rubidium@5643: with_osx_sysroot="0" rubidium@5643: rubidium@5643: log 1 "checking OSX sysroot... not OSX, skipping" rubidium@5643: else rubidium@5643: log 1 "configure: error: --with-osx-sysroot only works if OSX is the target" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_osx_sysroot" != "0" ]; then celestar@5648: if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then rubidium@5643: log 1 "checking OSX sysroot... $with_osx_sysroot" rubidium@5643: else rubidium@5643: # If autodetect and no universal, use system default celestar@5648: if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then rubidium@5643: log 1 "checking OSX sysroot... no (use system default)" rubidium@5643: with_osx_sysroot="0" rubidium@5643: else celestar@5648: log 1 "checking OSX sysroot... automatically" rubidium@5643: with_osx_sysroot="3" rubidium@5643: fi rubidium@5643: fi rubidium@5643: else celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: log 1 "checking OSX sysroot... no (use system default)" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then celestar@5648: if [ "$with_application_bundle" = "1" ]; then rubidium@5643: with_application_bundle="0" rubidium@5643: rubidium@5643: log 1 "checking OSX application bundle... not OSX, skipping" rubidium@5643: else rubidium@5643: log 1 "configure: error: --with-application-bundle only works if OSX is the target" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then rubidium@5643: OSXAPP="OpenTTD.app" rubidium@5643: rubidium@5643: # TODO: remove next few lines of code when the search path patch has been applied celestar@5648: if [ -n "$custom_lang_dir" ] && [ "$custom_lang_dir" != "$(OSXAPP)/Contents/Lang/" ]; then rubidium@5643: log 1 "configure: error: --custom-lang-dir and --with-application-bundle are not compatible rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$custom_lang_dir" ] && [ "$second_data_dir" != "$(OSXAPP)/Contents/Data/" ]; then rubidium@5643: log 1 "configure: error: --second-data-dir and --with-application-bundle are not compatible rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: custom_lang_dir="${OSXAPP}/Contents/Lang/" rubidium@5643: second_data_dir="${OSXAPP}/Contents/Data/" rubidium@5643: # TODO: remove till here rubidium@5643: else rubidium@5643: OSXAPP="" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: # Test on G5 rubidium@5643: celestar@5648: if [ "$enable_osx_g5" != "0" ]; then rubidium@5643: log 1 "detecting G5... yes (forced)" rubidium@5643: else rubidium@5643: # First, are we a real OSX system, else we can't detect it rubidium@5643: native=`LC_ALL=C uname | tr [:upper:] [:lower:] | grep darwin` rubidium@5643: # If $host doesn't match $build , we are cross-compiling celestar@5648: if [ -n "$native" ] && [ "$build" != "$host" ]; then celestar@5650: $cc_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector rubidium@5643: res=`./G5_detector` rubidium@5643: rm -f G5_detector celestar@5648: if [ -n "$res" ]; then rubidium@5643: # This is G5, add flags for it rubidium@5643: enable_osx_g5="2" rubidium@5643: rubidium@5643: log 1 "detecting G5... yes" rubidium@5643: else rubidium@5643: enable_osx_g5="0" rubidium@5643: rubidium@5643: log 1 "detecting G5... no" rubidium@5643: fi rubidium@5643: else rubidium@5643: enable_osx_g5="0" rubidium@5643: rubidium@5643: log 1 "detecting G5... no (cross-compiling)" rubidium@5643: fi rubidium@5643: fi rubidium@5643: else celestar@5648: if [ "$enable_osx_g5" != "0" ]; then rubidium@5643: log 1 "configure: error: OSX G5 selected, but not compiling for OSX" rubidium@5643: log 1 "configure: error: either select OSX as OS, or deselect OSX G5" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: make_cflags_and_ldflags() { rubidium@5643: # General CFlags for BUILD rubidium@5643: CFLAGS_BUILD="" rubidium@5643: # General CFlags for HOST rubidium@5643: CFLAGS="$CFLAGS -D$os -DWITH_REV" rubidium@5643: # CFlags for HOST and C-Compiler rubidium@5643: CC_FLAGS="" rubidium@5643: # Libs to compile. In fact this is just LDFLAGS rubidium@5643: LIBS="-lstdc++" rubidium@5643: # LDFLAGS used for HOST rubidium@5643: LDFLAGS="$LDFLAGS" rubidium@5643: celestar@5648: if [ $enable_debug = 0 ]; then celestar@5648: # No debug, add default stuff rubidium@5643: OBJS_SUBDIR="release" celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: # these compilerflags makes the app run as fast as possible without making the app unstable. It works on G3 or newer rubidium@5643: CFLAGS="$CFLAGS -O3 -funroll-loops -fsched-interblock -falign-loops=16 -falign-jumps=16 -falign-functions=16 -falign-jumps-max-skip=15 -falign-loops-max-skip=15 -mdynamic-no-pic" rubidium@5643: else celestar@5648: if [ "$os" = "MORPHOS" ]; then rubidium@5643: CFLAGS="$CFLAGS -I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations" rubidium@5643: CFLAGS="$CFLAGS -mcpu=604 -fno-inline -mstring -mmultiple" rubidium@5643: fi rubidium@5643: rubidium@5643: CFLAGS="$CFLAGS -O2 -fomit-frame-pointer" rubidium@5643: fi celestar@5648: else celestar@5648: OBJS_SUBDIR="debug" rubidium@5643: celestar@5648: # Each debug level reduces the optimalization by a bit celestar@5648: if [ $enable_debug -ge 1 ]; then celestar@5648: CFLAGS="$CFLAGS -g -D_DEBUG" rubidium@5643: fi celestar@5648: if [ $enable_debug -ge 2 ]; then celestar@5648: CFLAGS="$CFLAGS -fno-inline" rubidium@5643: fi celestar@5648: if [ $enable_debug -ge 3 ]; then celestar@5648: CFLAGS="$CFLAGS -O0" celestar@5648: else celestar@5648: CFLAGS="$CFLAGS -O2" celestar@5648: fi celestar@5648: fi celestar@5648: celestar@5648: if [ "$enable_profiling" != "0" ]; then celestar@5648: CFLAGS="$CFLAGS -p" celestar@5648: LDFLAGS="$LDFLAGS -pg" rubidium@5643: fi rubidium@5643: rubidium@5643: # Enable some things only for certain GCC versions rubidium@5643: cc_version=`$cc_host -dumpversion | cut -c 1,3` rubidium@5643: celestar@5648: if [ $cc_version -ge 29 ]; then celestar@5648: CFLAGS="$CFLAGS -Wall -Wno-multichar -Wsign-compare -Wundef" rubidium@5643: CFLAGS="$CFLAGS -Wwrite-strings -Wpointer-arith" rubidium@5643: rubidium@5643: CC_CFLAGS="$CC_CFLAGS -Wstrict-prototypes" rubidium@5643: fi rubidium@5643: celestar@5648: if [ $cc_version -ge 30 ]; then rubidium@5643: CFLAGS="$CFLAGS -W -Wno-unused-parameter" rubidium@5643: fi rubidium@5643: celestar@5648: if [ $cc_version -ge 34 ]; then rubidium@5643: CC_CFLAGS="$CC_CFLAGS -Wdeclaration-after-statement -Wold-style-definition" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "CYGWIN" ]; then rubidium@5643: CFLAGS="$CFLAGS -mwin32" rubidium@5643: LDFLAGS="$LDFLAGS -mwin32" rubidium@5643: fi celestar@5648: if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then rubidium@5643: CFLAGS="$CFLAGS -mno-cygwin" rubidium@5643: LDFLAGS="$LDFLAGS -mno-cygwin" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "CYGWIN" ] || [ "$os" = "MINGW" ]; then rubidium@5643: LDFLAGS="$LDFLAGS -Wl,--subsystem,windows" rubidium@5643: LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" != "CYGWIN" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ]; then rubidium@5643: LIBS="$LIBS -lpthread" rubidium@5643: LIBS="$LIBS -lrt" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" != "CYGWIN" ] && [ "$os" != "MINGW" ]; then rubidium@5643: LIBS="$LIBS -lc" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "MORPHOS" ]; then rubidium@5643: # -Wstrict-prototypes generates much noise because of system headers rubidium@5643: CFLAGS="$CFLAGS -Wno-strict-prototypes" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: LDFLAGS="$LDFLAGS -framework Cocoa" celestar@5648: if [ "$enable_dedicated" = "0" ]; then rubidium@5643: LIBS="$LIBS -framework QuickTime" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "BEOS" ]; then rubidium@5643: LIBS="$LIBS -lmidi -lbe" rubidium@5643: fi rubidium@5643: rubidium@5643: # Most targets act like UNIX, just with some additions celestar@5648: if [ "$os" = "BEOS" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then rubidium@5643: CFLAGS="$CFLAGS -DUNIX" rubidium@5643: fi rubidium@5643: # And others like Windows celestar@5648: if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWIN" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$sdl_config" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWITH_SDL" rubidium@5643: CFLAGS="$CFLAGS `$sdl_config --cflags`" celestar@5648: if [ "$enable_static" != "0" ]; then rubidium@5643: LIBS="$LIBS `$sdl_config --static-libs`" rubidium@5643: else rubidium@5643: LIBS="$LIBS `$sdl_config --libs`" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_cocoa" != "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWITH_COCOA" rubidium@5643: LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_zlib" != "0" ]; then celestar@5648: if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then rubidium@5643: LIBS="$LIBS $zlib" rubidium@5643: else rubidium@5643: LIBS="$LIBS -lz" rubidium@5643: fi rubidium@5643: CFLAGS="$CFLAGS -DWITH_ZLIB" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$png_config" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWITH_PNG" rubidium@5643: CFLAGS="$CFLAGS `$png_config --cppflags --I_opts | tr '\n\r' ' '`" rubidium@5643: rubidium@5643: # The extra flags are unneeded for latest libpng-config, but some versions are so broken... celestar@5648: if [ "$enable_static" != "0" ]; then celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: LIBS="$LIBS `$png_config --prefix`/lib/libpng.a" rubidium@5643: else rubidium@5643: LIBS="$LIBS `$png_config --static --ldflags --libs --L_opts | tr '\n\r' ' '`" rubidium@5643: fi rubidium@5643: else rubidium@5643: LIBS="$LIBS `$png_config --ldflags --libs --L_opts | tr '\n\r' ' '`" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$freetype_config" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWITH_FREETYPE" rubidium@5643: CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`" rubidium@5643: celestar@5648: if [ "$enable_static" != "0" ]; then celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: LIBS="$LIBS `$freetype_config --prefix`/lib/libfreetype.a" rubidium@5643: else rubidium@5643: # Is it possible to do static with freetype, if so: how? rubidium@5643: LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`" rubidium@5643: fi rubidium@5643: else rubidium@5643: LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$fontconfig_config" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWITH_FONTCONFIG" rubidium@5643: CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' ' '`" rubidium@5643: celestar@5648: if [ "$enable_static" != "0" ]; then celestar@5648: if [ "$os" = "OSX" ]; then rubidium@5643: LIBS="$LIBS `$fontconfig_config --prefix`/lib/libfontconfig.a" rubidium@5643: else rubidium@5643: LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`" rubidium@5643: fi rubidium@5643: else rubidium@5643: LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' ' '`" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_direct_music" != "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_iconv" != "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -DWITH_ICONV" rubidium@5643: LIBS="$LIBS -liconv" celestar@5648: if [ "$with_iconv" != "2" ]; then rubidium@5643: CFLAGS="$CFLAGS -I$with_iconv/include" rubidium@5643: LIBS="$LIBS -L$with_iconv/lib" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$with_midi" ]; then celestar@5648: CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\"" rubidium@5643: fi celestar@5648: if [ -n "$with_midi_arg" ]; then celestar@5648: CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\"" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_dedicated" != "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -DDEDICATED" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_network" != "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -DENABLE_NETWORK" rubidium@5643: celestar@5648: if [ "$os" = "BEOS" ]; then rubidium@5643: LDFLAGS="$LDFLAGS -lbind -lsocket" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" = "SUNOS" ]; then rubidium@5643: LDFLAGS="$LDFLAGS -lnsl -lsocket" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_static" != "0" ]; then rubidium@5643: # OSX can't handle -static in LDFLAGS celestar@5648: if [ "$os" != "OSX" ]; then rubidium@5643: LDFLAGS="$LDFLAGS -static" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_assert" = "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -DNDEBUG" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_osx_g5" != "0" ]; then rubidium@5643: CFLAGS="$CFLAGS -mtune=970 -mcpu=970 -mpowerpc-gpopt" rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_osx_sysroot" != "0" ] && [ "$with_osx_sysroot" != "3" ]; then rubidium@5643: CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX$with_osx_sysroot.sdk" rubidium@5643: LDFLAGS="$LDFLAGS -Wl,-syslibroot,/Developer/SDKs/MacOSX$with_osx_sysroot.sdk" rubidium@5643: fi rubidium@5643: rubidium@5643: # TODO: remove next few lines of code when the search path patch has been applied celestar@5648: if [ -n "$second_data_dir" ]; then rubidium@5643: CFLAGS="$CFLAGS -DSECOND_DATA_DIR=\\\\\"$second_data_dir\\\\\"" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$custom_lang_dir" ]; then rubidium@5643: CFLAGS="$CFLAGS -DCUSTOM_LANG_DIR=\\\\\"$custom_lang_dir\\\\\"" rubidium@5643: fi rubidium@5643: # TODO: remove till here rubidium@5643: celestar@5648: if [ "$enable_install" = "1" ]; then celestar@5648: if [ -n "$personal_dir" ]; then rubidium@5643: CFLAGS="$CFLAGS -DUSE_HOMEDIR=1 -DPERSONAL_DIR=\\\\\"$personal_dir/\\\\\"" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$data_dir" ]; then rubidium@5643: CFLAGS="$CFLAGS -DGAME_DATA_DIR=\\\\\"$prefix_dir/$data_dir/\\\\\"" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$icon_dir" ]; then rubidium@5643: CFLAGS="$CFLAGS -DICON_DIR=\\\\\"$prefix_dir/$icon_dir/\\\\\"" rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$revision" ]; then rubidium@5643: log 1 "checking revision... $revision" rubidium@5643: log 1 "WARNING: we do not advise you to use this setting" rubidium@5643: log 1 "WARNING: in most cases it is not safe for network use" rubidium@5643: log 1 "WARNING: USE WITH CAUTION!" rubidium@5643: rubidium@5643: sleep 5 celestar@5648: elif [ -f "$ROOT_DIR/version" ]; then rubidium@5643: revision="`cat $ROOT_DIR/version`" rubidium@5643: rubidium@5643: log 1 "checking revision... $revision" rubidium@5643: else rubidium@5643: revision="" rubidium@5643: rubidium@5643: log 1 "checking revision... svn detection" rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "using CFLAGS... $CFLAGS $CC_CFLAGS" rubidium@5643: log 1 "using LDFLAGS... $LIBS $LDFLAGS" rubidium@5643: rubidium@5643: # Makedepend doesn't like something like: -isysroot /OSX/blabla rubidium@5643: # so convert it to: -isysroot -OSX/blabla. makedepend just ignores rubidium@5643: # any - command it doesn't know, so we are pretty save. rubidium@5643: # Lovely hackish, not? rubidium@5643: # Btw, this almost always comes from outside the configure, so it is rubidium@5643: # not something we can control. celestar@5648: if [ "$with_makedepend" != "0" ]; then rubidium@5643: cflags_makedep="` echo "$CFLAGS" | sed 's# /# -#g'`" rubidium@5643: else rubidium@5643: makedepend="" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: check_compiler() { rubidium@5643: # Params: rubidium@5643: # $1 - Type for message (build / host) rubidium@5643: # $2 - What to fill with the found compiler rubidium@5643: # $3 - System to try rubidium@5643: # $4 - Compiler to try rubidium@5643: # $5 - Env-setting to try rubidium@5643: # $6 - GCC alike to try rubidium@5643: # $7 - CC alike to try rubidium@5643: # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo rubidium@5643: # $9 - What the command is to check for rubidium@5643: celestar@5648: if [ -n "$3" ]; then rubidium@5643: # Check for system rubidium@5643: machine=`$3-$6 $9 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: eval "$2=$3-$6" rubidium@5643: rubidium@5643: log 2 "executing $3-$6 $9" rubidium@5643: log 2 " returned $machine" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then rubidium@5643: log 1 "checking $1... $3-$6 not found" rubidium@5643: log 1 "I couldn't detect any $6 binary for $3" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then rubidium@5643: log 1 "checking $1... expected $3, found $machine" rubidium@5643: log 1 "the compiler suggests it doesn't build code for the machine you specified" rubidium@5643: exit 1 rubidium@5643: fi celestar@5648: elif [ -n "$4" ]; then rubidium@5643: # Check for manual compiler rubidium@5643: machine=`$4 $9 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: eval "$2=$4" rubidium@5643: rubidium@5643: log 2 "executing $4 $9" rubidium@5643: log 2 " returned $machine" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then rubidium@5643: log 1 "checking $1... $4 not found" rubidium@5643: log 1 "the selected binary doesn't seem to be a $6 binary" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: else rubidium@5643: # Nothing given, autodetect rubidium@5643: celestar@5648: if [ -n "$5" ]; then rubidium@5643: machine=`$5 $9 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: eval "$2=$5" rubidium@5643: rubidium@5643: log 2 "executing $5 $9" rubidium@5643: log 2 " returned $machine" rubidium@5643: log 2 " exit code $ret" rubidium@5643: rubidium@5643: # The user defined a GCC that doesn't reply to $9.. abort celestar@5648: if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then rubidium@5643: log 1 "checking $1... $5 unusable" rubidium@5643: log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary" rubidium@5643: log 1 "please redefine the CC/CXX environment to a $6 binary" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: else rubidium@5643: log 2 "checking $1... CC/CXX not set (skipping)" rubidium@5643: rubidium@5643: # No $5, so try '$6' rubidium@5643: machine=`$6 $9 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: eval "$2=$6" rubidium@5643: rubidium@5643: log 2 "executing $6 $9" rubidium@5643: log 2 " returned $machine" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then rubidium@5643: # Maybe '$7'? rubidium@5643: machine=`$7 $9 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: eval "$2=$7" rubidium@5643: rubidium@5643: log 2 "executing $7 $9" rubidium@5643: log 2 " returned $machine" rubidium@5643: log 2 " exit code $ret" rubidium@5643: rubidium@5643: # All failed, abort celestar@5648: if [ -z "$machine" ]; then rubidium@5643: log 1 "checking $1... $6 not found" rubidium@5643: log 1 "I couldn't detect any $6 binary on your system" rubidium@5643: log 1 "please define the CC/CXX environment to where it is located" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: fi rubidium@5643: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$8" != "0" ]; then rubidium@5643: eval "res=\$$2" rubidium@5643: log 1 "checking $1... $res" rubidium@5643: else rubidium@5643: log 1 "checking $1... $machine" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: check_build() { rubidium@5643: check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine" rubidium@5643: } rubidium@5643: rubidium@5643: check_host() { rubidium@5643: # By default the host is the build rubidium@5643: if [ -z "$host" ]; then host="$build"; fi rubidium@5643: check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine" rubidium@5643: } rubidium@5643: celestar@5650: check_cxx_build() { celestar@5650: check_compiler "build g++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine" celestar@5650: } celestar@5650: celestar@5650: check_cxx_host() { celestar@5650: # By default the host is the build celestar@5650: if [ -z "$host" ]; then host="$build"; fi rubidium@5643: check_compiler "host g++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine" rubidium@5643: } rubidium@5643: rubidium@5643: check_windres() { celestar@5648: if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then rubidium@5643: check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: check_strip() { celestar@5648: if [ "$os" = "OS2" ]; then celestar@5648: # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly celestar@5648: echo "checking for host strip... using gcc -s option" celestar@5648: elif [ "$os" = "OSX" ]; then rubidium@5643: # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something rubidium@5643: echo "int main(int argc, char *argv[]) { }" > strip.test.c rubidium@5643: $cc_host strip.test.c -o strip.test rubidium@5643: check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test" rubidium@5643: rm -f strip.test.c strip.test rubidium@5643: else rubidium@5643: check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: check_lipo() { celestar@5648: if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then rubidium@5643: echo "int main(int argc, char *argv[]) { }" > lipo.test.c rubidium@5643: $cc_host lipo.test.c -o lipo.test rubidium@5643: check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test" rubidium@5643: rm -f lipo.test.c lipo.test rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: check_direct_music() { rubidium@5643: echo " rubidium@5643: #include rubidium@5643: #include rubidium@5643: #include rubidium@5643: #include rubidium@5643: #include rubidium@5643: int main(int argc, char *argv[]) { }" > direct_music.test.c rubidium@5643: $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null rubidium@5643: res=$? rubidium@5643: rm -f direct_music.test.c direct_music.test rubidium@5643: celestar@5648: if [ "$res" != "0" ]; then celestar@5648: if [ "$with_direct_music" = "2" ]; then rubidium@5643: log 1 "configure: error: direct-music is not available on this system" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: with_direct_music="0" rubidium@5643: rubidium@5643: log 1 "checking direct-music... not found" rubidium@5643: else rubidium@5643: log 1 "checking direct-music... found" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: check_makedepend() { celestar@5648: if [ "$with_makedepend" = "0" ]; then rubidium@5643: log 1 "checking makedepend... disabled" rubidium@5643: return rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then rubidium@5643: makedepend="makedepend" rubidium@5643: else rubidium@5643: makedepend="$with_makedepend" rubidium@5643: fi rubidium@5643: rubidium@5643: rm -f makedepend.tmp rubidium@5643: touch makedepend.tmp rubidium@5643: res=`$makedepend -fmakedepend.tmp 2>/dev/null` rubidium@5643: res=$? rubidium@5643: log 2 "executing $makedepend -f makedepend.tmp" rubidium@5643: log 2 " returned `cat makedepend.tmp`" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if [ ! -s makedepend.tmp ]; then rubidium@5643: rm -f makedepend.tmp makedepend.tmp.bak rubidium@5643: celestar@5648: if [ "$with_makedepend" = "2" ]; then rubidium@5643: log 1 "checking makedepend... not found" rubidium@5643: rubidium@5643: log 1 "I couldn't detect any makedepend on your system" rubidium@5643: log 1 "please locate it via --makedepend=[binary]" rubidium@5643: rubidium@5643: exit 1 celestar@5648: elif [ "$with_makedepend" != "1" ]; then rubidium@5643: log 1 "checking makedepend... $makedepend not found" rubidium@5643: rubidium@5643: log 1 "the selected file doesn't seem to be a valid makedepend binary" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: else rubidium@5643: log 1 "checking makedepend... not found" rubidium@5643: rubidium@5643: with_makedepend="0" rubidium@5643: return rubidium@5643: fi rubidium@5643: fi rubidium@5643: rubidium@5643: rm -f makedepend.tmp makedepend.tmp.bak rubidium@5643: rubidium@5643: log 1 "checking makedepend... $makedepend" rubidium@5643: } rubidium@5643: rubidium@5643: detect_os() { celestar@5648: if [ $os = "DETECT" ]; then rubidium@5643: # Detect UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW and OS2 rubidium@5643: rubidium@5643: # Try first via dumpmachine, then via uname rubidium@5643: os=`echo "$host" | tr [:upper:] [:lower:] | awk ' rubidium@5643: /linux/ { print "UNIX"; exit} rubidium@5643: /darwin/ { print "OSX"; exit} rubidium@5643: /freebsd/ { print "FREEBSD"; exit} rubidium@5643: /morphos/ { print "MORPHOS"; exit} rubidium@5643: /beos/ { print "BEOS"; exit} rubidium@5643: /sunos/ { print "SUNOS"; exit} rubidium@5643: /cygwin/ { print "CYGWIN"; exit} rubidium@5643: /mingw/ { print "MINGW"; exit} celestar@5648: /os2/ { print "OS2"; exit} rubidium@5643: '` rubidium@5643: celestar@5648: if [ -z "$os" ]; then rubidium@5643: os=`LC_ALL=C uname | tr [:upper:] [:lower:] | awk ' rubidium@5643: /linux/ { print "UNIX"; exit} rubidium@5643: /darwin/ { print "OSX"; exit} rubidium@5643: /freebsd/ { print "FREEBSD"; exit} rubidium@5643: /morphos/ { print "MORPHOS"; exit} rubidium@5643: /beos/ { print "BEOS"; exit} rubidium@5643: /sunos/ { print "SUNOS"; exit} rubidium@5643: /cygwin/ { print "CYGWIN"; exit} rubidium@5643: /mingw/ { print "MINGW"; exit} rubidium@5643: /os\/2/ { print "OS2"; exit} rubidium@5643: '` rubidium@5643: fi rubidium@5643: celestar@5648: if [ -z "$os" ]; then rubidium@5643: log 1 "detecting OS... none detected" rubidium@5643: log 1 "I couldn't detect your OS. Please use --with-os=OS to force one" rubidium@5643: log 1 "Allowed values are: UNIX, OSX, FREEBSD, MORPHOS, BEOS, SUNOS, CYGWIN, and MINGW" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "detecting OS... $os" rubidium@5643: else rubidium@5643: log 1 "forcing OS... $os" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: detect_sdl() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_sdl" = "0" ]; then rubidium@5643: log 1 "checking SDL... disabled" rubidium@5643: rubidium@5643: sdl_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then rubidium@5643: log 1 "configure: error: it is impossible to compile both SDL and COCOA" rubidium@5643: log 1 "configure: error: please deselect one of them and try again" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then rubidium@5643: log 1 "configure: error: it is impossible to compile a dedicated with SDL" rubidium@5643: log 1 "configure: error: please deselect one of them and try again" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_dedicated" != "0" ]; then rubidium@5643: log 1 "checking SDL... skipping" rubidium@5643: rubidium@5643: sdl_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: # By default on OSX we don't use SDL. The rest is auto-detect celestar@5648: if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then rubidium@5643: log 1 "checking SDL... OSX, skipping" rubidium@5643: rubidium@5643: sdl_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_sdl" = "1" ] || [ "$with_sdl" = "" ] || [ "$with_sdl" = "2" ]; then celestar@5648: sdl_config="sdl-config" rubidium@5643: else rubidium@5643: sdl_config="$with_sdl" rubidium@5643: fi rubidium@5643: rubidium@5643: version=`$sdl_config --version 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: log 2 "executing $sdl_config --version" rubidium@5643: log 2 " returned $version" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if [ -z "$version" ] || [ "$ret" != "0" ]; then rubidium@5643: log 1 "checking SDL... not found" rubidium@5643: rubidium@5643: # It was forced, so it should be found. celestar@5648: if [ "$with_sdl" != "1" ]; then rubidium@5643: log 1 "configure: error: sdl-config couldn't be found" rubidium@5643: log 1 "configure: error: you supplied '$with_sdl', but it seems invalid" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: sdl_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking SDL... found" rubidium@5643: } rubidium@5643: rubidium@5643: detect_cocoa() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_cocoa" = "0" ]; then rubidium@5643: log 1 "checking COCOA... disabled" rubidium@5643: rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then rubidium@5643: log 1 "configure: error: it is impossible to compile a dedicated with COCOA" rubidium@5643: log 1 "configure: error: please deselect one of them and try again" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$enable_dedicated" != "0" ]; then rubidium@5643: log 1 "checking COCOA... skipping" rubidium@5643: rubidium@5643: with_cocoa="0" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: # By default on OSX we use COCOA. The rest doesn't support it celestar@5648: if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then rubidium@5643: log 1 "checking COCOA... not OSX, skipping" rubidium@5643: rubidium@5643: with_cocoa="0" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$os" != "OSX" ]; then rubidium@5643: log 1 "checking COCOA... not OSX" rubidium@5643: rubidium@5643: log 1 "configure: error: COCOA video driver is only supported for OSX" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking COCOA... found" rubidium@5643: } rubidium@5643: rubidium@5643: detect_zlib() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_zlib" = "0" ]; then rubidium@5643: log 1 "checking zlib... disabled" rubidium@5643: rubidium@5643: zlib="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: log 2 "detecting zlib" rubidium@5643: celestar@5648: if [ "$with_zlib" = "1" ] || [ "$with_zlib" = "" ] || [ "$with_zlib" = "2" ]; then rubidium@5643: zlib=`ls -1 /usr/include/*.h 2>/dev/null | grep "\/zlib.h$"` celestar@5648: if [ -z "$zlib" ]; then rubidium@5643: log 2 " trying /usr/include/zlib.h... no" rubidium@5643: zlib=`ls -1 /usr/local/include/*.h 2>/dev/null | grep "\/zlib.h$"` rubidium@5643: fi celestar@5648: if [ -z "$zlib" ]; then rubidium@5643: log 2 " trying /usr/local/include/zlib.h... no" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -n "$zlib" ] && [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then rubidium@5643: log 2 " trying $zlib... found" rubidium@5643: # Now find the static lib, if needed rubidium@5643: zlib=`ls /lib/*.a 2>/dev/null | grep "\/libz.a$"` celestar@5648: if [ -z "$zlib" ]; then rubidium@5643: log 2 " trying /lib/libz.a... no" rubidium@5643: zlib=`ls /usr/lib/*.a 2>/dev/null | grep "\/libz.a$"` rubidium@5643: fi celestar@5648: if [ -z "$zlib" ]; then rubidium@5643: log 2 " trying /usr/lib/libz.a... no" rubidium@5643: zlib=`ls /usr/local/lib/*.a 2>/dev/null | grep "\/libz.a$"` rubidium@5643: fi celestar@5648: if [ -z "$zlib" ]; then rubidium@5643: log 2 " trying /usr/local/lib/libz.a... no" rubidium@5643: log 1 "configure: error: zlib couldn't be found" rubidium@5643: log 1 "configure: error: you requested a static link, but I can't find zlib.a" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: fi rubidium@5643: else rubidium@5643: # Make sure it exists celestar@5648: if [ -f "$with_zlib" ]; then celestar@5648: zlib=`ls $with_zlib 2>/dev/null` celestar@5648: else celestar@5648: zlib=`ls $with_zlib/libz.a 2>/dev/null` celestar@5648: fi rubidium@5643: fi rubidium@5643: celestar@5648: if [ -z "$zlib" ]; then rubidium@5643: log 1 "checking zlib... not found" celestar@5648: if [ "$with_zlib" = "2" ]; then rubidium@5643: log 1 "configure: error: zlib couldn't be found" rubidium@5643: rubidium@5643: exit 1 celestar@5648: elif [ "$with_zlib" != "1" ]; then rubidium@5643: log 1 "configure: error: zlib couldn't be found" rubidium@5643: log 1 "configure: error: you supplied '$with_zlib', but it seems invalid" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: log 2 " trying $zlib... found" rubidium@5643: rubidium@5643: log 1 "checking zlib... found" rubidium@5643: } rubidium@5643: rubidium@5643: detect_png() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_png" = "0" ]; then rubidium@5643: log 1 "checking libpng... disabled" rubidium@5643: rubidium@5643: png_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_zlib" = "0" ] || [ "$zlib" = "" ]; then rubidium@5643: log 1 "configure: error: libpng depends on zlib, which couldn't be found / was disabled" rubidium@5643: log 1 "configure: error: please supply --with-zlib, with a valid zlib location" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_png" = "1" ] || [ "$with_png" = "" ] || [ "$with_png" = "2" ]; then rubidium@5643: png_config="libpng-config" rubidium@5643: else rubidium@5643: png_config="$with_png" rubidium@5643: fi rubidium@5643: rubidium@5643: version=`$png_config --version 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: log 2 "executing $png_config --version" rubidium@5643: log 2 " returned $version" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if [ -z "$version" ] || [ "$ret" != "0" ]; then rubidium@5643: log 1 "checking libpng... not found" rubidium@5643: rubidium@5643: # It was forced, so it should be found. celestar@5648: if [ "$with_png" != "1" ]; then rubidium@5643: log 1 "configure: error: libpng-config couldn't be found" rubidium@5643: log 1 "configure: error: you supplied '$with_png', but it seems invalid" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: png_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking libpng... found" rubidium@5643: } rubidium@5643: rubidium@5643: detect_freetype() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_freetype" = "0" ]; then rubidium@5643: log 1 "checking libfreetype... disabled" rubidium@5643: rubidium@5643: freetype_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_zlib" = "0" ] || [ "$zlib" = "" ]; then rubidium@5643: log 1 "configure: error: libfreetype depends on zlib, which couldn't be found / was disabled" rubidium@5643: log 1 "configure: error: please supply --with-zlib, with a valid zlib location" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_freetype" = "1" ] || [ "$with_freetype" = "" ] || [ "$with_freetype" = "2" ]; then rubidium@5643: freetype_config="freetype-config" rubidium@5643: else rubidium@5643: freetype_config="$with_freetype" rubidium@5643: fi rubidium@5643: rubidium@5643: version=`$freetype_config --version 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: log 2 "executing freetype_config --version" rubidium@5643: log 2 " returned $version" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if [ -z "$version" ] || [ "$ret" != "0" ]; then rubidium@5643: log 1 "checking libfreetype... not found" rubidium@5643: rubidium@5643: # It was forced, so it should be found. celestar@5648: if [ "$with_freetype" != "1" ]; then rubidium@5643: log 1 "configure: error: freetype-config couldn't be found" rubidium@5643: log 1 "configure: error: you supplied '$with_freetype', but it seems invalid" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: freetype_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking libfreetype... found" rubidium@5643: } rubidium@5643: rubidium@5643: detect_fontconfig() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_fontconfig" = "0" ]; then rubidium@5643: log 1 "checking libfontconfig... disabled" rubidium@5643: rubidium@5643: fontconfig_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_fontconfig" = "1" ] || [ "$with_fontconfig" = "" ] || [ "$with_fontconfig" = "2" ]; then rubidium@5643: fontconfig_config="pkg-config fontconfig" rubidium@5643: else rubidium@5643: fontconfig_config="$with_fontconfig" rubidium@5643: fi rubidium@5643: rubidium@5643: version=`$fontconfig_config --modversion 2>/dev/null` rubidium@5643: ret=$? rubidium@5643: shortversion=`echo $version | cut -c 1,3` rubidium@5643: log 2 "executing $fontconfig_config --modversion" rubidium@5643: log 2 " returned $version" rubidium@5643: log 2 " exit code $ret" rubidium@5643: celestar@5648: if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$shortversion" -le "22" ]; then celestar@5648: if [ -n "$shortversion" ] && [ "$shortversion" -le "22" ]; then rubidium@5643: log 1 "checking libfontconfig... needs at least version 2.3.0, fontconfig NOT enabled" rubidium@5643: else rubidium@5643: log 1 "checking libfontconfig... not found" rubidium@5643: fi rubidium@5643: rubidium@5643: # It was forced, so it should be found. celestar@5648: if [ "$with_fontconfig" != "1" ]; then rubidium@5643: log 1 "configure: error: fontconfig-config couldn't be found" rubidium@5643: log 1 "configure: error: you supplied '$with_fontconfig', but it seems invalid" rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: fontconfig_config="" rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: log 1 "checking libfontconfig... found" rubidium@5643: } rubidium@5643: rubidium@5643: detect_iconv() { rubidium@5643: # 0 means no, 1 is auto-detect, 2 is force celestar@5648: if [ "$with_iconv" = "0" ]; then rubidium@5643: log 1 "checking iconv... disabled" rubidium@5643: rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then rubidium@5643: log 1 "checking iconv... not OSX, skipping" rubidium@5643: with_iconv="0" rubidium@5643: rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: rubidium@5643: # Try to find iconv.h, seems to only thing to detect iconv with rubidium@5643: celestar@5648: if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then rubidium@5643: iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"` celestar@5648: if [ -z "$iconv" ]; then rubidium@5643: iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"` rubidium@5643: fi rubidium@5643: else rubidium@5643: # Make sure it exists rubidium@5643: iconv=`ls $with_iconv/include/iconv.h 2>/dev/null` rubidium@5643: fi rubidium@5643: celestar@5648: if [ -z "$iconv" ]; then rubidium@5643: log 1 "checking iconv... not found" celestar@5648: if [ "$with_iconv" = "2" ]; then rubidium@5643: log 1 "configure: error: iconv couldn't be found" rubidium@5643: rubidium@5643: exit 1 celestar@5648: elif [ "$with_iconv" != "1" ]; then rubidium@5643: log 1 "configure: error: iconv couldn't be found" rubidium@5643: log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: fi rubidium@5643: rubidium@5643: return 0 rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_iconv" = "1" ]; then rubidium@5643: with_iconv="2" rubidium@5643: fi rubidium@5643: rubidium@5643: log 2 "found iconv in $iconv" rubidium@5643: rubidium@5643: log 1 "checking iconv... found" rubidium@5643: } rubidium@5643: rubidium@5643: _detect_sort() { rubidium@5643: sort_test_in="d rubidium@5643: a rubidium@5643: c rubidium@5643: b" rubidium@5643: rubidium@5643: sort_test_out="a rubidium@5643: b rubidium@5643: c rubidium@5643: d" rubidium@5643: rubidium@5643: log 2 "running echo | $1" rubidium@5643: celestar@5648: if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then rubidium@5643: sort="$1" rubidium@5643: log 2 " result was valid" rubidium@5643: else rubidium@5643: log 2 " result was invalid" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: detect_sort() { celestar@5648: if [ "$with_sort" = "0" ]; then rubidium@5643: log 1 "checking sort... disabled" rubidium@5643: rubidium@5643: return rubidium@5643: fi rubidium@5643: celestar@5648: if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then rubidium@5643: _detect_sort "sort" rubidium@5643: if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi rubidium@5643: if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi rubidium@5643: if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi rubidium@5643: if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi rubidium@5643: if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi rubidium@5643: if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi rubidium@5643: else rubidium@5643: _detect_sort "$with_sort" rubidium@5643: fi rubidium@5643: celestar@5648: if [ -z "$sort" ]; then celestar@5648: if [ "$with_sort" = "2" ]; then rubidium@5643: log 1 "checking sort... not found" rubidium@5643: rubidium@5643: log 1 "configure: error: couldn't detect sort on your system" rubidium@5643: exit 1 celestar@5648: elif [ "$with_sort" != "1" ]; then rubidium@5643: log 1 "checking sort... $with_sort not found" rubidium@5643: rubidium@5643: log 1 "configure: error: '$with_sort' doesn't look like a sort to me" rubidium@5643: log 1 "configure: error: please verify its location and function and try again" rubidium@5643: rubidium@5643: exit 1 rubidium@5643: else rubidium@5643: log 1 "checking sort... not found" rubidium@5643: fi rubidium@5643: else rubidium@5643: log 1 "checking sort... $sort" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: make_sed() { rubidium@5643: # We check here if we are PPC, because then we need to enable FOUR_BYTE_BOOL rubidium@5643: # We do this here, and not sooner, so universal builds also have this celestar@5648: # automatically correct rubidium@5643: # FOUR_BYTE_BOOL is needed, because C++ uses 4byte for a bool on PPC, where rubidium@5643: # we use 1 byte per bool normally in C part. So convert that last one to 4 rubidium@5643: # bytes too, but only for PPC. rubidium@5643: ppc=`$cc_host -dumpmachine | grep "powerpc\|ppc"` celestar@5648: if [ -n "$ppc" ]; then rubidium@5643: T_CFLAGS="$CFLAGS -DFOUR_BYTE_BOOL" rubidium@5643: osx_sysroot_version=10.3.9 rubidium@5643: else rubidium@5643: T_CFLAGS="$CFLAGS" rubidium@5643: osx_sysroot_version=10.4u rubidium@5643: fi rubidium@5643: rubidium@5643: T_LDFLAGS="$LDFLAGS" celestar@5648: if [ "$with_osx_sysroot" = "3" ]; then rubidium@5643: T_CFLAGS="$T_CFLAGS -isysroot /Developer/SDKs/MacOSX$osx_sysroot_version.sdk" rubidium@5643: T_LDFLAGS="$T_LDFLAGS -Wl,-syslibroot,/Developer/SDKs/MacOSX$osx_sysroot_version.sdk" rubidium@5643: fi rubidium@5643: rubidium@5643: SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR" rubidium@5643: rubidium@5643: # All the data needed to compile a single target rubidium@5643: # Make sure if you compile multiple targets to rubidium@5643: # use multiple OBJS_DIR, because all in-between rubidium@5643: # binaries are stored in there, and nowhere else. rubidium@5643: SRC_REPLACE=" rubidium@5643: s#!!CC_HOST!!#$cc_host#g; rubidium@5643: s#!!CXX_HOST!!#$cxx_host#g; rubidium@5643: s#!!CC_BUILD!!#$cc_build#g; celestar@5650: s#!!CXX_BUILD!!#$cxx_build#g; rubidium@5643: s#!!WINDRES!!#$windres#g; rubidium@5643: s#!!STRIP!!#$strip $strip_arg#g; rubidium@5643: s#!!LIPO!!#$lipo#g; rubidium@5643: s#!!CC_CFLAGS!!#$CC_CFLAGS#g; rubidium@5643: s#!!CFLAGS!!#$T_CFLAGS#g; rubidium@5643: s#!!CFLAGS_BUILD!!#$CFLAGS_BUILD#g; rubidium@5643: s#!!STRGEN_FLAGS!!#$strgen_flags#g; rubidium@5643: s#!!LIBS!!#$LIBS#g; rubidium@5643: s#!!LDFLAGS!!#$T_LDFLAGS#g; rubidium@5643: s#!!BIN_DIR!!#$BIN_DIR#g; rubidium@5643: s#!!ROOT_DIR!!#$ROOT_DIR#g; rubidium@5643: s#!!MEDIA_DIR!!#$MEDIA_DIR#g; rubidium@5643: s#!!SOURCE_LIST!!#$SOURCE_LIST#g; rubidium@5643: s#!!SRC_OBJS_DIR!!#$SRC_OBJS_DIR#g; rubidium@5643: s#!!LANG_OBJS_DIR!!#$LANG_OBJS_DIR#g; rubidium@5643: s#!!SRC_DIR!!#$SRC_DIR#g; rubidium@5643: s#!!OSXAPP!!#$OSXAPP#g; rubidium@5643: s#!!LANG_DIR!!#$LANG_DIR#g; rubidium@5643: s#!!TTD!!#$TTD#g; rubidium@5643: s#!!BINARY_DIR!!#$prefix_dir/$binary_dir#g; rubidium@5643: s#!!DATA_DIR!!#$prefix_dir/$data_dir#g; rubidium@5643: s#!!ICON_DIR!!#$prefix_dir/$icon_dir#g; rubidium@5643: s#!!PERSONAL_DIR!!#$personal_dir#g; rubidium@5643: s#!!INSTALL_DIR!!#$install_dir#g; rubidium@5643: s#!!STRGEN!!#$STRGEN#g; rubidium@5643: s#!!ENDIAN_CHECK!!#$ENDIAN_CHECK#g; rubidium@5643: s#!!ENDIAN_FORCE!!#$endian#g; rubidium@5643: s#!!STAGE!!#$STAGE#g; rubidium@5643: s#!!MAKEDEPEND!!#$makedepend#g; rubidium@5643: s#!!CFLAGS_MAKEDEP!!#$cflags_makedep#g; rubidium@5643: s#!!SORT!!#$sort#g; rubidium@5643: s#!!CONFIG_CACHE_COMPILER!!#config.cache.compiler#g; rubidium@5643: s#!!CONFIG_CACHE_LINKER!!#config.cache.linker#g; rubidium@5643: s#!!CONFIG_CACHE_ENDIAN!!#config.cache.endian#g; rubidium@5643: s#!!CONFIG_CACHE_SOURCE!!#config.cache.source#g; rubidium@5643: s#!!CONFIG_CACHE_VERSION!!#config.cache.version#g; rubidium@5643: s#!!CONFIG_CACHE_SOURCE_LIST!!#config.cache.source.list#g; rubidium@5643: s#!!LANG_SUPPRESS!!#$lang_suppress#g; rubidium@5643: s#!!OBJS_C!!#$OBJS_C#g; rubidium@5643: s#!!OBJS_CPP!!#$OBJS_CPP#g; rubidium@5643: s#!!OBJS_M!!#$OBJS_M#g; rubidium@5643: s#!!OBJS_RC!!#$OBJS_RC#g; rubidium@5643: s#!!SRCS!!#$SRCS#g; rubidium@5643: s#!!OS!!#$os#g; rubidium@5643: s#!!CONFIGURE_FILES!!#$CONFIGURE_FILES#g; rubidium@5643: s#!!REVISION!!#$revision#g; rubidium@5643: s#!!ENABLE_INSTALL!!#$enable_install#g; rubidium@5643: " rubidium@5643: } rubidium@5643: rubidium@5643: generate_main() { rubidium@5643: STAGE="[MAIN]" rubidium@5643: rubidium@5643: make_sed rubidium@5643: rubidium@5643: # Create the main Makefile rubidium@5643: echo "Generating Makefile..." celestar@5648: < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" > Makefile rubidium@5643: echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am celestar@5648: echo >> Makefile.am rubidium@5643: # Make the copy of the source-list, so we don't trigger an unwanted recompile rubidium@5643: cp $SOURCE_LIST config.cache.source.list rubidium@5643: # Make sure config.cache is OLDER then config.cache.source.list rubidium@5643: touch config.cache rubidium@5643: } rubidium@5643: rubidium@5643: generate_lang() { rubidium@5643: STAGE="[LANG]" rubidium@5643: rubidium@5643: make_sed rubidium@5643: rubidium@5643: # Create the language file rubidium@5643: mkdir -p $LANG_OBJS_DIR rubidium@5643: rubidium@5643: echo "Generating lang/Makefile..." celestar@5648: < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" > $LANG_OBJS_DIR/Makefile rubidium@5643: echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am rubidium@5643: echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am rubidium@5643: } rubidium@5643: rubidium@5643: generate_src_normal() { rubidium@5643: STAGE=$1 rubidium@5643: rubidium@5643: make_sed rubidium@5643: rubidium@5643: # Create the source file rubidium@5643: mkdir -p $SRC_OBJS_DIR rubidium@5643: rubidium@5643: echo "Generating $2/Makefile..." celestar@5648: < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" > $SRC_OBJS_DIR/Makefile rubidium@5643: echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am rubidium@5643: echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am rubidium@5643: } rubidium@5643: rubidium@5643: generate_src_osx() { rubidium@5643: cc_host_orig="$cc_host" rubidium@5643: cxx_host_orig="$cxx_host" rubidium@5643: rubidium@5643: BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc" rubidium@5643: cc_host="$cc_host_orig -arch ppc" rubidium@5643: cxx_host="$cxx_host_orig -arch ppc" rubidium@5643: generate_src_normal "[PowerPC]" "objs/ppc" rubidium@5643: rubidium@5645: BASE_SRC_OBJS_DIR="$OBJS_DIR/intel" rubidium@5643: cc_host="$cc_host_orig -arch i386" rubidium@5643: cxx_host="$cxx_host_orig -arch i386" rubidium@5645: generate_src_normal "[Intel]" "objs/intel" rubidium@5643: rubidium@5643: BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970" rubidium@5643: cc_host="$cc_host_orig -arch ppc970" rubidium@5643: cxx_host="$cxx_host_orig -arch ppc970" rubidium@5643: CFLAGS="$CFLAGS -mtune=970 -mcpu=970 -mpowerpc-gpopt" rubidium@5643: generate_src_normal "[PowerPC G5]" "objs/ppc970" rubidium@5643: } rubidium@5643: rubidium@5643: generate_src() { celestar@5648: if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then rubidium@5643: generate_src_osx rubidium@5643: else rubidium@5643: generate_src_normal "[SRC]" "objs" rubidium@5643: fi rubidium@5643: } rubidium@5643: rubidium@5643: showhelp() { rubidium@5643: echo "'configure' configures OpenTTD." rubidium@5643: echo "" rubidium@5643: echo "Usage: $0 [OPTION]... [VAR=VALUE]..." rubidium@5643: echo "" rubidium@5643: echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as" rubidium@5643: echo "VAR=VALUE. See below for descriptions of some of the useful variables." rubidium@5643: echo "" rubidium@5643: echo "Defaults for the options are specified in brackets." rubidium@5643: echo "" rubidium@5643: echo "Configuration:" rubidium@5643: echo " -h, --help display this help and exit" rubidium@5643: echo "" rubidium@5643: echo "System types:" rubidium@5643: echo " --build=BUILD configure for building on BUILD [guessed]" rubidium@5645: echo " --host=HOST cross-compile to build programs to run" rubidium@5645: echo " on HOST [BUILD]" rubidium@5643: echo " --windres=WINDRES the windres to use [HOST-windres]" rubidium@5643: echo " --strip=STRIP the strip to use [HOST-strip]" rubidium@5643: echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]" rubidium@5643: echo " --os=OS the OS we are compiling for [DETECT]" rubidium@5645: echo " DETECT/UNIX/OSX/FREEBSD/MORPHOS/BEOS/" rubidium@5645: echo " SUNOS/CYGWIN/MINGW" rubidium@5645: echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)" rubidium@5645: echo " --revision=rXXXX overwrite the revision detection." rubidium@5645: echo " Use with care!" rubidium@5643: echo "" rubidium@5643: echo "Paths:" rubidium@5645: echo " --prefix-dir=dir specifies the prefix for all installed" rubidium@5645: echo " files [/usr/local]" rubidium@5645: echo " --binary-dir=dir location of the binary. Will be prefixed" rubidium@5645: echo " with the prefix-dir [games]" rubidium@5645: echo " --data-dir=dir location of data files (lang, data, gm)." rubidium@5645: echo " Will be prefixed with the prefix-dir" rubidium@5645: echo " [share/games/openttd]" rubidium@5645: echo " --icon-dir=dir location of icons. Will be prefixed" rubidium@5645: echo " with the prefix-dir [share/pixmaps]" rubidium@5643: echo " --personal-dir=dir location of the personal directory []" rubidium@5645: echo " --install-dir=dir specifies the root to install to." rubidium@5645: echo " Useful to install into jails [/]" rubidium@5643: echo "" rubidium@5643: # TODO: The Following 3 tags will be removed when the 'search path patch' is applied rubidium@5645: echo " --second-data-dir=dir specifies a second directory for the" rubidium@5645: echo " data files" rubidium@5645: echo " --custom-lang-dir=dir specifies a custom directory for the" rubidium@5645: echo " language files" rubidium@5645: echo " --enable-install make a binary that uses the specified" rubidium@5645: echo " data-dir and icon-dir" rubidium@5643: echo "" rubidium@5643: echo "Features and packages:" rubidium@5645: echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)" rubidium@5645: echo " --enable-profiling enables profiling" rubidium@5645: echo " --enable-dedicated compile a dedicated server (without video)" rubidium@5645: echo " --enable-static enable static compile (doesn't work for" rubidium@5645: echo " all HOSTs)" rubidium@5643: echo " --enable-translator enable extra output for translators" rubidium@5643: echo " --enable-universal enable universal builds (OSX ONLY)" rubidium@5643: echo " --enable-osx-g5 enables optimalizations for G5 (OSX ONLY)" rubidium@5643: echo " --disable-network disable network support" rubidium@5645: echo " --disable-assert disable asserts (continue on errors)" rubidium@5643: echo " --disable-strip disable any possible stripping" rubidium@5645: echo " --without-osx-sysroot disable the automatic adding of sysroot " rubidium@5645: echo " (OSX ONLY)" rubidium@5645: echo " --without-application-bundle disable generation of application bundle" rubidium@5645: echo " (OSX ONLY)" rubidium@5643: echo " --with-direct-music enable direct music support (Win32 ONLY)" rubidium@5643: echo " --with-sort=sort define a non-default location for sort" rubidium@5643: echo " --with-midi=midi define which midi-player to use" rubidium@5645: echo " --with-midi-arg=arg define which args to use for the" rubidium@5645: echo " midi-player" rubidium@5645: echo " --with-cocoa enables COCOA video driver (OSX ONLY)" rubidium@5643: echo " --with-sdl[=sdl-config] enables SDL video driver support" rubidium@5643: echo " --with-zlib[=zlib.a] enables zlib support" rubidium@5643: echo " --with-png[=libpng-config] enables libpng support" rubidium@5643: echo " --with-freetype[=freetype-config]" rubidium@5643: echo " enables libfreetype support" rubidium@5643: echo " --with-fontconfig[=pkg-config fontconfig]" rubidium@5643: echo " enables fontconfig support" rubidium@5643: echo " --with-iconv[=iconv-path] enables iconv support" rubidium@5643: echo " --with-makedepend[=makedepend] enables makedepend support" rubidium@5643: echo "" rubidium@5643: echo "Some influential environment variables:" rubidium@5643: echo " CC C compiler command" rubidium@5643: echo " CXX C++ compiler command" rubidium@5643: echo " CFLAGS C compiler flags" rubidium@5643: echo " WINDRES windres command" rubidium@5645: echo " LDFLAGS linker flags, e.g. -L if you" rubidium@5645: echo " have libraries in a nonstandard" rubidium@5645: echo " directory " rubidium@5643: echo "" rubidium@5643: echo "Use these variables to override the choices made by 'configure' or to help" rubidium@5643: echo "it to find libraries and programs with nonstandard names/locations." rubidium@5643: }