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 ! echo $endian | egrep -q '^(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 ! echo $os | egrep -q '^(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 ! echo $cpu_type | egrep -q '^(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 ! echo $enable_debug | egrep -q '^[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 ! echo $enable_desync_debug | egrep -q '^[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 if $cxx_build -dumpspecs 2>&1 | grep -q '\%{flto' || $cxx_build -help ipo 2>&1 | grep -q '\-ipo'; then
668 log 1 "using link time optimization... yes"
671 log 1 "using link time optimization... no"
672 log 1 "WARNING: you selected link time optimization but it is not found."
676 log 1 "using link time optimization... no"
680 if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
681 if [ "$with_osx_sysroot" = "1" ]; then
684 log 1 "checking OSX sysroot... not OSX, skipping"
686 log 1 "configure: error: --with-osx-sysroot only works if OSX is the target"
691 if [ "$with_osx_sysroot" != "0" ]; then
692 if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then
693 # Sysroot manually specified? Check for usability
694 log 1 "checking OSX sysroot... $with_osx_sysroot"
695 if ! check_osx_sdk "$with_osx_sysroot"; then
696 log 1 "Passed sysroot not found/not functional"
700 # If autodetect and no universal, use system default
701 if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then
702 log 1 "checking OSX sysroot... no (use system default)"
704 log 1 "checking OSX sysroot... automatically"
709 if [ -n "$osx_sdk_path" ]; then
710 if [ "$enable_universal" != "0" ]; then
711 if [ -z "$osx_sdk_104_path" ]; then
712 log 1 "WARNING: Could not find a usable 10.4u SDK, the resulting"
713 log 1 "WARNING: binary will only run on OSX 10.5 or later"
714 osx_sdk_104_path="$osx_sdk_path"
716 OSX_SYSROOT="-isysroot $osx_sdk_104_path"
717 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_104_path"
719 OSX_SYSROOT="-isysroot $osx_sdk_path"
720 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_path"
724 if [ "$os" = "OSX" ]; then
725 log 1 "checking OSX sysroot... no (use system default)"
733 if [ "$enable_dedicated" != "0" ]; then
734 log 1 "checking GDI video driver... dedicated server, skipping"
735 log 1 "checking dedicated... found"
737 if [ "$enable_network" = "0" ]; then
738 log 1 "configure: error: building a dedicated server without network support is pointless"
742 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
743 log 1 "checking GDI video driver... found"
745 log 1 "checking GDI video driver... not Windows, skipping"
748 if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
749 log 1 "configure: error: no video driver development files found"
750 log 1 " If you want a dedicated server use --enable-dedicated as parameter"
753 log 1 "checking dedicated... not selected"
757 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
758 log 1 "checking console application... not Windows, skipping"
759 elif [ "$enable_console" = "1" ] && [ "$enable_dedicated" != "0" ]; then
760 log 1 "checking console application... dedicated server, enabled"
762 elif [ "$enable_console" = "1" ]; then
763 log 1 "checking console application... disabled (only used when forced)"
765 elif [ "$enable_console" = "0" ]; then
766 log 1 "checking console application... disabled"
768 log 1 "checking console application... enabled"
771 if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then
772 log 1 "checking network... DOS, skipping"
774 elif [ "$enable_network" != "0" ]; then
775 log 1 "checking network... found"
777 log 1 "checking network... disabled"
780 log 1 "checking squirrel... found"
781 SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
783 if [ "$enable_translator" != "0" ]; then
784 log 1 "checking translator... debug"
785 # -t shows TODO items, normally they are muted
788 log 1 "checking translator... no"
792 if [ "$enable_assert" != "0" ]; then
793 log 1 "checking assert... enabled"
795 log 1 "checking assert... disabled"
798 pre_detect_with_zlib=$with_zlib
801 if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then
802 log 1 "WARNING: zlib was not detected or disabled"
803 log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
804 log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
805 log 1 "WARNING: using PNG, or using fonts, ...) will be disabled."
806 if [ "$pre_detect_with_zlib" = "0" ]; then
807 log 1 "WARNING: We strongly suggest you to install zlib."
809 log 1 "configure: error: no zlib detected"
810 log 1 " If you want to compile without zlib use --without-zlib as parameter"
815 pre_detect_with_lzma=$with_lzma
818 if [ "$with_lzma" = "0" ] || [ -z "$lzma_config" ]; then
819 log 1 "WARNING: lzma was not detected or disabled"
820 log 1 "WARNING: OpenTTD doesn't require lzma, but it does mean that many features"
821 log 1 "WARNING: (like loading most savegames/scenarios and joining most servers)"
822 log 1 "WARNING: will be disabled."
823 if [ "$pre_detect_with_lzma" = "0" ]; then
824 log 1 "WARNING: We strongly suggest you to install liblzma."
825 log 1 "configure: error: no liblzma detected"
827 log 1 " If you want to compile without lzma use --without-lzma as parameter"
832 pre_detect_with_lzo2=$with_lzo2
835 if [ "$with_lzo2" = "0" ] || [ -z "$lzo2" ]; then
836 log 1 "WARNING: liblzo2 was not detected or disabled"
837 log 1 "WARNING: OpenTTD doesn't require liblzo2, but it does mean that"
838 log 1 "WARNING: loading old savegames/scenarios will be disabled."
839 if [ "$pre_detect_with_lzo2" = "0" ]; then
840 log 1 "WARNING: We strongly suggest you to install liblzo2."
842 log 1 "configure: error: no liblzo2 detected"
843 log 1 " If you want to compile without liblzo2 use --without-liblzo2 as parameter"
857 if [ "$with_direct_music" != "0" ]; then
858 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
859 if [ "$with_direct_music" != "1" ]; then
860 log 1 "configure: error: direct-music is only supported on Win32 targets"
863 with_direct_music="0"
865 log 1 "checking direct-music... not Windows, skipping"
873 if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
874 endian="PREPROCESSOR"
877 log 1 "checking endianness... $endian"
879 # Suppress language errors when there is a version defined, indicating a release
880 # It just isn't pretty if any release produces warnings in the languages.
881 if [ -f "$ROOT_DIR/version" ]; then
883 log 1 "suppress language errors... yes"
886 log 1 "suppress language errors... no"
889 if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
890 if [ "$os" = "MORPHOS" ]; then
891 strip_arg="--strip-all --strip-unneeded --remove-section .comment"
892 elif [ "$os" = "OSX" ]; then
894 elif [ "$os" = "OS2" ]; then
896 # OS2 uses strip via gcc, because it needs to be feed to emxbind
897 LDFLAGS="$LDFLAGS -s"
898 elif [ "$os" = "SUNOS" ]; then
899 # The GNU strip does know -s, the non-GNU doesn't
900 # So try to detect it (in a bit of an ugly way)
901 strip_arg="`$strip -s strip.test 2>/dev/null && echo \"-s\"`"
906 log 1 "checking stripping... $strip $strip_arg"
909 log 1 "checking stripping... skipped"
912 if [ "$with_distcc" = "0" ]; then
913 log 1 "checking distcc... no"
914 elif [ "$with_distcc" = "1" ]; then
917 log 1 "checking distcc... no (only used when forced)"
918 elif [ "$with_distcc" = "2" ]; then
921 distcc="$with_distcc"
923 if [ "$with_distcc" != "0" ]; then
924 res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
925 if [ "$res" != "distcc" ]; then
927 log 1 "checking distcc... no"
928 if [ "$with_distcc" = "2" ]; then
929 log 1 "configure: error: no distcc detected, but was forced to be used"
932 if [ "$with_distcc" != "1" ]; then
933 log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
938 log 1 "checking distcc... $distcc"
941 if [ "$with_ccache" = "0" ]; then
942 log 1 "checking ccache... no"
943 elif [ "$with_ccache" = "1" ]; then
946 log 1 "checking ccache... no (only used when forced)"
947 elif [ "$with_ccache" = "2" ]; then
950 ccache="$with_ccache"
952 if [ "$with_ccache" != "0" ]; then
953 res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
954 if [ "$res" != "ccache" ]; then
956 log 1 "checking ccache... no"
957 if [ "$with_ccache" = "2" ]; then
958 log 1 "configure: error: no ccache detected, but was forced to be used"
961 if [ "$with_ccache" != "1" ]; then
962 log 1 "configure: error: '$with_ccache' doesn't seem a ccache to me"
967 log 1 "checking ccache... $ccache"
973 if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then
974 log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum"
978 if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then
979 log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec"
983 if [ "$os" = "DOS" ]; then
987 if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
988 if [ "$with_application_bundle" = "1" ]; then
989 with_application_bundle="0"
991 log 1 "checking OSX application bundle... not OSX, skipping"
993 log 1 "configure: error: --with-application-bundle only works if OSX is the target"
998 if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then
1004 if [ "$os" = "OSX" ]; then
1005 # Test on ppc970 (G5) - we can optimize there
1007 if [ "$enable_osx_g5" != "0" ]; then
1008 log 1 "detecting ppc970 (G5)... yes (forced)"
1010 # First, are we a real OSX system, else we can't detect it
1011 native=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | grep darwin`
1012 # If $host doesn't match $build , we are cross-compiling
1013 if [ -n "$native" ] && [ "$build" = "$host" ]; then
1014 $cxx_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector
1017 if [ -n "$res" ]; then
1018 # This is G5, add flags for it
1021 log 1 "detecting ppc970 (G5)... yes"
1025 log 1 "detecting ppc970 (G5)... no"
1030 log 1 "detecting ppc970 (G5)... no (cross-compiling)"
1034 if [ "$enable_osx_g5" != "0" ]; then
1035 log 1 "configure: error: ppc970 (OSX G5) selected, but not compiling for OSX"
1036 log 1 "configure: error: either select OSX as OS, or deselect ppc970"
1042 if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then
1043 log 1 "checking revision... svn detection"
1044 elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && LC_ALL=C svn info $ROOT_DIR/.. | grep -q '^URL:.*tags$'; then
1045 # subversion changed its behaviour; now not all folders have a .svn folder,
1046 # but only the root folder. Since making tags requires a (sparse) checkout
1047 # of the tags folder, the folder of the tag does not have a .svn folder
1048 # anymore and this fails to detect the subversion repository checkout.
1049 log 1 "checking revision... svn detection (tag)"
1050 elif [ -e "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
1051 log 1 "checking revision... git detection"
1052 elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then
1053 log 1 "checking revision... hg detection"
1054 elif [ -f "$ROOT_DIR/.ottdrev" ]; then
1055 log 1 "checking revision... source tarball"
1057 log 1 "checking revision... no detection"
1058 log 1 "WARNING: there is no means to determine the version."
1059 log 1 "WARNING: please use a subversion, mercurial, or git checkout of OpenTTD."
1060 log 1 "WARNING: you can only join game servers that have been compiled without"
1061 log 1 "WARNING: version detection."
1062 log 1 "WARNING: there is a great chance you desync."
1063 log 1 "WARNING: USE WITH CAUTION!"
1068 if [ "$doc_dir" = "1" ]; then
1069 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1070 doc_dir="share/doc/openttd"
1072 doc_dir="$data_dir/docs"
1075 doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1078 if [ "$icon_theme_dir" = "1" ]; then
1079 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1080 icon_theme_dir="share/icons/hicolor"
1085 icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1088 if [ "$personal_dir" = "1" ]; then
1089 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
1090 personal_dir="OpenTTD"
1091 elif [ "$os" = "OSX" ]; then
1092 personal_dir="Documents/OpenTTD"
1094 personal_dir=".openttd"
1097 personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1100 if [ "$shared_dir" = "1" ]; then
1101 # we are using default values
1102 if [ "$os" = "OSX" ]; then
1103 shared_dir="/Library/Application\\\\ Support/OpenTTD"
1108 shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1111 if [ "$man_dir" = "1" ]; then
1112 # add manpage on UNIX systems
1113 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
1114 man_dir="share/man/man6"
1119 man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1122 if [ "$menu_dir" = "1" ]; then
1123 # add a freedesktop menu item only for some UNIX systems
1124 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1125 menu_dir="share/applications"
1130 menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1135 if [ -n "$personal_dir" ]
1137 log 1 "personal home directory... $personal_dir"
1139 log 1 "personal home directory... none"
1142 if [ -n "$shared_dir" ]
1144 log 1 "shared data directory... $shared_dir"
1146 log 1 "shared data directory... none"
1149 if [ -n "$install_dir" ]
1151 log 1 "installation directory... $install_dir"
1153 log 1 "installation directory... none"
1156 if [ -n "$icon_theme_dir" ]
1158 log 1 "icon theme directory... $icon_theme_dir"
1160 log 1 "icon theme directory... none"
1163 if [ -n "$man_dir" ]
1165 log 1 "manual page directory... $man_dir"
1167 log 1 "manual page directory... none"
1170 if [ -n "$menu_dir" ]
1172 log 1 "menu item directory... $menu_dir"
1174 log 1 "menu item directory... none"
1178 make_compiler_cflags() {
1181 # $2 - name of the cflags variable
1182 # $3 - name of the cxxflags variable
1183 # $4 - name of the ldflags variable
1184 # $5 - name of the features variable
1186 eval eval "flags=\\\$$2"
1187 eval eval "cxxflags=\\\$$3"
1188 eval eval "ldflags=\\\$$4"
1189 eval eval "features=\\\$$5"
1191 if [ `basename $1 | cut -c 1-3` = "icc" ]; then
1192 # Enable some things only for certain ICC versions
1193 cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
1195 flags="$flags -rdynamic"
1196 ldflags="$ldflags -rdynamic"
1198 if [ -z "$first_time_icc_check" ]; then
1199 first_time_icc_check=no
1200 if [ $cc_version -lt 90 ]; then
1201 log 1 "WARNING: you seem to be using a very old version of ICC"
1202 log 1 "WARNING: OpenTTD hasn't been tested with this version"
1204 elif [ $cc_version -lt 120 ]; then
1205 log 1 "WARNING: you seem to be using an unsupported ICC version"
1206 log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD"
1211 flags="$flags -Wall"
1212 # remark #111: statement is unreachable
1213 flags="$flags -wd111"
1214 # remark #181: argument is incompatible with corresponding format string conversion
1215 # ICC is very picky about signedness of operands, warnings provided by GCC are enough
1216 flags="$flags -wd181"
1217 # remark #271: trailing comma is nonstandard
1218 flags="$flags -wd271"
1219 # remark #280: selector expression is constant
1220 flags="$flags -wd280"
1221 # remark #304: access control not specified ("public" by default)
1222 flags="$flags -wd304"
1223 # remark #383: value copied to temporary, reference to temporary used
1224 flags="$flags -wd383"
1225 # remark #444: destructor for base class ... is not virtual
1226 flags="$flags -wd444"
1227 # remark #593: variable ... was set but never used
1228 flags="$flags -wd593"
1229 # warning #654: overloaded virtual function ... is only partially overridden in class ...
1230 flags="$flags -wd654"
1231 # remark #810: conversion from ... to ... may lose significant bits
1232 flags="$flags -wd810"
1233 # remark #869: parameter ... was never referenced
1234 flags="$flags -wd869"
1235 # warning #873: function ... ::operator new ... has no corresponding operator delete ...
1236 flags="$flags -wd873"
1237 # remark #981: operands are evaluated in unspecified order
1238 flags="$flags -wd981"
1239 # remark #1418: external function definition with no prior declaration
1240 flags="$flags -wd1418"
1241 # remark #1419: external declaration in primary source file
1242 flags="$flags -wd1419"
1243 # remark #1572: floating-point equality and inequality
1244 flags="$flags -wd1572"
1245 # remark #1599: declaration hides variable/parameter ...
1246 flags="$flags -wd1599"
1247 # remark #1720: function ... ::operator new ... has no corresponding member operator delete ...
1248 flags="$flags -wd1720"
1250 if [ $cc_version -lt 110 ]; then
1251 # warns about system headers with recent glibc:
1252 # warning #1292: attribute "__nonnull__" ignored
1253 flags="$flags -wd1292"
1256 if [ $cc_version -ge 100 ]; then
1257 # warning #1899: multicharacter character literal (potential portability problem)
1258 flags="$flags -wd1899"
1259 # vec report defaults to telling where it did loop vectorisation, which is not very important
1260 flags="$flags -vec-report=0 "
1263 if [ $cc_version -ge 110 ]; then
1264 # remark #2259: non-pointer conversion from ... to ... may lose significant bits
1265 flags="$flags -wd2259"
1266 # Use c++0x mode so static_assert() is available
1267 cxxflags="$cxxflags -std=c++0x"
1270 if [ "$enable_lto" != "0" ] && $1 -help ipo | grep -q '\-ipo'; then
1271 # Use IPO (only if we see IPO exists and is requested)
1273 features="$features lto"
1275 elif basename $1 | grep -q 'clang'; then
1276 # Enable some things only for certain clang versions
1277 cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
1279 # aliasing rules are not held in openttd code
1280 flags="$flags -fno-strict-aliasing"
1282 # -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
1283 # -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
1284 flags="$flags -Wall -W -Wextra"
1286 # warning: unused parameter '...'
1287 flags="$flags -Wno-unused-parameter"
1289 # warning: expression result unused
1290 flags="$flags -Wno-unused-value"
1292 # warning: multi-character character constant
1293 flags="$flags -Wno-multichar"
1295 # warning: explicitly assigning a variable of type '...' to itself
1296 # it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
1297 flags="$flags -Wno-self-assign"
1299 if [ "$cc_version" -lt "30" ]; then
1300 # warning: equality comparison with extraneous parentheses
1301 flags="$flags -Wno-parentheses"
1302 # warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
1303 flags="$flags -Wno-sign-compare"
1306 if [ "$cc_version" -ge "30" ]; then
1307 # warning: equality comparison with extraneous parentheses
1308 # this warning could be useful, but it warns about code in squirrel
1309 flags="$flags -Wno-parentheses-equality"
1312 if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then
1313 # ccache and distcc run separate preprocess and compile passes,
1314 # both are fed with the same CFLAGS. Unfortunately, clang
1315 # complains about -I when compiling preprocessed files:
1316 # "clang: warning: argument unused during compilation: '-I /usr/include'"
1317 flags="$flags -Qunused-arguments"
1320 if [ "$enable_assert" -eq "0" ]; then
1321 # do not warn about unused variables when building without asserts
1322 flags="$flags -Wno-unused-variable"
1325 if [ "$cc_version" -ge "33" ]; then
1326 # clang completed C++11 support in version 3.3
1327 flags="$flags -std=c++11"
1330 # rdynamic is used to get useful stack traces from crash reports.
1331 ldflags="$ldflags -rdynamic"
1333 # Enable some things only for certain GCC versions
1334 # cc_version = major_version * 100 + minor_version
1335 # For example: "3.3" -> 303, "4.9.2" -> 409, "6" -> 600, "23.5" -> 2305
1336 cc_version=`$1 -dumpversion | $awk -F . '{printf "%d%02d", $1, $2}'`
1338 if [ $cc_version -lt 303 ]; then
1339 log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
1343 flags="$flags -Wall -Wno-multichar -Wsign-compare -Wundef"
1344 flags="$flags -Wwrite-strings -Wpointer-arith"
1345 flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
1346 flags="$flags -Wformat=2 -Wformat-security"
1348 if [ $enable_assert -eq 0 ]; then
1349 # Do not warn about unused variables when building without asserts
1350 flags="$flags -Wno-unused-variable"
1351 if [ $cc_version -ge 406 ]; then
1352 # GCC 4.6 gives more warnings, disable them too
1353 flags="$flags -Wno-unused-but-set-variable"
1354 flags="$flags -Wno-unused-but-set-parameter"
1358 if [ $cc_version -ge 304 ]; then
1359 # Warn when a variable is used to initialise itself:
1361 flags="$flags -Winit-self"
1364 if [ $cc_version -ge 400 ]; then
1365 # GCC 4.0+ complains about that we break strict-aliasing.
1366 # On most places we don't see how to fix it, and it doesn't
1367 # break anything. So disable strict-aliasing to make the
1368 # compiler all happy.
1369 flags="$flags -fno-strict-aliasing"
1370 # Warn about casting-out 'const' with regular C-style cast.
1371 # The preferred way is const_cast<>() which doesn't warn.
1372 flags="$flags -Wcast-qual"
1375 if [ $cc_version -ge 402 ]; then
1376 # GCC 4.2+ automatically assumes that signed overflows do
1377 # not occur in signed arithmetics, whereas we are not
1378 # sure that they will not happen. It furthermore complains
1379 # about its own optimized code in some places.
1380 flags="$flags -fno-strict-overflow"
1381 # GCC 4.2 no longer includes -Wnon-virtual-dtor in -Wall.
1382 # Enable it in order to be consistent with older GCC versions.
1383 flags="$flags -Wnon-virtual-dtor"
1386 if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then
1387 # Use gnu++0x mode so static_assert() is available.
1388 # Don't use c++0x, it breaks mingw (with gcc 4.4.0).
1389 cxxflags="$cxxflags -std=gnu++0x"
1392 if [ $cc_version -eq 405 ]; then
1393 # Prevent optimisation supposing enums are in a range specified by the standard
1394 # For details, see http://gcc.gnu.org/PR43680
1395 flags="$flags -fno-tree-vrp"
1398 if [ $cc_version -eq 407 ]; then
1399 # Disable -Wnarrowing which gives many warnings, such as:
1400 # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
1401 # They are valid according to the C++ standard, but useless.
1402 cxxflags="$cxxflags -Wno-narrowing"
1405 if [ $cc_version -ge 407 ]; then
1406 # Disable bogus 'attempt to free a non-heap object' warning
1407 flags="$flags -Wno-free-nonheap-object"
1410 if [ $cc_version -ge 600 ]; then
1411 # -flifetime-dse=2 (default since GCC 6) doesn't play
1412 # well with our custom pool item allocator
1413 cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14"
1416 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
1417 if [ "$enable_lto" != "0" ] && $1 -dumpspecs | grep -q '\%{flto'; then
1418 # Use LTO only if we see LTO exists and is requested
1419 if [ $cc_version -lt 406 ]; then
1420 flags="$flags -flto"
1422 flags="$flags -flto=jobserver"
1424 ldflags="$ldflags -fwhole-program"
1425 features="$features lto"
1428 if $1 -dumpspecs | grep -q rdynamic; then
1429 # rdynamic is used to get useful stack traces from crash reports.
1430 flags="$flags -rdynamic"
1431 ldflags="$ldflags -rdynamic"
1435 eval "$2=\"$flags\""
1436 eval "$3=\"$cxxflags\""
1437 eval "$4=\"$ldflags\""
1438 eval "$5=\"$features\""
1441 make_cflags_and_ldflags() {
1442 # General CFlags for BUILD
1443 CFLAGS_BUILD="$CFLAGS_BUILD"
1444 # Special CXXFlags for BUILD
1445 CXXFLAGS_BUILD="$CXXFLAGS_BUILD"
1447 LDFLAGS_BUILD="$LDFLAGS_BUILD"
1448 # FEATURES for BUILD (lto)
1450 # General CFlags for HOST
1452 # Special CXXFlags for HOST
1453 CXXFLAGS="$CXXFLAGS"
1454 # Libs to compile. In fact this is just LDFLAGS
1456 # LDFLAGS used for HOST
1458 # FEATURES for HOST (lto)
1461 make_compiler_cflags "$cc_build" "CFLAGS_BUILD" "CXXFLAGS_BUILD" "LDFLAGS_BUILD" "FEATURES_BUILD"
1462 make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
1464 CFLAGS="$CFLAGS -D$os"
1465 CFLAGS_BUILD="$CFLAGS_BUILD -D$os"
1467 if [ "$enable_debug" = "0" ]; then
1468 # No debug, add default stuff
1469 OBJS_SUBDIR="release"
1470 if [ "$os" = "MORPHOS" ]; then
1471 CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
1472 LDFLAGS="$LDFLAGS -noixemul"
1475 if [ "$enable_profiling" = "0" ]; then
1476 # -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
1477 CFLAGS="-fomit-frame-pointer $CFLAGS"
1479 CFLAGS="-O2 $CFLAGS"
1483 # Each debug level reduces the optimization by a bit
1484 if [ $enable_debug -ge 1 ]; then
1485 CFLAGS="$CFLAGS -g -D_DEBUG"
1486 if [ "$os" = "PSP" ]; then
1487 CFLAGS="$CFLAGS -G0"
1490 if [ $enable_debug -ge 2 ]; then
1491 CFLAGS="$CFLAGS -fno-inline"
1493 if [ $enable_debug -ge 3 ]; then
1494 CFLAGS="$CFLAGS -O0"
1496 CFLAGS="$CFLAGS -O2"
1500 if [ $enable_debug -le 2 ]; then
1501 if basename "$cc_host" | grep -q "gcc"; then
1502 # Define only when compiling with GCC. Some GLIBC versions use GNU
1503 # extensions in a way that breaks build with at least ICC.
1504 # This requires -O1 or more, so debug level 3 (-O0) is excluded.
1505 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
1508 if basename "$cc_build" | grep -q "gcc"; then
1509 # Just add -O1 to the tools needed for building.
1510 CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
1514 if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then
1515 # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
1516 # wrongly optimizing ^= in loops. This disables the failing optimisation.
1517 CFLAGS="$CFLAGS -fno-expensive-optimizations"
1520 if [ "$enable_profiling" != "0" ]; then
1521 CFLAGS="$CFLAGS -pg"
1522 LDFLAGS="$LDFLAGS -pg"
1525 if [ "$with_threads" = "0" ]; then
1526 CFLAGS="$CFLAGS -DNO_THREADS"
1528 if [ "$with_sse" = "1" ]; then
1529 CFLAGS="$CFLAGS -DWITH_SSE"
1532 if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
1533 if [ "$os" = "CYGWIN" ]; then
1534 flags="$flags -mwin32"
1535 LDFLAGS="$LDFLAGS -mwin32"
1537 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
1538 if [ $cc_version -lt 406 ]; then
1539 flags="$flags -mno-cygwin"
1540 LDFLAGS="$LDFLAGS -mno-cygwin"
1543 if [ "$enable_console" != "0" ]; then
1544 LDFLAGS="$LDFLAGS -Wl,--subsystem,console"
1546 LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
1549 LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
1551 if [ $cc_version -ge 404 ]; then
1552 LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
1554 if [ $cc_version -ge 407 ]; then
1555 CFLAGS="$CFLAGS -mno-ms-bitfields"
1560 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
1561 LIBS="$LIBS -lpthread"
1564 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
1567 if [ "$os" = "WINCE" ]; then
1568 LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
1570 if [ "$os" = "PSP" ]; then
1571 CFLAGS="$CFLAGS -I`$psp_config -p`/include"
1572 LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
1574 CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
1575 LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
1578 if [ "$os" = "MORPHOS" ]; then
1579 # -Wstrict-prototypes generates much noise because of system headers
1580 CFLAGS="$CFLAGS -Wno-strict-prototypes"
1583 if [ "$os" = "OPENBSD" ]; then
1584 LIBS="$LIBS -pthread"
1587 if [ "$os" = "OSX" ]; then
1588 LDFLAGS="$LDFLAGS -framework Cocoa"
1590 # Add macports include dir which is not always set a default system dir. This avoids zillions of bogus warnings.
1591 CFLAGS="$CFLAGS -isystem/opt/local/include"
1593 if [ "$enable_dedicated" = "0" ] && ([ "$cpu_type" = "32" ] || [ "$enable_universal" != "0" ]); then
1594 LIBS="$LIBS -framework QuickTime"
1596 CFLAGS="$CFLAGS -DNO_QUICKTIME"
1599 if [ "$enable_universal" = "0" ]; then
1600 # Universal builds set this elsewhere
1601 CFLAGS="$OSX_SYSROOT $CFLAGS"
1602 LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
1606 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
1607 LIBS="$LIBS -lmidi -lbe"
1610 # Most targets act like UNIX, just with some additions
1611 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
1612 CFLAGS="$CFLAGS -DUNIX"
1614 # And others like Windows
1615 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
1616 CFLAGS="$CFLAGS -DWIN"
1619 if [ -n "$allegro_config" ]; then
1620 CFLAGS="$CFLAGS -DWITH_ALLEGRO"
1621 CFLAGS="$CFLAGS `$allegro_config --cflags`"
1622 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1623 if [ "$enable_static" != "0" ]; then
1624 LIBS="$LIBS `$allegro_config --static --libs`"
1626 LIBS="$LIBS `$allegro_config --libs`"
1631 if [ -n "$sdl_config" ]; then
1632 CFLAGS="$CFLAGS -DWITH_SDL"
1633 # SDL must not add _GNU_SOURCE as it breaks many platforms
1634 CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
1635 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1636 if [ "$enable_static" != "0" ]; then
1637 LIBS="$LIBS `$sdl_config --static-libs`"
1639 LIBS="$LIBS `$sdl_config --libs`"
1644 if [ "$with_cocoa" != "0" ]; then
1645 CFLAGS="$CFLAGS -DWITH_COCOA"
1646 LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox"
1648 if [ "$enable_cocoa_quartz" != "0" ]; then
1649 CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ"
1652 if [ "$enable_cocoa_quickdraw" != "0" ]; then
1653 CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW"
1657 if [ "$with_zlib" != "0" ]; then
1658 CFLAGS="$CFLAGS -DWITH_ZLIB"
1659 CFLAGS="$CFLAGS `$zlib_config --cflags | tr '\n\r' ' '`"
1660 if [ "$enable_static" != "0" ]; then
1661 LIBS="$LIBS `$zlib_config --libs --static | tr '\n\r' ' '`"
1663 LIBS="$LIBS `$zlib_config --libs | tr '\n\r' ' '`"
1667 if [ -n "$lzma_config" ]; then
1668 CFLAGS="$CFLAGS -DWITH_LZMA"
1669 CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`"
1671 if [ "$enable_static" != "0" ]; then
1672 CFLAGS="$CFLAGS -DLZMA_API_STATIC"
1673 LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' ' '`"
1675 LIBS="$LIBS `$lzma_config --libs | tr '\n\r' ' '`"
1679 if [ "$with_lzo2" != "0" ]; then
1680 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1685 CFLAGS="$CFLAGS -DWITH_LZO"
1688 if [ -n "$xdg_basedir_config" ]; then
1689 CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR"
1690 CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' ' '`"
1692 if [ "$enable_static" != "0" ]; then
1693 LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' ' '`"
1695 LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' ' '`"
1699 # 64bit machines need -D_SQ64
1700 if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
1701 CFLAGS="$CFLAGS -D_SQ64"
1703 CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR"
1705 if [ -n "$png_config" ]; then
1706 CFLAGS="$CFLAGS -DWITH_PNG"
1707 CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' ' '`"
1709 if [ "$enable_static" != "0" ]; then
1710 LIBS="$LIBS `$png_config --libs --static | tr '\n\r' ' '`"
1712 LIBS="$LIBS `$png_config --libs | tr '\n\r' ' '`"
1716 if [ -n "$fontconfig_config" ]; then
1717 CFLAGS="$CFLAGS -DWITH_FONTCONFIG"
1718 CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' ' '`"
1720 if [ "$enable_static" != "0" ]; then
1721 LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`"
1723 LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' ' '`"
1727 if [ -n "$freetype_config" ]; then
1728 CFLAGS="$CFLAGS -DWITH_FREETYPE"
1729 CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`"
1731 if [ "$enable_static" != "0" ]; then
1732 LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '`"
1734 LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
1738 if [ -n "$icu_layout_config" ]; then
1739 CFLAGS="$CFLAGS -DWITH_ICU_LAYOUT"
1740 CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' ' '`"
1742 if [ "$static_icu" != "0" ]; then
1743 LIBS="$LIBS `$icu_layout_config --libs --static | tr '\n\r' ' ' | sed s/-licu/-lsicu/g`"
1745 LIBS="$LIBS `$icu_layout_config --libs | tr '\n\r' ' '`"
1749 if [ -n "$icu_sort_config" ]; then
1750 CFLAGS="$CFLAGS -DWITH_ICU_SORT"
1751 CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' ' '`"
1753 if [ "$static_icu" != "0" ]; then
1754 LIBS="$LIBS `$icu_sort_config --libs --static | tr '\n\r' ' ' | sed s/-licu/-lsicu/g`"
1756 LIBS="$LIBS `$icu_sort_config --libs | tr '\n\r' ' '`"
1761 if [ "$with_direct_music" != "0" ]; then
1762 CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
1763 # GCC 4.0+ doesn't like the DirectX includes (gives tons of
1764 # warnings on it we won't be able to fix). For now just
1765 # suppress those warnings.
1766 if [ $cc_version -ge 400 ]; then
1767 CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
1771 if [ -n "$libtimidity_config" ]; then
1772 CFLAGS="$CFLAGS -DLIBTIMIDITY"
1773 CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' ' '`"
1775 if [ "$enable_static" != "0" ]; then
1776 LIBS="$LIBS `$libtimidity_config --libs --static | tr '\n\r' ' '`"
1778 LIBS="$LIBS `$libtimidity_config --libs | tr '\n\r' ' '`"
1782 if [ "$with_iconv" != "0" ]; then
1783 CFLAGS="$CFLAGS -DWITH_ICONV"
1784 if [ "$link_to_iconv" = "yes" ]; then
1785 LIBS="$LIBS -liconv"
1786 if [ "$with_iconv" != "2" ]; then
1787 CFLAGS="$CFLAGS -I$with_iconv/include"
1788 LIBS="$LIBS -L$with_iconv/lib"
1792 if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then
1793 CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV"
1797 if [ -n "$with_midi" ]; then
1798 CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\""
1800 if [ -n "$with_midi_arg" ]; then
1801 CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\""
1804 if [ "$enable_dedicated" != "0" ]; then
1805 CFLAGS="$CFLAGS -DDEDICATED"
1808 if [ "$enable_unicode" != "0" ]; then
1809 CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
1812 if [ "$enable_network" != "0" ]; then
1813 CFLAGS="$CFLAGS -DENABLE_NETWORK"
1815 if [ "$os" = "BEOS" ]; then
1816 LDFLAGS="$LDFLAGS -lbind -lsocket"
1819 if [ "$os" = "HAIKU" ]; then
1820 LDFLAGS="$LDFLAGS -lnetwork"
1823 if [ "$os" = "SUNOS" ]; then
1824 LDFLAGS="$LDFLAGS -lnsl -lsocket"
1828 if [ "$enable_static" != "0" ]; then
1829 # OSX can't handle -static in LDFLAGS
1830 if [ "$os" != "OSX" ]; then
1831 LDFLAGS="$LDFLAGS -static"
1835 if [ "$enable_assert" = "0" ]; then
1836 CFLAGS="$CFLAGS -DNDEBUG"
1837 CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG"
1840 if [ "$enable_desync_debug" != "0" ]; then
1841 CFLAGS="$CFLAGS -DRANDOM_DEBUG"
1844 if [ "$enable_osx_g5" != "0" ]; then
1845 CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
1848 if [ -n "$personal_dir" ]; then
1849 CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
1852 if [ -n "$shared_dir" ]; then
1853 CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
1856 CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
1858 if [ "$enable_lto" != "0" ]; then
1860 if echo "$FEATURES_BUILD" | grep -q "lto"; then
1861 LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD"
1864 if echo "$FEATURES" | grep -q "lto"; then
1865 LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS"
1868 if [ "$lto_warn" != "0" ]; then
1869 log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it"
1870 log 1 "WARNING: LTO/IPO has been disabled"
1874 log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
1875 log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
1876 log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
1877 log 1 "using CFLAGS... $CFLAGS"
1878 log 1 "using CXXFLAGS... $CXXFLAGS"
1879 log 1 "using LDFLAGS... $LIBS $LDFLAGS"
1881 # Makedepend doesn't like something like: -isysroot /OSX/blabla
1882 # so convert it to: -isysroot -OSX/blabla. makedepend just ignores
1883 # any - command it doesn't know, so we are pretty save.
1884 # Lovely hackish, not?
1885 # Btw, this almost always comes from outside the configure, so it is
1886 # not something we can control.
1887 # Also make makedepend aware of compiler's built-in defines.
1888 if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then
1889 # Append CXXFLAGS possibly containing -std=c++0x
1890 cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
1892 # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
1893 cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
1898 if [ "$with_distcc" != "0" ]; then
1899 cc_host="$distcc $cc_host"
1900 cxx_host="$distcc $cxx_host"
1902 log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
1906 if [ "$with_ccache" != "0" ]; then
1907 cc_host="$ccache $cc_host"
1908 cxx_host="$ccache $cxx_host"
1914 # $1 - Type for message (build / host)
1915 # $2 - What to fill with the found compiler
1916 # $3 - System to try
1917 # $4 - Compiler to try
1918 # $5 - Env-setting to try
1919 # $6 - GCC alike to try
1920 # $7 - CC alike to try
1921 # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
1922 # $9 - What the command is to check for
1924 if [ -n "$3" ]; then
1926 if [ -z "$6" ]; then
1931 machine=`eval $compiler $9 2>/dev/null`
1933 eval "$2=\"$compiler\""
1935 log 2 "executing $compiler $9"
1936 log 2 " returned $machine"
1937 log 2 " exit code $ret"
1939 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1940 if [ -z "$5" ]; then
1941 log 1 "checking $1... $compiler not found"
1942 log 1 "I couldn't detect any $6 binary for $3"
1947 machine=`eval $compiler $9 2>/dev/null`
1949 eval "$2=\"$compiler\""
1951 log 2 "executing $compiler $9"
1952 log 2 " returned $machine"
1953 log 2 " exit code $ret"
1955 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1956 log 1 "checking $1... $compiler not found"
1957 log 1 "I couldn't detect any $5 binary for $3"
1962 if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
1963 log 1 "checking $1... expected $3, found $machine"
1964 log 1 "the compiler suggests it doesn't build code for the machine you specified"
1967 elif [ -n "$4" ]; then
1968 # Check for manual compiler
1969 machine=`$4 $9 2>/dev/null`
1973 log 2 "executing $4 $9"
1974 log 2 " returned $machine"
1975 log 2 " exit code $ret"
1977 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1978 log 1 "checking $1... $4 not found"
1979 log 1 "the selected binary doesn't seem to be a $6 binary"
1983 # Nothing given, autodetect
1985 if [ -n "$5" ]; then
1986 machine=`$5 $9 2>/dev/null`
1990 log 2 "executing $5 $9"
1991 log 2 " returned $machine"
1992 log 2 " exit code $ret"
1994 # The user defined a GCC that doesn't reply to $9.. abort
1995 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1996 log 1 "checking $1... $5 unusable"
1997 log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary"
1998 log 1 "please redefine the CC/CXX environment to a $6 binary"
2002 log 2 "checking $1... CC/CXX not set (skipping)"
2004 # No $5, so try '$6'
2005 machine=`$6 $9 2>/dev/null`
2009 log 2 "executing $6 $9"
2010 log 2 " returned $machine"
2011 log 2 " exit code $ret"
2013 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2015 machine=`$7 $9 2>/dev/null`
2019 log 2 "executing $7 $9"
2020 log 2 " returned $machine"
2021 log 2 " exit code $ret"
2024 if [ -z "$machine" ]; then
2025 log 1 "checking $1... $6 not found"
2026 log 1 "I couldn't detect any $6 binary on your system"
2027 log 1 "please define the CC/CXX environment to where it is located"
2035 if [ "$8" != "0" ]; then
2037 log 1 "checking $1... $res"
2039 log 1 "checking $1... $machine"
2044 if [ "$os" = "FREEBSD" ]; then
2045 # FreeBSD's C compiler does not support dump machine.
2046 # However, removing C support is not possible because PSP must be linked with the C compiler.
2047 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
2049 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
2054 # By default the host is the build
2055 if [ -z "$host" ]; then host="$build"; fi
2057 if [ "$os" = "FREEBSD" ]; then
2058 # FreeBSD's C compiler does not support dump machine.
2059 # However, removing C support is not possible because PSP must be linked with the C compiler.
2060 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
2062 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
2067 check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine"
2071 # By default the host is the build
2072 if [ -z "$host" ]; then host="$build"; fi
2073 check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine"
2077 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2078 check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
2083 if [ "$os" = "OS2" ]; then
2084 # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly
2085 log 1 "checking host strip... using gcc -s option"
2086 elif [ "$os" = "OSX" ]; then
2087 # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something
2088 echo "int main(int argc, char *argv[]) { }" > strip.test.c
2089 $cxx_host strip.test.c -o strip.test
2090 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test"
2091 rm -f strip.test.c strip.test
2093 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V"
2098 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
2099 echo "int main(int argc, char *argv[]) { }" > lipo.test.c
2100 $cxx_host lipo.test.c -o lipo.test
2101 check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test"
2102 rm -f lipo.test.c lipo.test
2108 if [ -n "$1" ]; then
2109 if echo "$1" | grep -q / ; then
2110 # Seems to be a file system path
2113 osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk"
2115 if [ ! -d "$osx_sdk_path" ]; then
2116 # No directory, not present or garbage
2120 # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced
2121 sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4"
2124 cat > tmp.osx.mm << EOF
2125 #include <Cocoa/Cocoa.h>
2127 kCGBitmapByteOrder32Host;
2131 execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2132 eval $execute > /dev/null
2134 log 2 "executing $execute"
2135 log 2 " exit code $ret"
2136 rm -f tmp.osx.mm tmp.osx
2140 check_direct_music() {
2142 #include <windows.h>
2143 #include <dmksctrl.h>
2144 #include <dmusici.h>
2145 #include <dmusicc.h>
2146 #include <dmusicf.h>
2147 int main(int argc, char *argv[]) { }" > direct_music.test.c
2148 $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
2150 rm -f direct_music.test.c direct_music.test
2152 if [ "$res" != "0" ]; then
2153 if [ "$with_direct_music" != "1" ]; then
2154 log 1 "configure: error: direct-music is not available on this system"
2157 with_direct_music="0"
2159 log 1 "checking direct-music... not found"
2161 log 1 "checking direct-music... found"
2165 check_makedepend() {
2166 if [ "$enable_builtin_depend" != "0" ]; then
2170 if [ "$with_makedepend" = "0" ]; then
2171 log 1 "checking makedepend... disabled"
2175 if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then
2176 makedepend="makedepend"
2178 makedepend="$with_makedepend"
2181 rm -f makedepend.tmp
2182 touch makedepend.tmp
2183 res=`$makedepend -fmakedepend.tmp 2>/dev/null`
2185 log 2 "executing $makedepend -f makedepend.tmp"
2186 log 2 " returned `cat makedepend.tmp`"
2187 log 2 " exit code $ret"
2189 if [ ! -s makedepend.tmp ]; then
2190 rm -f makedepend.tmp makedepend.tmp.bak
2192 if [ "$with_makedepend" = "2" ]; then
2193 log 1 "checking makedepend... not found"
2195 log 1 "I couldn't detect any makedepend on your system"
2196 log 1 "please locate it via --makedepend=[binary]"
2199 elif [ "$with_makedepend" != "1" ]; then
2200 log 1 "checking makedepend... $makedepend not found"
2202 log 1 "the selected file doesn't seem to be a valid makedepend binary"
2206 log 1 "checking makedepend... not found"
2213 rm -f makedepend.tmp makedepend.tmp.bak
2215 log 1 "checking makedepend... $makedepend"
2219 # $1 - requested version (major.minor)
2220 # $2 - version we got (major.minor)
2222 if [ -z "$2" ]; then
2226 req_major=`echo $1 | cut -d. -f1`
2227 got_major=`echo $2 | cut -d. -f1`
2228 if [ $got_major -lt $req_major ]; then
2230 elif [ $got_major -gt $req_major ]; then
2234 req_minor=`echo $1 | cut -d. -f2`
2235 got_minor=`echo $2 | cut -d. -f2`
2236 if [ $got_minor -lt $req_minor ]; then
2243 # Not all awks allow gsub(), so we test for that here! It is in fact all we need...
2245 # These awks are known to work. Test for them explicit
2246 awks="gawk mawk nawk"
2248 awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
2249 awk_param="' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", \$0); print \$0; }' 2>/dev/null"
2250 awk_result="a.o b.o c.o "
2251 log 2 "Detecing awk..."
2253 log 2 "Trying: $awk_prefix $awk $awk_param"
2254 res=`eval $awk_prefix $awk $awk_param`
2255 log 2 "Result: '$res'"
2256 if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
2257 # User didn't supply his own awk, so try to detect some other known working names for an awk
2258 for awk in $awks; do
2259 log 2 "Trying: $awk_prefix $awk $awk_param"
2260 res=`eval $awk_prefix $awk $awk_param`
2261 log 2 "Result: '$res'"
2262 if [ "$res" = "$awk_result" ]; then break; fi
2265 if [ "$res" != "$awk_result" ]; then
2266 log 1 "checking awk... not found"
2267 log 1 "configure: error: no awk found"
2268 log 1 "configure: error: please install one of the following: $awks"
2272 if [ "$res" != "$awk_result" ]; then
2273 log 1 "checking awk... not found"
2274 log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
2278 log 1 "checking awk... $awk"
2282 if [ "$os" = "DETECT" ]; then
2283 # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
2285 # Try first via dumpmachine, then via uname
2286 case `echo "$host" | tr '[A-Z]' '[a-z]'` in
2289 *freebsd*) os=FREEBSD;;
2290 *dragonfly*) os=DRAGONFLY;;
2291 *openbsd*) os=OPENBSD;;
2292 *netbsd*) os=NETBSD;;
2294 *morphos*) os=MORPHOS;;
2298 *solaris*) os=SUNOS;;
2299 *cygwin*) os=CYGWIN;;
2307 if [ "$os" = "DETECT" ]; then
2308 case `LC_ALL=C uname | tr '[A-Z]' '[a-z]'` in
2311 *freebsd*) os=FREEBSD;;
2312 *dragonfly*) os=DRAGONFLY;;
2313 *openbsd*) os=OPENBSD;;
2314 *netbsd*) os=NETBSD;;
2316 *morphos*) os=MORPHOS;;
2320 *cygwin*) os=CYGWIN;;
2327 if [ "$os" = "DETECT" ]; then
2328 log 1 "detecting OS... none detected"
2329 log 1 "I couldn't detect your OS. Please use --os=OS to force one"
2330 log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
2334 log 1 "detecting OS... $os"
2336 log 1 "forcing OS... $os"
2341 # 0 means no, 1 is auto-detect, 2 is force
2342 if [ "$with_allegro" = "0" ]; then
2343 log 1 "checking Allegro... disabled"
2349 if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then
2350 log 1 "configure: error: it is impossible to compile both Allegro and COCOA"
2351 log 1 "configure: error: please deselect one of them and try again"
2355 if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2356 log 1 "configure: error: it is impossible to compile a dedicated with Allegro"
2357 log 1 "configure: error: please deselect one of them and try again"
2361 if [ "$enable_dedicated" != "0" ]; then
2362 log 1 "checking Allegro... dedicated server, skipping"
2368 # By default on OSX we don't use Allegro. The rest is auto-detect
2369 if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2370 log 1 "checking Allegro... OSX, skipping"
2376 detect_pkg_config "$with_allegro" "allegro" "allegro_config" "4.4"
2381 # 0 means no, 1 is auto-detect, 2 is force
2382 if [ "$with_sdl" = "0" ]; then
2383 log 1 "checking SDL... disabled"
2389 if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
2390 log 1 "configure: error: it is impossible to compile both SDL and COCOA"
2391 log 1 "configure: error: please deselect one of them and try again"
2395 if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2396 log 1 "configure: error: it is impossible to compile a dedicated with SDL"
2397 log 1 "configure: error: please deselect one of them and try again"
2401 if [ "$enable_dedicated" != "0" ]; then
2402 log 1 "checking SDL... dedicated server, skipping"
2408 # By default on OSX we don't use SDL. The rest is auto-detect
2409 if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2410 log 1 "checking SDL... OSX, skipping"
2416 if [ "$os" = "OSX" ]; then
2417 log 1 "WARNING: sdl is known to fail on some versions of Mac OS X"
2418 log 1 "WARNING: with some hardware configurations. Use at own risk!"
2422 detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2"
2426 # Try to find the best SDK available. For a normal build this
2427 # is currently the 10.5 SDK as this is needed to compile all
2428 # optional code. Because such an executable won't run on 10.4
2429 # or lower, also check for the 10.4u SDK when doing an universal
2432 # Check for the 10.5 SDK, but try 10.6 if that fails
2433 check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path=""
2435 if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then
2436 # No better SDK or universal build enabled? Check 10.4u SDK as well
2437 local old_sdk="$osx_sdk_path"
2438 if check_osx_sdk "10.4u"; then
2439 osx_sdk_104_path="$osx_sdk_path"
2443 if [ -z "$old_sdk" ]; then
2444 osx_sdk_path="$osx_sdk_104_path"
2446 osx_sdk_path="$old_sdk"
2450 if [ -z "$osx_sdk_path" ]; then
2451 log 1 "Your system SDK is probably too old"
2452 log 1 "Please install/upgrade your Xcode to >= 2.5"
2459 # 0 means no, 1 is auto-detect, 2 is force
2460 if [ "$with_cocoa" = "0" ]; then
2461 log 1 "checking COCOA... disabled"
2466 if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2467 log 1 "configure: error: it is impossible to compile a dedicated with COCOA"
2468 log 1 "configure: error: please deselect one of them and try again"
2472 if [ "$enable_dedicated" != "0" ]; then
2473 log 1 "checking COCOA... dedicated server, skipping"
2479 # By default on OSX we use COCOA. The rest doesn't support it
2480 if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then
2481 log 1 "checking COCOA... not OSX, skipping"
2487 if [ "$os" != "OSX" ]; then
2488 log 1 "checking COCOA... not OSX"
2490 log 1 "configure: error: COCOA video driver is only supported for OSX"
2494 log 1 "checking COCOA... found"
2497 if [ "$enable_cocoa_quartz" != "0" ]; then
2498 log 1 "checking whether to enable the Quartz window subdriver... yes"
2500 log 1 "checking whether to enable the Quartz window subdriver... no"
2506 detect_quickdraw() {
2507 # 0 means no, 1 is auto-detect, 2 is force
2508 if [ "$enable_cocoa_quickdraw" = "0" ]; then
2509 log 1 "checking Quickdraw window subdriver... disabled"
2513 # Assume QuickDraw is available when doing an universal build
2514 if [ "$enable_universal" != "0" ]; then
2515 log 1 "checking Quickdraw window subdriver... found"
2519 # 64 bits doesn't have quickdraw
2520 if [ "$cpu_type" = "64" ]; then
2521 enable_cocoa_quickdraw="0"
2522 log 1 "checking Quickdraw window subdriver... disabled (64 bits)"
2526 cat > tmp.osx.mm << EOF
2527 #include <AvailabilityMacros.h>
2528 #import <Cocoa/Cocoa.h>
2529 int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; }
2531 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2532 eval $execute > /dev/null
2534 log 2 "executing $execute"
2535 log 2 " exit code $ret"
2536 rm -f tmp.osx.mm tmp.osx
2537 if [ "$ret" != "0" ]; then
2538 log 1 "checking Quickdraw window subdriver... not found"
2540 # It was forced, so it should be found.
2541 if [ "$enable_cocoa_quickdraw" != "1" ]; then
2542 log 1 "configure: error: Quickdraw window driver could not be found"
2546 enable_cocoa_quickdraw=0
2550 enable_cocoa_quickdraw=1
2551 log 1 "checking Quickdraw window subdriver... found"
2555 # $1 - config-param ($with_zlib value)
2556 # $2 - library name ('zlib', sets $zlib)
2557 # $3 - static library name (libz.a)
2558 # $4 - header directory ()
2559 # $5 - header name (zlib.h)
2560 # $6 - force static (if non-empty)
2562 if [ -n "$6" ]; then force_static="1"; fi
2564 # 0 means no, 1 is auto-detect, 2 is force
2565 if [ "$1" = "0" ]; then
2566 log 1 "checking $2... disabled"
2572 log 2 "detecting $2"
2574 if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2575 eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2577 if [ -z "$res" ]; then
2578 log 2 " trying /usr/include/$4$5... no"
2579 eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2582 if [ -z "$res" ]; then
2583 log 2 " trying /usr/local/include/$4$5... no"
2584 eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2587 if [ -z "$res" ]; then
2588 log 2 " trying /mingw/include/$4$5... no"
2589 eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2592 if [ -z "$res" ]; then
2593 log 2 " trying /opt/local/include/$4$5... no"
2595 if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
2596 eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2598 if [ -z "$res" ]; then
2599 log 2 " trying /usr/pkg/include/$4$5... no"
2602 if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
2603 if [ -z "$includeDir" ]; then
2604 includeDir=`finddir B_SYSTEM_HEADERS_DIRECTORY`
2606 eval "$2=`ls -1 $includeDir/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2608 if [ -z "$res" ]; then
2609 log 2 " trying $includeDir/$4$5... no"
2614 if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
2616 log 2 " trying $res... found"
2617 # Now find the static lib, if needed
2618 eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2620 if [ -z "$res" ]; then
2621 log 2 " trying /lib/$3... no"
2622 eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2625 if [ -z "$res" ]; then
2626 log 2 " trying /usr/lib/$3... no"
2627 eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2630 if [ -z "$res" ]; then
2631 log 2 " trying /usr/local/lib/$3... no"
2632 eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2635 if [ -z "$res" ]; then
2636 log 2 " trying /mingw/lib/$3... no"
2637 log 1 "configure: error: $2 couldn't be found"
2638 log 1 "configure: error: you requested a static link, but I can't find $3"
2644 # Make sure it exists
2645 if [ -f "$1" ]; then
2646 eval "$2=`ls $1 2>/dev/null`"
2648 eval "$2=`ls $1/$3 2>/dev/null`"
2653 if [ -z "$res" ]; then
2654 log 1 "checking $2... not found"
2655 if [ "$1" = "2" ]; then
2656 log 1 "configure: error: $2 couldn't be found"
2659 elif [ "$1" != "1" ]; then
2660 log 1 "configure: error: $2 couldn't be found"
2661 log 1 "configure: error: you supplied '$1', but it seems invalid"
2672 log 2 " trying $res... found"
2674 log 1 "checking $2... found"
2678 detect_pkg_config "$with_zlib" "zlib" "zlib_config" "1.2"
2682 detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
2685 detect_libtimidity() {
2686 detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1"
2689 detect_pkg_config() {
2690 # $1 - config-param ($with_lzma value)
2691 # $2 - package name ('liblzma')
2692 # $3 - config name ('lzma_config', sets $lzma_config)
2693 # $4 - minimum module version ('2.3')
2694 # $5 - check for dedicated, 1 is "skif if dedicated"
2696 # 0 means no, 1 is auto-detect, 2 is force
2697 if [ "$1" = "0" ]; then
2698 log 1 "checking $2... disabled"
2704 if [ "$5" = "1" ] && [ "$1" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2705 log 1 "checking $2... dedicated server, skipping"
2711 log 2 "detecting $2"
2713 if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2714 pkg_config_call="$pkg_config $2"
2716 pkg_config_call="$1"
2719 version=`$pkg_config_call --modversion 2>/dev/null`
2721 check_version "$4" "$version"
2723 log 2 "executing $pkg_config_call --modversion"
2724 log 2 " returned $version"
2725 log 2 " exit code $ret"
2727 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2728 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2729 log 1 "checking $2... needs at least version $4, $2 NOT enabled"
2731 log 1 "checking $2... not found"
2734 # It was forced, so it should be found.
2735 if [ "$1" != "1" ]; then
2736 log 1 "configure: error: $pkg_config $2 couldn't be found"
2737 log 1 "configure: error: you supplied '$1', but it seems invalid"
2745 eval "$3=\"$pkg_config_call\""
2746 log 1 "checking $2... found"
2750 detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0"
2753 detect_xdg_basedir() {
2754 detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2"
2758 detect_pkg_config "$with_png" "libpng" "png_config" "1.2"
2762 detect_pkg_config "$with_freetype" "freetype2" "freetype_config" "2.2" "1"
2765 detect_fontconfig() {
2766 # 0 means no, 1 is auto-detect, 2 is force
2767 if [ "$with_fontconfig" = "0" ]; then
2768 log 1 "checking libfontconfig... disabled"
2770 fontconfig_config=""
2773 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2774 log 1 "checking libfontconfig... WIN32, skipping"
2775 fontconfig_config=""
2779 if [ "$os" = "OSX" ]; then
2780 log 1 "checking libfontconfig... OSX, skipping"
2781 fontconfig_config=""
2785 detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3" "1"
2788 detect_icu_layout() {
2789 detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
2793 detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
2796 detect_pspconfig() {
2797 # 0 means no, 1 is auto-detect, 2 is force
2798 if [ "$with_psp_config" = "0" ]; then
2799 log 1 "checking psp-config... disabled"
2805 if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
2806 log 1 "checking psp-config... not PSP, skipping"
2812 if [ "$os" != "PSP" ]; then
2813 log 1 "checking psp-config... not PSP"
2815 log 1 "configure: error: psp-config is only supported for PSP"
2819 if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
2820 psp_config="psp-config"
2822 psp_config="$with_psp_config"
2825 version=`$psp_config -p 2>/dev/null`
2827 log 2 "executing $psp_config -p"
2828 log 2 " returned $version"
2829 log 2 " exit code $ret"
2831 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2832 log 1 "checking psp-config... not found"
2833 log 1 "configure: error: psp-config couldn't be found"
2835 # It was forced, so it should be found.
2836 if [ "$with_psp_config" != "1" ]; then
2837 log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
2842 log 1 "checking psp-config... found"
2846 # 0 means no, 1 is auto-detect, 2 is force
2847 if [ "$with_iconv" = "0" ]; then
2848 log 1 "checking iconv... disabled"
2853 if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then
2854 log 1 "checking iconv... not OSX, skipping"
2860 # Try to find iconv.h, seems to only thing to detect iconv with
2862 if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
2863 iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
2864 if [ -z "$iconv" ]; then
2865 iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
2868 # Make sure it exists
2869 iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
2872 if [ -z "$iconv" ]; then
2873 log 1 "checking iconv... not found"
2874 if [ "$with_iconv" = "2" ]; then
2875 log 1 "configure: error: iconv couldn't be found"
2878 elif [ "$with_iconv" != "1" ]; then
2879 log 1 "configure: error: iconv couldn't be found"
2880 log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it"
2888 if [ "$with_iconv" = "1" ]; then
2892 log 2 "found iconv in $iconv"
2894 log 1 "checking iconv... found"
2896 # There are different implementations of iconv. The older ones,
2897 # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
2898 # IEEE 1003.1 (2004), pass a non-const pointer.
2900 cat > tmp.iconv.cpp << EOF
2901 #include "src/stdafx.h"
2904 static char buf[1024];
2906 const char *inbuf = "";
2908 size_t outlen = 1023;
2910 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2913 execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2914 eval $execute > /dev/null
2916 log 2 "executing $execute"
2917 log 2 " exit code $ret"
2918 if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi
2919 log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv"
2921 cat > tmp.iconv.cpp << EOF
2922 #include "src/stdafx.h"
2925 static char buf[1024];
2929 size_t outlen = 1023;
2931 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2934 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2935 eval $execute > /dev/null
2937 log 2 "executing $execute"
2938 log 2 " exit code $ret"
2939 if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi
2940 log 1 "checking whether to link to iconv... $link_to_iconv"
2941 rm -f tmp.iconv tmp.iconv.cpp
2955 log 2 "running echo <array> | $1"
2957 if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then
2959 log 2 " result was valid"
2961 log 2 " result was invalid"
2966 if [ "$with_sort" = "0" ]; then
2967 log 1 "checking sort... disabled"
2972 if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then
2974 if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi
2975 if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi
2976 if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi
2977 if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi
2978 if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi
2979 if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi
2981 _detect_sort "$with_sort"
2984 if [ -z "$sort" ]; then
2985 if [ "$with_sort" = "2" ]; then
2986 log 1 "checking sort... not found"
2988 log 1 "configure: error: couldn't detect sort on your system"
2990 elif [ "$with_sort" != "1" ]; then
2991 log 1 "checking sort... $with_sort not found"
2993 log 1 "configure: error: '$with_sort' doesn't look like a sort to me"
2994 log 1 "configure: error: please verify its location and function and try again"
2998 log 1 "checking sort... not found"
3001 log 1 "checking sort... $sort"
3006 # 0 means no, 1 is auto-detect, 2 is force
3007 if [ "$with_grfcodec" = "0" ]; then
3008 log 1 "checking grfcodec... disabled"
3014 if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then
3017 grfcodec="$with_grfcodec"
3020 version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3022 log 2 "executing grfcodec -v"
3023 log 2 " returned $version"
3024 log 2 " exit code $ret"
3026 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3027 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3028 log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled"
3030 log 1 "checking grfcodec... not found"
3033 # It was forced, so it should be found.
3034 if [ "$with_grfcodec" != "1" ]; then
3035 log 1 "configure: error: grfcodec couldn't be found"
3036 log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid"
3044 log 1 "checking grfcodec... found"
3048 # 0 means no, 1 is auto-detect, 2 is force
3049 if [ "$with_nforenum" = "0" ]; then
3050 log 1 "checking nforenum... disabled"
3056 if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then
3059 nforenum="$with_nforenum"
3062 version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3064 log 2 "executing nforenum -v"
3065 log 2 " returned $version"
3066 log 2 " exit code $ret"
3068 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3069 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3070 log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled"
3072 log 1 "checking nforenum... not found"
3075 # It was forced, so it should be found.
3076 if [ "$with_nforenum" != "1" ]; then
3077 log 1 "configure: error: nforenum couldn't be found"
3078 log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid"
3086 log 1 "checking nforenum... found"
3090 if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
3091 log 1 "forcing cpu-type... $cpu_type bits"
3094 echo "#define _SQ64 1" > tmp.64bit.cpp
3095 echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
3096 echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
3097 echo "int main() { return 0; }" >> tmp.64bit.cpp
3098 execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -DTESTING 2>&1"
3099 cpu_type="`eval $execute 2>/dev/null`"
3101 log 2 "executing $execute"
3102 log 2 " returned $cpu_type"
3103 log 2 " exit code $ret"
3104 if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
3105 log 1 "detecting cpu-type... $cpu_type bits"
3106 rm -f tmp.64bit tmp.64bit.cpp
3109 detect_sse_capable_architecture() {
3110 # 0 means no, 1 is auto-detect, 2 is force
3111 if [ "$with_sse" = "0" ]; then
3112 log 1 "checking SSE... disabled"
3116 echo "#define _SQ64 1" > tmp.sse.cpp
3117 echo "#include <xmmintrin.h>" >> tmp.sse.cpp
3118 echo "#include <smmintrin.h>" >> tmp.sse.cpp
3119 echo "#include <tmmintrin.h>" >> tmp.sse.cpp
3120 echo "int main() { return 0; }" >> tmp.sse.cpp
3121 execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1"
3122 sse="`eval $execute 2>/dev/null`"
3124 log 2 "executing $execute"
3125 log 2 " returned $sse"
3126 log 2 " exit code $ret"
3127 if [ "$ret" = "0" ]; then
3128 log 1 "detecting SSE... found"
3130 # It was forced, so it should be found.
3131 if [ "$with_sse" != "1" ]; then
3132 log 1 "configure: error: SSE couln't be found"
3133 log 1 "configure: error: you force enabled SSE, but it seems unavailable"
3137 log 1 "detecting SSE... not found"
3140 rm -f tmp.sse tmp.exe tmp.sse.cpp
3145 T_CXXFLAGS="$CXXFLAGS"
3146 T_LDFLAGS="$LDFLAGS"
3148 SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
3150 # All the data needed to compile a single target
3151 # Make sure if you compile multiple targets to
3152 # use multiple OBJS_DIR, because all in-between
3153 # binaries are stored in there, and nowhere else.
3155 s@!!CC_HOST!!@$cc_host@g;
3156 s@!!CXX_HOST!!@$cxx_host@g;
3157 s@!!CC_BUILD!!@$cc_build@g;
3158 s@!!CXX_BUILD!!@$cxx_build@g;
3159 s@!!WINDRES!!@$windres@g;
3160 s@!!STRIP!!@$strip $strip_arg@g;
3162 s@!!CFLAGS!!@$T_CFLAGS@g;
3163 s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g;
3164 s@!!CXXFLAGS!!@$T_CXXFLAGS@g;
3165 s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g;
3166 s@!!STRGEN_FLAGS!!@$strgen_flags@g;
3168 s@!!LDFLAGS!!@$T_LDFLAGS@g;
3169 s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g;
3170 s@!!BIN_DIR!!@$BIN_DIR@g;
3171 s@!!ROOT_DIR!!@$ROOT_DIR@g;
3172 s@!!MEDIA_DIR!!@$MEDIA_DIR@g;
3173 s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
3174 s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
3175 s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
3176 s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
3177 s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g;
3178 s@!!SRC_DIR!!@$SRC_DIR@g;
3179 s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
3180 s@!!OSXAPP!!@$OSXAPP@g;
3181 s@!!LANG_DIR!!@$LANG_DIR@g;
3183 s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g;
3184 s@!!DATA_DIR!!@$prefix_dir/$data_dir@g;
3185 s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g;
3186 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3187 s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g;
3188 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3189 s@!!PERSONAL_DIR!!@$personal_dir@g;
3190 s@!!SHARED_DIR!!@$shared_dir@g;
3191 s@!!INSTALL_DIR!!@$install_dir@g;
3192 s@!!BINARY_NAME!!@$binary_name@g;
3193 s@!!STRGEN!!@$STRGEN@g;
3194 s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
3195 s@!!DEPEND!!@$DEPEND@g;
3196 s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
3197 s@!!ENDIAN_FORCE!!@$endian@g;
3198 s@!!STAGE!!@$STAGE@g;
3199 s@!!MAKEDEPEND!!@$makedepend@g;
3200 s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
3202 s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
3203 s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
3204 s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
3205 s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
3206 s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
3207 s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
3208 s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g;
3209 s@!!LANG_SUPPRESS!!@$lang_suppress@g;
3210 s@!!OBJS_C!!@$OBJS_C@g;
3211 s@!!OBJS_CPP!!@$OBJS_CPP@g;
3212 s@!!OBJS_MM!!@$OBJS_MM@g;
3213 s@!!OBJS_RC!!@$OBJS_RC@g;
3216 s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g;
3218 s@!!DISTCC!!@$distcc@g;
3219 s@!!NFORENUM!!@$nforenum@g;
3220 s@!!GRFCODEC!!@$grfcodec@g;
3223 if [ "$icon_theme_dir" != "" ]; then
3224 SRC_REPLACE="$SRC_REPLACE
3225 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3228 SRC_REPLACE="$SRC_REPLACE
3229 s@!!ICON_THEME_DIR!!@@g;
3233 if [ "$man_dir" != "" ]; then
3234 SRC_REPLACE="$SRC_REPLACE
3235 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3238 SRC_REPLACE="$SRC_REPLACE
3243 if [ "$menu_dir" != "" ]; then
3244 SRC_REPLACE="$SRC_REPLACE
3245 s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g;
3248 SRC_REPLACE="$SRC_REPLACE
3254 generate_menu_item() {
3257 s@!!MENU_GROUP!!@$menu_group@g;
3258 s@!!MENU_NAME!!@$menu_name@g
3260 log 1 "Generating menu item..."
3262 < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop
3270 # Create the main Makefile
3271 log 1 "Generating Makefile..."
3272 echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile
3273 < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile
3274 cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle
3275 echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am
3277 # Make the copy of the source-list, so we don't trigger an unwanted recompile
3278 cp $SOURCE_LIST config.cache.source.list
3279 # Add the current directory, so we don't trigger an unwanted recompile
3280 echo "`pwd`" > config.cache.pwd
3281 # Make sure config.cache is OLDER then config.cache.source.list
3285 if [ "$menu_dir" != "" ]; then
3295 # Create the language file
3296 mkdir -p $LANG_OBJS_DIR
3298 log 1 "Generating lang/Makefile..."
3299 echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile
3300 < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile
3301 echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am
3302 echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
3305 generate_settings() {
3310 # Create the language file
3311 mkdir -p $SETTING_OBJS_DIR
3313 log 1 "Generating setting/Makefile..."
3314 echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile
3315 < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile
3316 echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am
3324 # Create the language file
3325 mkdir -p $GRF_OBJS_DIR
3327 log 1 "Generating grf/Makefile..."
3328 echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
3329 < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
3330 echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
3333 generate_src_normal() {
3338 # Create the source file
3339 mkdir -p $SRC_OBJS_DIR
3341 log 1 "Generating $2/Makefile..."
3342 echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile
3343 < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile
3344 echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am
3345 echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am
3348 generate_src_osx() {
3349 cc_host_orig="$cc_host"
3350 cxx_host_orig="$cxx_host"
3351 CFLAGS_orig="$CFLAGS"
3352 LDFLAGS_orig="$LDFLAGS"
3354 for type in $enable_universal; do
3356 if [ -n "$osx_sdk_104_path" ]; then
3357 # Use 10.4 SDK for 32-bit targets
3358 CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig"
3359 LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig"
3362 # We don't want to duplicate the x86_64 stuff for each target, so do it once here
3363 if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then
3364 # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV
3365 # and they also removed support for QuickTime/QuickDraw
3366 if [ -n "$osx_sdk_path" ]; then
3367 CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig"
3368 LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig"
3370 CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW"
3371 LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`"
3376 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc"
3377 cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3"
3378 cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3"
3379 generate_src_normal "[ppc]" "objs/ppc";;
3381 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970"
3382 cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3383 cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3384 generate_src_normal "[ppc970]" "objs/ppc970";;
3386 BASE_SRC_OBJS_DIR="$OBJS_DIR/i386"
3387 cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4"
3388 cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4"
3389 generate_src_normal "[i386]" "objs/i386";;
3391 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64"
3392 cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3393 cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3394 generate_src_normal "[ppc64]" "objs/ppc64";;
3396 BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64"
3397 cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3398 cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3399 generate_src_normal "[x86_64]" "objs/x86_64";;
3400 *) log 1 "Unknown architecture requested for universal build: $type";;
3406 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
3409 generate_src_normal "[SRC]" "objs"
3414 echo "'configure' configures OpenTTD."
3416 echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
3418 echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as"
3419 echo "VAR=VALUE. See below for descriptions of some of the useful variables."
3421 echo "Defaults for the options are specified in brackets."
3423 echo "Configuration:"
3424 echo " -h, --help display this help and exit"
3426 echo "System types:"
3427 echo " --build=BUILD configure for building on BUILD [guessed]"
3428 echo " --host=HOST cross-compile to build programs to run"
3429 echo " on HOST [BUILD]"
3430 echo " --windres=WINDRES the windres to use [HOST-windres]"
3431 echo " --strip=STRIP the strip to use [HOST-strip]"
3432 echo " --awk=AWK the awk to use in configure [awk]"
3433 echo " --pkg-config=PKG-CONFIG the pkg-config to use in configure [pkg-config]"
3434 echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]"
3435 echo " --os=OS the OS we are compiling for [DETECT]"
3436 echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
3437 echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
3438 echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU"
3439 echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
3442 echo " --prefix-dir=dir specifies the prefix for all installed"
3443 echo " files [/usr/local]"
3444 echo " --binary-dir=dir location of the binary. Will be prefixed"
3445 echo " with the prefix-dir [games]"
3446 echo " --data-dir=dir location of data files (lang, data, gm)."
3447 echo " Will be prefixed with the prefix-dir"
3448 echo " [share/games/openttd]"
3449 echo " --doc-dir=dir location of the doc files"
3450 echo " Will be prefixed with the prefix-dir"
3452 echo " --icon-dir=dir location of icons. Will be prefixed"
3453 echo " with the prefix-dir [share/pixmaps]"
3454 echo " --icon-theme-dir=dir location of icon theme."
3455 echo " Will be prefixed with the prefix-dir"
3456 echo " and postfixed with size-dirs [$icon_theme_dir]"
3457 echo " --man-dir=dir location of the manual page (UNIX only)"
3458 echo " Will be prefixed with the prefix-dir"
3460 echo " --menu-dir=dir location of the menu item. (UNIX only, except OSX)"
3461 echo " Will be prefixed with the prefix-dir"
3462 echo " [share/applications]"
3463 echo " --personal-dir=dir location of the personal directory"
3464 echo " [os-dependent default]"
3465 echo " --shared-dir=dir location of shared data files"
3466 echo " [os-dependent default]"
3467 echo " --install-dir=dir specifies the root to install to."
3468 echo " Useful to install into jails [/]"
3469 echo " --binary-name the name used for the binary, icons,"
3470 echo " desktop file, etc. when installing [openttd]"
3472 echo "Features and packages:"
3473 echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)"
3474 echo " --enable-desync-debug=[LVL] enable desync debug options (LVL=[012], 0 is none"
3475 echo " --enable-profiling enables profiling"
3476 echo " --enable-lto enables GCC's Link Time Optimization (LTO)/ICC's"
3477 echo " Interprocedural Optimization if available"
3478 echo " --enable-dedicated compile a dedicated server (without video)"
3479 echo " --enable-static enable static compile (doesn't work for"
3481 echo " --enable-translator enable extra output for translators"
3482 echo " --enable-universal[=ARCH] enable universal builds (OSX ONLY). Allowed is any combination"
3483 echo " of architectures: i386 ppc ppc970 ppc64 x86_64"
3484 echo " Default architectures are: i386 ppc"
3485 echo " --enable-osx-g5 enables optimizations for ppc970 (G5) (OSX ONLY)"
3486 echo " --disable-cocoa-quartz disable the quartz window mode driver for Cocoa (OSX ONLY)"
3487 echo " --disable-cocoa-quickdraw disable the quickdraw window mode driver for Cocoa (OSX ONLY)"
3488 echo " --disable-unicode disable unicode support to build win9x"
3489 echo " version (Win32 ONLY)"
3490 echo " --enable-console compile as a console application instead of as a GUI application."
3491 echo " If this setting is active, debug output will appear in the same"
3492 echo " console instead of opening a new window. (Win32 ONLY)"
3493 echo " --disable-network disable network support"
3494 echo " --disable-assert disable asserts (continue on errors)"
3495 echo " --enable-strip enable any possible stripping"
3496 echo " --without-osx-sysroot disable the automatic adding of sysroot "
3498 echo " --without-application-bundle disable generation of application bundle"
3500 echo " --without-menu-entry Don't generate a menu item (Freedesktop based only)"
3501 echo " --menu-group=group Category in which the menu item will be placed (Freedesktop based only)"
3502 echo " --menu-name=name Name of the menu item when placed [OpenTTD]"
3503 echo " --with-direct-music enable direct music support (Win32 ONLY)"
3504 echo " --with-sort=sort define a non-default location for sort"
3505 echo " --with-midi=midi define which midi-player to use"
3506 echo " --with-midi-arg=arg define which args to use for the"
3508 echo " --with-libtimidity[=\"pkg-config libtimidity\"]"
3509 echo " enables libtimidity support"
3510 echo " --with-allegro[=\"pkg-config allegro\"]"
3511 echo " enables Allegro video driver support"
3512 echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
3513 echo " --with-sdl[=\"pkg-config sdl\"] enables SDL video driver support"
3514 echo " --with-zlib[=\"pkg-config zlib\"]"
3515 echo " enables zlib support"
3516 echo " --with-liblzma[=\"pkg-config liblzma\"]"
3517 echo " enables liblzma support"
3518 echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support"
3519 echo " --with-png[=\"pkg-config libpng\"]"
3520 echo " enables libpng support"
3521 echo " --with-freetype[=\"pkg-config freetype2\"]"
3522 echo " enables libfreetype support"
3523 echo " --with-fontconfig[=\"pkg-config fontconfig\"]"
3524 echo " enables fontconfig support"
3525 echo " --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]"
3526 echo " enables XDG base directory support"
3527 echo " --with-icu enables icu components for layout and sorting"
3528 echo " --with-icu-layout[=\"pkg-config icu-lx\"]"
3529 echo " enables icu components for layouting (right-to-left support)"
3530 echo " --with-icu-sort[=\"pkg-config icu-i18n\"]"
3531 echo " enables icu components for locale specific string sorting"
3532 echo " --static-icu try to link statically (libsicu instead of"
3533 echo " libicu; can fail as the new name is guessed)"
3534 echo " --with-iconv[=iconv-path] enables iconv support"
3535 echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
3536 echo " --disable-builtin-depend disable use of builtin deps finder"
3537 echo " --with-makedepend[=makedepend] enables makedepend support"
3538 echo " --with-ccache enables ccache support"
3539 echo " --with-distcc enables distcc support"
3540 echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
3541 echo " --without-threads disable threading support"
3542 echo " --without-sse disable SSE support (x86/x86_64 only)"
3544 echo "Some influential environment variables:"
3545 echo " CC C compiler command"
3546 echo " CXX C++ compiler command"
3547 echo " CFLAGS C compiler flags"
3548 echo " CXXFLAGS C++ compiler flags"
3549 echo " WINDRES windres command"
3550 echo " LDFLAGS linker flags, e.g. -L<lib dir> if you"
3551 echo " have libraries in a nonstandard"
3552 echo " directory <lib dir>"
3553 echo " CFLAGS_BUILD C compiler flags for build time tool generation"
3554 echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
3555 echo " LDFLAGS_BUILD linker flags for build time tool generation"
3557 echo "Use these variables to override the choices made by 'configure' or to help"
3558 echo "it to find libraries and programs with nonstandard names/locations."