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.
35 config_log="config.log"
36 prefix_dir="/usr/local"
38 data_dir="share/games/openttd"
40 icon_dir="share/pixmaps"
51 enable_desync_debug="0"
64 enable_cocoa_quartz="1"
65 enable_cocoa_quickdraw="1"
67 with_application_bundle="1"
77 enable_builtin_depend="1"
140 enable_cocoa_quickdraw
142 with_application_bundle
151 enable_builtin_depend
169 CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
173 # Walk over all params from the user and override any default settings if
174 # needed. This also handles any invalid option.
176 if [ -n "$prev_p" ]; then
182 optarg=`expr "x$p" : 'x[^=]*=\(.*\)'`
185 --help | -h | -\?) showhelp; exit 0;;
187 --config-log) prev_p="config_log";;
188 --config-log=*) config_log="$optarg";;
190 --build) prev_p="build";;
191 --build=*) build="$optarg";;
193 --host) prev_p="host";;
194 --host=*) host="$optarg";;
197 --os=*) os="$optarg";;
199 --cpu-type) prev_p="cpu_type";;
200 --cpu-type=*) cpu_type="$optarg";;
202 --cc-build) prev_p="cc_build";;
203 --cc-build=*) cc_build="$optarg";;
204 --cc-host) prev_p="cc_host";;
205 --cc-host=*) cc_host="$optarg";;
206 --cxx-build) prev_p="cxx_build";;
207 --cxx-build=*) cxx_build="$optarg";;
208 --cxx-host) prev_p="cxx_host";;
209 --cxx-host=*) cxx_host="$optarg";;
210 --windres) prev_p="windres";;
211 --windres=*) windres="$optarg";;
212 --awk) prev_p="awk";;
213 --awk=*) awk="$optarg";;
214 --strip) prev_p="strip";;
215 --strip=*) strip="$optarg";;
216 --lipo) prev_p="lipo";;
217 --lipo=*) lipo="$optarg";;
219 --endian) prev_p="endian";;
220 --endian=*) endian="$optarg";;
224 # Alias --prefix with --prefix-dir, for compatibility with GNU autotools
225 --prefix-dir | --prefix) prev_p="prefix_dir";;
226 --prefix-dir=* | --prefix=*) prefix_dir="$optarg";;
228 --binary-dir) prev_p="binary_dir";;
229 --binary-dir=*) binary_dir="$optarg";;
231 --data-dir) prev_p="data_dir";;
232 --data-dir=*) data_dir="$optarg";;
234 --doc-dir) prev_p="doc_dir";;
235 --doc-dir=*) doc_dir="$optarg";;
237 --icon-dir) prev_p="icon_dir";;
238 --icon-dir=*) icon_dir="$optarg";;
240 --icon-theme-dir) prev_p="icon_theme_dir";;
241 --icon-theme-dir=*) icon_theme_dir="$optarg";;
242 --without-icon-theme) icon_theme_dir="";;
244 --menu-dir) prev_p="menu_dir";;
245 --menu-dir=*) menu_dir="$optarg";;
246 --without-menu-entry) menu_dir="";;
248 --menu-name) prev_p="menu_name";;
249 --menu-name=*) menu_name="$optarg";;
251 --binary-name) prev_p="binary_name";;
252 --binary-name=*) binary_name="$optarg";;
254 --man-dir) prev_p="man_dir";;
255 --man-dir=*) man_dir="$optarg";;
257 --personal-dir) prev_p="personal_dir";;
258 --personal-dir=*) personal_dir="$optarg";;
259 --without-personal-dir) personal_dir="";;
261 --shared-dir) prev_p="shared_dir";;
262 --shared-dir=*) shared_dir="$optarg";;
263 --without-shared-dir) shared_dir="";;
265 --install-dir) prev_p="install_dir";;
266 --install-dir=*) install_dir="$optarg";;
270 --menu-group) prev_p="menu_group";;
271 --menu-group=*) menu_group="$optarg";;
275 --enable-debug) enable_debug="1";;
276 --enable-debug=*) enable_debug="$optarg";;
277 --enable-desync-debug) enable_desync_debug="1";;
278 --enable-desync-debug=*) enable_desync_debug="$optarg";;
279 --enable-profiling) enable_profiling="1";;
280 --enable-profiling=*) enable_profiling="$optarg";;
281 --enable-lto) enable_lto="1";;
282 --enable-lto=*) enable_lto="$optarg";;
283 --enable-ipo) enable_lto="1";;
284 --enable-ipo=*) enable_lto="$optarg";;
285 --enable-dedicated) enable_dedicated="1";;
286 --enable-dedicated=*) enable_dedicated="$optarg";;
287 --enable-network) enable_network="2";;
288 --enable-network=*) enable_network="$optarg";;
289 --disable-network) enable_network="0";;
290 --disable-static) enable_static="0";;
291 --enable-static) enable_static="2";;
292 --enable-static=*) enable_static="$optarg";;
293 --disable-translator) enable_translator="0";;
294 --enable-translator) enable_translator="2";;
295 --enable-translator=*) enable_translator="$optarg";;
296 --disable-assert) enable_assert="0";;
297 --enable-assert) enable_assert="2";;
298 --enable-assert=*) enable_assert="$optarg";;
299 --disable-strip) enable_strip="0";;
300 --enable-strip) enable_strip="2";;
301 --enable-strip=*) enable_strip="$optarg";;
302 --disable-universal) enable_universal="0";;
303 --enable-universal) enable_universal="i386 ppc";;
304 --enable-universal=*) enable_universal="$optarg";;
305 --disable-osx-g5) enable_osx_g5="0";;
306 --enable-osx-g5) enable_osx_g5="2";;
307 --enable-osx-g5=*) enable_osx_g5="$optarg";;
308 --disable-unicode) enable_unicode="0";;
309 --enable-unicode) enable_unicode="2";;
310 --enable-unicode=*) enable_unicode="$optarg";;
311 --disable-console) enable_console="0";;
312 --enable-console) enable_console="2";;
313 --enable-console=*) enable_console="$optarg";;
315 --disable-cocoa-quartz) enable_cocoa_quartz="0";;
316 --enable-cocoa-quartz) enable_cocoa_quartz="2";;
317 --enable-cocoa-quartz=*) enable_cocoa_quartz="$optarg";;
318 --disable-cocoa-quickdraw) enable_cocoa_quickdraw="0";;
319 --enable-cocoa-quickdraw) enable_cocoa_quickdraw="2";;
320 --enable-cocoa-quickdraw=*) enable_cocoa_quickdraw="$optarg";;
322 --with-allegro) with_allegro="2";;
323 --without-allegro) with_allegro="0";;
324 --with-allegro=*) with_allegro="$optarg";;
326 --with-sdl) with_sdl="2";;
327 --without-sdl) with_sdl="0";;
328 --with-sdl=*) with_sdl="$optarg";;
330 --with-cocoa) with_cocoa="2";;
331 --without-cocoa) with_cocoa="0";;
332 --with-cocoa=*) with_cocoa="$optarg";;
334 --with-zlib) with_zlib="2";;
335 --without-zlib) with_zlib="0";;
336 --with-zlib=*) with_zlib="$optarg";;
338 --with-lzma) with_lzma="2";;
339 --without-lzma) with_lzma="0";;
340 --with-lzma=*) with_lzma="$optarg";;
341 --with-liblzma) with_lzma="2";;
342 --without-liblzma) with_lzma="0";;
343 --with-liblzma=*) with_lzma="$optarg";;
345 --with-lzo2) with_lzo2="2";;
346 --without-lzo2) with_lzo2="0";;
347 --with-lzo2=*) with_lzo2="$optarg";;
348 --with-liblzo2) with_lzo2="2";;
349 --without-liblzo2) with_lzo2="0";;
350 --with-liblzo2=*) with_lzo2="$optarg";;
352 --with-xdg-basedir) with_xdg_basedir="2";;
353 --without-xdg-basedir) with_xdg_basedir="0";;
354 --with-xdg-basedir=*) with_xdg_basedir="$optarg";;
355 --with-libxdg-basedir) with_xdg_basedir="2";;
356 --without-libxdg-basedir) with_xdg_basedir="0";;
357 --with-libxdg-basedir=*) with_xdg_basedir="$optarg";;
359 --with-png) with_png="2";;
360 --without-png) with_png="0";;
361 --with-png=*) with_png="$optarg";;
362 --with-libpng) with_png="2";;
363 --without-libpng) with_png="0";;
364 --with-libpng=*) with_png="$optarg";;
366 --with-libtimidity) with_libtimidity="2";;
367 --without-libtimidity) with_libtimidity="0";;
368 --with-libtimidity=*) with_libtimidity="$optarg";;
370 --with-freetype) with_freetype="2";;
371 --without-freetype) with_freetype="0";;
372 --with-freetype=*) with_freetype="$optarg";;
373 --with-libfreetype) with_freetype="2";;
374 --without-libfreetype) with_freetype="0";;
375 --with-libfreetype=*) with_freetype="$optarg";;
377 --with-fontconfig) with_fontconfig="2";;
378 --without-fontconfig) with_fontconfig="0";;
379 --with-fontconfig=*) with_fontconfig="$optarg";;
380 --with-libfontconfig) with_fontconfig="2";;
381 --without-libfontconfig) with_fontconfig="0";;
382 --with-libfontconfig=*) with_fontconfig="$optarg";;
384 --with-icu) with_icu="2";;
385 --without-icu) with_icu="0";;
386 --with-icu=*) with_icu="$optarg";;
387 --with-libicu) with_icu="2";;
388 --without-libicu) with_icu="0";;
389 --with-libicu=*) with_icu="$optarg";;
390 --static-icu) static_icu="1";;
391 --static-icu=*) static_icu="$optarg";;
392 --static-libicu) static_icu="1";;
393 --static-libicu=*) static_icu="$optarg";;
395 --with-psp-config) with_psp_config="2";;
396 --without-psp-config) with_psp_config="0";;
397 --with-psp-config=*) with_psp_config="$optarg";;
399 --disable-builtin-depend) enable_builtin_depend="0";;
400 --enable-builtin-depend) enable_builtin_depend="2";;
401 --enable-builtin-depend=*) enable_builtin_depend="$optarg";;
403 --with-makedepend) with_makedepend="2";;
404 --without-makedepend) with_makedepend="0";;
405 --with-makedepend=*) with_makedepend="$optarg";;
407 --with-direct-music) with_direct_music="2";;
408 --without-direct-music) with_direct_music="0";;
409 --with-direct-music=*) with_direct_music="$optarg";;
411 --with-sort) with_sort="2";;
412 --without-sort) with_sort="0";;
413 --with-sort=*) with_sort="$optarg";;
415 --with-iconv) with_iconv="2";;
416 --without-iconv) with_iconv="0";;
417 --with-iconv=*) with_iconv="$optarg";;
419 --with-midi=*) with_midi="$optarg";;
420 --with-midi-arg=*) with_midi_arg="$optarg";;
422 --without-distcc) with_distcc="0";;
423 --with-distcc) with_distcc="2";;
424 --with-distcc=*) with_distcc="$optarg";;
426 --without-ccache) with_ccache="0";;
427 --with-ccache) with_ccache="2";;
428 --with-ccache=*) with_ccache="$optarg";;
430 --without-nforenum) with_nforenum="0";;
431 --with-nforenum) with_nforenum="2";;
432 --with-nforenum=*) with_nforenum="$optarg";;
434 --without-grfcodec) with_grfcodec="0";;
435 --with-grfcodec) with_grfcodec="2";;
436 --with-grfcodec=*) with_grfcodec="$optarg";;
438 --without-osx-sysroot) with_osx_sysroot="0";;
439 --with-osx-sysroot) with_osx_sysroot="2";;
440 --with-osx-sysroot=*) with_osx_sysroot="$optarg";;
442 --without-application-bundle) with_application_bundle="0";;
443 --with-application-bundle) with_application_bundle="1";;
444 --with-application-bundle=*) with_application_bundle="$optarg";;
446 --without-threads) with_threads="0";;
447 --with-threads) with_threads="1";;
448 --with-threads=*) with_threads="$optarg";;
450 CC=* | --CC=*) CC="$optarg";;
451 CXX=* | --CXX=*) CXX="$optarg";;
452 CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";;
453 CXXFLAGS=* | --CXXFLAGS=*) CXXFLAGS="$optarg";;
454 LDFLAGS=* | --LDFLAGS=*) LDFLAGS="$optarg";;
455 CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*) CFLAGS_BUILD="$optarg";;
456 CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";;
457 LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*) LDFLAGS_BUILD="$optarg";;
459 --ignore-extra-parameters) ignore_extra_parameters="1";;
462 if [ "$ignore_extra_parameters" = "0" ]; then
463 log 1 "Unknown option $p"
466 log 1 "Unknown option $p ignored"
472 if [ -n "$prev_p" ]; then
473 log 1 "configure: error: missing argument to --$prev_p"
478 echo "" > $config_log
479 log 2 "Invocation: $0 $*"
483 # Here we save all params, so we can later on do an exact redo of this
484 # configuration, without having the user to re-input stuff
486 echo "Running configure with following options:" >> $config_log
487 echo "" >> $config_log
489 configure="$CONFIGURE_EXECUTABLE --ignore-extra-parameters"
490 for p in $save_params_array; do
492 p=`echo "$p" | sed 's@_@-@g;s@\n@@g;s@ @\\ @g'`
493 # Only save those params that aren't empty
494 configure="$configure --$p=\"$v\""
497 echo "$configure" >> $config_log
498 echo "$configure" > config.cache
499 echo "" >> $config_log
503 # Some params want to be in full uppercase, else they might not work as
504 # expected.. fix that here
506 endian=`echo $endian | tr '[a-z]' '[A-Z]'`
507 os=`echo $os | tr '[a-z]' '[A-Z]'`
508 cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
510 # Check if all params have valid values
512 # Endian only allows AUTO, LE and, BE
513 if ! echo $endian | egrep -q '^(AUTO|LE|BE|PREPROCESSOR)$'; then
514 log 1 "configure: error: invalid option --endian=$endian"
515 log 1 " Available options are: --endian=[AUTO|LE|BE]"
518 if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
519 log 1 "configure: error: invalid option --endian=$endian"
520 log 1 " PREPROCESSOR is only available for OSX"
523 # OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
524 if ! echo $os | egrep -q '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'; then
525 log 1 "configure: error: invalid option --os=$os"
526 log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
529 # cpu_type can be either 32 or 64
530 if ! echo $cpu_type | egrep -q '^(32|64|DETECT)$'; then
531 log 1 "configure: error: invalid option --cpu-type=$cpu_type"
532 log 1 " Available options are: --cpu-type[=DETECT|32|64]"
535 # enable_debug should be between 0 and 4
536 if ! echo $enable_debug | egrep -q '^[0123]$'; then
537 log 1 "configure: error: invalid option --enable-debug=$enable_debug"
538 log 1 " Available options are: --enable-debug[=0123]"
542 # enable_desync_debug should be between 0 and 3
543 if ! echo $enable_desync_debug | egrep -q '^[012]$'; then
544 log 1 "configure: error: invalid option --enable-desync-debug=$enable_desync_debug"
545 log 1 " Available options are: --enable-desync-debug[=012]"
556 # Check for universal builds; they only make sense for OSX, so fail if enabled for another OS
557 if [ "$enable_universal" = "0" ]; then
558 log 1 "checking universal build... no"
560 if [ "$os" != "OSX" ]; then
561 log 1 "configure: error: --enable-universal only works on OSX"
564 log 1 "checking universal build... yes, for: $enable_universal"
567 # Already detected by check_build
568 log 1 "checking build cc... $cc_build"
569 log 1 "checking host cc... $cc_host"
574 if [ "$enable_strip" != "0" ]; then
577 log 1 "checking strip... disabled"
581 if [ "$enable_builtin_depend" != "0" ]; then
582 log 1 "checking builtin depend... yes"
583 makedepend="\$(SRC_OBJS_DIR)/\$(DEPEND)"
585 log 1 "checking builtin depend... no"
591 if [ "$enable_static" = "1" ]; then
592 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then
599 if [ "$enable_static" != "0" ]; then
600 log 1 "checking static... yes"
602 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "DOS" ]; then
603 log 1 "WARNING: static is only known to work on Windows, DOS, MacOSX and MorphOS"
604 log 1 "WARNING: use static at your own risk on this platform"
609 log 1 "checking static... no"
612 if [ "$enable_unicode" = "1" ]; then
613 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ]; then
620 if [ "$enable_unicode" != "0" ]; then
621 log 1 "checking unicode... yes"
623 log 1 "checking unicode... no"
626 # Show what we configured
627 if [ "$enable_debug" = "0" ]; then
628 log 1 "using debug level... no"
629 elif [ "$enable_profiling" != "0" ]; then
630 log 1 "using debug level... profiling (debug level $enable_debug)"
632 log 1 "using debug level... level $enable_debug"
635 if [ "$enable_desync_debug" = "0" ]; then
636 log 1 "using desync debug level... no"
638 log 1 "using desync debug level... level $enable_desync_debug"
639 log 1 "WARNING: desync debug functions slow down the game considerably."
640 log 1 "WARNING: use only when you are instructed to do so"
641 log 1 " or when you know what you are doing."
646 if [ "$enable_lto" != "0" ]; then
647 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
648 if $cxx_build -dumpspecs 2>&1 | grep -q '\%{flto' || $cxx_build -help ipo 2>&1 | grep -q '\-ipo'; then
649 log 1 "using link time optimization... yes"
652 log 1 "using link time optimization... no"
653 log 1 "WARNING: you selected link time optimization but it is not found."
657 log 1 "using link time optimization... no"
661 if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
662 if [ "$with_osx_sysroot" = "1" ]; then
665 log 1 "checking OSX sysroot... not OSX, skipping"
667 log 1 "configure: error: --with-osx-sysroot only works if OSX is the target"
672 if [ "$with_osx_sysroot" != "0" ]; then
673 if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then
674 # Sysroot manually specified? Check for usability
675 log 1 "checking OSX sysroot... $with_osx_sysroot"
676 if ! check_osx_sdk "$with_osx_sysroot"; then
677 log 1 "Passed sysroot not found/not functional"
681 # If autodetect and no universal, use system default
682 if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then
683 log 1 "checking OSX sysroot... no (use system default)"
685 log 1 "checking OSX sysroot... automatically"
690 if [ -n "$osx_sdk_path" ]; then
691 if [ "$enable_universal" != "0" ]; then
692 if [ -z "$osx_sdk_104_path" ]; then
693 log 1 "WARNING: Could not find a usable 10.4u SDK, the resulting"
694 log 1 "WARNING: binary will only run on OSX 10.5 or later"
695 osx_sdk_104_path="$osx_sdk_path"
697 OSX_SYSROOT="-isysroot $osx_sdk_104_path"
698 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_104_path"
700 OSX_SYSROOT="-isysroot $osx_sdk_path"
701 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_path"
705 if [ "$os" = "OSX" ]; then
706 log 1 "checking OSX sysroot... no (use system default)"
714 if [ "$enable_dedicated" != "0" ]; then
715 log 1 "checking GDI video driver... dedicated server, skipping"
716 log 1 "checking dedicated... found"
718 if [ "$enable_network" = "0" ]; then
719 log 1 "configure: error: building a dedicated server without network support is pointless"
723 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
724 log 1 "checking GDI video driver... found"
726 log 1 "checking GDI video driver... not Windows, skipping"
729 if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
730 log 1 "configure: error: no video driver development files found"
731 log 1 " If you want a dedicated server use --enable-dedicated as parameter"
734 log 1 "checking dedicated... not selected"
738 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
739 log 1 "checking console application... not Windows, skipping"
740 elif [ "$enable_console" = "1" ] && [ "$enable_dedicated" != "0" ]; then
741 log 1 "checking console application... dedicated server, enabled"
743 elif [ "$enable_console" = "1" ]; then
744 log 1 "checking console application... disabled (only used when forced)"
746 elif [ "$enable_console" = "0" ]; then
747 log 1 "checking console application... disabled"
749 log 1 "checking console application... enabled"
752 if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then
753 log 1 "checking network... DOS, skipping"
755 elif [ "$enable_network" != "0" ]; then
756 log 1 "checking network... found"
758 log 1 "checking network... disabled"
761 log 1 "checking squirrel... found"
762 SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
764 if [ "$enable_translator" != "0" ]; then
765 log 1 "checking translator... debug"
766 # -t shows TODO items, normally they are muted
769 log 1 "checking translator... no"
773 if [ "$enable_assert" != "0" ]; then
774 log 1 "checking assert... enabled"
776 log 1 "checking assert... disabled"
779 pre_detect_with_zlib=$with_zlib
782 if [ "$with_zlib" = "0" ] || [ -z "$zlib" ]; then
783 log 1 "WARNING: zlib was not detected or disabled"
784 log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
785 log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
786 log 1 "WARNING: using PNG, or using fonts, ...) will be disabled."
787 if [ "$pre_detect_with_zlib" = "0" ]; then
788 log 1 "WARNING: We strongly suggest you to install zlib."
790 log 1 "configure: error: no zlib detected"
791 log 1 " If you want to compile without zlib use --without-zlib as parameter"
796 pre_detect_with_lzma=$with_lzma
799 if [ "$with_lzma" = "0" ] || [ -z "$lzma_config" ]; then
800 log 1 "WARNING: lzma was not detected or disabled"
801 log 1 "WARNING: OpenTTD doesn't require lzma, but it does mean that many features"
802 log 1 "WARNING: (like loading most savegames/scenarios and joining most servers)"
803 log 1 "WARNING: will be disabled."
804 if [ "$pre_detect_with_lzma" = "0" ]; then
805 log 1 "WARNING: We strongly suggest you to install liblzma."
806 log 1 "configure: error: no liblzma detected"
808 log 1 " If you want to compile without lzma use --without-lzma as parameter"
813 pre_detect_with_lzo2=$with_lzo2
816 if [ "$with_lzo2" = "0" ] || [ -z "$lzo2" ]; then
817 log 1 "WARNING: liblzo2 was not detected or disabled"
818 log 1 "WARNING: OpenTTD doesn't require liblzo2, but it does mean that"
819 log 1 "WARNING: loading old savegames/scenarios will be disabled."
820 if [ "$pre_detect_with_lzo2" = "0" ]; then
821 log 1 "WARNING: We strongly suggest you to install liblzo2."
823 log 1 "configure: error: no liblzo2 detected"
824 log 1 " If you want to compile without liblzo2 use --without-liblzo2 as parameter"
837 if [ "$with_direct_music" != "0" ]; then
838 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
839 if [ "$with_direct_music" != "1" ]; then
840 log 1 "configure: error: direct-music is only supported on Win32 targets"
843 with_direct_music="0"
845 log 1 "checking direct-music... not Windows, skipping"
853 if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
854 endian="PREPROCESSOR"
857 log 1 "checking endianess... $endian"
859 # Suppress language errors when there is a version defined, indicating a release
860 # It just isn't pretty if any release produces warnings in the languages.
861 if [ -f "$ROOT_DIR/version" ]; then
863 log 1 "suppress language errors... yes"
866 log 1 "suppress language errors... no"
869 if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
870 if [ "$os" = "MORPHOS" ]; then
871 strip_arg="--strip-all --strip-unneeded --remove-section .comment"
872 elif [ "$os" = "OSX" ]; then
874 elif [ "$os" = "OS2" ]; then
876 # OS2 uses strip via gcc, because it needs to be feed to emxbind
877 LDFLAGS="$LDFLAGS -s"
878 elif [ "$os" = "SUNOS" ]; then
879 # The GNU strip does know -s, the non-GNU doesn't
880 # So try to detect it (in a bit of an ugly way)
881 strip_arg="`$strip -s strip.test 2>/dev/null && echo \"-s\"`"
886 log 1 "checking stripping... $strip $strip_arg"
889 log 1 "checking stripping... skipped"
892 if [ "$with_distcc" = "0" ]; then
893 log 1 "checking distcc... no"
894 elif [ "$with_distcc" = "1" ]; then
897 log 1 "checking distcc... no (only used when forced)"
898 elif [ "$with_distcc" = "2" ]; then
901 distcc="$with_distcc"
903 if [ "$with_distcc" != "0" ]; then
904 res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
905 if [ "$res" != "distcc" ]; then
907 log 1 "checking distcc... no"
908 if [ "$with_distcc" = "2" ]; then
909 log 1 "configure: error: no distcc detected, but was forced to be used"
912 if [ "$with_distcc" != "1" ]; then
913 log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
918 log 1 "checking distcc... $distcc"
921 if [ "$with_ccache" = "0" ]; then
922 log 1 "checking ccache... no"
923 elif [ "$with_ccache" = "1" ]; then
926 log 1 "checking ccache... no (only used when forced)"
927 elif [ "$with_ccache" = "2" ]; then
930 ccache="$with_ccache"
932 if [ "$with_ccache" != "0" ]; then
933 res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
934 if [ "$res" != "ccache" ]; then
936 log 1 "checking ccache... no"
937 if [ "$with_ccache" = "2" ]; then
938 log 1 "configure: error: no ccache detected, but was forced to be used"
941 if [ "$with_ccache" != "1" ]; then
942 log 1 "configure: error: '$with_ccache' doesn't seem a ccache to me"
947 log 1 "checking ccache... $ccache"
953 if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then
954 log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum"
958 if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then
959 log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec"
963 if [ "$os" = "DOS" ]; then
967 if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
968 if [ "$with_application_bundle" = "1" ]; then
969 with_application_bundle="0"
971 log 1 "checking OSX application bundle... not OSX, skipping"
973 log 1 "configure: error: --with-application-bundle only works if OSX is the target"
978 if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then
984 if [ "$os" = "OSX" ]; then
985 # Test on ppc970 (G5) - we can optimize there
987 if [ "$enable_osx_g5" != "0" ]; then
988 log 1 "detecting ppc970 (G5)... yes (forced)"
990 # First, are we a real OSX system, else we can't detect it
991 native=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | grep darwin`
992 # If $host doesn't match $build , we are cross-compiling
993 if [ -n "$native" ] && [ "$build" = "$host" ]; then
994 $cxx_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector
997 if [ -n "$res" ]; then
998 # This is G5, add flags for it
1001 log 1 "detecting ppc970 (G5)... yes"
1005 log 1 "detecting ppc970 (G5)... no"
1010 log 1 "detecting ppc970 (G5)... no (cross-compiling)"
1014 if [ "$enable_osx_g5" != "0" ]; then
1015 log 1 "configure: error: ppc970 (OSX G5) selected, but not compiling for OSX"
1016 log 1 "configure: error: either select OSX as OS, or deselect ppc970"
1022 if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then
1023 log 1 "checking revision... svn detection"
1024 elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && LC_ALL=C svn info $ROOT_DIR/.. | grep -q '^URL:.*tags$'; then
1025 # subversion changed its behaviour; now not all folders have a .svn folder,
1026 # but only the root folder. Since making tags requires a (sparse) checkout
1027 # of the tags folder, the folder of the tag does not have a .svn folder
1028 # anymore and this fails to detect the subversion repository checkout.
1029 log 1 "checking revision... svn detection (tag)"
1030 elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
1031 log 1 "checking revision... git detection"
1032 elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`hg help 2>/dev/null`" ]; then
1033 log 1 "checking revision... hg detection"
1034 elif [ -f "$ROOT_DIR/.ottdrev" ]; then
1035 log 1 "checking revision... source tarball"
1037 log 1 "checking revision... no detection"
1038 log 1 "WARNING: there is no means to determine the version."
1039 log 1 "WARNING: please use a subversion, mercurial, or git checkout of OpenTTD."
1040 log 1 "WARNING: you can only join game servers that have been compiled without"
1041 log 1 "WARNING: version detection."
1042 log 1 "WARNING: there is a great chance you desync."
1043 log 1 "WARNING: USE WITH CAUTION!"
1048 if [ "$doc_dir" = "1" ]; then
1049 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1050 doc_dir="share/doc/openttd"
1052 doc_dir="$data_dir/docs"
1055 doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1058 if [ "$icon_theme_dir" = "1" ]; then
1059 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1060 icon_theme_dir="share/icons/hicolor"
1065 icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1068 if [ "$personal_dir" = "1" ]; then
1069 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
1070 personal_dir="OpenTTD"
1071 elif [ "$os" = "OSX" ]; then
1072 personal_dir="Documents/OpenTTD"
1074 personal_dir=".openttd"
1077 personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1080 if [ "$shared_dir" = "1" ]; then
1081 # we are using default values
1082 if [ "$os" = "OSX" ]; then
1083 shared_dir="/Library/Application\\\\ Support/OpenTTD"
1088 shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1091 if [ "$man_dir" = "1" ]; then
1092 # add manpage on UNIX systems
1093 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
1094 man_dir="share/man/man6"
1099 man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1102 if [ "$menu_dir" = "1" ]; then
1103 # add a freedesktop menu item only for some UNIX systems
1104 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1105 menu_dir="share/applications"
1110 menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1115 if [ -n "$personal_dir" ]
1117 log 1 "personal home directory... $personal_dir"
1119 log 1 "personal home directory... none"
1122 if [ -n "$shared_dir" ]
1124 log 1 "shared data directory... $shared_dir"
1126 log 1 "shared data directory... none"
1129 if [ -n "$install_dir" ]
1131 log 1 "installation directory... $install_dir"
1133 log 1 "installation directory... none"
1136 if [ -n "$icon_theme_dir" ]
1138 log 1 "icon theme directory... $icon_theme_dir"
1140 log 1 "icon theme directory... none"
1143 if [ -n "$man_dir" ]
1145 log 1 "manual page directory... $man_dir"
1147 log 1 "manual page directory... none"
1150 if [ -n "$menu_dir" ]
1152 log 1 "menu item directory... $menu_dir"
1154 log 1 "menu item directory... none"
1158 make_compiler_cflags() {
1161 # $2 - name of the cflags variable
1162 # $3 - name of the cxxflags variable
1163 # $4 - name of the ldflags variable
1164 # $5 - name of the features variable
1166 eval eval "flags=\\\$$2"
1167 eval eval "cxxflags=\\\$$3"
1168 eval eval "ldflags=\\\$$4"
1169 eval eval "features=\\\$$5"
1171 if [ `basename $1 | cut -c 1-3` = "icc" ]; then
1172 # Enable some things only for certain ICC versions
1173 cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
1175 flags="$flags -rdynamic"
1176 ldflags="$ldflags -rdynamic"
1178 if [ -z "$first_time_icc_check" ]; then
1179 first_time_icc_check=no
1180 if [ $cc_version -lt 90 ]; then
1181 log 1 "WARNING: you seem to be using a very old version of ICC"
1182 log 1 "WARNING: OpenTTD hasn't been tested with this version"
1184 elif [ $cc_version -lt 120 ]; then
1185 log 1 "WARNING: you seem to be using an unsupported ICC version"
1186 log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD"
1191 flags="$flags -Wall"
1192 # remark #111: statement is unreachable
1193 flags="$flags -wd111"
1194 # remark #181: argument is incompatible with corresponding format string conversion
1195 # ICC is very picky about signedness of operands, warnings provided by GCC are enough
1196 flags="$flags -wd181"
1197 # remark #271: trailing comma is nonstandard
1198 flags="$flags -wd271"
1199 # remark #280: selector expression is constant
1200 flags="$flags -wd280"
1201 # remark #304: access control not specified ("public" by default)
1202 flags="$flags -wd304"
1203 # remark #383: value copied to temporary, reference to temporary used
1204 flags="$flags -wd383"
1205 # remark #444: destructor for base class ... is not virtual
1206 flags="$flags -wd444"
1207 # remark #593: variable ... was set but never used
1208 flags="$flags -wd593"
1209 # warning #654: overloaded virtual function ... is only partially overridden in class ...
1210 flags="$flags -wd654"
1211 # remark #810: conversion from ... to ... may lose significant bits
1212 flags="$flags -wd810"
1213 # remark #869: parameter ... was never referenced
1214 flags="$flags -wd869"
1215 # warning #873: function ... ::operator new ... has no corresponding operator delete ...
1216 flags="$flags -wd873"
1217 # remark #981: operands are evaluated in unspecified order
1218 flags="$flags -wd981"
1219 # remark #1418: external function definition with no prior declaration
1220 flags="$flags -wd1418"
1221 # remark #1419: external declaration in primary source file
1222 flags="$flags -wd1419"
1223 # remark #1572: floating-point equality and inequality
1224 flags="$flags -wd1572"
1225 # remark #1599: declaration hides variable/parameter ...
1226 flags="$flags -wd1599"
1227 # remark #1720: function ... ::operator new ... has no corresponding member operator delete ...
1228 flags="$flags -wd1720"
1230 if [ $cc_version -lt 110 ]; then
1231 # warns about system headers with recent glibc:
1232 # warning #1292: attribute "__nonnull__" ignored
1233 flags="$flags -wd1292"
1236 if [ $cc_version -ge 100 ]; then
1237 # warning #1899: multicharacter character literal (potential portability problem)
1238 flags="$flags -wd1899"
1239 # vec report defaults to telling where it did loop vectorisation, which is not very important
1240 flags="$flags -vec-report=0 "
1243 if [ $cc_version -ge 110 ]; then
1244 # remark #2259: non-pointer conversion from ... to ... may lose significant bits
1245 flags="$flags -wd2259"
1246 # Use c++0x mode so static_assert() is available
1247 cxxflags="$cxxflags -std=c++0x"
1250 if [ "$enable_lto" != "0" ] && $1 -help ipo | grep -q '\-ipo'; then
1251 # Use IPO (only if we see IPO exists and is requested)
1253 features="$features lto"
1255 elif basename $1 | grep -q 'clang'; then
1256 # Enable some things only for certain clang versions
1257 cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
1259 # aliasing rules are not held in openttd code
1260 flags="$flags -fno-strict-aliasing"
1262 # -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
1263 # -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
1264 flags="$flags -Wall -W"
1266 # warning: unused parameter '...'
1267 flags="$flags -Wno-unused-parameter"
1269 # warning: expression result unused
1270 flags="$flags -Wno-unused-value"
1272 # warning: multi-character character constant
1273 flags="$flags -Wno-multichar"
1275 # warning: explicitly assigning a variable of type '...' to itself
1276 # it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
1277 flags="$flags -Wno-self-assign"
1279 if [ "$cc_version" -lt "30" ]; then
1280 # warning: equality comparison with extraneous parentheses
1281 flags="$flags -Wno-parentheses"
1282 # warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
1283 flags="$flags -Wno-sign-compare"
1286 if [ "$cc_version" -ge "30" ]; then
1287 # warning: equality comparison with extraneous parentheses
1288 # this warning could be useful, but it warns about code in squirrel
1289 flags="$flags -Wno-parentheses-equality"
1292 if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then
1293 # ccache and distcc run separate preprocess and compile passes,
1294 # both are fed with the same CFLAGS. Unfortunately, clang
1295 # complains about -I when compiling preprocessed files:
1296 # "clang: warning: argument unused during compilation: '-I /usr/include'"
1297 flags="$flags -Qunused-arguments"
1300 if [ "$enable_assert" -eq "0" ]; then
1301 # do not warn about unused variables when building without asserts
1302 flags="$flags -Wno-unused-variable"
1305 # rdynamic is used to get useful stack traces from crash reports.
1306 ldflags="$ldflags -rdynamic"
1308 # Enable some things only for certain GCC versions
1309 cc_version=`$1 -dumpversion | cut -c 1,3`
1311 if [ $cc_version -lt 33 ]; then
1312 log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
1316 flags="$flags -Wall -Wno-multichar -Wsign-compare -Wundef"
1317 flags="$flags -Wwrite-strings -Wpointer-arith"
1318 flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
1319 flags="$flags -Wformat=2 -Wformat-security"
1321 if [ $enable_assert -eq 0 ]; then
1322 # Do not warn about unused variables when building without asserts
1323 flags="$flags -Wno-unused-variable"
1324 if [ $cc_version -ge 46 ]; then
1325 # GCC 4.6 gives more warnings, disable them too
1326 flags="$flags -Wno-unused-but-set-variable"
1327 flags="$flags -Wno-unused-but-set-parameter"
1331 if [ $cc_version -ge 34 ]; then
1332 # Warn when a variable is used to initialise itself:
1334 flags="$flags -Winit-self"
1337 if [ $cc_version -ge 40 ]; then
1338 # GCC 4.0+ complains about that we break strict-aliasing.
1339 # On most places we don't see how to fix it, and it doesn't
1340 # break anything. So disable strict-aliasing to make the
1341 # compiler all happy.
1342 flags="$flags -fno-strict-aliasing"
1343 # Warn about casting-out 'const' with regular C-style cast.
1344 # The preferred way is const_cast<>() which doesn't warn.
1345 flags="$flags -Wcast-qual"
1348 if [ $cc_version -ge 42 ]; then
1349 # GCC 4.2+ automatically assumes that signed overflows do
1350 # not occur in signed arithmetics, whereas we are not
1351 # sure that they will not happen. It furthermore complains
1352 # about its own optimized code in some places.
1353 flags="$flags -fno-strict-overflow"
1354 # GCC 4.2 no longer includes -Wnon-virtual-dtor in -Wall.
1355 # Enable it in order to be consistent with older GCC versions.
1356 flags="$flags -Wnon-virtual-dtor"
1359 if [ $cc_version -ge 43 ]; then
1360 # Use gnu++0x mode so static_assert() is available.
1361 # Don't use c++0x, it breaks mingw (with gcc 4.4.0).
1362 cxxflags="$cxxflags -std=gnu++0x"
1365 if [ $cc_version -eq 45 ]; then
1366 # Prevent optimisation supposing enums are in a range specified by the standard
1367 # For details, see http://gcc.gnu.org/PR43680
1368 flags="$flags -fno-tree-vrp"
1371 if [ $cc_version -ge 47 ]; then
1372 # Disable -Wnarrowing which gives many warnings, such as:
1373 # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
1374 # They are valid according to the C++ standard, but useless.
1375 cxxflags="$cxxflags -Wno-narrowing"
1376 # Disable bogus 'attempt to free a non-heap object' warning
1377 flags="$flags -Wno-free-nonheap-object"
1380 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
1381 if [ "$enable_lto" != "0" ] && $1 -dumpspecs | grep -q '\%{flto'; then
1382 # Use LTO only if we see LTO exists and is requested
1383 if [ $cc_version -lt 46 ]; then
1384 flags="$flags -flto"
1386 flags="$flags -flto=jobserver"
1388 ldflags="$ldflags -fwhole-program"
1389 features="$features lto"
1392 if $1 -dumpspecs | grep -q rdynamic; then
1393 # rdynamic is used to get useful stack traces from crash reports.
1394 flags="$flags -rdynamic"
1395 ldflags="$ldflags -rdynamic"
1399 eval "$2=\"$flags\""
1400 eval "$3=\"$cxxflags\""
1401 eval "$4=\"$ldflags\""
1402 eval "$5=\"$features\""
1405 make_cflags_and_ldflags() {
1406 # General CFlags for BUILD
1407 CFLAGS_BUILD="$CFLAGS_BUILD"
1408 # Special CXXFlags for BUILD
1409 CXXFLAGS_BUILD="$CXXFLAGS_BUILD"
1411 LDFLAGS_BUILD="$LDFLAGS_BUILD"
1412 # FEATURES for BUILD (lto)
1414 # General CFlags for HOST
1416 # Special CXXFlags for HOST
1417 CXXFLAGS="$CXXFLAGS"
1418 # Libs to compile. In fact this is just LDFLAGS
1420 # LDFLAGS used for HOST
1422 # FEATURES for HOST (lto)
1425 make_compiler_cflags "$cc_build" "CFLAGS_BUILD" "CXXFLAGS_BUILD" "LDFLAGS_BUILD" "FEATURES_BUILD"
1426 make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
1428 CFLAGS="$CFLAGS -D$os"
1430 if [ "$enable_debug" = "0" ]; then
1431 # No debug, add default stuff
1432 OBJS_SUBDIR="release"
1433 if [ "$os" = "MORPHOS" ]; then
1434 CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
1435 LDFLAGS="$LDFLAGS -noixemul"
1438 CFLAGS="-O2 -fomit-frame-pointer $CFLAGS"
1442 # Each debug level reduces the optimization by a bit
1443 if [ $enable_debug -ge 1 ]; then
1444 CFLAGS="$CFLAGS -g -D_DEBUG"
1445 if [ "$os" = "PSP" ]; then
1446 CFLAGS="$CFLAGS -G0"
1449 if [ $enable_debug -ge 2 ]; then
1450 CFLAGS="$CFLAGS -fno-inline"
1452 if [ $enable_debug -ge 3 ]; then
1453 CFLAGS="$CFLAGS -O0"
1455 CFLAGS="$CFLAGS -O2"
1459 if [ $enable_debug -le 2 ]; then
1460 if basename "$cc_host" | grep -q "gcc"; then
1461 # Define only when compiling with GCC. Some GLIBC versions use GNU
1462 # extensions in a way that breaks build with at least ICC.
1463 # This requires -O1 or more, so debug level 3 (-O0) is excluded.
1464 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
1467 if basename "$cc_build" | grep -q "gcc"; then
1468 # Just add -O1 to the tools needed for building.
1469 CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
1473 if [ "$os" = "OSX" ] && [ $cc_version -eq 40 ]; then
1474 # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
1475 # wrongly optimizing ^= in loops. This disables the failing optimisation.
1476 CFLAGS="$CFLAGS -fno-expensive-optimizations"
1479 if [ "$enable_profiling" != "0" ]; then
1481 LDFLAGS="$LDFLAGS -pg"
1484 if [ "$with_threads" = "0" ]; then
1485 CFLAGS="$CFLAGS -DNO_THREADS"
1488 if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
1489 if [ "$os" = "CYGWIN" ]; then
1490 flags="$flags -mwin32"
1491 LDFLAGS="$LDFLAGS -mwin32"
1493 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
1494 if [ $cc_version -lt 46 ]; then
1495 flags="$flags -mno-cygwin"
1496 LDFLAGS="$LDFLAGS -mno-cygwin"
1499 if [ "$enable_console" != "0" ]; then
1500 LDFLAGS="$LDFLAGS -Wl,--subsystem,console"
1502 LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
1505 LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
1507 if [ $cc_version -ge 44 ]; then
1508 LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
1510 if [ $cc_version -ge 47 ]; then
1511 CFLAGS="$CFLAGS -mno-ms-bitfields"
1516 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
1517 LIBS="$LIBS -lpthread"
1520 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
1523 if [ "$os" = "WINCE" ]; then
1524 LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
1526 if [ "$os" = "PSP" ]; then
1527 CFLAGS="$CFLAGS -I`$psp_config -p`/include"
1528 LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
1530 CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
1531 LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
1534 if [ "$os" = "MORPHOS" ]; then
1535 # -Wstrict-prototypes generates much noise because of system headers
1536 CFLAGS="$CFLAGS -Wno-strict-prototypes"
1539 if [ "$os" = "OPENBSD" ]; then
1540 LIBS="$LIBS -pthread"
1543 if [ "$os" = "FREEBSD" ]; then
1544 LIBS="$LIBS -lpthread"
1547 if [ "$os" = "OSX" ]; then
1548 LDFLAGS="$LDFLAGS -framework Cocoa"
1550 # Add macports include dir which is not always set a default system dir. This avoids zillions of bogus warnings.
1551 CFLAGS="$CFLAGS -isystem/opt/local/include"
1553 if [ "$enable_dedicated" = "0" ] && ([ "$cpu_type" = "32" ] || [ "$enable_universal" != "0" ]); then
1554 LIBS="$LIBS -framework QuickTime"
1556 CFLAGS="$CFLAGS -DNO_QUICKTIME"
1559 if [ "$enable_universal" = "0" ]; then
1560 # Universal builds set this elsewhere
1561 CFLAGS="$OSX_SYSROOT $CFLAGS"
1562 LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
1565 if [ "$enable_universal" = "0" ] && [ $cc_version -gt 40 ]; then
1566 # Only set the min version when not doing an universal build.
1567 # Universal builds set the version elsewhere.
1568 if [ "$cpu_type" = "64" ]; then
1569 CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
1571 gcc_cpu=`$cc_host -dumpmachine`
1572 if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
1573 # PowerPC build can run on 10.3
1574 CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
1576 # Intel is only available starting from 10.4
1577 CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
1583 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
1584 LIBS="$LIBS -lmidi -lbe"
1587 # Most targets act like UNIX, just with some additions
1588 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
1589 CFLAGS="$CFLAGS -DUNIX"
1591 # And others like Windows
1592 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
1593 CFLAGS="$CFLAGS -DWIN"
1596 if [ -n "$allegro_config" ]; then
1597 CFLAGS="$CFLAGS -DWITH_ALLEGRO"
1598 CFLAGS="$CFLAGS `$allegro_config --cflags`"
1599 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1600 if [ "$enable_static" != "0" ]; then
1601 LIBS="$LIBS `$allegro_config --static --libs`"
1603 LIBS="$LIBS `$allegro_config --libs`"
1608 if [ -n "$sdl_config" ]; then
1609 CFLAGS="$CFLAGS -DWITH_SDL"
1610 # SDL must not add _GNU_SOURCE as it breaks many platforms
1611 CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
1612 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1613 if [ "$enable_static" != "0" ]; then
1614 LIBS="$LIBS `$sdl_config --static-libs`"
1616 LIBS="$LIBS `$sdl_config --libs`"
1621 if [ "$with_cocoa" != "0" ]; then
1622 CFLAGS="$CFLAGS -DWITH_COCOA"
1623 LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox"
1625 if [ "$enable_cocoa_quartz" != "0" ]; then
1626 CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ"
1629 if [ "$enable_cocoa_quickdraw" != "0" ]; then
1630 CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW"
1634 if [ "$with_zlib" != "0" ]; then
1635 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1640 CFLAGS="$CFLAGS -DWITH_ZLIB"
1643 if [ -n "$lzma_config" ]; then
1644 CFLAGS="$CFLAGS -DWITH_LZMA"
1645 CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`"
1647 if [ "$enable_static" != "0" ]; then
1648 CFLAGS="$CFLAGS -DLZMA_API_STATIC"
1649 LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' ' '`"
1651 LIBS="$LIBS `$lzma_config --libs | tr '\n\r' ' '`"
1655 if [ "$with_lzo2" != "0" ]; then
1656 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1661 CFLAGS="$CFLAGS -DWITH_LZO"
1664 if [ -n "$xdg_basedir_config" ]; then
1665 CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR"
1666 CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' ' '`"
1668 if [ "$enable_static" != "0" ]; then
1669 LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' ' '`"
1671 LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' ' '`"
1675 # 64bit machines need -D_SQ64
1676 if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
1677 CFLAGS="$CFLAGS -D_SQ64"
1679 CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR"
1681 if [ -n "$png_config" ]; then
1682 CFLAGS="$CFLAGS -DWITH_PNG"
1683 CFLAGS="$CFLAGS `$png_config --cppflags --I_opts | tr '\n\r' ' '`"
1685 # The extra flags are unneeded for latest libpng-config, but some versions are so broken...
1686 if [ "$enable_static" != "0" ]; then
1687 if [ "$os" = "OSX" ]; then
1688 LIBS="$LIBS `$png_config --prefix`/lib/libpng.a"
1690 LIBS="$LIBS `$png_config --static --ldflags | tr '\n\r' ' '`"
1693 LIBS="$LIBS `$png_config --ldflags | tr '\n\r' ' '`"
1697 if [ -n "$fontconfig_config" ]; then
1698 CFLAGS="$CFLAGS -DWITH_FONTCONFIG"
1699 CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' ' '`"
1701 if [ "$enable_static" != "0" ]; then
1702 if [ "$os" = "OSX" ]; then
1703 # fontconfig_config goes via pkg-config on all systems, which doesn't know --prefix
1704 # Also, despite the reason we link to the .a file ourself (because we can't use -static), we do need to ask pkg-config about possible other deps
1705 LIBS="$LIBS `$fontconfig_config --variable=prefix`/lib/libfontconfig.a `$fontconfig_config --libs --static | sed s@-lfontconfig@@`"
1707 LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`"
1710 LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' ' '`"
1714 if [ -n "$freetype_config" ]; then
1715 CFLAGS="$CFLAGS -DWITH_FREETYPE"
1716 CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`"
1718 if [ "$enable_static" != "0" ]; then
1719 if [ "$os" = "OSX" ]; then
1720 LIBS="$LIBS `$freetype_config --prefix`/lib/libfreetype.a"
1722 # Is it possible to do static with freetype, if so: how?
1723 LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
1726 LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
1730 if [ -n "$icu_config" ]; then
1731 CFLAGS="$CFLAGS -DWITH_ICU"
1732 CFLAGS="$CFLAGS `$icu_config --cppflags | tr '\n\r' ' '`"
1734 # Some icu-configs have the 'feature' of not adding a space where others do add the space
1735 if [ "$static_icu" != "0" ]; then
1736 LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' ' | sed s/licu/lsicu/g`"
1738 LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' '`"
1743 if [ "$with_direct_music" != "0" ]; then
1744 CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
1745 # GCC 4.0+ doesn't like the DirectX includes (gives tons of
1746 # warnings on it we won't be able to fix). For now just
1747 # suppress those warnings.
1748 if [ $cc_version -ge 40 ]; then
1749 CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
1753 if [ -n "$libtimidity" ]; then
1754 if [ "$enable_static" != "0" ]; then
1755 LIBS="$LIBS $libtimidity"
1757 LIBS="$LIBS -ltimidity"
1759 CFLAGS="$CFLAGS -DLIBTIMIDITY"
1762 if [ "$with_iconv" != "0" ]; then
1763 CFLAGS="$CFLAGS -DWITH_ICONV"
1764 if [ "$link_to_iconv" = "yes" ]; then
1765 LIBS="$LIBS -liconv"
1766 if [ "$with_iconv" != "2" ]; then
1767 CFLAGS="$CFLAGS -I$with_iconv/include"
1768 LIBS="$LIBS -L$with_iconv/lib"
1772 if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then
1773 CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV"
1777 if [ -n "$with_midi" ]; then
1778 CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\""
1780 if [ -n "$with_midi_arg" ]; then
1781 CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\""
1784 if [ "$enable_dedicated" != "0" ]; then
1785 CFLAGS="$CFLAGS -DDEDICATED"
1788 if [ "$enable_unicode" != "0" ]; then
1789 CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
1792 if [ "$enable_network" != "0" ]; then
1793 CFLAGS="$CFLAGS -DENABLE_NETWORK"
1795 if [ "$os" = "BEOS" ]; then
1796 LDFLAGS="$LDFLAGS -lbind -lsocket"
1799 if [ "$os" = "HAIKU" ]; then
1800 LDFLAGS="$LDFLAGS -lnetwork"
1803 if [ "$os" = "SUNOS" ]; then
1804 LDFLAGS="$LDFLAGS -lnsl -lsocket"
1808 if [ "$enable_static" != "0" ]; then
1809 # OSX can't handle -static in LDFLAGS
1810 if [ "$os" != "OSX" ]; then
1811 LDFLAGS="$LDFLAGS -static"
1815 if [ "$enable_assert" = "0" ]; then
1816 CFLAGS="$CFLAGS -DNDEBUG"
1817 CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG"
1820 if [ "$enable_desync_debug" != "0" ]; then
1821 CFLAGS="$CFLAGS -DRANDOM_DEBUG"
1824 if [ "$enable_osx_g5" != "0" ]; then
1825 CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
1828 if [ -n "$personal_dir" ]; then
1829 CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
1832 if [ -n "$shared_dir" ]; then
1833 CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
1836 CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
1838 if [ "$enable_lto" != "0" ]; then
1840 if echo "$FEATURES_BUILD" | grep -q "lto"; then
1841 LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD"
1844 if echo "$FEATURES" | grep -q "lto"; then
1845 LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS"
1848 if [ "$lto_warn" != "0" ]; then
1849 log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it"
1850 log 1 "WARNING: LTO/IPO has been disabled"
1854 log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
1855 log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
1856 log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
1857 log 1 "using CFLAGS... $CFLAGS"
1858 log 1 "using CXXFLAGS... $CXXFLAGS"
1859 log 1 "using LDFLAGS... $LIBS $LDFLAGS"
1861 # Makedepend doesn't like something like: -isysroot /OSX/blabla
1862 # so convert it to: -isysroot -OSX/blabla. makedepend just ignores
1863 # any - command it doesn't know, so we are pretty save.
1864 # Lovely hackish, not?
1865 # Btw, this almost always comes from outside the configure, so it is
1866 # not something we can control.
1867 # Also make makedepend aware of compiler's built-in defines.
1868 if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then
1869 # Append CXXFLAGS possibly containing -std=c++0x
1870 cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
1872 # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
1873 cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
1878 if [ "$with_distcc" != "0" ]; then
1879 cc_host="$distcc $cc_host"
1880 cxx_host="$distcc $cxx_host"
1882 log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
1886 if [ "$with_ccache" != "0" ]; then
1887 cc_host="$ccache $cc_host"
1888 cxx_host="$ccache $cxx_host"
1894 # $1 - Type for message (build / host)
1895 # $2 - What to fill with the found compiler
1896 # $3 - System to try
1897 # $4 - Compiler to try
1898 # $5 - Env-setting to try
1899 # $6 - GCC alike to try
1900 # $7 - CC alike to try
1901 # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
1902 # $9 - What the command is to check for
1904 if [ -n "$3" ]; then
1906 if [ -z "$6" ]; then
1911 machine=`eval $compiler $9 2>/dev/null`
1913 eval "$2=\"$compiler\""
1915 log 2 "executing $compiler $9"
1916 log 2 " returned $machine"
1917 log 2 " exit code $ret"
1919 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1920 log 1 "checking $1... $compiler not found"
1921 log 1 "I couldn't detect any $6 binary for $3"
1925 if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
1926 log 1 "checking $1... expected $3, found $machine"
1927 log 1 "the compiler suggests it doesn't build code for the machine you specified"
1930 elif [ -n "$4" ]; then
1931 # Check for manual compiler
1932 machine=`$4 $9 2>/dev/null`
1936 log 2 "executing $4 $9"
1937 log 2 " returned $machine"
1938 log 2 " exit code $ret"
1940 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1941 log 1 "checking $1... $4 not found"
1942 log 1 "the selected binary doesn't seem to be a $6 binary"
1946 # Nothing given, autodetect
1948 if [ -n "$5" ]; then
1949 machine=`$5 $9 2>/dev/null`
1953 log 2 "executing $5 $9"
1954 log 2 " returned $machine"
1955 log 2 " exit code $ret"
1957 # The user defined a GCC that doesn't reply to $9.. abort
1958 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1959 log 1 "checking $1... $5 unusable"
1960 log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary"
1961 log 1 "please redefine the CC/CXX environment to a $6 binary"
1965 log 2 "checking $1... CC/CXX not set (skipping)"
1967 # No $5, so try '$6'
1968 machine=`$6 $9 2>/dev/null`
1972 log 2 "executing $6 $9"
1973 log 2 " returned $machine"
1974 log 2 " exit code $ret"
1976 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1978 machine=`$7 $9 2>/dev/null`
1982 log 2 "executing $7 $9"
1983 log 2 " returned $machine"
1984 log 2 " exit code $ret"
1987 if [ -z "$machine" ]; then
1988 log 1 "checking $1... $6 not found"
1989 log 1 "I couldn't detect any $6 binary on your system"
1990 log 1 "please define the CC/CXX environment to where it is located"
1998 if [ "$8" != "0" ]; then
2000 log 1 "checking $1... $res"
2002 log 1 "checking $1... $machine"
2007 if [ "$os" = "FREEBSD" ]; then
2008 # FreeBSD's C compiler does not support dump machine.
2009 # However, removing C support is not possible because PSP must be linked with the C compiler.
2010 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
2012 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
2017 # By default the host is the build
2018 if [ -z "$host" ]; then host="$build"; fi
2020 if [ "$os" = "FREEBSD" ]; then
2021 # FreeBSD's C compiler does not support dump machine.
2022 # However, removing C support is not possible because PSP must be linked with the C compiler.
2023 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
2025 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
2030 check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine"
2034 # By default the host is the build
2035 if [ -z "$host" ]; then host="$build"; fi
2036 check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine"
2040 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2041 check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
2046 if [ "$os" = "OS2" ]; then
2047 # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly
2048 log 1 "checking host strip... using gcc -s option"
2049 elif [ "$os" = "OSX" ]; then
2050 # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something
2051 echo "int main(int argc, char *argv[]) { }" > strip.test.c
2052 $cxx_host strip.test.c -o strip.test
2053 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test"
2054 rm -f strip.test.c strip.test
2056 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V"
2061 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
2062 echo "int main(int argc, char *argv[]) { }" > lipo.test.c
2063 $cxx_host lipo.test.c -o lipo.test
2064 check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test"
2065 rm -f lipo.test.c lipo.test
2071 if [ -n "$1" ]; then
2072 if echo "$1" | grep -q / ; then
2073 # Seems to be a file system path
2076 osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk"
2078 if [ ! -d "$osx_sdk_path" ]; then
2079 # No directory, not present or garbage
2083 # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced
2084 sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4"
2087 cat > tmp.osx.mm << EOF
2088 #include <Cocoa/Cocoa.h>
2090 kCGBitmapByteOrder32Host;
2094 execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2095 eval $execute > /dev/null
2097 log 2 "executing $execute"
2098 log 2 " exit code $ret"
2099 rm -f tmp.osx.mm tmp.osx
2103 check_direct_music() {
2105 #include <windows.h>
2106 #include <dmksctrl.h>
2107 #include <dmusici.h>
2108 #include <dmusicc.h>
2109 #include <dmusicf.h>
2110 int main(int argc, char *argv[]) { }" > direct_music.test.c
2111 $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
2113 rm -f direct_music.test.c direct_music.test
2115 if [ "$res" != "0" ]; then
2116 if [ "$with_direct_music" != "1" ]; then
2117 log 1 "configure: error: direct-music is not available on this system"
2120 with_direct_music="0"
2122 log 1 "checking direct-music... not found"
2124 log 1 "checking direct-music... found"
2128 check_makedepend() {
2129 if [ "$enable_builtin_depend" != "0" ]; then
2133 if [ "$with_makedepend" = "0" ]; then
2134 log 1 "checking makedepend... disabled"
2138 if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then
2139 makedepend="makedepend"
2141 makedepend="$with_makedepend"
2144 rm -f makedepend.tmp
2145 touch makedepend.tmp
2146 res=`$makedepend -fmakedepend.tmp 2>/dev/null`
2148 log 2 "executing $makedepend -f makedepend.tmp"
2149 log 2 " returned `cat makedepend.tmp`"
2150 log 2 " exit code $ret"
2152 if [ ! -s makedepend.tmp ]; then
2153 rm -f makedepend.tmp makedepend.tmp.bak
2155 if [ "$with_makedepend" = "2" ]; then
2156 log 1 "checking makedepend... not found"
2158 log 1 "I couldn't detect any makedepend on your system"
2159 log 1 "please locate it via --makedepend=[binary]"
2162 elif [ "$with_makedepend" != "1" ]; then
2163 log 1 "checking makedepend... $makedepend not found"
2165 log 1 "the selected file doesn't seem to be a valid makedepend binary"
2169 log 1 "checking makedepend... not found"
2176 rm -f makedepend.tmp makedepend.tmp.bak
2178 log 1 "checking makedepend... $makedepend"
2182 # $1 - requested version (major.minor)
2183 # $2 - version we got (major.minor)
2185 if [ -z "$2" ]; then
2189 req_major=`echo $1 | cut -d. -f1`
2190 got_major=`echo $2 | cut -d. -f1`
2191 if [ $got_major -lt $req_major ]; then
2193 elif [ $got_major -gt $req_major ]; then
2197 req_minor=`echo $1 | cut -d. -f2`
2198 got_minor=`echo $2 | cut -d. -f2`
2199 if [ $got_minor -lt $req_minor ]; then
2206 # Not all awks allow gsub(), so we test for that here! It is in fact all we need...
2208 # These awks are known to work. Test for them explicit
2209 awks="gawk mawk nawk"
2211 awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
2212 awk_param="' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", \$0); print \$0; }' 2>/dev/null"
2213 awk_result="a.o b.o c.o "
2214 log 2 "Detecing awk..."
2216 log 2 "Trying: $awk_prefix $awk $awk_param"
2217 res=`eval $awk_prefix $awk $awk_param`
2218 log 2 "Result: '$res'"
2219 if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
2220 # User didn't supply his own awk, so try to detect some other known working names for an awk
2221 for awk in $awks; do
2222 log 2 "Trying: $awk_prefix $awk $awk_param"
2223 res=`eval $awk_prefix $awk $awk_param`
2224 log 2 "Result: '$res'"
2225 if [ "$res" = "$awk_result" ]; then break; fi
2228 if [ "$res" != "$awk_result" ]; then
2229 log 1 "checking awk... not found"
2230 log 1 "configure: error: no awk found"
2231 log 1 "configure: error: please install one of the following: $awks"
2235 if [ "$res" != "$awk_result" ]; then
2236 log 1 "checking awk... not found"
2237 log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
2241 log 1 "checking awk... $awk"
2245 if [ "$os" = "DETECT" ]; then
2246 # Detect UNIX, OSX, FREEBSD, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
2248 # Try first via dumpmachine, then via uname
2249 os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
2250 /linux/ { print "UNIX"; exit}
2251 /darwin/ { print "OSX"; exit}
2252 /freebsd/ { print "FREEBSD"; exit}
2253 /openbsd/ { print "OPENBSD"; exit}
2254 /netbsd/ { print "NETBSD"; exit}
2255 /hp-ux/ { print "HPUX"; exit}
2256 /morphos/ { print "MORPHOS"; exit}
2257 /beos/ { print "BEOS"; exit}
2258 /haiku/ { print "HAIKU"; exit}
2259 /sunos/ { print "SUNOS"; exit}
2260 /solaris/ { print "SUNOS"; exit}
2261 /cygwin/ { print "CYGWIN"; exit}
2262 /mingw/ { print "MINGW"; exit}
2263 /os2/ { print "OS2"; exit}
2264 /dos/ { print "DOS"; exit}
2265 /wince/ { print "WINCE"; exit}
2266 /psp/ { print "PSP"; exit}
2269 if [ -z "$os" ]; then
2270 os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk '
2271 /linux/ { print "UNIX"; exit}
2272 /darwin/ { print "OSX"; exit}
2273 /freebsd/ { print "FREEBSD"; exit}
2274 /openbsd/ { print "OPENBSD"; exit}
2275 /netbsd/ { print "NETBSD"; exit}
2276 /hp-ux/ { print "HPUX"; exit}
2277 /morphos/ { print "MORPHOS"; exit}
2278 /beos/ { print "BEOS"; exit}
2279 /haiku/ { print "HAIKU"; exit}
2280 /sunos/ { print "SUNOS"; exit}
2281 /cygwin/ { print "CYGWIN"; exit}
2282 /mingw/ { print "MINGW"; exit}
2283 /os\/2/ { print "OS2"; exit}
2284 /gnu/ { print "UNIX"; exit}
2288 if [ -z "$os" ]; then
2289 log 1 "detecting OS... none detected"
2290 log 1 "I couldn't detect your OS. Please use --os=OS to force one"
2291 log 1 "Allowed values are: UNIX, OSX, FREEBSD, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
2295 log 1 "detecting OS... $os"
2297 log 1 "forcing OS... $os"
2302 # 0 means no, 1 is auto-detect, 2 is force
2303 if [ "$with_allegro" = "0" ]; then
2304 log 1 "checking Allegro... disabled"
2310 if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then
2311 log 1 "configure: error: it is impossible to compile both Allegro and COCOA"
2312 log 1 "configure: error: please deselect one of them and try again"
2316 if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2317 log 1 "configure: error: it is impossible to compile a dedicated with Allegro"
2318 log 1 "configure: error: please deselect one of them and try again"
2322 if [ "$enable_dedicated" != "0" ]; then
2323 log 1 "checking Allegro... dedicated server, skipping"
2329 # By default on OSX we don't use SDL. The rest is auto-detect
2330 if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2331 log 1 "checking Allegro... OSX, skipping"
2337 if [ "$with_allegro" = "1" ] || [ "$with_allegro" = "" ] || [ "$with_allegro" = "2" ]; then
2338 allegro_config="allegro-config"
2340 allegro_config="$with_allegro"
2343 version=`$allegro_config --version 2>/dev/null`
2345 log 2 "executing $allegro_config --version"
2346 log 2 " returned $version"
2347 log 2 " exit code $ret"
2349 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2350 log 1 "checking Allegro... not found"
2352 # It was forced, so it should be found.
2353 if [ "$with_allegro" != "1" ]; then
2354 log 1 "configure: error: allegro-config couldn't be found"
2355 log 1 "configure: error: you supplied '$with_allegro', but it seems invalid"
2363 log 1 "checking Allegro... found"
2368 # 0 means no, 1 is auto-detect, 2 is force
2369 if [ "$with_sdl" = "0" ]; then
2370 log 1 "checking SDL... disabled"
2376 if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
2377 log 1 "configure: error: it is impossible to compile both SDL and COCOA"
2378 log 1 "configure: error: please deselect one of them and try again"
2382 if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2383 log 1 "configure: error: it is impossible to compile a dedicated with SDL"
2384 log 1 "configure: error: please deselect one of them and try again"
2388 if [ "$enable_dedicated" != "0" ]; then
2389 log 1 "checking SDL... dedicated server, skipping"
2395 # By default on OSX we don't use SDL. The rest is auto-detect
2396 if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2397 log 1 "checking SDL... OSX, skipping"
2403 if [ "$os" = "OSX" ]; then
2404 log 1 "WARNING: sdl is known to fail on some versions of Mac OS X"
2405 log 1 "WARNING: with some hardware configurations. Use at own risk!"
2409 if [ "$with_sdl" = "1" ] || [ "$with_sdl" = "" ] || [ "$with_sdl" = "2" ]; then
2410 sdl_config="sdl-config"
2412 sdl_config="$with_sdl"
2415 version=`$sdl_config --version 2>/dev/null`
2417 log 2 "executing $sdl_config --version"
2418 log 2 " returned $version"
2419 log 2 " exit code $ret"
2421 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2422 log 1 "checking SDL... not found"
2424 # It was forced, so it should be found.
2425 if [ "$with_sdl" != "1" ]; then
2426 log 1 "configure: error: sdl-config couldn't be found"
2427 log 1 "configure: error: you supplied '$with_sdl', but it seems invalid"
2435 log 1 "checking SDL... found"
2439 # Try to find the best SDK available. For a normal build this
2440 # is currently the 10.5 SDK as this is needed to compile all
2441 # optional code. Because such an executable won't run on 10.4
2442 # or lower, also check for the 10.4u SDK when doing an universal
2445 # Check for the 10.5 SDK, but try 10.6 if that fails
2446 check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path=""
2448 if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then
2449 # No better SDK or universal build enabled? Check 10.4u SDK as well
2450 local old_sdk="$osx_sdk_path"
2451 if check_osx_sdk "10.4u"; then
2452 osx_sdk_104_path="$osx_sdk_path"
2456 if [ -z "$old_sdk" ]; then
2457 osx_sdk_path="$osx_sdk_104_path"
2459 osx_sdk_path="$old_sdk"
2463 if [ -z "$osx_sdk_path" ]; then
2464 log 1 "Your system SDK is probably too old"
2465 log 1 "Please install/upgrade your Xcode to >= 2.5"
2472 # 0 means no, 1 is auto-detect, 2 is force
2473 if [ "$with_cocoa" = "0" ]; then
2474 log 1 "checking COCOA... disabled"
2479 if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2480 log 1 "configure: error: it is impossible to compile a dedicated with COCOA"
2481 log 1 "configure: error: please deselect one of them and try again"
2485 if [ "$enable_dedicated" != "0" ]; then
2486 log 1 "checking COCOA... dedicated server, skipping"
2492 # By default on OSX we use COCOA. The rest doesn't support it
2493 if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then
2494 log 1 "checking COCOA... not OSX, skipping"
2500 if [ "$os" != "OSX" ]; then
2501 log 1 "checking COCOA... not OSX"
2503 log 1 "configure: error: COCOA video driver is only supported for OSX"
2507 log 1 "checking COCOA... found"
2510 if [ "$enable_cocoa_quartz" != "0" ]; then
2511 log 1 "checking whether to enable the Quartz window subdriver... yes"
2513 log 1 "checking whether to enable the Quartz window subdriver... no"
2519 detect_quickdraw() {
2520 # 0 means no, 1 is auto-detect, 2 is force
2521 if [ "$enable_cocoa_quickdraw" = "0" ]; then
2522 log 1 "checking Quickdraw window subdriver... disabled"
2526 # Assume QuickDraw is available when doing an universal build
2527 if [ "$enable_universal" != "0" ]; then
2528 log 1 "checking Quickdraw window subdriver... found"
2532 # 64 bits doesn't have quickdraw
2533 if [ "$cpu_type" = "64" ]; then
2534 enable_cocoa_quickdraw="0"
2535 log 1 "checking Quickdraw window subdriver... disabled (64 bits)"
2539 cat > tmp.osx.mm << EOF
2540 #include <AvailabilityMacros.h>
2541 #import <Cocoa/Cocoa.h>
2542 int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; }
2544 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2545 eval $execute > /dev/null
2547 log 2 "executing $execute"
2548 log 2 " exit code $ret"
2549 rm -f tmp.osx.mm tmp.osx
2550 if [ "$ret" != "0" ]; then
2551 log 1 "checking Quickdraw window subdriver... not found"
2553 # It was forced, so it should be found.
2554 if [ "$enable_cocoa_quickdraw" != "1" ]; then
2555 log 1 "configure: error: Quickdraw window driver could not be found"
2559 enable_cocoa_quickdraw=0
2563 enable_cocoa_quickdraw=1
2564 log 1 "checking Quickdraw window subdriver... found"
2568 # $1 - config-param ($with_zlib value)
2569 # $2 - library name ('zlib', sets $zlib)
2570 # $3 - static library name (libz.a)
2571 # $4 - header directory ()
2572 # $5 - header name (zlib.h)
2573 # $6 - force static (if non-empty)
2575 if [ -n "$6" ]; then force_static="1"; fi
2577 # 0 means no, 1 is auto-detect, 2 is force
2578 if [ "$1" = "0" ]; then
2579 log 1 "checking $2... disabled"
2585 log 2 "detecting $2"
2587 if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2588 eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2590 if [ -z "$res" ]; then
2591 log 2 " trying /usr/include/$4$5... no"
2592 eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2595 if [ -z "$res" ]; then
2596 log 2 " trying /usr/local/include/$4$5... no"
2597 eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2600 if [ -z "$res" ]; then
2601 log 2 " trying /mingw/include/$4$5... no"
2602 eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2605 if [ -z "$res" ]; then
2606 log 2 " trying /opt/local/include/$4$5... no"
2608 if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
2609 eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2611 if [ -z "$res" ]; then
2612 log 2 " trying /usr/pkg/include/$4$5... no"
2615 if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
2616 eval "$2=`ls -1 /boot/common/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2618 if [ -z "$res" ]; then
2619 log 2 " trying /boot/common/include/$4$5... no"
2624 if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
2626 log 2 " trying $res... found"
2627 # Now find the static lib, if needed
2628 eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2630 if [ -z "$res" ]; then
2631 log 2 " trying /lib/$3... no"
2632 eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2635 if [ -z "$res" ]; then
2636 log 2 " trying /usr/lib/$3... no"
2637 eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2640 if [ -z "$res" ]; then
2641 log 2 " trying /usr/local/lib/$3... no"
2642 eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2645 if [ -z "$res" ]; then
2646 log 2 " trying /mingw/lib/$3... no"
2647 log 1 "configure: error: $2 couldn't be found"
2648 log 1 "configure: error: you requested a static link, but I can't find $3"
2654 # Make sure it exists
2655 if [ -f "$1" ]; then
2656 eval "$2=`ls $1 2>/dev/null`"
2658 eval "$2=`ls $1/$3 2>/dev/null`"
2663 if [ -z "$res" ]; then
2664 log 1 "checking $2... not found"
2665 if [ "$1" = "2" ]; then
2666 log 1 "configure: error: $2 couldn't be found"
2669 elif [ "$1" != "1" ]; then
2670 log 1 "configure: error: $2 couldn't be found"
2671 log 1 "configure: error: you supplied '$1', but it seems invalid"
2682 log 2 " trying $res... found"
2684 log 1 "checking $2... found"
2688 detect_library "$with_zlib" "zlib" "libz.a" "" "zlib.h"
2692 detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
2695 detect_libtimidity() {
2696 detect_library "$with_libtimidity" "libtimidity" "libtimidity.a" "" "timidity.h"
2700 # 0 means no, 1 is auto-detect, 2 is force
2701 if [ "$with_lzma" = "0" ]; then
2702 log 1 "checking liblzma... disabled"
2708 if [ "$with_lzma" = "1" ] || [ "$with_lzma" = "" ] || [ "$with_lzma" = "2" ]; then
2709 lzma_config="pkg-config liblzma"
2711 lzma_config="$with_lzma"
2714 version=`$lzma_config --modversion 2>/dev/null`
2716 log 2 "executing $lzma_config --modversion"
2717 log 2 " returned $version"
2718 log 2 " exit code $ret"
2720 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2721 log 1 "checking liblzma... not found"
2723 # It was forced, so it should be found.
2724 if [ "$with_lzma" != "1" ]; then
2725 log 1 "configure: error: pkg-config liblzma couldn't be found"
2726 log 1 "configure: error: you supplied '$with_lzma', but it seems invalid"
2734 log 1 "checking liblzma... found"
2737 detect_xdg_basedir() {
2738 # 0 means no, 1 is auto-detect, 2 is force
2739 if [ "$with_xdg_basedir" = "0" ]; then
2740 log 1 "checking libxdg_basedir... disabled"
2742 xdg_basedir_config=""
2746 if [ "$with_xdg_basedir" = "1" ] || [ "$with_xdg_basedir" = "" ] || [ "$with_xdg_basedir" = "2" ]; then
2747 xdg_basedir_config="pkg-config libxdg-basedir"
2749 xdg_basedir_config="$with_xdg_basedir"
2752 version=`$xdg_basedir_config --modversion 2>/dev/null`
2754 log 2 "executing $xdg_basedir_config --modversion"
2755 log 2 " returned $version"
2756 log 2 " exit code $ret"
2758 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2759 log 1 "checking libxdg_basedir... not found"
2761 # It was forced, so it should be found.
2762 if [ "$with_xdg_basedir" != "1" ]; then
2763 log 1 "configure: error: pkg-config libxdg_basedir couldn't be found"
2764 log 1 "configure: error: you supplied '$with_xdg_basedir', but it seems invalid"
2768 xdg_basedir_config=""
2772 log 1 "checking libxdg_basedir... found"
2776 # 0 means no, 1 is auto-detect, 2 is force
2777 if [ "$with_png" = "0" ]; then
2778 log 1 "checking libpng... disabled"
2784 if [ "$with_zlib" = "0" ] || [ -z "$zlib" ]; then
2785 if [ "$with_png" != "1" ]; then
2786 log 1 "checking libpng... no zlib"
2787 log 1 "ERROR: libpng was forced, but zlib was not detected / disabled."
2788 log 1 "ERROR: libpng depends on zlib."
2793 log 1 "checking libpng... no zlib, skipping"
2799 if [ "$with_png" = "1" ] || [ "$with_png" = "" ] || [ "$with_png" = "2" ]; then
2800 png_config="libpng-config"
2802 png_config="$with_png"
2805 version=`$png_config --version 2>/dev/null`
2807 log 2 "executing $png_config --version"
2808 log 2 " returned $version"
2809 log 2 " exit code $ret"
2811 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2812 log 1 "checking libpng... not found"
2814 # It was forced, so it should be found.
2815 if [ "$with_png" != "1" ]; then
2816 log 1 "configure: error: libpng-config couldn't be found"
2817 log 1 "configure: error: you supplied '$with_png', but it seems invalid"
2825 log 1 "checking libpng... found"
2829 # 0 means no, 1 is auto-detect, 2 is force
2830 if [ "$with_freetype" = "0" ]; then
2831 log 1 "checking libfreetype... disabled"
2836 if [ "$with_freetype" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2837 log 1 "checking libfreetype... dedicated server, skipping"
2843 if [ "$with_zlib" = "0" ] || [ -z "$zlib" ]; then
2844 if [ "$with_freetype" != "1" ]; then
2845 log 1 "checking libfreetype... no zlib"
2846 log 1 "ERROR: libfreetype was forced, but zlib was not detected / disabled."
2847 log 1 "ERROR: libfreetype depends on zlib."
2852 log 1 "checking libfreetype... no zlib, skipping"
2858 if [ "$with_freetype" = "1" ] || [ "$with_freetype" = "" ] || [ "$with_freetype" = "2" ]; then
2859 freetype_config="freetype-config"
2861 freetype_config="$with_freetype"
2864 version=`$freetype_config --version 2>/dev/null`
2866 log 2 "executing freetype_config --version"
2867 log 2 " returned $version"
2868 log 2 " exit code $ret"
2870 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2871 log 1 "checking libfreetype... not found"
2873 # It was forced, so it should be found.
2874 if [ "$with_freetype" != "1" ]; then
2875 log 1 "configure: error: freetype-config couldn't be found"
2876 log 1 "configure: error: you supplied '$with_freetype', but it seems invalid"
2884 log 1 "checking libfreetype... found"
2887 detect_fontconfig() {
2888 # 0 means no, 1 is auto-detect, 2 is force
2889 if [ "$with_fontconfig" = "0" ]; then
2890 log 1 "checking libfontconfig... disabled"
2892 fontconfig_config=""
2895 if [ "$with_fontconfig" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2896 log 1 "checking libfontconfig... dedicated server, skipping"
2898 fontconfig_config=""
2901 if [ "$with_fontconfig" != "2" ] && [ -z "$freetype_config" ]; then
2902 log 1 "checking libfontconfig... no freetype, skipping"
2904 fontconfig_config=""
2908 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2909 log 1 "checking libfontconfig... WIN32, skipping"
2910 fontconfig_config=""
2914 if [ "$os" = "OSX" ]; then
2915 log 1 "checking libfontconfig... OSX, skipping"
2916 fontconfig_config=""
2920 if [ "$with_fontconfig" = "1" ] || [ "$with_fontconfig" = "" ] || [ "$with_fontconfig" = "2" ]; then
2921 fontconfig_config="pkg-config fontconfig"
2923 fontconfig_config="$with_fontconfig"
2926 version=`$fontconfig_config --modversion 2>/dev/null`
2928 check_version '2.3' "$version"
2930 log 2 "executing $fontconfig_config --modversion"
2931 log 2 " returned $version"
2932 log 2 " exit code $ret"
2934 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2935 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2936 log 1 "checking libfontconfig... needs at least version 2.3.0, fontconfig NOT enabled"
2938 log 1 "checking libfontconfig... not found"
2941 # It was forced, so it should be found.
2942 if [ "$with_fontconfig" != "1" ]; then
2943 log 1 "configure: error: fontconfig-config couldn't be found"
2944 log 1 "configure: error: you supplied '$with_fontconfig', but it seems invalid"
2948 fontconfig_config=""
2952 log 1 "checking libfontconfig... found"
2956 # 0 means no, 1 is auto-detect, 2 is force
2957 if [ "$with_icu" = "0" ]; then
2958 log 1 "checking libicu... disabled"
2963 if [ "$with_icu" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2964 log 1 "checking libicu... dedicated server, skipping"
2970 if [ "$with_icu" = "1" ] || [ "$with_icu" = "" ] || [ "$with_icu" = "2" ]; then
2971 icu_config="icu-config"
2973 icu_config="$with_icu"
2976 version=`$icu_config --version 2>/dev/null`
2978 check_version '3.6' "$version"
2980 log 2 "executing $icu_config --version"
2981 log 2 " returned $version"
2982 log 2 " exit code $ret"
2984 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2985 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2986 log 1 "checking libicu... needs at least version 3.6.0, icu NOT enabled"
2988 log 1 "checking libicu... not found"
2991 # It was forced, so it should be found.
2992 if [ "$with_icu" != "1" ]; then
2993 log 1 "configure: error: icu-config couldn't be found"
2994 log 1 "configure: error: you supplied '$with_icuconfig', but it seems invalid"
3002 log 1 "checking libicu... found"
3005 detect_pspconfig() {
3006 # 0 means no, 1 is auto-detect, 2 is force
3007 if [ "$with_psp_config" = "0" ]; then
3008 log 1 "checking psp-config... disabled"
3014 if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
3015 log 1 "checking psp-config... not PSP, skipping"
3021 if [ "$os" != "PSP" ]; then
3022 log 1 "checking psp-config... not PSP"
3024 log 1 "configure: error: psp-config is only supported for PSP"
3028 if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
3029 psp_config="psp-config"
3031 psp_config="$with_psp_config"
3034 version=`$psp_config -p 2>/dev/null`
3036 log 2 "executing $psp_config -p"
3037 log 2 " returned $version"
3038 log 2 " exit code $ret"
3040 if [ -z "$version" ] || [ "$ret" != "0" ]; then
3041 log 1 "checking psp-config... not found"
3042 log 1 "configure: error: psp-config couldn't be found"
3044 # It was forced, so it should be found.
3045 if [ "$with_psp_config" != "1" ]; then
3046 log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
3051 log 1 "checking psp-config... found"
3055 # 0 means no, 1 is auto-detect, 2 is force
3056 if [ "$with_iconv" = "0" ]; then
3057 log 1 "checking iconv... disabled"
3062 if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then
3063 log 1 "checking iconv... not OSX, skipping"
3069 # Try to find iconv.h, seems to only thing to detect iconv with
3071 if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
3072 iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
3073 if [ -z "$iconv" ]; then
3074 iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
3077 # Make sure it exists
3078 iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
3081 if [ -z "$iconv" ]; then
3082 log 1 "checking iconv... not found"
3083 if [ "$with_iconv" = "2" ]; then
3084 log 1 "configure: error: iconv couldn't be found"
3087 elif [ "$with_iconv" != "1" ]; then
3088 log 1 "configure: error: iconv couldn't be found"
3089 log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it"
3097 if [ "$with_iconv" = "1" ]; then
3101 log 2 "found iconv in $iconv"
3103 log 1 "checking iconv... found"
3105 # There are different implementations of iconv. The older ones,
3106 # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
3107 # IEEE 1003.1 (2004), pass a non-const pointer.
3109 cat > tmp.iconv.cpp << EOF
3110 #include "src/stdafx.h"
3113 static char buf[1024];
3115 const char *inbuf = "";
3117 size_t outlen = 1023;
3119 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
3122 execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
3123 eval $execute > /dev/null
3125 log 2 "executing $execute"
3126 log 2 " exit code $ret"
3127 if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi
3128 log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv"
3130 cat > tmp.iconv.cpp << EOF
3131 #include "src/stdafx.h"
3134 static char buf[1024];
3138 size_t outlen = 1023;
3140 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
3143 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
3144 eval $execute > /dev/null
3146 log 2 "executing $execute"
3147 log 2 " exit code $ret"
3148 if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi
3149 log 1 "checking whether to link to iconv... $link_to_iconv"
3150 rm -f tmp.iconv tmp.iconv.cpp
3164 log 2 "running echo <array> | $1"
3166 if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then
3168 log 2 " result was valid"
3170 log 2 " result was invalid"
3175 if [ "$with_sort" = "0" ]; then
3176 log 1 "checking sort... disabled"
3181 if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then
3183 if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi
3184 if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi
3185 if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi
3186 if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi
3187 if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi
3188 if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi
3190 _detect_sort "$with_sort"
3193 if [ -z "$sort" ]; then
3194 if [ "$with_sort" = "2" ]; then
3195 log 1 "checking sort... not found"
3197 log 1 "configure: error: couldn't detect sort on your system"
3199 elif [ "$with_sort" != "1" ]; then
3200 log 1 "checking sort... $with_sort not found"
3202 log 1 "configure: error: '$with_sort' doesn't look like a sort to me"
3203 log 1 "configure: error: please verify its location and function and try again"
3207 log 1 "checking sort... not found"
3210 log 1 "checking sort... $sort"
3215 # 0 means no, 1 is auto-detect, 2 is force
3216 if [ "$with_grfcodec" = "0" ]; then
3217 log 1 "checking grfcodec... disabled"
3223 if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then
3226 grfcodec="$with_grfcodec"
3229 version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3231 log 2 "executing grfcodec -v"
3232 log 2 " returned $version"
3233 log 2 " exit code $ret"
3235 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
3236 if [ -n "$version" ] && [ "$version" -lt "949" ]; then
3237 log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled"
3239 log 1 "checking grfcodec... not found"
3242 # It was forced, so it should be found.
3243 if [ "$with_grfcodec" != "1" ]; then
3244 log 1 "configure: error: grfcodec couldn't be found"
3245 log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid"
3253 log 1 "checking grfcodec... found"
3257 # 0 means no, 1 is auto-detect, 2 is force
3258 if [ "$with_nforenum" = "0" ]; then
3259 log 1 "checking nforenum... disabled"
3265 if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then
3268 nforenum="$with_nforenum"
3271 version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3273 log 2 "executing nforenum -v"
3274 log 2 " returned $version"
3275 log 2 " exit code $ret"
3277 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
3278 if [ -n "$version" ] && [ "$version" -lt "949" ]; then
3279 log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled"
3281 log 1 "checking nforenum... not found"
3284 # It was forced, so it should be found.
3285 if [ "$with_nforenum" != "1" ]; then
3286 log 1 "configure: error: nforenum couldn't be found"
3287 log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid"
3295 log 1 "checking nforenum... found"
3299 if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
3300 log 1 "forcing cpu-type... $cpu_type bits"
3303 echo "#define _SQ64 1" > tmp.64bit.cpp
3304 echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
3305 echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
3306 echo "int main() { return 0; }" >> tmp.64bit.cpp
3307 execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -DTESTING 2>&1"
3308 cpu_type="`eval $execute 2>/dev/null`"
3310 log 2 "executing $execute"
3311 log 2 " returned $cpu_type"
3312 log 2 " exit code $ret"
3313 if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
3314 log 1 "detecting cpu-type... $cpu_type bits"
3315 rm -f tmp.64bit tmp.64bit.cpp
3320 T_CXXFLAGS="$CXXFLAGS"
3321 T_LDFLAGS="$LDFLAGS"
3323 SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
3325 # All the data needed to compile a single target
3326 # Make sure if you compile multiple targets to
3327 # use multiple OBJS_DIR, because all in-between
3328 # binaries are stored in there, and nowhere else.
3330 s@!!CC_HOST!!@$cc_host@g;
3331 s@!!CXX_HOST!!@$cxx_host@g;
3332 s@!!CC_BUILD!!@$cc_build@g;
3333 s@!!CXX_BUILD!!@$cxx_build@g;
3334 s@!!WINDRES!!@$windres@g;
3335 s@!!STRIP!!@$strip $strip_arg@g;
3337 s@!!CFLAGS!!@$T_CFLAGS@g;
3338 s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g;
3339 s@!!CXXFLAGS!!@$T_CXXFLAGS@g;
3340 s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g;
3341 s@!!STRGEN_FLAGS!!@$strgen_flags@g;
3343 s@!!LDFLAGS!!@$T_LDFLAGS@g;
3344 s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g;
3345 s@!!BIN_DIR!!@$BIN_DIR@g;
3346 s@!!ROOT_DIR!!@$ROOT_DIR@g;
3347 s@!!MEDIA_DIR!!@$MEDIA_DIR@g;
3348 s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
3349 s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
3350 s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
3351 s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
3352 s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g;
3353 s@!!SRC_DIR!!@$SRC_DIR@g;
3354 s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
3355 s@!!OSXAPP!!@$OSXAPP@g;
3356 s@!!LANG_DIR!!@$LANG_DIR@g;
3358 s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g;
3359 s@!!DATA_DIR!!@$prefix_dir/$data_dir@g;
3360 s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g;
3361 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3362 s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g;
3363 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3364 s@!!PERSONAL_DIR!!@$personal_dir@g;
3365 s@!!SHARED_DIR!!@$shared_dir@g;
3366 s@!!INSTALL_DIR!!@$install_dir@g;
3367 s@!!BINARY_NAME!!@$binary_name@g;
3368 s@!!STRGEN!!@$STRGEN@g;
3369 s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
3370 s@!!DEPEND!!@$DEPEND@g;
3371 s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
3372 s@!!ENDIAN_FORCE!!@$endian@g;
3373 s@!!STAGE!!@$STAGE@g;
3374 s@!!MAKEDEPEND!!@$makedepend@g;
3375 s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
3377 s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
3378 s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
3379 s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
3380 s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
3381 s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
3382 s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
3383 s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g;
3384 s@!!LANG_SUPPRESS!!@$lang_suppress@g;
3385 s@!!OBJS_C!!@$OBJS_C@g;
3386 s@!!OBJS_CPP!!@$OBJS_CPP@g;
3387 s@!!OBJS_MM!!@$OBJS_MM@g;
3388 s@!!OBJS_RC!!@$OBJS_RC@g;
3391 s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g;
3393 s@!!DISTCC!!@$distcc@g;
3394 s@!!NFORENUM!!@$nforenum@g;
3395 s@!!GRFCODEC!!@$grfcodec@g;
3398 if [ "$icon_theme_dir" != "" ]; then
3399 SRC_REPLACE="$SRC_REPLACE
3400 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3403 SRC_REPLACE="$SRC_REPLACE
3404 s@!!ICON_THEME_DIR!!@@g;
3408 if [ "$man_dir" != "" ]; then
3409 SRC_REPLACE="$SRC_REPLACE
3410 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3413 SRC_REPLACE="$SRC_REPLACE
3418 if [ "$menu_dir" != "" ]; then
3419 SRC_REPLACE="$SRC_REPLACE
3420 s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g;
3423 SRC_REPLACE="$SRC_REPLACE
3429 generate_menu_item() {
3432 s@!!MENU_GROUP!!@$menu_group@g;
3433 s@!!MENU_NAME!!@$menu_name@g
3435 log 1 "Generating menu item..."
3437 < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop
3445 # Create the main Makefile
3446 log 1 "Generating Makefile..."
3447 echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile
3448 < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile
3449 cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle
3450 echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am
3452 # Make the copy of the source-list, so we don't trigger an unwanted recompile
3453 cp $SOURCE_LIST config.cache.source.list
3454 # Add the current directory, so we don't trigger an unwanted recompile
3455 echo "`pwd`" > config.cache.pwd
3456 # Make sure config.cache is OLDER then config.cache.source.list
3460 if [ "$menu_dir" != "" ]; then
3470 # Create the language file
3471 mkdir -p $LANG_OBJS_DIR
3473 log 1 "Generating lang/Makefile..."
3474 echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile
3475 < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile
3476 echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am
3477 echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
3480 generate_settings() {
3485 # Create the language file
3486 mkdir -p $SETTING_OBJS_DIR
3488 log 1 "Generating setting/Makefile..."
3489 echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile
3490 < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile
3491 echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am
3499 # Create the language file
3500 mkdir -p $GRF_OBJS_DIR
3502 log 1 "Generating grf/Makefile..."
3503 echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
3504 < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
3505 echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
3508 generate_src_normal() {
3513 # Create the source file
3514 mkdir -p $SRC_OBJS_DIR
3516 log 1 "Generating $2/Makefile..."
3517 echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile
3518 < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile
3519 echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am
3520 echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am
3523 generate_src_osx() {
3524 cc_host_orig="$cc_host"
3525 cxx_host_orig="$cxx_host"
3526 CFLAGS_orig="$CFLAGS"
3527 LDFLAGS_orig="$LDFLAGS"
3529 for type in $enable_universal; do
3531 if [ -n "$osx_sdk_104_path" ]; then
3532 # Use 10.4 SDK for 32-bit targets
3533 CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig"
3534 LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig"
3537 # We don't want to duplicate the x86_64 stuff for each target, so do it once here
3538 if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then
3539 # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV
3540 # and they also removed support for QuickTime/QuickDraw
3541 if [ -n "$osx_sdk_path" ]; then
3542 CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig"
3543 LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig"
3545 CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW"
3546 LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`"
3551 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc"
3552 cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3"
3553 cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3"
3554 generate_src_normal "[ppc]" "objs/ppc";;
3556 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970"
3557 cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3558 cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3559 generate_src_normal "[ppc970]" "objs/ppc970";;
3561 BASE_SRC_OBJS_DIR="$OBJS_DIR/i386"
3562 cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4"
3563 cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4"
3564 generate_src_normal "[i386]" "objs/i386";;
3566 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64"
3567 cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3568 cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3569 generate_src_normal "[ppc64]" "objs/ppc64";;
3571 BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64"
3572 cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3573 cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3574 generate_src_normal "[x86_64]" "objs/x86_64";;
3575 *) log 1 "Unknown architecture requested for universal build: $type";;
3581 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
3584 generate_src_normal "[SRC]" "objs"
3589 echo "'configure' configures OpenTTD."
3591 echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
3593 echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as"
3594 echo "VAR=VALUE. See below for descriptions of some of the useful variables."
3596 echo "Defaults for the options are specified in brackets."
3598 echo "Configuration:"
3599 echo " -h, --help display this help and exit"
3601 echo "System types:"
3602 echo " --build=BUILD configure for building on BUILD [guessed]"
3603 echo " --host=HOST cross-compile to build programs to run"
3604 echo " on HOST [BUILD]"
3605 echo " --windres=WINDRES the windres to use [HOST-windres]"
3606 echo " --strip=STRIP the strip to use [HOST-strip]"
3607 echo " --awk=AWK the awk to use in configure [awk]"
3608 echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]"
3609 echo " --os=OS the OS we are compiling for [DETECT]"
3610 echo " DETECT/UNIX/OSX/FREEBSD/OPENBSD/NETBSD/"
3611 echo " MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/MINGW/OS2/"
3612 echo " DOS/WINCE/PSP/HAIKU"
3613 echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
3616 echo " --prefix-dir=dir specifies the prefix for all installed"
3617 echo " files [/usr/local]"
3618 echo " --binary-dir=dir location of the binary. Will be prefixed"
3619 echo " with the prefix-dir [games]"
3620 echo " --data-dir=dir location of data files (lang, data, gm)."
3621 echo " Will be prefixed with the prefix-dir"
3622 echo " [share/games/openttd]"
3623 echo " --doc-dir=dir location of the doc files"
3624 echo " Will be prefixed with the prefix-dir"
3626 echo " --icon-dir=dir location of icons. Will be prefixed"
3627 echo " with the prefix-dir [share/pixmaps]"
3628 echo " --icon-theme-dir=dir location of icon theme."
3629 echo " Will be prefixed with the prefix-dir"
3630 echo " and postfixed with size-dirs [$icon_theme_dir]"
3631 echo " --man-dir=dir location of the manual page (UNIX only)"
3632 echo " Will be prefixed with the prefix-dir"
3634 echo " --menu-dir=dir location of the menu item. (UNIX only, except OSX)"
3635 echo " Will be prefixed with the prefix-dir"
3636 echo " [share/applications]"
3637 echo " --personal-dir=dir location of the personal directory"
3638 echo " [os-dependent default]"
3639 echo " --shared-dir=dir location of shared data files"
3640 echo " [os-dependent default]"
3641 echo " --install-dir=dir specifies the root to install to."
3642 echo " Useful to install into jails [/]"
3643 echo " --binary-name the name used for the binary, icons,"
3644 echo " desktop file, etc. when installing [openttd]"
3646 echo "Features and packages:"
3647 echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)"
3648 echo " --enable-desync-debug=[LVL] enable desync debug options (LVL=[012], 0 is none"
3649 echo " --enable-profiling enables profiling"
3650 echo " --enable-lto enables GCC's Link Time Optimization (LTO)/ICC's"
3651 echo " Interprocedural Optimization if available"
3652 echo " --enable-dedicated compile a dedicated server (without video)"
3653 echo " --enable-static enable static compile (doesn't work for"
3655 echo " --enable-translator enable extra output for translators"
3656 echo " --enable-universal[=ARCH] enable universal builds (OSX ONLY). Allowed is any combination"
3657 echo " of architectures: i386 ppc ppc970 ppc64 x86_64"
3658 echo " Default architectures are: i386 ppc"
3659 echo " --enable-osx-g5 enables optimizations for ppc970 (G5) (OSX ONLY)"
3660 echo " --disable-cocoa-quartz disable the quartz window mode driver for Cocoa (OSX ONLY)"
3661 echo " --disable-cocoa-quickdraw disable the quickdraw window mode driver for Cocoa (OSX ONLY)"
3662 echo " --disable-unicode disable unicode support to build win9x"
3663 echo " version (Win32 ONLY)"
3664 echo " --enable-console compile as a console application instead of as a GUI application."
3665 echo " If this setting is active, debug output will appear in the same"
3666 echo " console instead of opening a new window. (Win32 ONLY)"
3667 echo " --disable-network disable network support"
3668 echo " --disable-assert disable asserts (continue on errors)"
3669 echo " --enable-strip enable any possible stripping"
3670 echo " --without-osx-sysroot disable the automatic adding of sysroot "
3672 echo " --without-application-bundle disable generation of application bundle"
3674 echo " --without-menu-entry Don't generate a menu item (Freedesktop based only)"
3675 echo " --menu-group=group Category in which the menu item will be placed (Freedesktop based only)"
3676 echo " --menu-name=name Name of the menu item when placed [OpenTTD]"
3677 echo " --with-direct-music enable direct music support (Win32 ONLY)"
3678 echo " --with-sort=sort define a non-default location for sort"
3679 echo " --with-midi=midi define which midi-player to use"
3680 echo " --with-midi-arg=arg define which args to use for the"
3682 echo " --with-libtimidity enables libtimidity support"
3683 echo " --with-allegro[=allegro-config]"
3684 echo " enables Allegro video driver support"
3685 echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
3686 echo " --with-sdl[=sdl-config] enables SDL video driver support"
3687 echo " --with-zlib[=zlib.a] enables zlib support"
3688 echo " --with-liblzma[=\"pkg-config liblzma\"]"
3689 echo " enables liblzma support"
3690 echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support"
3691 echo " --with-png[=libpng-config] enables libpng support"
3692 echo " --with-freetype[=freetype-config]"
3693 echo " enables libfreetype support"
3694 echo " --with-fontconfig[=\"pkg-config fontconfig\"]"
3695 echo " enables fontconfig support"
3696 echo " --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]"
3697 echo " enables XDG base directory support"
3698 echo " --with-icu[=icu-config] enables icu (used for right-to-left support)"
3699 echo " --static-icu try to link statically (libsicu instead of"
3700 echo " libicu; can fail as the new name is guessed)"
3701 echo " --with-iconv[=iconv-path] enables iconv support"
3702 echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
3703 echo " --disable-builtin-depend disable use of builtin deps finder"
3704 echo " --with-makedepend[=makedepend] enables makedepend support"
3705 echo " --with-ccache enables ccache support"
3706 echo " --with-distcc enables distcc support"
3707 echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
3709 echo "Some influential environment variables:"
3710 echo " CC C compiler command"
3711 echo " CXX C++ compiler command"
3712 echo " CFLAGS C compiler flags"
3713 echo " CXXFLAGS C++ compiler flags"
3714 echo " WINDRES windres command"
3715 echo " LDFLAGS linker flags, e.g. -L<lib dir> if you"
3716 echo " have libraries in a nonstandard"
3717 echo " directory <lib dir>"
3718 echo " CFLAGS_BUILD C compiler flags for build time tool generation"
3719 echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
3720 echo " LDFLAGS_BUILD linker flags for build time tool generation"
3722 echo "Use these variables to override the choices made by 'configure' or to help"
3723 echo "it to find libraries and programs with nonstandard names/locations."