mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
32ce1ce347
By default, the native API will be used instead of ICU, but if ICU is forced in using configure, it will take precedence.
3625 lines
111 KiB
Plaintext
3625 lines
111 KiB
Plaintext
# $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 <http://www.gnu.org/licenses/>.
|
|
|
|
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"
|
|
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_xaudio2="1"
|
|
with_sort="1"
|
|
with_iconv="1"
|
|
with_midi=""
|
|
with_midi_arg=""
|
|
with_libtimidity="1"
|
|
with_fluidsynth="1"
|
|
with_freetype="1"
|
|
with_fontconfig="1"
|
|
with_icu_layout="1"
|
|
with_icu_sort="1"
|
|
static_icu="0"
|
|
with_uniscribe="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
|
|
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_xaudio2
|
|
with_sort
|
|
with_iconv
|
|
with_midi
|
|
with_midi_arg
|
|
with_libtimidity
|
|
with_fluidsynth
|
|
with_freetype
|
|
with_fontconfig
|
|
with_icu_layout
|
|
with_icu_sort
|
|
static_icu
|
|
with_uniscribe
|
|
with_threads
|
|
with_distcc
|
|
with_ccache
|
|
with_grfcodec
|
|
with_nforenum
|
|
with_sse
|
|
CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD PKG_CONFIG_PATH PKG_CONFIG_LIBDIR"
|
|
}
|
|
|
|
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";;
|
|
|
|
|
|
|
|
# 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-fluidsynth) with_fluidsynth="2";;
|
|
--without-fluidsynth) with_fluidsynth="0";;
|
|
|
|
--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-uniscribe) with_uniscribe="2";;
|
|
--without-uniscribe) with_uniscribe="0";;
|
|
--with-uniscribe=*) with_uniscribe="$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-xaudio2) with_xaudio2="2";;
|
|
--without-xaudio2) with_xaudio2="0";;
|
|
--with-xaudio2=*) with_xaudio2="$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";;
|
|
PKG_CONFIG_PATH=* | --PKG_CONFIG_PATH=* | --PKG-CONFIG-PATH=*) PKG_CONFIG_PATH="$optarg";;
|
|
PKG_CONFIG_LIBDIR=* | --PKG_CONFIG_LIBDIR=* | --PKG-CONFIG-LIBDIR=*) PKG_CONFIG_LIBDIR="$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
|
|
}
|
|
|
|
# Export a variable so tools like pkg-config can see it when invoked.
|
|
# If the variable contains an empty string then unset it.
|
|
# $1 - name of the variable to export or unset
|
|
export_or_unset() {
|
|
eval local value=\$$1
|
|
if [ -n "$value" ]; then
|
|
export $1;
|
|
log 2 "using $1=$value";
|
|
else
|
|
unset $1;
|
|
log 2 "not using $1";
|
|
fi
|
|
}
|
|
|
|
check_params() {
|
|
# Some params want to be in full uppercase, else they might not work as
|
|
# expected.. fix that here
|
|
|
|
os=`echo $os | tr '[a-z]' '[A-Z]'`
|
|
cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
|
|
|
|
# Export some variables to be used by pkg-config
|
|
#
|
|
# PKG_CONFIG_LIBDIR variable musn't be set if we are not willing to
|
|
# override the default pkg-config search path, it musn't be an empty
|
|
# string. If the variable is empty (e.g. when an empty string comes
|
|
# from config.cache) then unset it. This way the "don't override" state
|
|
# will be properly preserved when (re)configuring.
|
|
export_or_unset PKG_CONFIG_PATH
|
|
export_or_unset PKG_CONFIG_LIBDIR
|
|
|
|
# Check if all params have valid values
|
|
|
|
# OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS
|
|
if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS)$'`" ]; 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]"
|
|
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" ]; 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" ]; 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
|
|
|
|
if [ "$with_uniscribe" != "0" ]; then
|
|
if [ "$os" != "MINGW" ]; then
|
|
if [ "$with_uniscribe" != "1" ]; then
|
|
log 1 "configure: error: Uniscribe is only supported on native Win32 targets"
|
|
exit 1
|
|
fi
|
|
with_uniscribe="0"
|
|
|
|
log 1 "checking Uniscribe text layout... not Windows, skipping"
|
|
else
|
|
log 1 "checking Uniscribe text layout... found"
|
|
|
|
# Don't use ICU unless forced.
|
|
if [ "$with_icu_layout" = "1" ]; then
|
|
with_icu_layout="0"
|
|
fi
|
|
if [ "$with_icu_sort" = "1" ]; then
|
|
with_icu_sort="0"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
detect_xdg_basedir
|
|
detect_png
|
|
detect_freetype
|
|
detect_fontconfig
|
|
detect_icu_layout
|
|
detect_icu_sort
|
|
detect_libtimidity
|
|
detect_fluidsynth
|
|
|
|
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
|
|
|
|
if [ "$with_xaudio2" != "0" ]; then
|
|
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
|
|
if [ "$with_xaudio2" != "1" ]; then
|
|
log 1 "configure: error: xaudio2 is only supported on Win32 targets"
|
|
exit 1
|
|
fi
|
|
with_xaudio2="0"
|
|
|
|
log 1 "checking xaudio2... not Windows, skipping"
|
|
else
|
|
check_xaudio2
|
|
fi
|
|
fi
|
|
|
|
detect_sort
|
|
|
|
# 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" = "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
|
|
|
|
# Get the compiler to tell us who it is
|
|
version_line="`$1 --version | head -n1`"
|
|
|
|
eval eval "flags=\\\$$2"
|
|
eval eval "cxxflags=\\\$$3"
|
|
eval eval "ldflags=\\\$$4"
|
|
eval eval "features=\\\$$5"
|
|
|
|
if [ `echo "$version_line" | cut -d' ' -f1` = "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++0x"
|
|
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 echo "$version_line" | grep -q "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"
|
|
fi
|
|
|
|
# rdynamic is used to get useful stack traces from crash reports.
|
|
ldflags="$ldflags -rdynamic"
|
|
|
|
# Assume gcc, since it just uses argv[0] in its --version output
|
|
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++0x"
|
|
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"
|
|
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_ENV="$CFLAGS_BUILD"
|
|
CFLAGS_BUILD=""
|
|
# Special CXXFlags for BUILD
|
|
CXXFLAGS_BUILD_ENV="$CXXFLAGS_BUILD"
|
|
CXXFLAGS_BUILD=""
|
|
# LDFLAGS for BUILD
|
|
LDFLAGS_BUILD_ENV="$LDFLAGS_BUILD"
|
|
LDFLAGS_BUILD=""
|
|
# FEATURES for BUILD (lto)
|
|
FEATURES_BUILD=""
|
|
# General CFlags for HOST
|
|
CFLAGS_ENV="$CFLAGS"
|
|
CFLAGS=""
|
|
# Special CXXFlags for HOST
|
|
CXXFLAGS_ENV="$CXXFLAGS"
|
|
CXXFLAGS=""
|
|
# Libs to compile. In fact this is just LDFLAGS
|
|
LIBS="-lstdc++"
|
|
# LDFLAGS used for HOST
|
|
LDFLAGS_ENV="$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"
|
|
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
|
|
# Just add -O1 to the tools needed for building.
|
|
CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -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" != "OS2" ]; then
|
|
LIBS="$LIBS -lpthread"
|
|
fi
|
|
|
|
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ]; then
|
|
LIBS="$LIBS -lc"
|
|
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" ]; then
|
|
CFLAGS="$CFLAGS -DWIN"
|
|
fi
|
|
|
|
if [ -n "$allegro_config" ]; then
|
|
CFLAGS="$CFLAGS -DWITH_ALLEGRO"
|
|
CFLAGS="$CFLAGS `$allegro_config --cflags`"
|
|
if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; 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" ]; 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' ' '` -lfreetype"
|
|
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_uniscribe" != "0" ]; then
|
|
CFLAGS="$CFLAGS -DWITH_UNISCRIBE"
|
|
LIBS="$LIBS -lusp10"
|
|
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 [ "$with_xaudio2" != "0" ]; then
|
|
CFLAGS="$CFLAGS -DWITH_XAUDIO2"
|
|
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 [ -n "$fluidsynth" ]; then
|
|
LIBS="$LIBS -lfluidsynth"
|
|
CFLAGS="$CFLAGS -DFLUIDSYNTH"
|
|
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
|
|
|
|
# All flags to be extended via the env
|
|
CFLAGS_BUILD="$CFLAGS_BUILD $CFLAGS_BUILD_ENV"
|
|
CXXFLAGS_BUILD="$CXXFLAGS_BUILD $CXXFLAGS_BUILD_ENV"
|
|
LDFLAGS_BUILD="$LDFLAGS_BUILD $LDFLAGS_BUILD_ENV"
|
|
CFLAGS="$CFLAGS $CFLAGS_ENV"
|
|
CXXFLAGS="$CXXFLAGS $CXXFLAGS_ENV"
|
|
LDFLAGS="$LDFLAGS $LDFLAGS_ENV"
|
|
|
|
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 "$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
|
|
elif [ -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
|
|
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() {
|
|
check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
|
|
}
|
|
|
|
check_host() {
|
|
# By default the host is the build
|
|
if [ -z "$host" ]; then host="$build"; fi
|
|
check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
|
|
}
|
|
|
|
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" ]; 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 <Cocoa/Cocoa.h>
|
|
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 <windows.h>
|
|
#include <dmksctrl.h>
|
|
#include <dmusicc.h>
|
|
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_xaudio2() {
|
|
echo "
|
|
#include <windows.h>
|
|
|
|
#undef NTDDI_VERSION
|
|
#undef _WIN32_WINNT
|
|
|
|
#define NTDDI_VERSION NTDDI_WIN8
|
|
#define _WIN32_WINNT _WIN32_WINNT_WIN8
|
|
|
|
#include <xaudio2.h>
|
|
int main(int argc, char *argv[]) { }" > xaudio2.test.c
|
|
$cxx_host $CFLAGS xaudio2.test.c -o xaudio2.test 2> /dev/null
|
|
res=$?
|
|
rm -f xaudio2.test.c xaudio2.test
|
|
|
|
if [ "$res" != "0" ]; then
|
|
if [ "$with_xaudio2" != "1" ]; then
|
|
log 1 "configure: error: xaudio2 is not available on this system"
|
|
exit 1
|
|
fi
|
|
with_xaudio2="0"
|
|
|
|
log 1 "checking xaudio2... not found"
|
|
else
|
|
log 1 "checking xaudio2... 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, and DOS
|
|
|
|
# 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}
|
|
'`
|
|
|
|
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, and DOS"
|
|
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 <AvailabilityMacros.h>
|
|
#import <Cocoa/Cocoa.h>
|
|
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 /mingw$cpu_type/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
|
|
fi
|
|
eval "res=\$$2"
|
|
if [ -z "$res" ]; then
|
|
log 2 " trying /mingw$cpu_type/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"
|
|
eval "$2=`ls /mingw$cpu_type/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
|
|
fi
|
|
eval "res=\$$2"
|
|
if [ -z "$res" ]; then
|
|
log 2 " trying /mingw$cpu_type/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_fluidsynth() {
|
|
detect_library "$with_fluidsynth" "fluidsynth" "" "" "fluidsynth.h"
|
|
}
|
|
|
|
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" ]; 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() {
|
|
if [ "$with_cocoa" != "0" ] && [ "$with_icu_layout" = "1" ]; then
|
|
log 1 "checking icu-lx... OSX, skipping"
|
|
icu_layout_config=""
|
|
return 0
|
|
fi
|
|
|
|
detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
|
|
}
|
|
|
|
detect_icu_sort() {
|
|
if [ "$with_cocoa" != "0" ] && [ "$with_icu_sort" = "1" ]; then
|
|
log 1 "checking icu-i18n... OSX, skipping"
|
|
icu_sort_config=""
|
|
return 0
|
|
fi
|
|
|
|
detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
|
|
}
|
|
|
|
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 <iconv.h>
|
|
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 <iconv.h>
|
|
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 <array> | $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() {
|
|
if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
|
|
log 1 "forcing cpu-type... $cpu_type bits"
|
|
return;
|
|
fi
|
|
echo "#define _SQ64 1" > tmp.64bit.cpp
|
|
echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
|
|
echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
|
|
echo "int main() { return 0; }" >> tmp.64bit.cpp
|
|
execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -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"
|
|
if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
|
|
log 1 "detecting cpu-type... $cpu_type bits"
|
|
rm -f tmp.64bit tmp.64bit.cpp
|
|
}
|
|
|
|
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 <xmmintrin.h>" >> tmp.sse.cpp
|
|
echo "#include <smmintrin.h>" >> tmp.sse.cpp
|
|
echo "#include <tmmintrin.h>" >> 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@!!DEPEND!!@$DEPEND@g;
|
|
s@!!SETTINGSGEN!!@$SETTINGSGEN@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_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/HAIKU"
|
|
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-fluidsynth enables fluidsynth 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 " --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<lib dir> if you"
|
|
echo " have libraries in a nonstandard"
|
|
echo " directory <lib dir>"
|
|
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 " PKG_CONFIG_PATH additional library search paths (see \"man pkg-config\")"
|
|
echo " PKG_CONFIG_LIBDIR replace the default library search path (see \"man pkg-config\")"
|
|
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."
|
|
}
|