3 # This file is part of OpenTTD.
4 # 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.
5 # 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.
6 # 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/>.
15 echo "$@" >> $config_log
19 ignore_extra_parameters="0"
20 # We set all kinds of defaults for params. Later on the user can override
21 # most of them; but if they don't, this default is used.
32 pkg_config="pkg-config"
36 config_log="config.log"
37 prefix_dir="/usr/local"
39 data_dir="share/games/openttd"
41 icon_dir="share/pixmaps"
52 enable_desync_debug="0"
65 enable_cocoa_quartz="1"
66 enable_cocoa_quickdraw="1"
68 with_application_bundle="1"
78 enable_builtin_depend="1"
144 enable_cocoa_quickdraw
146 with_application_bundle
155 enable_builtin_depend
175 CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
179 # Walk over all params from the user and override any default settings if
180 # needed. This also handles any invalid option.
182 if [ -n "$prev_p" ]; then
188 optarg=`expr "x$p" : 'x[^=]*=\(.*\)'`
191 --help | -h | -\?) showhelp; exit 0;;
193 --config-log) prev_p="config_log";;
194 --config-log=*) config_log="$optarg";;
196 --build) prev_p="build";;
197 --build=*) build="$optarg";;
199 --host) prev_p="host";;
200 --host=*) host="$optarg";;
203 --os=*) os="$optarg";;
205 --cpu-type) prev_p="cpu_type";;
206 --cpu-type=*) cpu_type="$optarg";;
208 --cc-build) prev_p="cc_build";;
209 --cc-build=*) cc_build="$optarg";;
210 --cc-host) prev_p="cc_host";;
211 --cc-host=*) cc_host="$optarg";;
212 --cxx-build) prev_p="cxx_build";;
213 --cxx-build=*) cxx_build="$optarg";;
214 --cxx-host) prev_p="cxx_host";;
215 --cxx-host=*) cxx_host="$optarg";;
216 --windres) prev_p="windres";;
217 --windres=*) windres="$optarg";;
218 --awk) prev_p="awk";;
219 --awk=*) awk="$optarg";;
220 --pkg-config) prev_p="pkg_config";;
221 --pkg-config=*) pkg_config="$optarg";;
222 --strip) prev_p="strip";;
223 --strip=*) strip="$optarg";;
224 --lipo) prev_p="lipo";;
225 --lipo=*) lipo="$optarg";;
227 --endian) prev_p="endian";;
228 --endian=*) endian="$optarg";;
232 # Alias --prefix with --prefix-dir, for compatibility with GNU autotools
233 --prefix-dir | --prefix) prev_p="prefix_dir";;
234 --prefix-dir=* | --prefix=*) prefix_dir="$optarg";;
236 --binary-dir) prev_p="binary_dir";;
237 --binary-dir=*) binary_dir="$optarg";;
239 --data-dir) prev_p="data_dir";;
240 --data-dir=*) data_dir="$optarg";;
242 --doc-dir) prev_p="doc_dir";;
243 --doc-dir=*) doc_dir="$optarg";;
245 --icon-dir) prev_p="icon_dir";;
246 --icon-dir=*) icon_dir="$optarg";;
248 --icon-theme-dir) prev_p="icon_theme_dir";;
249 --icon-theme-dir=*) icon_theme_dir="$optarg";;
250 --without-icon-theme) icon_theme_dir="";;
252 --menu-dir) prev_p="menu_dir";;
253 --menu-dir=*) menu_dir="$optarg";;
254 --without-menu-entry) menu_dir="";;
256 --menu-name) prev_p="menu_name";;
257 --menu-name=*) menu_name="$optarg";;
259 --binary-name) prev_p="binary_name";;
260 --binary-name=*) binary_name="$optarg";;
262 --man-dir) prev_p="man_dir";;
263 --man-dir=*) man_dir="$optarg";;
265 --personal-dir) prev_p="personal_dir";;
266 --personal-dir=*) personal_dir="$optarg";;
267 --without-personal-dir) personal_dir="";;
269 --shared-dir) prev_p="shared_dir";;
270 --shared-dir=*) shared_dir="$optarg";;
271 --without-shared-dir) shared_dir="";;
273 --install-dir) prev_p="install_dir";;
274 --install-dir=*) install_dir="$optarg";;
278 --menu-group) prev_p="menu_group";;
279 --menu-group=*) menu_group="$optarg";;
283 --enable-debug) enable_debug="1";;
284 --enable-debug=*) enable_debug="$optarg";;
285 --enable-desync-debug) enable_desync_debug="1";;
286 --enable-desync-debug=*) enable_desync_debug="$optarg";;
287 --enable-profiling) enable_profiling="1";;
288 --enable-profiling=*) enable_profiling="$optarg";;
289 --enable-lto) enable_lto="1";;
290 --enable-lto=*) enable_lto="$optarg";;
291 --enable-ipo) enable_lto="1";;
292 --enable-ipo=*) enable_lto="$optarg";;
293 --enable-dedicated) enable_dedicated="1";;
294 --enable-dedicated=*) enable_dedicated="$optarg";;
295 --enable-network) enable_network="2";;
296 --enable-network=*) enable_network="$optarg";;
297 --disable-network) enable_network="0";;
298 --disable-static) enable_static="0";;
299 --enable-static) enable_static="2";;
300 --enable-static=*) enable_static="$optarg";;
301 --disable-translator) enable_translator="0";;
302 --enable-translator) enable_translator="2";;
303 --enable-translator=*) enable_translator="$optarg";;
304 --disable-assert) enable_assert="0";;
305 --enable-assert) enable_assert="2";;
306 --enable-assert=*) enable_assert="$optarg";;
307 --disable-strip) enable_strip="0";;
308 --enable-strip) enable_strip="2";;
309 --enable-strip=*) enable_strip="$optarg";;
310 --disable-universal) enable_universal="0";;
311 --enable-universal) enable_universal="i386 ppc";;
312 --enable-universal=*) enable_universal="$optarg";;
313 --disable-osx-g5) enable_osx_g5="0";;
314 --enable-osx-g5) enable_osx_g5="2";;
315 --enable-osx-g5=*) enable_osx_g5="$optarg";;
316 --disable-unicode) enable_unicode="0";;
317 --enable-unicode) enable_unicode="2";;
318 --enable-unicode=*) enable_unicode="$optarg";;
319 --disable-console) enable_console="0";;
320 --enable-console) enable_console="2";;
321 --enable-console=*) enable_console="$optarg";;
323 --disable-cocoa-quartz) enable_cocoa_quartz="0";;
324 --enable-cocoa-quartz) enable_cocoa_quartz="2";;
325 --enable-cocoa-quartz=*) enable_cocoa_quartz="$optarg";;
326 --disable-cocoa-quickdraw) enable_cocoa_quickdraw="0";;
327 --enable-cocoa-quickdraw) enable_cocoa_quickdraw="2";;
328 --enable-cocoa-quickdraw=*) enable_cocoa_quickdraw="$optarg";;
330 --with-allegro) with_allegro="2";;
331 --without-allegro) with_allegro="0";;
332 --with-allegro=*) with_allegro="$optarg";;
334 --with-sdl) with_sdl="2";;
335 --without-sdl) with_sdl="0";;
336 --with-sdl=*) with_sdl="$optarg";;
338 --with-cocoa) with_cocoa="2";;
339 --without-cocoa) with_cocoa="0";;
340 --with-cocoa=*) with_cocoa="$optarg";;
342 --with-zlib) with_zlib="2";;
343 --without-zlib) with_zlib="0";;
344 --with-zlib=*) with_zlib="$optarg";;
346 --with-lzma) with_lzma="2";;
347 --without-lzma) with_lzma="0";;
348 --with-lzma=*) with_lzma="$optarg";;
349 --with-liblzma) with_lzma="2";;
350 --without-liblzma) with_lzma="0";;
351 --with-liblzma=*) with_lzma="$optarg";;
353 --with-lzo2) with_lzo2="2";;
354 --without-lzo2) with_lzo2="0";;
355 --with-lzo2=*) with_lzo2="$optarg";;
356 --with-liblzo2) with_lzo2="2";;
357 --without-liblzo2) with_lzo2="0";;
358 --with-liblzo2=*) with_lzo2="$optarg";;
360 --with-xdg-basedir) with_xdg_basedir="2";;
361 --without-xdg-basedir) with_xdg_basedir="0";;
362 --with-xdg-basedir=*) with_xdg_basedir="$optarg";;
363 --with-libxdg-basedir) with_xdg_basedir="2";;
364 --without-libxdg-basedir) with_xdg_basedir="0";;
365 --with-libxdg-basedir=*) with_xdg_basedir="$optarg";;
367 --with-png) with_png="2";;
368 --without-png) with_png="0";;
369 --with-png=*) with_png="$optarg";;
370 --with-libpng) with_png="2";;
371 --without-libpng) with_png="0";;
372 --with-libpng=*) with_png="$optarg";;
374 --with-libtimidity) with_libtimidity="2";;
375 --without-libtimidity) with_libtimidity="0";;
376 --with-libtimidity=*) with_libtimidity="$optarg";;
378 --with-freetype) with_freetype="2";;
379 --without-freetype) with_freetype="0";;
380 --with-freetype=*) with_freetype="$optarg";;
381 --with-libfreetype) with_freetype="2";;
382 --without-libfreetype) with_freetype="0";;
383 --with-libfreetype=*) with_freetype="$optarg";;
385 --with-fontconfig) with_fontconfig="2";;
386 --without-fontconfig) with_fontconfig="0";;
387 --with-fontconfig=*) with_fontconfig="$optarg";;
388 --with-libfontconfig) with_fontconfig="2";;
389 --without-libfontconfig) with_fontconfig="0";;
390 --with-libfontconfig=*) with_fontconfig="$optarg";;
392 --with-icu) with_icu_layout="2";with_icu_sort="2";;
393 --without-icu) with_icu_layout="0";with_icu_sort="0";;
394 --with-icu=*) with_icu_layout="$optarg";with_icu_sort="$optarg";;
395 --with-libicu) with_icu_layout="2";with_icu_sort="2";;
396 --without-libicu) with_icu_layout="0";with_icu_sort="0";;
397 --with-libicu=*) with_icu_layout="$optarg";with_icu_sort="$optarg";;
398 --with-icu-layout) with_icu_layout="2";;
399 --without-icu-layout) with_icu_layout="0";;
400 --with-icu-layout=*) with_icu_layout="$optarg";;
401 --with-icu-sort) with_icu_sort="2";;
402 --without-icu-sort) with_icu_sort="0";;
403 --with-icu-sort=*) with_icu_sort="$optarg";;
404 --static-icu) static_icu="1";;
405 --static-icu=*) static_icu="$optarg";;
406 --static-libicu) static_icu="1";;
407 --static-libicu=*) static_icu="$optarg";;
409 --with-psp-config) with_psp_config="2";;
410 --without-psp-config) with_psp_config="0";;
411 --with-psp-config=*) with_psp_config="$optarg";;
413 --disable-builtin-depend) enable_builtin_depend="0";;
414 --enable-builtin-depend) enable_builtin_depend="2";;
415 --enable-builtin-depend=*) enable_builtin_depend="$optarg";;
417 --with-makedepend) with_makedepend="2";;
418 --without-makedepend) with_makedepend="0";;
419 --with-makedepend=*) with_makedepend="$optarg";;
421 --with-direct-music) with_direct_music="2";;
422 --without-direct-music) with_direct_music="0";;
423 --with-direct-music=*) with_direct_music="$optarg";;
425 --with-sort) with_sort="2";;
426 --without-sort) with_sort="0";;
427 --with-sort=*) with_sort="$optarg";;
429 --with-iconv) with_iconv="2";;
430 --without-iconv) with_iconv="0";;
431 --with-iconv=*) with_iconv="$optarg";;
433 --with-midi=*) with_midi="$optarg";;
434 --with-midi-arg=*) with_midi_arg="$optarg";;
436 --without-distcc) with_distcc="0";;
437 --with-distcc) with_distcc="2";;
438 --with-distcc=*) with_distcc="$optarg";;
440 --without-ccache) with_ccache="0";;
441 --with-ccache) with_ccache="2";;
442 --with-ccache=*) with_ccache="$optarg";;
444 --without-nforenum) with_nforenum="0";;
445 --with-nforenum) with_nforenum="2";;
446 --with-nforenum=*) with_nforenum="$optarg";;
448 --without-grfcodec) with_grfcodec="0";;
449 --with-grfcodec) with_grfcodec="2";;
450 --with-grfcodec=*) with_grfcodec="$optarg";;
452 --without-osx-sysroot) with_osx_sysroot="0";;
453 --with-osx-sysroot) with_osx_sysroot="2";;
454 --with-osx-sysroot=*) with_osx_sysroot="$optarg";;
456 --without-application-bundle) with_application_bundle="0";;
457 --with-application-bundle) with_application_bundle="1";;
458 --with-application-bundle=*) with_application_bundle="$optarg";;
460 --without-threads) with_threads="0";;
461 --with-threads) with_threads="1";;
462 --with-threads=*) with_threads="$optarg";;
464 --without-sse) with_sse="0";;
465 --with-sse) with_sse="1";;
466 --with-sse=*) with_sse="$optarg";;
468 CC=* | --CC=*) CC="$optarg";;
469 CXX=* | --CXX=*) CXX="$optarg";;
470 CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";;
471 CXXFLAGS=* | --CXXFLAGS=*) CXXFLAGS="$optarg";;
472 LDFLAGS=* | --LDFLAGS=*) LDFLAGS="$optarg";;
473 CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*) CFLAGS_BUILD="$optarg";;
474 CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";;
475 LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*) LDFLAGS_BUILD="$optarg";;
477 --ignore-extra-parameters) ignore_extra_parameters="1";;
480 if [ "$ignore_extra_parameters" = "0" ]; then
481 log 1 "Unknown option $p"
484 log 1 "Unknown option $p ignored"
490 if [ -n "$prev_p" ]; then
491 log 1 "configure: error: missing argument to --$prev_p"
496 echo "" > $config_log
497 log 2 "Invocation: $0 $*"
501 # Here we save all params, so we can later on do an exact redo of this
502 # configuration, without having the user to re-input stuff
504 echo "Running configure with following options:" >> $config_log
505 echo "" >> $config_log
507 configure="$CONFIGURE_EXECUTABLE --ignore-extra-parameters"
508 for p in $save_params_array; do
510 p=`echo "$p" | sed 's@_@-@g;s@\n@@g;s@ @\\ @g'`
511 # Only save those params that aren't empty
512 configure="$configure --$p=\"$v\""
515 echo "$configure" >> $config_log
516 echo "$configure" > config.cache
517 echo "" >> $config_log
521 # Some params want to be in full uppercase, else they might not work as
522 # expected.. fix that here
524 endian=`echo $endian | tr '[a-z]' '[A-Z]'`
525 os=`echo $os | tr '[a-z]' '[A-Z]'`
526 cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
528 # Check if all params have valid values
530 # Endian only allows AUTO, LE and, BE
531 if [ -z "`echo $endian | egrep '^(AUTO|LE|BE|PREPROCESSOR)$'`" ]; then
532 log 1 "configure: error: invalid option --endian=$endian"
533 log 1 " Available options are: --endian=[AUTO|LE|BE]"
536 if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
537 log 1 "configure: error: invalid option --endian=$endian"
538 log 1 " PREPROCESSOR is only available for OSX"
541 # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
542 if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
543 log 1 "configure: error: invalid option --os=$os"
544 log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
547 # cpu_type can be either 32 or 64
548 if [ -z "`echo $cpu_type | egrep '^(32|64|DETECT)$'`" ]; then
549 log 1 "configure: error: invalid option --cpu-type=$cpu_type"
550 log 1 " Available options are: --cpu-type[=DETECT|32|64]"
553 # enable_debug should be between 0 and 4
554 if [ -z "`echo $enable_debug | egrep '^[0123]$'`" ]; then
555 log 1 "configure: error: invalid option --enable-debug=$enable_debug"
556 log 1 " Available options are: --enable-debug[=0123]"
560 # enable_desync_debug should be between 0 and 3
561 if [ -z "`echo $enable_desync_debug | egrep '^[012]$'`" ]; then
562 log 1 "configure: error: invalid option --enable-desync-debug=$enable_desync_debug"
563 log 1 " Available options are: --enable-desync-debug[=012]"
574 # Check for universal builds; they only make sense for OSX, so fail if enabled for another OS
575 if [ "$enable_universal" = "0" ]; then
576 log 1 "checking universal build... no"
578 if [ "$os" != "OSX" ]; then
579 log 1 "configure: error: --enable-universal only works on OSX"
582 log 1 "checking universal build... yes, for: $enable_universal"
585 # Already detected by check_build
586 log 1 "checking build cc... $cc_build"
587 log 1 "checking host cc... $cc_host"
592 if [ "$enable_strip" != "0" ]; then
595 log 1 "checking strip... disabled"
599 if [ "$enable_builtin_depend" != "0" ]; then
600 log 1 "checking builtin depend... yes"
601 makedepend="\$(SRC_OBJS_DIR)/\$(DEPEND)"
603 log 1 "checking builtin depend... no"
608 detect_sse_capable_architecture
610 if [ "$enable_static" = "1" ]; then
611 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then
618 if [ "$enable_static" != "0" ]; then
619 log 1 "checking static... yes"
621 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "DOS" ]; then
622 log 1 "WARNING: static is only known to work on Windows, DOS, MacOSX and MorphOS"
623 log 1 "WARNING: use static at your own risk on this platform"
628 log 1 "checking static... no"
631 if [ "$enable_unicode" = "1" ]; then
632 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ]; then
639 if [ "$enable_unicode" != "0" ]; then
640 log 1 "checking unicode... yes"
642 log 1 "checking unicode... no"
645 # Show what we configured
646 if [ "$enable_debug" = "0" ]; then
647 log 1 "using debug level... no"
648 elif [ "$enable_profiling" != "0" ]; then
649 log 1 "using debug level... profiling (debug level $enable_debug)"
651 log 1 "using debug level... level $enable_debug"
654 if [ "$enable_desync_debug" = "0" ]; then
655 log 1 "using desync debug level... no"
657 log 1 "using desync debug level... level $enable_desync_debug"
658 log 1 "WARNING: desync debug functions slow down the game considerably."
659 log 1 "WARNING: use only when you are instructed to do so"
660 log 1 " or when you know what you are doing."
665 if [ "$enable_lto" != "0" ]; then
666 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
667 has_lto=`($cxx_build -dumpspecs 2>&1 | grep '\%{flto') || ($cxx_build -help ipo 2>&1 | grep '\-ipo')`
668 if [ -n "$has_lto" ]; then
669 log 1 "using link time optimization... yes"
672 log 1 "using link time optimization... no"
673 log 1 "WARNING: you selected link time optimization but it is not found."
677 log 1 "using link time optimization... no"
681 if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
682 if [ "$with_osx_sysroot" = "1" ]; then
685 log 1 "checking OSX sysroot... not OSX, skipping"
687 log 1 "configure: error: --with-osx-sysroot only works if OSX is the target"
692 if [ "$with_osx_sysroot" != "0" ]; then
693 if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then
694 # Sysroot manually specified? Check for usability
695 log 1 "checking OSX sysroot... $with_osx_sysroot"
696 if ! check_osx_sdk "$with_osx_sysroot"; then
697 log 1 "Passed sysroot not found/not functional"
701 # If autodetect and no universal, use system default
702 if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then
703 log 1 "checking OSX sysroot... no (use system default)"
705 log 1 "checking OSX sysroot... automatically"
710 if [ -n "$osx_sdk_path" ]; then
711 if [ "$enable_universal" != "0" ]; then
712 if [ -z "$osx_sdk_104_path" ]; then
713 log 1 "WARNING: Could not find a usable 10.4u SDK, the resulting"
714 log 1 "WARNING: binary will only run on OSX 10.5 or later"
715 osx_sdk_104_path="$osx_sdk_path"
717 OSX_SYSROOT="-isysroot $osx_sdk_104_path"
718 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_104_path"
720 OSX_SYSROOT="-isysroot $osx_sdk_path"
721 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_path"
725 if [ "$os" = "OSX" ]; then
726 log 1 "checking OSX sysroot... no (use system default)"
734 if [ "$enable_dedicated" != "0" ]; then
735 log 1 "checking GDI video driver... dedicated server, skipping"
736 log 1 "checking dedicated... found"
738 if [ "$enable_network" = "0" ]; then
739 log 1 "configure: error: building a dedicated server without network support is pointless"
743 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
744 log 1 "checking GDI video driver... found"
746 log 1 "checking GDI video driver... not Windows, skipping"
749 if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
750 log 1 "configure: error: no video driver development files found"
751 log 1 " If you want a dedicated server use --enable-dedicated as parameter"
754 log 1 "checking dedicated... not selected"
758 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
759 log 1 "checking console application... not Windows, skipping"
760 elif [ "$enable_console" = "1" ] && [ "$enable_dedicated" != "0" ]; then
761 log 1 "checking console application... dedicated server, enabled"
763 elif [ "$enable_console" = "1" ]; then
764 log 1 "checking console application... disabled (only used when forced)"
766 elif [ "$enable_console" = "0" ]; then
767 log 1 "checking console application... disabled"
769 log 1 "checking console application... enabled"
772 if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then
773 log 1 "checking network... DOS, skipping"
775 elif [ "$enable_network" != "0" ]; then
776 log 1 "checking network... found"
778 log 1 "checking network... disabled"
781 log 1 "checking squirrel... found"
782 SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
784 if [ "$enable_translator" != "0" ]; then
785 log 1 "checking translator... debug"
786 # -t shows TODO items, normally they are muted
789 log 1 "checking translator... no"
793 if [ "$enable_assert" != "0" ]; then
794 log 1 "checking assert... enabled"
796 log 1 "checking assert... disabled"
799 pre_detect_with_zlib=$with_zlib
802 if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then
803 log 1 "WARNING: zlib was not detected or disabled"
804 log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
805 log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
806 log 1 "WARNING: using PNG, or using fonts, ...) will be disabled."
807 if [ "$pre_detect_with_zlib" = "0" ]; then
808 log 1 "WARNING: We strongly suggest you to install zlib."
810 log 1 "configure: error: no zlib detected"
811 log 1 " If you want to compile without zlib use --without-zlib as parameter"
816 pre_detect_with_lzma=$with_lzma
819 if [ "$with_lzma" = "0" ] || [ -z "$lzma_config" ]; then
820 log 1 "WARNING: lzma was not detected or disabled"
821 log 1 "WARNING: OpenTTD doesn't require lzma, but it does mean that many features"
822 log 1 "WARNING: (like loading most savegames/scenarios and joining most servers)"
823 log 1 "WARNING: will be disabled."
824 if [ "$pre_detect_with_lzma" = "0" ]; then
825 log 1 "WARNING: We strongly suggest you to install liblzma."
826 log 1 "configure: error: no liblzma detected"
828 log 1 " If you want to compile without lzma use --without-lzma as parameter"
833 pre_detect_with_lzo2=$with_lzo2
836 if [ "$with_lzo2" = "0" ] || [ -z "$lzo2" ]; then
837 log 1 "WARNING: liblzo2 was not detected or disabled"
838 log 1 "WARNING: OpenTTD doesn't require liblzo2, but it does mean that"
839 log 1 "WARNING: loading old savegames/scenarios will be disabled."
840 if [ "$pre_detect_with_lzo2" = "0" ]; then
841 log 1 "WARNING: We strongly suggest you to install liblzo2."
843 log 1 "configure: error: no liblzo2 detected"
844 log 1 " If you want to compile without liblzo2 use --without-liblzo2 as parameter"
858 if [ "$with_direct_music" != "0" ]; then
859 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
860 if [ "$with_direct_music" != "1" ]; then
861 log 1 "configure: error: direct-music is only supported on Win32 targets"
864 with_direct_music="0"
866 log 1 "checking direct-music... not Windows, skipping"
874 if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
875 endian="PREPROCESSOR"
878 log 1 "checking endianness... $endian"
880 # Suppress language errors when there is a version defined, indicating a release
881 # It just isn't pretty if any release produces warnings in the languages.
882 if [ -f "$ROOT_DIR/version" ]; then
884 log 1 "suppress language errors... yes"
887 log 1 "suppress language errors... no"
890 if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
891 if [ "$os" = "MORPHOS" ]; then
892 strip_arg="--strip-all --strip-unneeded --remove-section .comment"
893 elif [ "$os" = "OSX" ]; then
895 elif [ "$os" = "OS2" ]; then
897 # OS2 uses strip via gcc, because it needs to be feed to emxbind
898 LDFLAGS="$LDFLAGS -s"
899 elif [ "$os" = "SUNOS" ]; then
900 # The GNU strip does know -s, the non-GNU doesn't
901 # So try to detect it (in a bit of an ugly way)
902 strip_arg="`$strip -s strip.test 2>/dev/null && echo \"-s\"`"
907 log 1 "checking stripping... $strip $strip_arg"
910 log 1 "checking stripping... skipped"
913 if [ "$with_distcc" = "0" ]; then
914 log 1 "checking distcc... no"
915 elif [ "$with_distcc" = "1" ]; then
918 log 1 "checking distcc... no (only used when forced)"
919 elif [ "$with_distcc" = "2" ]; then
922 distcc="$with_distcc"
924 if [ "$with_distcc" != "0" ]; then
925 res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
926 if [ "$res" != "distcc" ]; then
928 log 1 "checking distcc... no"
929 if [ "$with_distcc" = "2" ]; then
930 log 1 "configure: error: no distcc detected, but was forced to be used"
933 if [ "$with_distcc" != "1" ]; then
934 log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
939 log 1 "checking distcc... $distcc"
942 if [ "$with_ccache" = "0" ]; then
943 log 1 "checking ccache... no"
944 elif [ "$with_ccache" = "1" ]; then
947 log 1 "checking ccache... no (only used when forced)"
948 elif [ "$with_ccache" = "2" ]; then
951 ccache="$with_ccache"
953 if [ "$with_ccache" != "0" ]; then
954 res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
955 if [ "$res" != "ccache" ]; then
957 log 1 "checking ccache... no"
958 if [ "$with_ccache" = "2" ]; then
959 log 1 "configure: error: no ccache detected, but was forced to be used"
962 if [ "$with_ccache" != "1" ]; then
963 log 1 "configure: error: '$with_ccache' doesn't seem a ccache to me"
968 log 1 "checking ccache... $ccache"
974 if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then
975 log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum"
979 if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then
980 log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec"
984 if [ "$os" = "DOS" ]; then
988 if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
989 if [ "$with_application_bundle" = "1" ]; then
990 with_application_bundle="0"
992 log 1 "checking OSX application bundle... not OSX, skipping"
994 log 1 "configure: error: --with-application-bundle only works if OSX is the target"
999 if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then
1000 OSXAPP="OpenTTD.app"
1005 if [ "$os" = "OSX" ]; then
1006 # Test on ppc970 (G5) - we can optimize there
1008 if [ "$enable_osx_g5" != "0" ]; then
1009 log 1 "detecting ppc970 (G5)... yes (forced)"
1011 # First, are we a real OSX system, else we can't detect it
1012 native=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | grep darwin`
1013 # If $host doesn't match $build , we are cross-compiling
1014 if [ -n "$native" ] && [ "$build" = "$host" ]; then
1015 $cxx_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector
1018 if [ -n "$res" ]; then
1019 # This is G5, add flags for it
1022 log 1 "detecting ppc970 (G5)... yes"
1026 log 1 "detecting ppc970 (G5)... no"
1031 log 1 "detecting ppc970 (G5)... no (cross-compiling)"
1035 if [ "$enable_osx_g5" != "0" ]; then
1036 log 1 "configure: error: ppc970 (OSX G5) selected, but not compiling for OSX"
1037 log 1 "configure: error: either select OSX as OS, or deselect ppc970"
1043 if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then
1044 log 1 "checking revision... svn detection"
1045 elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && [ -n "`LC_ALL=C svn info $ROOT_DIR/.. | grep '^URL:.*tags$'`" ]; then
1046 # subversion changed its behaviour; now not all folders have a .svn folder,
1047 # but only the root folder. Since making tags requires a (sparse) checkout
1048 # of the tags folder, the folder of the tag does not have a .svn folder
1049 # anymore and this fails to detect the subversion repository checkout.
1050 log 1 "checking revision... svn detection (tag)"
1051 elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
1052 log 1 "checking revision... git detection"
1053 elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then
1054 log 1 "checking revision... hg detection"
1055 elif [ -f "$ROOT_DIR/.ottdrev" ]; then
1056 log 1 "checking revision... source tarball"
1058 log 1 "checking revision... no detection"
1059 log 1 "WARNING: there is no means to determine the version."
1060 log 1 "WARNING: please use a subversion, mercurial, or git checkout of OpenTTD."
1061 log 1 "WARNING: you can only join game servers that have been compiled without"
1062 log 1 "WARNING: version detection."
1063 log 1 "WARNING: there is a great chance you desync."
1064 log 1 "WARNING: USE WITH CAUTION!"
1069 if [ "$doc_dir" = "1" ]; then
1070 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1071 doc_dir="share/doc/openttd"
1073 doc_dir="$data_dir/docs"
1076 doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1079 if [ "$icon_theme_dir" = "1" ]; then
1080 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1081 icon_theme_dir="share/icons/hicolor"
1086 icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1089 if [ "$personal_dir" = "1" ]; then
1090 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
1091 personal_dir="OpenTTD"
1092 elif [ "$os" = "OSX" ]; then
1093 personal_dir="Documents/OpenTTD"
1095 personal_dir=".openttd"
1098 personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1101 if [ "$shared_dir" = "1" ]; then
1102 # we are using default values
1103 if [ "$os" = "OSX" ]; then
1104 shared_dir="/Library/Application\\\\ Support/OpenTTD"
1109 shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1112 if [ "$man_dir" = "1" ]; then
1113 # add manpage on UNIX systems
1114 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
1115 man_dir="share/man/man6"
1120 man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1123 if [ "$menu_dir" = "1" ]; then
1124 # add a freedesktop menu item only for some UNIX systems
1125 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1126 menu_dir="share/applications"
1131 menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1136 if [ -n "$personal_dir" ]
1138 log 1 "personal home directory... $personal_dir"
1140 log 1 "personal home directory... none"
1143 if [ -n "$shared_dir" ]
1145 log 1 "shared data directory... $shared_dir"
1147 log 1 "shared data directory... none"
1150 if [ -n "$install_dir" ]
1152 log 1 "installation directory... $install_dir"
1154 log 1 "installation directory... none"
1157 if [ -n "$icon_theme_dir" ]
1159 log 1 "icon theme directory... $icon_theme_dir"
1161 log 1 "icon theme directory... none"
1164 if [ -n "$man_dir" ]
1166 log 1 "manual page directory... $man_dir"
1168 log 1 "manual page directory... none"
1171 if [ -n "$menu_dir" ]
1173 log 1 "menu item directory... $menu_dir"
1175 log 1 "menu item directory... none"
1179 make_compiler_cflags() {
1182 # $2 - name of the cflags variable
1183 # $3 - name of the cxxflags variable
1184 # $4 - name of the ldflags variable
1185 # $5 - name of the features variable
1187 eval eval "flags=\\\$$2"
1188 eval eval "cxxflags=\\\$$3"
1189 eval eval "ldflags=\\\$$4"
1190 eval eval "features=\\\$$5"
1192 if [ `basename $1 | cut -c 1-3` = "icc" ]; then
1193 # Enable some things only for certain ICC versions
1194 cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
1196 flags="$flags -rdynamic"
1197 ldflags="$ldflags -rdynamic"
1199 if [ -z "$first_time_icc_check" ]; then
1200 first_time_icc_check=no
1201 if [ $cc_version -lt 90 ]; then
1202 log 1 "WARNING: you seem to be using a very old version of ICC"
1203 log 1 "WARNING: OpenTTD hasn't been tested with this version"
1205 elif [ $cc_version -lt 120 ]; then
1206 log 1 "WARNING: you seem to be using an unsupported ICC version"
1207 log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD"
1212 flags="$flags -Wall"
1213 # remark #111: statement is unreachable
1214 flags="$flags -wd111"
1215 # remark #181: argument is incompatible with corresponding format string conversion
1216 # ICC is very picky about signedness of operands, warnings provided by GCC are enough
1217 flags="$flags -wd181"
1218 # remark #271: trailing comma is nonstandard
1219 flags="$flags -wd271"
1220 # remark #280: selector expression is constant
1221 flags="$flags -wd280"
1222 # remark #304: access control not specified ("public" by default)
1223 flags="$flags -wd304"
1224 # remark #383: value copied to temporary, reference to temporary used
1225 flags="$flags -wd383"
1226 # remark #444: destructor for base class ... is not virtual
1227 flags="$flags -wd444"
1228 # remark #593: variable ... was set but never used
1229 flags="$flags -wd593"
1230 # warning #654: overloaded virtual function ... is only partially overridden in class ...
1231 flags="$flags -wd654"
1232 # remark #810: conversion from ... to ... may lose significant bits
1233 flags="$flags -wd810"
1234 # remark #869: parameter ... was never referenced
1235 flags="$flags -wd869"
1236 # warning #873: function ... ::operator new ... has no corresponding operator delete ...
1237 flags="$flags -wd873"
1238 # remark #981: operands are evaluated in unspecified order
1239 flags="$flags -wd981"
1240 # remark #1418: external function definition with no prior declaration
1241 flags="$flags -wd1418"
1242 # remark #1419: external declaration in primary source file
1243 flags="$flags -wd1419"
1244 # remark #1572: floating-point equality and inequality
1245 flags="$flags -wd1572"
1246 # remark #1599: declaration hides variable/parameter ...
1247 flags="$flags -wd1599"
1248 # remark #1720: function ... ::operator new ... has no corresponding member operator delete ...
1249 flags="$flags -wd1720"
1251 if [ $cc_version -lt 110 ]; then
1252 # warns about system headers with recent glibc:
1253 # warning #1292: attribute "__nonnull__" ignored
1254 flags="$flags -wd1292"
1257 if [ $cc_version -ge 100 ]; then
1258 # warning #1899: multicharacter character literal (potential portability problem)
1259 flags="$flags -wd1899"
1260 # vec report defaults to telling where it did loop vectorisation, which is not very important
1261 flags="$flags -vec-report=0 "
1264 if [ $cc_version -ge 110 ]; then
1265 # remark #2259: non-pointer conversion from ... to ... may lose significant bits
1266 flags="$flags -wd2259"
1267 # Use c++0x mode so static_assert() is available
1268 cxxflags="$cxxflags -std=c++0x"
1271 if [ "$enable_lto" != "0" ]; then
1272 has_ipo=`$1 -help ipo | grep '\-ipo'`
1273 if [ -n "$has_ipo" ]; then
1274 # Use IPO (only if we see IPO exists and is requested)
1276 features="$features lto"
1279 elif [ `basename $1 | grep 'clang'` ]; then
1280 # Enable some things only for certain clang versions
1281 cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
1283 # aliasing rules are not held in openttd code
1284 flags="$flags -fno-strict-aliasing"
1286 # -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
1287 # -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
1288 flags="$flags -Wall -W -Wextra"
1290 # warning: unused parameter '...'
1291 flags="$flags -Wno-unused-parameter"
1293 # warning: expression result unused
1294 flags="$flags -Wno-unused-value"
1296 # warning: multi-character character constant
1297 flags="$flags -Wno-multichar"
1299 # warning: explicitly assigning a variable of type '...' to itself
1300 # it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
1301 flags="$flags -Wno-self-assign"
1303 if [ "$cc_version" -lt "30" ]; then
1304 # warning: equality comparison with extraneous parentheses
1305 flags="$flags -Wno-parentheses"
1306 # warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
1307 flags="$flags -Wno-sign-compare"
1310 if [ "$cc_version" -ge "30" ]; then
1311 # warning: equality comparison with extraneous parentheses
1312 # this warning could be useful, but it warns about code in squirrel
1313 flags="$flags -Wno-parentheses-equality"
1316 if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then
1317 # ccache and distcc run separate preprocess and compile passes,
1318 # both are fed with the same CFLAGS. Unfortunately, clang
1319 # complains about -I when compiling preprocessed files:
1320 # "clang: warning: argument unused during compilation: '-I /usr/include'"
1321 flags="$flags -Qunused-arguments"
1324 if [ "$enable_assert" -eq "0" ]; then
1325 # do not warn about unused variables when building without asserts
1326 flags="$flags -Wno-unused-variable"
1329 if [ "$cc_version" -ge "33" ]; then
1330 # clang completed C++11 support in version 3.3
1331 flags="$flags -std=c++11"
1334 # rdynamic is used to get useful stack traces from crash reports.
1335 ldflags="$ldflags -rdynamic"
1337 # Enable some things only for certain GCC versions
1338 # cc_version = major_version * 100 + minor_version
1339 # For example: "3.3" -> 303, "4.9.2" -> 409, "6" -> 600, "23.5" -> 2305
1340 cc_version=`$1 -dumpversion | $awk -F . '{printf "%d%02d", $1, $2}'`
1342 if [ $cc_version -lt 303 ]; then
1343 log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
1347 flags="$flags -Wall -Wno-multichar -Wsign-compare -Wundef"
1348 flags="$flags -Wwrite-strings -Wpointer-arith"
1349 flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
1350 flags="$flags -Wformat=2 -Wformat-security"
1352 if [ $enable_assert -eq 0 ]; then
1353 # Do not warn about unused variables when building without asserts
1354 flags="$flags -Wno-unused-variable"
1355 if [ $cc_version -ge 406 ]; then
1356 # GCC 4.6 gives more warnings, disable them too
1357 flags="$flags -Wno-unused-but-set-variable"
1358 flags="$flags -Wno-unused-but-set-parameter"
1362 if [ $cc_version -ge 304 ]; then
1363 # Warn when a variable is used to initialise itself:
1365 flags="$flags -Winit-self"
1368 if [ $cc_version -ge 400 ]; then
1369 # GCC 4.0+ complains about that we break strict-aliasing.
1370 # On most places we don't see how to fix it, and it doesn't
1371 # break anything. So disable strict-aliasing to make the
1372 # compiler all happy.
1373 flags="$flags -fno-strict-aliasing"
1374 # Warn about casting-out 'const' with regular C-style cast.
1375 # The preferred way is const_cast<>() which doesn't warn.
1376 flags="$flags -Wcast-qual"
1379 if [ $cc_version -ge 402 ]; then
1380 # GCC 4.2+ automatically assumes that signed overflows do
1381 # not occur in signed arithmetics, whereas we are not
1382 # sure that they will not happen. It furthermore complains
1383 # about its own optimized code in some places.
1384 flags="$flags -fno-strict-overflow"
1385 # GCC 4.2 no longer includes -Wnon-virtual-dtor in -Wall.
1386 # Enable it in order to be consistent with older GCC versions.
1387 flags="$flags -Wnon-virtual-dtor"
1390 if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then
1391 # Use gnu++0x mode so static_assert() is available.
1392 # Don't use c++0x, it breaks mingw (with gcc 4.4.0).
1393 cxxflags="$cxxflags -std=gnu++0x"
1396 if [ $cc_version -eq 405 ]; then
1397 # Prevent optimisation supposing enums are in a range specified by the standard
1398 # For details, see http://gcc.gnu.org/PR43680
1399 flags="$flags -fno-tree-vrp"
1402 if [ $cc_version -eq 407 ]; then
1403 # Disable -Wnarrowing which gives many warnings, such as:
1404 # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
1405 # They are valid according to the C++ standard, but useless.
1406 cxxflags="$cxxflags -Wno-narrowing"
1409 if [ $cc_version -ge 407 ]; then
1410 # Disable bogus 'attempt to free a non-heap object' warning
1411 flags="$flags -Wno-free-nonheap-object"
1414 if [ $cc_version -ge 600 ]; then
1415 # -flifetime-dse=2 (default since GCC 6) doesn't play
1416 # well with our custom pool item allocator
1417 cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14"
1420 if [ "$enable_lto" != "0" ]; then
1421 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
1422 has_lto=`$1 -dumpspecs | grep '\%{flto'`
1423 if [ -n "$has_lto" ]; then
1424 # Use LTO only if we see LTO exists and is requested
1425 if [ $cc_version -lt 406 ]; then
1426 flags="$flags -flto"
1428 flags="$flags -flto=jobserver"
1430 ldflags="$ldflags -fwhole-program"
1431 features="$features lto"
1435 has_rdynamic=`$1 -dumpspecs | grep rdynamic`
1436 if [ -n "$has_rdynamic" ]; then
1437 # rdynamic is used to get useful stack traces from crash reports.
1438 flags="$flags -rdynamic"
1439 ldflags="$ldflags -rdynamic"
1443 eval "$2=\"$flags\""
1444 eval "$3=\"$cxxflags\""
1445 eval "$4=\"$ldflags\""
1446 eval "$5=\"$features\""
1449 make_cflags_and_ldflags() {
1450 # General CFlags for BUILD
1451 CFLAGS_BUILD="$CFLAGS_BUILD"
1452 # Special CXXFlags for BUILD
1453 CXXFLAGS_BUILD="$CXXFLAGS_BUILD"
1455 LDFLAGS_BUILD="$LDFLAGS_BUILD"
1456 # FEATURES for BUILD (lto)
1458 # General CFlags for HOST
1460 # Special CXXFlags for HOST
1461 CXXFLAGS="$CXXFLAGS"
1462 # Libs to compile. In fact this is just LDFLAGS
1464 # LDFLAGS used for HOST
1466 # FEATURES for HOST (lto)
1469 make_compiler_cflags "$cc_build" "CFLAGS_BUILD" "CXXFLAGS_BUILD" "LDFLAGS_BUILD" "FEATURES_BUILD"
1470 make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
1472 CFLAGS="$CFLAGS -D$os"
1473 CFLAGS_BUILD="$CFLAGS_BUILD -D$os"
1475 if [ "$enable_debug" = "0" ]; then
1476 # No debug, add default stuff
1477 OBJS_SUBDIR="release"
1478 if [ "$os" = "MORPHOS" ]; then
1479 CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
1480 LDFLAGS="$LDFLAGS -noixemul"
1483 if [ "$enable_profiling" = "0" ]; then
1484 # -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
1485 CFLAGS="-fomit-frame-pointer $CFLAGS"
1487 CFLAGS="-O2 $CFLAGS"
1491 # Each debug level reduces the optimization by a bit
1492 if [ $enable_debug -ge 1 ]; then
1493 CFLAGS="$CFLAGS -g -D_DEBUG"
1494 if [ "$os" = "PSP" ]; then
1495 CFLAGS="$CFLAGS -G0"
1498 if [ $enable_debug -ge 2 ]; then
1499 CFLAGS="$CFLAGS -fno-inline"
1501 if [ $enable_debug -ge 3 ]; then
1502 CFLAGS="$CFLAGS -O0"
1504 CFLAGS="$CFLAGS -O2"
1508 if [ $enable_debug -le 2 ]; then
1509 cc_host_is_gcc=`basename "$cc_host" | grep "gcc" 2>/dev/null`
1510 if [ -n "$cc_host_is_gcc" ]; then
1511 # Define only when compiling with GCC. Some GLIBC versions use GNU
1512 # extensions in a way that breaks build with at least ICC.
1513 # This requires -O1 or more, so debug level 3 (-O0) is excluded.
1514 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
1517 cc_build_is_gcc=`basename "$cc_build" | grep "gcc" 2>/dev/null`
1518 if [ -n "$cc_build_is_gcc" ]; then
1519 # Just add -O1 to the tools needed for building.
1520 CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
1524 if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then
1525 # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
1526 # wrongly optimizing ^= in loops. This disables the failing optimisation.
1527 CFLAGS="$CFLAGS -fno-expensive-optimizations"
1530 if [ "$enable_profiling" != "0" ]; then
1531 CFLAGS="$CFLAGS -pg"
1532 LDFLAGS="$LDFLAGS -pg"
1535 if [ "$with_threads" = "0" ]; then
1536 CFLAGS="$CFLAGS -DNO_THREADS"
1538 if [ "$with_sse" = "1" ]; then
1539 CFLAGS="$CFLAGS -DWITH_SSE"
1542 if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
1543 if [ "$os" = "CYGWIN" ]; then
1544 flags="$flags -mwin32"
1545 LDFLAGS="$LDFLAGS -mwin32"
1547 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
1548 if [ $cc_version -lt 406 ]; then
1549 flags="$flags -mno-cygwin"
1550 LDFLAGS="$LDFLAGS -mno-cygwin"
1553 if [ "$enable_console" != "0" ]; then
1554 LDFLAGS="$LDFLAGS -Wl,--subsystem,console"
1556 LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
1559 LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
1561 if [ $cc_version -ge 404 ]; then
1562 LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
1564 if [ $cc_version -ge 407 ]; then
1565 CFLAGS="$CFLAGS -mno-ms-bitfields"
1570 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
1571 LIBS="$LIBS -lpthread"
1574 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
1577 if [ "$os" = "WINCE" ]; then
1578 LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
1580 if [ "$os" = "PSP" ]; then
1581 CFLAGS="$CFLAGS -I`$psp_config -p`/include"
1582 LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
1584 CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
1585 LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
1588 if [ "$os" = "MORPHOS" ]; then
1589 # -Wstrict-prototypes generates much noise because of system headers
1590 CFLAGS="$CFLAGS -Wno-strict-prototypes"
1593 if [ "$os" = "OPENBSD" ]; then
1594 LIBS="$LIBS -pthread"
1597 if [ "$os" = "OSX" ]; then
1598 LDFLAGS="$LDFLAGS -framework Cocoa"
1600 # Add macports include dir which is not always set a default system dir. This avoids zillions of bogus warnings.
1601 CFLAGS="$CFLAGS -isystem/opt/local/include"
1603 if [ "$enable_dedicated" = "0" ] && ([ "$cpu_type" = "32" ] || [ "$enable_universal" != "0" ]); then
1604 LIBS="$LIBS -framework QuickTime"
1606 CFLAGS="$CFLAGS -DNO_QUICKTIME"
1609 if [ "$enable_universal" = "0" ]; then
1610 # Universal builds set this elsewhere
1611 CFLAGS="$OSX_SYSROOT $CFLAGS"
1612 LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
1615 if [ "$enable_universal" = "0" ] && [ $cc_version -gt 400 ]; then
1616 # Only set the min version when not doing an universal build.
1617 # Universal builds set the version elsewhere.
1618 if [ "$cpu_type" = "64" ]; then
1619 CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
1621 gcc_cpu=`$cc_host -dumpmachine`
1622 if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
1623 # PowerPC build can run on 10.3
1624 CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
1626 # Intel is only available starting from 10.4
1627 CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
1633 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
1634 LIBS="$LIBS -lmidi -lbe"
1637 # Most targets act like UNIX, just with some additions
1638 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
1639 CFLAGS="$CFLAGS -DUNIX"
1641 # And others like Windows
1642 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
1643 CFLAGS="$CFLAGS -DWIN"
1646 if [ -n "$allegro_config" ]; then
1647 CFLAGS="$CFLAGS -DWITH_ALLEGRO"
1648 CFLAGS="$CFLAGS `$allegro_config --cflags`"
1649 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1650 if [ "$enable_static" != "0" ]; then
1651 LIBS="$LIBS `$allegro_config --static --libs`"
1653 LIBS="$LIBS `$allegro_config --libs`"
1658 if [ -n "$sdl_config" ]; then
1659 CFLAGS="$CFLAGS -DWITH_SDL"
1660 # SDL must not add _GNU_SOURCE as it breaks many platforms
1661 CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
1662 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1663 if [ "$enable_static" != "0" ]; then
1664 LIBS="$LIBS `$sdl_config --static-libs`"
1666 LIBS="$LIBS `$sdl_config --libs`"
1671 if [ "$with_cocoa" != "0" ]; then
1672 CFLAGS="$CFLAGS -DWITH_COCOA"
1673 LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox"
1675 if [ "$enable_cocoa_quartz" != "0" ]; then
1676 CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ"
1679 if [ "$enable_cocoa_quickdraw" != "0" ]; then
1680 CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW"
1684 if [ "$with_zlib" != "0" ]; then
1685 CFLAGS="$CFLAGS -DWITH_ZLIB"
1686 CFLAGS="$CFLAGS `$zlib_config --cflags | tr '\n\r' ' '`"
1687 if [ "$enable_static" != "0" ]; then
1688 LIBS="$LIBS `$zlib_config --libs --static | tr '\n\r' ' '`"
1690 LIBS="$LIBS `$zlib_config --libs | tr '\n\r' ' '`"
1694 if [ -n "$lzma_config" ]; then
1695 CFLAGS="$CFLAGS -DWITH_LZMA"
1696 CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`"
1698 if [ "$enable_static" != "0" ]; then
1699 CFLAGS="$CFLAGS -DLZMA_API_STATIC"
1700 LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' ' '`"
1702 LIBS="$LIBS `$lzma_config --libs | tr '\n\r' ' '`"
1706 if [ "$with_lzo2" != "0" ]; then
1707 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1712 CFLAGS="$CFLAGS -DWITH_LZO"
1715 if [ -n "$xdg_basedir_config" ]; then
1716 CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR"
1717 CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' ' '`"
1719 if [ "$enable_static" != "0" ]; then
1720 LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' ' '`"
1722 LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' ' '`"
1726 # 64bit machines need -D_SQ64
1727 if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
1728 CFLAGS="$CFLAGS -D_SQ64"
1730 CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR"
1732 if [ -n "$png_config" ]; then
1733 CFLAGS="$CFLAGS -DWITH_PNG"
1734 CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' ' '`"
1736 if [ "$enable_static" != "0" ]; then
1737 LIBS="$LIBS `$png_config --libs --static | tr '\n\r' ' '`"
1739 LIBS="$LIBS `$png_config --libs | tr '\n\r' ' '`"
1743 if [ -n "$fontconfig_config" ]; then
1744 CFLAGS="$CFLAGS -DWITH_FONTCONFIG"
1745 CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' ' '`"
1747 if [ "$enable_static" != "0" ]; then
1748 LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`"
1750 LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' ' '`"
1754 if [ -n "$freetype_config" ]; then
1755 CFLAGS="$CFLAGS -DWITH_FREETYPE"
1756 CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`"
1758 if [ "$enable_static" != "0" ]; then
1759 LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '`"
1761 LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
1765 if [ -n "$icu_layout_config" ]; then
1766 CFLAGS="$CFLAGS -DWITH_ICU_LAYOUT"
1767 CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' ' '`"
1769 if [ "$static_icu" != "0" ]; then
1770 LIBS="$LIBS `$icu_layout_config --libs --static | tr '\n\r' ' ' | sed s/-licu/-lsicu/g`"
1772 LIBS="$LIBS `$icu_layout_config --libs | tr '\n\r' ' '`"
1776 if [ -n "$icu_sort_config" ]; then
1777 CFLAGS="$CFLAGS -DWITH_ICU_SORT"
1778 CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' ' '`"
1780 if [ "$static_icu" != "0" ]; then
1781 LIBS="$LIBS `$icu_sort_config --libs --static | tr '\n\r' ' ' | sed s/-licu/-lsicu/g`"
1783 LIBS="$LIBS `$icu_sort_config --libs | tr '\n\r' ' '`"
1788 if [ "$with_direct_music" != "0" ]; then
1789 CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
1790 # GCC 4.0+ doesn't like the DirectX includes (gives tons of
1791 # warnings on it we won't be able to fix). For now just
1792 # suppress those warnings.
1793 if [ $cc_version -ge 400 ]; then
1794 CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
1798 if [ -n "$libtimidity_config" ]; then
1799 CFLAGS="$CFLAGS -DLIBTIMIDITY"
1800 CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' ' '`"
1802 if [ "$enable_static" != "0" ]; then
1803 LIBS="$LIBS `$libtimidity_config --libs --static | tr '\n\r' ' '`"
1805 LIBS="$LIBS `$libtimidity_config --libs | tr '\n\r' ' '`"
1809 if [ "$with_iconv" != "0" ]; then
1810 CFLAGS="$CFLAGS -DWITH_ICONV"
1811 if [ "$link_to_iconv" = "yes" ]; then
1812 LIBS="$LIBS -liconv"
1813 if [ "$with_iconv" != "2" ]; then
1814 CFLAGS="$CFLAGS -I$with_iconv/include"
1815 LIBS="$LIBS -L$with_iconv/lib"
1819 if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then
1820 CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV"
1824 if [ -n "$with_midi" ]; then
1825 CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\""
1827 if [ -n "$with_midi_arg" ]; then
1828 CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\""
1831 if [ "$enable_dedicated" != "0" ]; then
1832 CFLAGS="$CFLAGS -DDEDICATED"
1835 if [ "$enable_unicode" != "0" ]; then
1836 CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
1839 if [ "$enable_network" != "0" ]; then
1840 CFLAGS="$CFLAGS -DENABLE_NETWORK"
1842 if [ "$os" = "BEOS" ]; then
1843 LDFLAGS="$LDFLAGS -lbind -lsocket"
1846 if [ "$os" = "HAIKU" ]; then
1847 LDFLAGS="$LDFLAGS -lnetwork"
1850 if [ "$os" = "SUNOS" ]; then
1851 LDFLAGS="$LDFLAGS -lnsl -lsocket"
1855 if [ "$enable_static" != "0" ]; then
1856 # OSX can't handle -static in LDFLAGS
1857 if [ "$os" != "OSX" ]; then
1858 LDFLAGS="$LDFLAGS -static"
1862 if [ "$enable_assert" = "0" ]; then
1863 CFLAGS="$CFLAGS -DNDEBUG"
1864 CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG"
1867 if [ "$enable_desync_debug" != "0" ]; then
1868 CFLAGS="$CFLAGS -DRANDOM_DEBUG"
1871 if [ "$enable_osx_g5" != "0" ]; then
1872 CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
1875 if [ -n "$personal_dir" ]; then
1876 CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
1879 if [ -n "$shared_dir" ]; then
1880 CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
1883 CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
1885 if [ "$enable_lto" != "0" ]; then
1886 lto_build=`echo "$FEATURES_BUILD" | grep "lto"`
1887 lto_host=`echo "$FEATURES" | grep "lto"`
1888 if [ -z "$lto_build$lto_host" ]; then
1889 log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it"
1890 log 1 "WARNING: LTO/IPO has been disabled"
1892 if [ -n "$lto_build" ]; then
1893 LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD"
1895 if [ -n "$lto_host" ]; then
1896 LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS"
1900 log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
1901 log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
1902 log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
1903 log 1 "using CFLAGS... $CFLAGS"
1904 log 1 "using CXXFLAGS... $CXXFLAGS"
1905 log 1 "using LDFLAGS... $LIBS $LDFLAGS"
1907 # Makedepend doesn't like something like: -isysroot /OSX/blabla
1908 # so convert it to: -isysroot -OSX/blabla. makedepend just ignores
1909 # any - command it doesn't know, so we are pretty save.
1910 # Lovely hackish, not?
1911 # Btw, this almost always comes from outside the configure, so it is
1912 # not something we can control.
1913 # Also make makedepend aware of compiler's built-in defines.
1914 if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then
1915 # Append CXXFLAGS possibly containing -std=c++0x
1916 cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
1918 # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
1919 cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
1924 if [ "$with_distcc" != "0" ]; then
1925 cc_host="$distcc $cc_host"
1926 cxx_host="$distcc $cxx_host"
1928 log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
1932 if [ "$with_ccache" != "0" ]; then
1933 cc_host="$ccache $cc_host"
1934 cxx_host="$ccache $cxx_host"
1940 # $1 - Type for message (build / host)
1941 # $2 - What to fill with the found compiler
1942 # $3 - System to try
1943 # $4 - Compiler to try
1944 # $5 - Env-setting to try
1945 # $6 - GCC alike to try
1946 # $7 - CC alike to try
1947 # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
1948 # $9 - What the command is to check for
1950 if [ -n "$3" ]; then
1952 if [ -z "$6" ]; then
1957 machine=`eval $compiler $9 2>/dev/null`
1959 eval "$2=\"$compiler\""
1961 log 2 "executing $compiler $9"
1962 log 2 " returned $machine"
1963 log 2 " exit code $ret"
1965 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1966 if [ -z "$5" ]; then
1967 log 1 "checking $1... $compiler not found"
1968 log 1 "I couldn't detect any $6 binary for $3"
1973 machine=`eval $compiler $9 2>/dev/null`
1975 eval "$2=\"$compiler\""
1977 log 2 "executing $compiler $9"
1978 log 2 " returned $machine"
1979 log 2 " exit code $ret"
1981 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1982 log 1 "checking $1... $compiler not found"
1983 log 1 "I couldn't detect any $5 binary for $3"
1988 if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
1989 log 1 "checking $1... expected $3, found $machine"
1990 log 1 "the compiler suggests it doesn't build code for the machine you specified"
1993 elif [ -n "$4" ]; then
1994 # Check for manual compiler
1995 machine=`$4 $9 2>/dev/null`
1999 log 2 "executing $4 $9"
2000 log 2 " returned $machine"
2001 log 2 " exit code $ret"
2003 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2004 log 1 "checking $1... $4 not found"
2005 log 1 "the selected binary doesn't seem to be a $6 binary"
2009 # Nothing given, autodetect
2011 if [ -n "$5" ]; then
2012 machine=`$5 $9 2>/dev/null`
2016 log 2 "executing $5 $9"
2017 log 2 " returned $machine"
2018 log 2 " exit code $ret"
2020 # The user defined a GCC that doesn't reply to $9.. abort
2021 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2022 log 1 "checking $1... $5 unusable"
2023 log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary"
2024 log 1 "please redefine the CC/CXX environment to a $6 binary"
2028 log 2 "checking $1... CC/CXX not set (skipping)"
2030 # No $5, so try '$6'
2031 machine=`$6 $9 2>/dev/null`
2035 log 2 "executing $6 $9"
2036 log 2 " returned $machine"
2037 log 2 " exit code $ret"
2039 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2041 machine=`$7 $9 2>/dev/null`
2045 log 2 "executing $7 $9"
2046 log 2 " returned $machine"
2047 log 2 " exit code $ret"
2050 if [ -z "$machine" ]; then
2051 log 1 "checking $1... $6 not found"
2052 log 1 "I couldn't detect any $6 binary on your system"
2053 log 1 "please define the CC/CXX environment to where it is located"
2061 if [ "$8" != "0" ]; then
2063 log 1 "checking $1... $res"
2065 log 1 "checking $1... $machine"
2070 if [ "$os" = "FREEBSD" ]; then
2071 # FreeBSD's C compiler does not support dump machine.
2072 # However, removing C support is not possible because PSP must be linked with the C compiler.
2073 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
2075 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
2080 # By default the host is the build
2081 if [ -z "$host" ]; then host="$build"; fi
2083 if [ "$os" = "FREEBSD" ]; then
2084 # FreeBSD's C compiler does not support dump machine.
2085 # However, removing C support is not possible because PSP must be linked with the C compiler.
2086 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
2088 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
2093 check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine"
2097 # By default the host is the build
2098 if [ -z "$host" ]; then host="$build"; fi
2099 check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine"
2103 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2104 check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
2109 if [ "$os" = "OS2" ]; then
2110 # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly
2111 log 1 "checking host strip... using gcc -s option"
2112 elif [ "$os" = "OSX" ]; then
2113 # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something
2114 echo "int main(int argc, char *argv[]) { }" > strip.test.c
2115 $cxx_host strip.test.c -o strip.test
2116 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test"
2117 rm -f strip.test.c strip.test
2119 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V"
2124 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
2125 echo "int main(int argc, char *argv[]) { }" > lipo.test.c
2126 $cxx_host lipo.test.c -o lipo.test
2127 check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test"
2128 rm -f lipo.test.c lipo.test
2134 if [ -n "$1" ]; then
2135 if echo "$1" | grep -q / ; then
2136 # Seems to be a file system path
2139 osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk"
2141 if [ ! -d "$osx_sdk_path" ]; then
2142 # No directory, not present or garbage
2146 # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced
2147 sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4"
2150 cat > tmp.osx.mm << EOF
2151 #include <Cocoa/Cocoa.h>
2153 kCGBitmapByteOrder32Host;
2157 execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2158 eval $execute > /dev/null
2160 log 2 "executing $execute"
2161 log 2 " exit code $ret"
2162 rm -f tmp.osx.mm tmp.osx
2166 check_direct_music() {
2168 #include <windows.h>
2169 #include <dmksctrl.h>
2170 #include <dmusici.h>
2171 #include <dmusicc.h>
2172 #include <dmusicf.h>
2173 int main(int argc, char *argv[]) { }" > direct_music.test.c
2174 $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
2176 rm -f direct_music.test.c direct_music.test
2178 if [ "$res" != "0" ]; then
2179 if [ "$with_direct_music" != "1" ]; then
2180 log 1 "configure: error: direct-music is not available on this system"
2183 with_direct_music="0"
2185 log 1 "checking direct-music... not found"
2187 log 1 "checking direct-music... found"
2191 check_makedepend() {
2192 if [ "$enable_builtin_depend" != "0" ]; then
2196 if [ "$with_makedepend" = "0" ]; then
2197 log 1 "checking makedepend... disabled"
2201 if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then
2202 makedepend="makedepend"
2204 makedepend="$with_makedepend"
2207 rm -f makedepend.tmp
2208 touch makedepend.tmp
2209 res=`$makedepend -fmakedepend.tmp 2>/dev/null`
2211 log 2 "executing $makedepend -f makedepend.tmp"
2212 log 2 " returned `cat makedepend.tmp`"
2213 log 2 " exit code $ret"
2215 if [ ! -s makedepend.tmp ]; then
2216 rm -f makedepend.tmp makedepend.tmp.bak
2218 if [ "$with_makedepend" = "2" ]; then
2219 log 1 "checking makedepend... not found"
2221 log 1 "I couldn't detect any makedepend on your system"
2222 log 1 "please locate it via --makedepend=[binary]"
2225 elif [ "$with_makedepend" != "1" ]; then
2226 log 1 "checking makedepend... $makedepend not found"
2228 log 1 "the selected file doesn't seem to be a valid makedepend binary"
2232 log 1 "checking makedepend... not found"
2239 rm -f makedepend.tmp makedepend.tmp.bak
2241 log 1 "checking makedepend... $makedepend"
2245 # $1 - requested version (major.minor)
2246 # $2 - version we got (major.minor)
2248 if [ -z "$2" ]; then
2252 req_major=`echo $1 | cut -d. -f1`
2253 got_major=`echo $2 | cut -d. -f1`
2254 if [ $got_major -lt $req_major ]; then
2256 elif [ $got_major -gt $req_major ]; then
2260 req_minor=`echo $1 | cut -d. -f2`
2261 got_minor=`echo $2 | cut -d. -f2`
2262 if [ $got_minor -lt $req_minor ]; then
2269 # Not all awks allow gsub(), so we test for that here! It is in fact all we need...
2271 # These awks are known to work. Test for them explicit
2272 awks="gawk mawk nawk"
2274 awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
2275 awk_param="' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", \$0); print \$0; }' 2>/dev/null"
2276 awk_result="a.o b.o c.o "
2277 log 2 "Detecing awk..."
2279 log 2 "Trying: $awk_prefix $awk $awk_param"
2280 res=`eval $awk_prefix $awk $awk_param`
2281 log 2 "Result: '$res'"
2282 if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
2283 # User didn't supply his own awk, so try to detect some other known working names for an awk
2284 for awk in $awks; do
2285 log 2 "Trying: $awk_prefix $awk $awk_param"
2286 res=`eval $awk_prefix $awk $awk_param`
2287 log 2 "Result: '$res'"
2288 if [ "$res" = "$awk_result" ]; then break; fi
2291 if [ "$res" != "$awk_result" ]; then
2292 log 1 "checking awk... not found"
2293 log 1 "configure: error: no awk found"
2294 log 1 "configure: error: please install one of the following: $awks"
2298 if [ "$res" != "$awk_result" ]; then
2299 log 1 "checking awk... not found"
2300 log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
2304 log 1 "checking awk... $awk"
2308 if [ "$os" = "DETECT" ]; then
2309 # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
2311 # Try first via dumpmachine, then via uname
2312 os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
2313 /linux/ { print "UNIX"; exit}
2314 /darwin/ { print "OSX"; exit}
2315 /freebsd/ { print "FREEBSD"; exit}
2316 /dragonfly/ { print "DRAGONFLY"; exit}
2317 /openbsd/ { print "OPENBSD"; exit}
2318 /netbsd/ { print "NETBSD"; exit}
2319 /hp-ux/ { print "HPUX"; exit}
2320 /morphos/ { print "MORPHOS"; exit}
2321 /beos/ { print "BEOS"; exit}
2322 /haiku/ { print "HAIKU"; exit}
2323 /sunos/ { print "SUNOS"; exit}
2324 /solaris/ { print "SUNOS"; exit}
2325 /cygwin/ { print "CYGWIN"; exit}
2326 /mingw/ { print "MINGW"; exit}
2327 /os2/ { print "OS2"; exit}
2328 /dos/ { print "DOS"; exit}
2329 /wince/ { print "WINCE"; exit}
2330 /psp/ { print "PSP"; exit}
2333 if [ -z "$os" ]; then
2334 os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk '
2335 /linux/ { print "UNIX"; exit}
2336 /darwin/ { print "OSX"; exit}
2337 /freebsd/ { print "FREEBSD"; exit}
2338 /dragonfly/ { print "DRAGONFLY"; exit}
2339 /openbsd/ { print "OPENBSD"; exit}
2340 /netbsd/ { print "NETBSD"; exit}
2341 /hp-ux/ { print "HPUX"; exit}
2342 /morphos/ { print "MORPHOS"; exit}
2343 /beos/ { print "BEOS"; exit}
2344 /haiku/ { print "HAIKU"; exit}
2345 /sunos/ { print "SUNOS"; exit}
2346 /cygwin/ { print "CYGWIN"; exit}
2347 /mingw/ { print "MINGW"; exit}
2348 /os\/2/ { print "OS2"; exit}
2349 /gnu/ { print "UNIX"; exit}
2353 if [ -z "$os" ]; then
2354 log 1 "detecting OS... none detected"
2355 log 1 "I couldn't detect your OS. Please use --os=OS to force one"
2356 log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
2360 log 1 "detecting OS... $os"
2362 log 1 "forcing OS... $os"
2367 # 0 means no, 1 is auto-detect, 2 is force
2368 if [ "$with_allegro" = "0" ]; then
2369 log 1 "checking Allegro... disabled"
2375 if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then
2376 log 1 "configure: error: it is impossible to compile both Allegro and COCOA"
2377 log 1 "configure: error: please deselect one of them and try again"
2381 if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2382 log 1 "configure: error: it is impossible to compile a dedicated with Allegro"
2383 log 1 "configure: error: please deselect one of them and try again"
2387 if [ "$enable_dedicated" != "0" ]; then
2388 log 1 "checking Allegro... dedicated server, skipping"
2394 # By default on OSX we don't use Allegro. The rest is auto-detect
2395 if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2396 log 1 "checking Allegro... OSX, skipping"
2402 detect_pkg_config "$with_allegro" "allegro" "allegro_config" "4.4"
2407 # 0 means no, 1 is auto-detect, 2 is force
2408 if [ "$with_sdl" = "0" ]; then
2409 log 1 "checking SDL... disabled"
2415 if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
2416 log 1 "configure: error: it is impossible to compile both SDL and COCOA"
2417 log 1 "configure: error: please deselect one of them and try again"
2421 if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2422 log 1 "configure: error: it is impossible to compile a dedicated with SDL"
2423 log 1 "configure: error: please deselect one of them and try again"
2427 if [ "$enable_dedicated" != "0" ]; then
2428 log 1 "checking SDL... dedicated server, skipping"
2434 # By default on OSX we don't use SDL. The rest is auto-detect
2435 if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2436 log 1 "checking SDL... OSX, skipping"
2442 if [ "$os" = "OSX" ]; then
2443 log 1 "WARNING: sdl is known to fail on some versions of Mac OS X"
2444 log 1 "WARNING: with some hardware configurations. Use at own risk!"
2448 detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2"
2452 # Try to find the best SDK available. For a normal build this
2453 # is currently the 10.5 SDK as this is needed to compile all
2454 # optional code. Because such an executable won't run on 10.4
2455 # or lower, also check for the 10.4u SDK when doing an universal
2458 # Check for the 10.5 SDK, but try 10.6 if that fails
2459 check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path=""
2461 if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then
2462 # No better SDK or universal build enabled? Check 10.4u SDK as well
2463 local old_sdk="$osx_sdk_path"
2464 if check_osx_sdk "10.4u"; then
2465 osx_sdk_104_path="$osx_sdk_path"
2469 if [ -z "$old_sdk" ]; then
2470 osx_sdk_path="$osx_sdk_104_path"
2472 osx_sdk_path="$old_sdk"
2476 if [ -z "$osx_sdk_path" ]; then
2477 log 1 "Your system SDK is probably too old"
2478 log 1 "Please install/upgrade your Xcode to >= 2.5"
2485 # 0 means no, 1 is auto-detect, 2 is force
2486 if [ "$with_cocoa" = "0" ]; then
2487 log 1 "checking COCOA... disabled"
2492 if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2493 log 1 "configure: error: it is impossible to compile a dedicated with COCOA"
2494 log 1 "configure: error: please deselect one of them and try again"
2498 if [ "$enable_dedicated" != "0" ]; then
2499 log 1 "checking COCOA... dedicated server, skipping"
2505 # By default on OSX we use COCOA. The rest doesn't support it
2506 if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then
2507 log 1 "checking COCOA... not OSX, skipping"
2513 if [ "$os" != "OSX" ]; then
2514 log 1 "checking COCOA... not OSX"
2516 log 1 "configure: error: COCOA video driver is only supported for OSX"
2520 log 1 "checking COCOA... found"
2523 if [ "$enable_cocoa_quartz" != "0" ]; then
2524 log 1 "checking whether to enable the Quartz window subdriver... yes"
2526 log 1 "checking whether to enable the Quartz window subdriver... no"
2532 detect_quickdraw() {
2533 # 0 means no, 1 is auto-detect, 2 is force
2534 if [ "$enable_cocoa_quickdraw" = "0" ]; then
2535 log 1 "checking Quickdraw window subdriver... disabled"
2539 # Assume QuickDraw is available when doing an universal build
2540 if [ "$enable_universal" != "0" ]; then
2541 log 1 "checking Quickdraw window subdriver... found"
2545 # 64 bits doesn't have quickdraw
2546 if [ "$cpu_type" = "64" ]; then
2547 enable_cocoa_quickdraw="0"
2548 log 1 "checking Quickdraw window subdriver... disabled (64 bits)"
2552 cat > tmp.osx.mm << EOF
2553 #include <AvailabilityMacros.h>
2554 #import <Cocoa/Cocoa.h>
2555 int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; }
2557 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2558 eval $execute > /dev/null
2560 log 2 "executing $execute"
2561 log 2 " exit code $ret"
2562 rm -f tmp.osx.mm tmp.osx
2563 if [ "$ret" != "0" ]; then
2564 log 1 "checking Quickdraw window subdriver... not found"
2566 # It was forced, so it should be found.
2567 if [ "$enable_cocoa_quickdraw" != "1" ]; then
2568 log 1 "configure: error: Quickdraw window driver could not be found"
2572 enable_cocoa_quickdraw=0
2576 enable_cocoa_quickdraw=1
2577 log 1 "checking Quickdraw window subdriver... found"
2581 # $1 - config-param ($with_zlib value)
2582 # $2 - library name ('zlib', sets $zlib)
2583 # $3 - static library name (libz.a)
2584 # $4 - header directory ()
2585 # $5 - header name (zlib.h)
2586 # $6 - force static (if non-empty)
2588 if [ -n "$6" ]; then force_static="1"; fi
2590 # 0 means no, 1 is auto-detect, 2 is force
2591 if [ "$1" = "0" ]; then
2592 log 1 "checking $2... disabled"
2598 log 2 "detecting $2"
2600 if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2601 eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2603 if [ -z "$res" ]; then
2604 log 2 " trying /usr/include/$4$5... no"
2605 eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2608 if [ -z "$res" ]; then
2609 log 2 " trying /usr/local/include/$4$5... no"
2610 eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2613 if [ -z "$res" ]; then
2614 log 2 " trying /mingw/include/$4$5... no"
2615 eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2618 if [ -z "$res" ]; then
2619 log 2 " trying /opt/local/include/$4$5... no"
2621 if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
2622 eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2624 if [ -z "$res" ]; then
2625 log 2 " trying /usr/pkg/include/$4$5... no"
2628 if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
2629 if [ -z "$includeDir" ]; then
2630 includeDir=`finddir B_SYSTEM_HEADERS_DIRECTORY`
2632 eval "$2=`ls -1 $includeDir/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2634 if [ -z "$res" ]; then
2635 log 2 " trying $includeDir/$4$5... no"
2640 if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
2642 log 2 " trying $res... found"
2643 # Now find the static lib, if needed
2644 eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2646 if [ -z "$res" ]; then
2647 log 2 " trying /lib/$3... no"
2648 eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2651 if [ -z "$res" ]; then
2652 log 2 " trying /usr/lib/$3... no"
2653 eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2656 if [ -z "$res" ]; then
2657 log 2 " trying /usr/local/lib/$3... no"
2658 eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2661 if [ -z "$res" ]; then
2662 log 2 " trying /mingw/lib/$3... no"
2663 log 1 "configure: error: $2 couldn't be found"
2664 log 1 "configure: error: you requested a static link, but I can't find $3"
2670 # Make sure it exists
2671 if [ -f "$1" ]; then
2672 eval "$2=`ls $1 2>/dev/null`"
2674 eval "$2=`ls $1/$3 2>/dev/null`"
2679 if [ -z "$res" ]; then
2680 log 1 "checking $2... not found"
2681 if [ "$1" = "2" ]; then
2682 log 1 "configure: error: $2 couldn't be found"
2685 elif [ "$1" != "1" ]; then
2686 log 1 "configure: error: $2 couldn't be found"
2687 log 1 "configure: error: you supplied '$1', but it seems invalid"
2698 log 2 " trying $res... found"
2700 log 1 "checking $2... found"
2704 detect_pkg_config "$with_zlib" "zlib" "zlib_config" "1.2"
2708 detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
2711 detect_libtimidity() {
2712 detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1"
2715 detect_pkg_config() {
2716 # $1 - config-param ($with_lzma value)
2717 # $2 - package name ('liblzma')
2718 # $3 - config name ('lzma_config', sets $lzma_config)
2719 # $4 - minimum module version ('2.3')
2720 # $5 - check for dedicated, 1 is "skif if dedicated"
2722 # 0 means no, 1 is auto-detect, 2 is force
2723 if [ "$1" = "0" ]; then
2724 log 1 "checking $2... disabled"
2730 if [ "$5" = "1" ] && [ "$1" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2731 log 1 "checking $2... dedicated server, skipping"
2737 log 2 "detecting $2"
2739 if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2740 pkg_config_call="$pkg_config $2"
2742 pkg_config_call="$1"
2745 version=`$pkg_config_call --modversion 2>/dev/null`
2747 check_version "$4" "$version"
2749 log 2 "executing $pkg_config_call --modversion"
2750 log 2 " returned $version"
2751 log 2 " exit code $ret"
2753 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2754 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2755 log 1 "checking $2... needs at least version $4, $2 NOT enabled"
2757 log 1 "checking $2... not found"
2760 # It was forced, so it should be found.
2761 if [ "$1" != "1" ]; then
2762 log 1 "configure: error: $pkg_config $2 couldn't be found"
2763 log 1 "configure: error: you supplied '$1', but it seems invalid"
2771 eval "$3=\"$pkg_config_call\""
2772 log 1 "checking $2... found"
2776 detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0"
2779 detect_xdg_basedir() {
2780 detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2"
2784 detect_pkg_config "$with_png" "libpng" "png_config" "1.2"
2788 detect_pkg_config "$with_freetype" "freetype2" "freetype_config" "2.2" "1"
2791 detect_fontconfig() {
2792 # 0 means no, 1 is auto-detect, 2 is force
2793 if [ "$with_fontconfig" = "0" ]; then
2794 log 1 "checking libfontconfig... disabled"
2796 fontconfig_config=""
2799 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2800 log 1 "checking libfontconfig... WIN32, skipping"
2801 fontconfig_config=""
2805 if [ "$os" = "OSX" ]; then
2806 log 1 "checking libfontconfig... OSX, skipping"
2807 fontconfig_config=""
2811 detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3" "1"
2814 detect_icu_layout() {
2815 detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
2819 detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
2822 detect_pspconfig() {
2823 # 0 means no, 1 is auto-detect, 2 is force
2824 if [ "$with_psp_config" = "0" ]; then
2825 log 1 "checking psp-config... disabled"
2831 if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
2832 log 1 "checking psp-config... not PSP, skipping"
2838 if [ "$os" != "PSP" ]; then
2839 log 1 "checking psp-config... not PSP"
2841 log 1 "configure: error: psp-config is only supported for PSP"
2845 if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
2846 psp_config="psp-config"
2848 psp_config="$with_psp_config"
2851 version=`$psp_config -p 2>/dev/null`
2853 log 2 "executing $psp_config -p"
2854 log 2 " returned $version"
2855 log 2 " exit code $ret"
2857 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2858 log 1 "checking psp-config... not found"
2859 log 1 "configure: error: psp-config couldn't be found"
2861 # It was forced, so it should be found.
2862 if [ "$with_psp_config" != "1" ]; then
2863 log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
2868 log 1 "checking psp-config... found"
2872 # 0 means no, 1 is auto-detect, 2 is force
2873 if [ "$with_iconv" = "0" ]; then
2874 log 1 "checking iconv... disabled"
2879 if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then
2880 log 1 "checking iconv... not OSX, skipping"
2886 # Try to find iconv.h, seems to only thing to detect iconv with
2888 if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
2889 iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
2890 if [ -z "$iconv" ]; then
2891 iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
2894 # Make sure it exists
2895 iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
2898 if [ -z "$iconv" ]; then
2899 log 1 "checking iconv... not found"
2900 if [ "$with_iconv" = "2" ]; then
2901 log 1 "configure: error: iconv couldn't be found"
2904 elif [ "$with_iconv" != "1" ]; then
2905 log 1 "configure: error: iconv couldn't be found"
2906 log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it"
2914 if [ "$with_iconv" = "1" ]; then
2918 log 2 "found iconv in $iconv"
2920 log 1 "checking iconv... found"
2922 # There are different implementations of iconv. The older ones,
2923 # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
2924 # IEEE 1003.1 (2004), pass a non-const pointer.
2926 cat > tmp.iconv.cpp << EOF
2927 #include "src/stdafx.h"
2930 static char buf[1024];
2932 const char *inbuf = "";
2934 size_t outlen = 1023;
2936 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2939 execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2940 eval $execute > /dev/null
2942 log 2 "executing $execute"
2943 log 2 " exit code $ret"
2944 if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi
2945 log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv"
2947 cat > tmp.iconv.cpp << EOF
2948 #include "src/stdafx.h"
2951 static char buf[1024];
2955 size_t outlen = 1023;
2957 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2960 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2961 eval $execute > /dev/null
2963 log 2 "executing $execute"
2964 log 2 " exit code $ret"
2965 if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi
2966 log 1 "checking whether to link to iconv... $link_to_iconv"
2967 rm -f tmp.iconv tmp.iconv.cpp
2981 log 2 "running echo <array> | $1"
2983 if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then
2985 log 2 " result was valid"
2987 log 2 " result was invalid"
2992 if [ "$with_sort" = "0" ]; then
2993 log 1 "checking sort... disabled"
2998 if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then
3000 if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi
3001 if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi
3002 if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi
3003 if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi
3004 if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi
3005 if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi
3007 _detect_sort "$with_sort"
3010 if [ -z "$sort" ]; then
3011 if [ "$with_sort" = "2" ]; then
3012 log 1 "checking sort... not found"
3014 log 1 "configure: error: couldn't detect sort on your system"
3016 elif [ "$with_sort" != "1" ]; then
3017 log 1 "checking sort... $with_sort not found"
3019 log 1 "configure: error: '$with_sort' doesn't look like a sort to me"
3020 log 1 "configure: error: please verify its location and function and try again"
3024 log 1 "checking sort... not found"
3027 log 1 "checking sort... $sort"
3032 # 0 means no, 1 is auto-detect, 2 is force
3033 if [ "$with_grfcodec" = "0" ]; then
3034 log 1 "checking grfcodec... disabled"
3040 if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then
3043 grfcodec="$with_grfcodec"
3046 version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3048 log 2 "executing grfcodec -v"
3049 log 2 " returned $version"
3050 log 2 " exit code $ret"
3052 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3053 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3054 log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled"
3056 log 1 "checking grfcodec... not found"
3059 # It was forced, so it should be found.
3060 if [ "$with_grfcodec" != "1" ]; then
3061 log 1 "configure: error: grfcodec couldn't be found"
3062 log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid"
3070 log 1 "checking grfcodec... found"
3074 # 0 means no, 1 is auto-detect, 2 is force
3075 if [ "$with_nforenum" = "0" ]; then
3076 log 1 "checking nforenum... disabled"
3082 if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then
3085 nforenum="$with_nforenum"
3088 version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3090 log 2 "executing nforenum -v"
3091 log 2 " returned $version"
3092 log 2 " exit code $ret"
3094 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3095 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3096 log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled"
3098 log 1 "checking nforenum... not found"
3101 # It was forced, so it should be found.
3102 if [ "$with_nforenum" != "1" ]; then
3103 log 1 "configure: error: nforenum couldn't be found"
3104 log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid"
3112 log 1 "checking nforenum... found"
3116 if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
3117 log 1 "forcing cpu-type... $cpu_type bits"
3120 echo "#define _SQ64 1" > tmp.64bit.cpp
3121 echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
3122 echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
3123 echo "int main() { return 0; }" >> tmp.64bit.cpp
3124 execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -DTESTING 2>&1"
3125 cpu_type="`eval $execute 2>/dev/null`"
3127 log 2 "executing $execute"
3128 log 2 " returned $cpu_type"
3129 log 2 " exit code $ret"
3130 if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
3131 log 1 "detecting cpu-type... $cpu_type bits"
3132 rm -f tmp.64bit tmp.64bit.cpp
3135 detect_sse_capable_architecture() {
3136 # 0 means no, 1 is auto-detect, 2 is force
3137 if [ "$with_sse" = "0" ]; then
3138 log 1 "checking SSE... disabled"
3142 echo "#define _SQ64 1" > tmp.sse.cpp
3143 echo "#include <xmmintrin.h>" >> tmp.sse.cpp
3144 echo "#include <smmintrin.h>" >> tmp.sse.cpp
3145 echo "#include <tmmintrin.h>" >> tmp.sse.cpp
3146 echo "int main() { return 0; }" >> tmp.sse.cpp
3147 execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1"
3148 sse="`eval $execute 2>/dev/null`"
3150 log 2 "executing $execute"
3151 log 2 " returned $sse"
3152 log 2 " exit code $ret"
3153 if [ "$ret" = "0" ]; then
3154 log 1 "detecting SSE... found"
3156 # It was forced, so it should be found.
3157 if [ "$with_sse" != "1" ]; then
3158 log 1 "configure: error: SSE couln't be found"
3159 log 1 "configure: error: you force enabled SSE, but it seems unavailable"
3163 log 1 "detecting SSE... not found"
3166 rm -f tmp.sse tmp.exe tmp.sse.cpp
3171 T_CXXFLAGS="$CXXFLAGS"
3172 T_LDFLAGS="$LDFLAGS"
3174 SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
3176 # All the data needed to compile a single target
3177 # Make sure if you compile multiple targets to
3178 # use multiple OBJS_DIR, because all in-between
3179 # binaries are stored in there, and nowhere else.
3181 s@!!CC_HOST!!@$cc_host@g;
3182 s@!!CXX_HOST!!@$cxx_host@g;
3183 s@!!CC_BUILD!!@$cc_build@g;
3184 s@!!CXX_BUILD!!@$cxx_build@g;
3185 s@!!WINDRES!!@$windres@g;
3186 s@!!STRIP!!@$strip $strip_arg@g;
3188 s@!!CFLAGS!!@$T_CFLAGS@g;
3189 s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g;
3190 s@!!CXXFLAGS!!@$T_CXXFLAGS@g;
3191 s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g;
3192 s@!!STRGEN_FLAGS!!@$strgen_flags@g;
3194 s@!!LDFLAGS!!@$T_LDFLAGS@g;
3195 s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g;
3196 s@!!BIN_DIR!!@$BIN_DIR@g;
3197 s@!!ROOT_DIR!!@$ROOT_DIR@g;
3198 s@!!MEDIA_DIR!!@$MEDIA_DIR@g;
3199 s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
3200 s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
3201 s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
3202 s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
3203 s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g;
3204 s@!!SRC_DIR!!@$SRC_DIR@g;
3205 s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
3206 s@!!OSXAPP!!@$OSXAPP@g;
3207 s@!!LANG_DIR!!@$LANG_DIR@g;
3209 s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g;
3210 s@!!DATA_DIR!!@$prefix_dir/$data_dir@g;
3211 s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g;
3212 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3213 s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g;
3214 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3215 s@!!PERSONAL_DIR!!@$personal_dir@g;
3216 s@!!SHARED_DIR!!@$shared_dir@g;
3217 s@!!INSTALL_DIR!!@$install_dir@g;
3218 s@!!BINARY_NAME!!@$binary_name@g;
3219 s@!!STRGEN!!@$STRGEN@g;
3220 s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
3221 s@!!DEPEND!!@$DEPEND@g;
3222 s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
3223 s@!!ENDIAN_FORCE!!@$endian@g;
3224 s@!!STAGE!!@$STAGE@g;
3225 s@!!MAKEDEPEND!!@$makedepend@g;
3226 s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
3228 s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
3229 s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
3230 s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
3231 s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
3232 s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
3233 s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
3234 s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g;
3235 s@!!LANG_SUPPRESS!!@$lang_suppress@g;
3236 s@!!OBJS_C!!@$OBJS_C@g;
3237 s@!!OBJS_CPP!!@$OBJS_CPP@g;
3238 s@!!OBJS_MM!!@$OBJS_MM@g;
3239 s@!!OBJS_RC!!@$OBJS_RC@g;
3242 s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g;
3244 s@!!DISTCC!!@$distcc@g;
3245 s@!!NFORENUM!!@$nforenum@g;
3246 s@!!GRFCODEC!!@$grfcodec@g;
3249 if [ "$icon_theme_dir" != "" ]; then
3250 SRC_REPLACE="$SRC_REPLACE
3251 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3254 SRC_REPLACE="$SRC_REPLACE
3255 s@!!ICON_THEME_DIR!!@@g;
3259 if [ "$man_dir" != "" ]; then
3260 SRC_REPLACE="$SRC_REPLACE
3261 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3264 SRC_REPLACE="$SRC_REPLACE
3269 if [ "$menu_dir" != "" ]; then
3270 SRC_REPLACE="$SRC_REPLACE
3271 s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g;
3274 SRC_REPLACE="$SRC_REPLACE
3280 generate_menu_item() {
3283 s@!!MENU_GROUP!!@$menu_group@g;
3284 s@!!MENU_NAME!!@$menu_name@g
3286 log 1 "Generating menu item..."
3288 < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop
3296 # Create the main Makefile
3297 log 1 "Generating Makefile..."
3298 echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile
3299 < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile
3300 cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle
3301 echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am
3303 # Make the copy of the source-list, so we don't trigger an unwanted recompile
3304 cp $SOURCE_LIST config.cache.source.list
3305 # Add the current directory, so we don't trigger an unwanted recompile
3306 echo "`pwd`" > config.cache.pwd
3307 # Make sure config.cache is OLDER then config.cache.source.list
3311 if [ "$menu_dir" != "" ]; then
3321 # Create the language file
3322 mkdir -p $LANG_OBJS_DIR
3324 log 1 "Generating lang/Makefile..."
3325 echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile
3326 < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile
3327 echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am
3328 echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
3331 generate_settings() {
3336 # Create the language file
3337 mkdir -p $SETTING_OBJS_DIR
3339 log 1 "Generating setting/Makefile..."
3340 echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile
3341 < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile
3342 echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am
3350 # Create the language file
3351 mkdir -p $GRF_OBJS_DIR
3353 log 1 "Generating grf/Makefile..."
3354 echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
3355 < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
3356 echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
3359 generate_src_normal() {
3364 # Create the source file
3365 mkdir -p $SRC_OBJS_DIR
3367 log 1 "Generating $2/Makefile..."
3368 echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile
3369 < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile
3370 echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am
3371 echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am
3374 generate_src_osx() {
3375 cc_host_orig="$cc_host"
3376 cxx_host_orig="$cxx_host"
3377 CFLAGS_orig="$CFLAGS"
3378 LDFLAGS_orig="$LDFLAGS"
3380 for type in $enable_universal; do
3382 if [ -n "$osx_sdk_104_path" ]; then
3383 # Use 10.4 SDK for 32-bit targets
3384 CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig"
3385 LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig"
3388 # We don't want to duplicate the x86_64 stuff for each target, so do it once here
3389 if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then
3390 # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV
3391 # and they also removed support for QuickTime/QuickDraw
3392 if [ -n "$osx_sdk_path" ]; then
3393 CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig"
3394 LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig"
3396 CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW"
3397 LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`"
3402 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc"
3403 cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3"
3404 cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3"
3405 generate_src_normal "[ppc]" "objs/ppc";;
3407 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970"
3408 cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3409 cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3410 generate_src_normal "[ppc970]" "objs/ppc970";;
3412 BASE_SRC_OBJS_DIR="$OBJS_DIR/i386"
3413 cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4"
3414 cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4"
3415 generate_src_normal "[i386]" "objs/i386";;
3417 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64"
3418 cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3419 cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3420 generate_src_normal "[ppc64]" "objs/ppc64";;
3422 BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64"
3423 cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3424 cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3425 generate_src_normal "[x86_64]" "objs/x86_64";;
3426 *) log 1 "Unknown architecture requested for universal build: $type";;
3432 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
3435 generate_src_normal "[SRC]" "objs"
3440 echo "'configure' configures OpenTTD."
3442 echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
3444 echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as"
3445 echo "VAR=VALUE. See below for descriptions of some of the useful variables."
3447 echo "Defaults for the options are specified in brackets."
3449 echo "Configuration:"
3450 echo " -h, --help display this help and exit"
3452 echo "System types:"
3453 echo " --build=BUILD configure for building on BUILD [guessed]"
3454 echo " --host=HOST cross-compile to build programs to run"
3455 echo " on HOST [BUILD]"
3456 echo " --windres=WINDRES the windres to use [HOST-windres]"
3457 echo " --strip=STRIP the strip to use [HOST-strip]"
3458 echo " --awk=AWK the awk to use in configure [awk]"
3459 echo " --pkg-config=PKG-CONFIG the pkg-config to use in configure [pkg-config]"
3460 echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]"
3461 echo " --os=OS the OS we are compiling for [DETECT]"
3462 echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
3463 echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
3464 echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU"
3465 echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
3468 echo " --prefix-dir=dir specifies the prefix for all installed"
3469 echo " files [/usr/local]"
3470 echo " --binary-dir=dir location of the binary. Will be prefixed"
3471 echo " with the prefix-dir [games]"
3472 echo " --data-dir=dir location of data files (lang, data, gm)."
3473 echo " Will be prefixed with the prefix-dir"
3474 echo " [share/games/openttd]"
3475 echo " --doc-dir=dir location of the doc files"
3476 echo " Will be prefixed with the prefix-dir"
3478 echo " --icon-dir=dir location of icons. Will be prefixed"
3479 echo " with the prefix-dir [share/pixmaps]"
3480 echo " --icon-theme-dir=dir location of icon theme."
3481 echo " Will be prefixed with the prefix-dir"
3482 echo " and postfixed with size-dirs [$icon_theme_dir]"
3483 echo " --man-dir=dir location of the manual page (UNIX only)"
3484 echo " Will be prefixed with the prefix-dir"
3486 echo " --menu-dir=dir location of the menu item. (UNIX only, except OSX)"
3487 echo " Will be prefixed with the prefix-dir"
3488 echo " [share/applications]"
3489 echo " --personal-dir=dir location of the personal directory"
3490 echo " [os-dependent default]"
3491 echo " --shared-dir=dir location of shared data files"
3492 echo " [os-dependent default]"
3493 echo " --install-dir=dir specifies the root to install to."
3494 echo " Useful to install into jails [/]"
3495 echo " --binary-name the name used for the binary, icons,"
3496 echo " desktop file, etc. when installing [openttd]"
3498 echo "Features and packages:"
3499 echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)"
3500 echo " --enable-desync-debug=[LVL] enable desync debug options (LVL=[012], 0 is none"
3501 echo " --enable-profiling enables profiling"
3502 echo " --enable-lto enables GCC's Link Time Optimization (LTO)/ICC's"
3503 echo " Interprocedural Optimization if available"
3504 echo " --enable-dedicated compile a dedicated server (without video)"
3505 echo " --enable-static enable static compile (doesn't work for"
3507 echo " --enable-translator enable extra output for translators"
3508 echo " --enable-universal[=ARCH] enable universal builds (OSX ONLY). Allowed is any combination"
3509 echo " of architectures: i386 ppc ppc970 ppc64 x86_64"
3510 echo " Default architectures are: i386 ppc"
3511 echo " --enable-osx-g5 enables optimizations for ppc970 (G5) (OSX ONLY)"
3512 echo " --disable-cocoa-quartz disable the quartz window mode driver for Cocoa (OSX ONLY)"
3513 echo " --disable-cocoa-quickdraw disable the quickdraw window mode driver for Cocoa (OSX ONLY)"
3514 echo " --disable-unicode disable unicode support to build win9x"
3515 echo " version (Win32 ONLY)"
3516 echo " --enable-console compile as a console application instead of as a GUI application."
3517 echo " If this setting is active, debug output will appear in the same"
3518 echo " console instead of opening a new window. (Win32 ONLY)"
3519 echo " --disable-network disable network support"
3520 echo " --disable-assert disable asserts (continue on errors)"
3521 echo " --enable-strip enable any possible stripping"
3522 echo " --without-osx-sysroot disable the automatic adding of sysroot "
3524 echo " --without-application-bundle disable generation of application bundle"
3526 echo " --without-menu-entry Don't generate a menu item (Freedesktop based only)"
3527 echo " --menu-group=group Category in which the menu item will be placed (Freedesktop based only)"
3528 echo " --menu-name=name Name of the menu item when placed [OpenTTD]"
3529 echo " --with-direct-music enable direct music support (Win32 ONLY)"
3530 echo " --with-sort=sort define a non-default location for sort"
3531 echo " --with-midi=midi define which midi-player to use"
3532 echo " --with-midi-arg=arg define which args to use for the"
3534 echo " --with-libtimidity[=\"pkg-config libtimidity\"]"
3535 echo " enables libtimidity support"
3536 echo " --with-allegro[=\"pkg-config allegro\"]"
3537 echo " enables Allegro video driver support"
3538 echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
3539 echo " --with-sdl[=\"pkg-config sdl\"] enables SDL video driver support"
3540 echo " --with-zlib[=\"pkg-config zlib\"]"
3541 echo " enables zlib support"
3542 echo " --with-liblzma[=\"pkg-config liblzma\"]"
3543 echo " enables liblzma support"
3544 echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support"
3545 echo " --with-png[=\"pkg-config libpng\"]"
3546 echo " enables libpng support"
3547 echo " --with-freetype[=\"pkg-config freetype2\"]"
3548 echo " enables libfreetype support"
3549 echo " --with-fontconfig[=\"pkg-config fontconfig\"]"
3550 echo " enables fontconfig support"
3551 echo " --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]"
3552 echo " enables XDG base directory support"
3553 echo " --with-icu enables icu components for layout and sorting"
3554 echo " --with-icu-layout[=\"pkg-config icu-lx\"]"
3555 echo " enables icu components for layouting (right-to-left support)"
3556 echo " --with-icu-sort[=\"pkg-config icu-i18n\"]"
3557 echo " enables icu components for locale specific string sorting"
3558 echo " --static-icu try to link statically (libsicu instead of"
3559 echo " libicu; can fail as the new name is guessed)"
3560 echo " --with-iconv[=iconv-path] enables iconv support"
3561 echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
3562 echo " --disable-builtin-depend disable use of builtin deps finder"
3563 echo " --with-makedepend[=makedepend] enables makedepend support"
3564 echo " --with-ccache enables ccache support"
3565 echo " --with-distcc enables distcc support"
3566 echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
3567 echo " --without-threads disable threading support"
3568 echo " --without-sse disable SSE support (x86/x86_64 only)"
3570 echo "Some influential environment variables:"
3571 echo " CC C compiler command"
3572 echo " CXX C++ compiler command"
3573 echo " CFLAGS C compiler flags"
3574 echo " CXXFLAGS C++ compiler flags"
3575 echo " WINDRES windres command"
3576 echo " LDFLAGS linker flags, e.g. -L<lib dir> if you"
3577 echo " have libraries in a nonstandard"
3578 echo " directory <lib dir>"
3579 echo " CFLAGS_BUILD C compiler flags for build time tool generation"
3580 echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
3581 echo " LDFLAGS_BUILD linker flags for build time tool generation"
3583 echo "Use these variables to override the choices made by 'configure' or to help"
3584 echo "it to find libraries and programs with nonstandard names/locations."