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"
76 enable_builtin_depend="1"
139 enable_cocoa_quickdraw
141 with_application_bundle
149 enable_builtin_depend
167 CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
171 # Walk over all params from the user and override any default settings if
172 # needed. This also handles any invalid option.
174 if [ -n "$prev_p" ]; then
180 optarg=`expr "x$p" : 'x[^=]*=\(.*\)'`
183 --help | -h | -\?) showhelp; exit 0;;
185 --config-log) prev_p="config_log";;
186 --config-log=*) config_log="$optarg";;
188 --build) prev_p="build";;
189 --build=*) build="$optarg";;
191 --host) prev_p="host";;
192 --host=*) host="$optarg";;
195 --os=*) os="$optarg";;
197 --cpu-type) prev_p="cpu_type";;
198 --cpu-type=*) cpu_type="$optarg";;
200 --cc-build) prev_p="cc_build";;
201 --cc-build=*) cc_build="$optarg";;
202 --cc-host) prev_p="cc_host";;
203 --cc-host=*) cc_host="$optarg";;
204 --cxx-build) prev_p="cxx_build";;
205 --cxx-build=*) cxx_build="$optarg";;
206 --cxx-host) prev_p="cxx_host";;
207 --cxx-host=*) cxx_host="$optarg";;
208 --windres) prev_p="windres";;
209 --windres=*) windres="$optarg";;
210 --awk) prev_p="awk";;
211 --awk=*) awk="$optarg";;
212 --strip) prev_p="strip";;
213 --strip=*) strip="$optarg";;
214 --lipo) prev_p="lipo";;
215 --lipo=*) lipo="$optarg";;
217 --endian) prev_p="endian";;
218 --endian=*) endian="$optarg";;
222 # Alias --prefix with --prefix-dir, for compatibility with GNU autotools
223 --prefix-dir | --prefix) prev_p="prefix_dir";;
224 --prefix-dir=* | --prefix=*) prefix_dir="$optarg";;
226 --binary-dir) prev_p="binary_dir";;
227 --binary-dir=*) binary_dir="$optarg";;
229 --data-dir) prev_p="data_dir";;
230 --data-dir=*) data_dir="$optarg";;
232 --doc-dir) prev_p="doc_dir";;
233 --doc-dir=*) doc_dir="$optarg";;
235 --icon-dir) prev_p="icon_dir";;
236 --icon-dir=*) icon_dir="$optarg";;
238 --icon-theme-dir) prev_p="icon_theme_dir";;
239 --icon-theme-dir=*) icon_theme_dir="$optarg";;
240 --without-icon-theme) icon_theme_dir="";;
242 --menu-dir) prev_p="menu_dir";;
243 --menu-dir=*) menu_dir="$optarg";;
244 --without-menu-entry) menu_dir="";;
246 --menu-name) prev_p="menu_name";;
247 --menu-name=*) menu_name="$optarg";;
249 --binary-name) prev_p="binary_name";;
250 --binary-name=*) binary_name="$optarg";;
252 --man-dir) prev_p="man_dir";;
253 --man-dir=*) man_dir="$optarg";;
255 --personal-dir) prev_p="personal_dir";;
256 --personal-dir=*) personal_dir="$optarg";;
257 --without-personal-dir) personal_dir="";;
259 --shared-dir) prev_p="shared_dir";;
260 --shared-dir=*) shared_dir="$optarg";;
261 --without-shared-dir) shared_dir="";;
263 --install-dir) prev_p="install_dir";;
264 --install-dir=*) install_dir="$optarg";;
268 --menu-group) prev_p="menu_group";;
269 --menu-group=*) menu_group="$optarg";;
273 --enable-debug) enable_debug="1";;
274 --enable-debug=*) enable_debug="$optarg";;
275 --enable-desync-debug) enable_desync_debug="1";;
276 --enable-desync-debug=*) enable_desync_debug="$optarg";;
277 --enable-profiling) enable_profiling="1";;
278 --enable-profiling=*) enable_profiling="$optarg";;
279 --enable-lto) enable_lto="1";;
280 --enable-lto=*) enable_lto="$optarg";;
281 --enable-ipo) enable_lto="1";;
282 --enable-ipo=*) enable_lto="$optarg";;
283 --enable-dedicated) enable_dedicated="1";;
284 --enable-dedicated=*) enable_dedicated="$optarg";;
285 --enable-network) enable_network="2";;
286 --enable-network=*) enable_network="$optarg";;
287 --disable-network) enable_network="0";;
288 --disable-static) enable_static="0";;
289 --enable-static) enable_static="2";;
290 --enable-static=*) enable_static="$optarg";;
291 --disable-translator) enable_translator="0";;
292 --enable-translator) enable_translator="2";;
293 --enable-translator=*) enable_translator="$optarg";;
294 --disable-assert) enable_assert="0";;
295 --enable-assert) enable_assert="2";;
296 --enable-assert=*) enable_assert="$optarg";;
297 --disable-strip) enable_strip="0";;
298 --enable-strip) enable_strip="2";;
299 --enable-strip=*) enable_strip="$optarg";;
300 --disable-universal) enable_universal="0";;
301 --enable-universal) enable_universal="i386 ppc";;
302 --enable-universal=*) enable_universal="$optarg";;
303 --disable-osx-g5) enable_osx_g5="0";;
304 --enable-osx-g5) enable_osx_g5="2";;
305 --enable-osx-g5=*) enable_osx_g5="$optarg";;
306 --disable-unicode) enable_unicode="0";;
307 --enable-unicode) enable_unicode="2";;
308 --enable-unicode=*) enable_unicode="$optarg";;
309 --disable-console) enable_console="0";;
310 --enable-console) enable_console="2";;
311 --enable-console=*) enable_console="$optarg";;
313 --disable-cocoa-quartz) enable_cocoa_quartz="0";;
314 --enable-cocoa-quartz) enable_cocoa_quartz="2";;
315 --enable-cocoa-quartz=*) enable_cocoa_quartz="$optarg";;
316 --disable-cocoa-quickdraw) enable_cocoa_quickdraw="0";;
317 --enable-cocoa-quickdraw) enable_cocoa_quickdraw="2";;
318 --enable-cocoa-quickdraw=*) enable_cocoa_quickdraw="$optarg";;
320 --with-allegro) with_allegro="2";;
321 --without-allegro) with_allegro="0";;
322 --with-allegro=*) with_allegro="$optarg";;
324 --with-sdl) with_sdl="2";;
325 --without-sdl) with_sdl="0";;
326 --with-sdl=*) with_sdl="$optarg";;
328 --with-cocoa) with_cocoa="2";;
329 --without-cocoa) with_cocoa="0";;
330 --with-cocoa=*) with_cocoa="$optarg";;
332 --with-zlib) with_zlib="2";;
333 --without-zlib) with_zlib="0";;
334 --with-zlib=*) with_zlib="$optarg";;
336 --with-lzma) with_lzma="2";;
337 --without-lzma) with_lzma="0";;
338 --with-lzma=*) with_lzma="$optarg";;
339 --with-liblzma) with_lzma="2";;
340 --without-liblzma) with_lzma="0";;
341 --with-liblzma=*) with_lzma="$optarg";;
343 --with-lzo2) with_lzo2="2";;
344 --without-lzo2) with_lzo2="0";;
345 --with-lzo2=*) with_lzo2="$optarg";;
346 --with-liblzo2) with_lzo2="2";;
347 --without-liblzo2) with_lzo2="0";;
348 --with-liblzo2=*) with_lzo2="$optarg";;
350 --with-png) with_png="2";;
351 --without-png) with_png="0";;
352 --with-png=*) with_png="$optarg";;
353 --with-libpng) with_png="2";;
354 --without-libpng) with_png="0";;
355 --with-libpng=*) with_png="$optarg";;
357 --with-libtimidity) with_libtimidity="2";;
358 --without-libtimidity) with_libtimidity="0";;
359 --with-libtimidity=*) with_libtimidity="$optarg";;
361 --with-freetype) with_freetype="2";;
362 --without-freetype) with_freetype="0";;
363 --with-freetype=*) with_freetype="$optarg";;
364 --with-libfreetype) with_freetype="2";;
365 --without-libfreetype) with_freetype="0";;
366 --with-libfreetype=*) with_freetype="$optarg";;
368 --with-fontconfig) with_fontconfig="2";;
369 --without-fontconfig) with_fontconfig="0";;
370 --with-fontconfig=*) with_fontconfig="$optarg";;
371 --with-libfontconfig) with_fontconfig="2";;
372 --without-libfontconfig) with_fontconfig="0";;
373 --with-libfontconfig=*) with_fontconfig="$optarg";;
375 --with-icu) with_icu="2";;
376 --without-icu) with_icu="0";;
377 --with-icu=*) with_icu="$optarg";;
378 --with-libicu) with_icu="2";;
379 --without-libicu) with_icu="0";;
380 --with-libicu=*) with_icu="$optarg";;
381 --static-icu) static_icu="1";;
382 --static-icu=*) static_icu="$optarg";;
383 --static-libicu) static_icu="1";;
384 --static-libicu=*) static_icu="$optarg";;
386 --with-psp-config) with_psp_config="2";;
387 --without-psp-config) with_psp_config="0";;
388 --with-psp-config=*) with_psp_config="$optarg";;
390 --disable-builtin-depend) enable_builtin_depend="0";;
391 --enable-builtin-depend) enable_builtin_depend="2";;
392 --enable-builtin-depend=*) enable_builtin_depend="$optarg";;
394 --with-makedepend) with_makedepend="2";;
395 --without-makedepend) with_makedepend="0";;
396 --with-makedepend=*) with_makedepend="$optarg";;
398 --with-direct-music) with_direct_music="2";;
399 --without-direct-music) with_direct_music="0";;
400 --with-direct-music=*) with_direct_music="$optarg";;
402 --with-sort) with_sort="2";;
403 --without-sort) with_sort="0";;
404 --with-sort=*) with_sort="$optarg";;
406 --with-iconv) with_iconv="2";;
407 --without-iconv) with_iconv="0";;
408 --with-iconv=*) with_iconv="$optarg";;
410 --with-midi=*) with_midi="$optarg";;
411 --with-midi-arg=*) with_midi_arg="$optarg";;
413 --without-distcc) with_distcc="0";;
414 --with-distcc) with_distcc="2";;
415 --with-distcc=*) with_distcc="$optarg";;
417 --without-ccache) with_ccache="0";;
418 --with-ccache) with_ccache="2";;
419 --with-ccache=*) with_ccache="$optarg";;
421 --without-nforenum) with_nforenum="0";;
422 --with-nforenum) with_nforenum="2";;
423 --with-nforenum=*) with_nforenum="$optarg";;
425 --without-grfcodec) with_grfcodec="0";;
426 --with-grfcodec) with_grfcodec="2";;
427 --with-grfcodec=*) with_grfcodec="$optarg";;
429 --without-osx-sysroot) with_osx_sysroot="0";;
430 --with-osx-sysroot) with_osx_sysroot="2";;
431 --with-osx-sysroot=*) with_osx_sysroot="$optarg";;
433 --without-application-bundle) with_application_bundle="0";;
434 --with-application-bundle) with_application_bundle="1";;
435 --with-application-bundle=*) with_application_bundle="$optarg";;
437 --without-threads) with_threads="0";;
438 --with-threads) with_threads="1";;
439 --with-threads=*) with_threads="$optarg";;
441 CC=* | --CC=*) CC="$optarg";;
442 CXX=* | --CXX=*) CXX="$optarg";;
443 CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";;
444 CXXFLAGS=* | --CXXFLAGS=*) CXXFLAGS="$optarg";;
445 LDFLAGS=* | --LDFLAGS=*) LDFLAGS="$optarg";;
446 CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*) CFLAGS_BUILD="$optarg";;
447 CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";;
448 LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*) LDFLAGS_BUILD="$optarg";;
450 --ignore-extra-parameters) ignore_extra_parameters="1";;
453 if [ "$ignore_extra_parameters" = "0" ]; then
454 log 1 "Unknown option $p"
457 log 1 "Unknown option $p ignored"
463 if [ -n "$prev_p" ]; then
464 log 1 "configure: error: missing argument to --$prev_p"
469 echo "" > $config_log
470 log 2 "Invocation: $0 $*"
474 # Here we save all params, so we can later on do an exact redo of this
475 # configuration, without having the user to re-input stuff
477 echo "Running configure with following options:" >> $config_log
478 echo "" >> $config_log
480 configure="$CONFIGURE_EXECUTABLE --ignore-extra-parameters"
481 for p in $save_params_array; do
483 p=`echo "$p" | sed 's@_@-@g;s@\n@@g;s@ @\\ @g'`
484 # Only save those params that aren't empty
485 configure="$configure --$p=\"$v\""
488 echo "$configure" >> $config_log
489 echo "$configure" > config.cache
490 echo "" >> $config_log
494 # Some params want to be in full uppercase, else they might not work as
495 # expected.. fix that here
497 endian=`echo $endian | tr '[a-z]' '[A-Z]'`
498 os=`echo $os | tr '[a-z]' '[A-Z]'`
499 cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
501 # Check if all params have valid values
503 # Endian only allows AUTO, LE and, BE
504 if [ -z "`echo $endian | egrep '^(AUTO|LE|BE|PREPROCESSOR)$'`" ]; then
505 log 1 "configure: error: invalid option --endian=$endian"
506 log 1 " Available options are: --endian=[AUTO|LE|BE]"
509 if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
510 log 1 "configure: error: invalid option --endian=$endian"
511 log 1 " PREPROCESSOR is only available for OSX"
514 # OS only allows DETECT, UNIX, OSX, FREEBSD, OPENBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
515 if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
516 log 1 "configure: error: invalid option --os=$os"
517 log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
520 # cpu_type can be either 32 or 64
521 if [ -z "`echo $cpu_type | egrep '^(32|64|DETECT)$'`" ]; then
522 log 1 "configure: error: invalid option --cpu-type=$cpu_type"
523 log 1 " Available options are: --cpu-type[=DETECT|32|64]"
526 # enable_debug should be between 0 and 4
527 if [ -z "`echo $enable_debug | egrep '^[0123]$'`" ]; then
528 log 1 "configure: error: invalid option --enable-debug=$enable_debug"
529 log 1 " Available options are: --enable-debug[=0123]"
533 # enable_desync_debug should be between 0 and 3
534 if [ -z "`echo $enable_desync_debug | egrep '^[012]$'`" ]; then
535 log 1 "configure: error: invalid option --enable-desync-debug=$enable_desync_debug"
536 log 1 " Available options are: --enable-desync-debug[=012]"
547 # Check for universal builds; they only make sense for OSX, so fail if enabled for another OS
548 if [ "$enable_universal" = "0" ]; then
549 log 1 "checking universal build... no"
551 if [ "$os" != "OSX" ]; then
552 log 1 "configure: error: --enable-universal only works on OSX"
555 log 1 "checking universal build... yes, for: $enable_universal"
558 # Already detected by check_build
559 log 1 "checking build cc... $cc_build"
560 log 1 "checking host cc... $cc_host"
565 if [ "$enable_strip" != "0" ]; then
568 log 1 "checking strip... disabled"
572 if [ "$enable_builtin_depend" != "0" ]; then
573 log 1 "checking builtin depend... yes"
574 makedepend="\$(SRC_OBJS_DIR)/\$(DEPEND)"
576 log 1 "checking builtin depend... no"
582 if [ "$enable_static" = "1" ]; then
583 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then
590 if [ "$enable_static" != "0" ]; then
591 log 1 "checking static... yes"
593 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "DOS" ]; then
594 log 1 "WARNING: static is only known to work on Windows, DOS, MacOSX and MorphOS"
595 log 1 "WARNING: use static at your own risk on this platform"
600 log 1 "checking static... no"
603 if [ "$enable_unicode" = "1" ]; then
604 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ]; then
611 if [ "$enable_unicode" != "0" ]; then
612 log 1 "checking unicode... yes"
614 log 1 "checking unicode... no"
617 # Show what we configured
618 if [ "$enable_debug" = "0" ]; then
619 log 1 "using debug level... no"
620 elif [ "$enable_profiling" != "0" ]; then
621 log 1 "using debug level... profiling (debug level $enable_debug)"
623 log 1 "using debug level... level $enable_debug"
626 if [ "$enable_desync_debug" = "0" ]; then
627 log 1 "using desync debug level... no"
629 log 1 "using desync debug level... level $enable_desync_debug"
630 log 1 "WARNING: desync debug functions slow down the game considerably."
631 log 1 "WARNING: use only when you are instructed to do so"
632 log 1 " or when you know what you are doing."
637 if [ "$enable_lto" != "0" ]; then
638 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
639 has_lto=`($cxx_build -dumpspecs 2>&1 | grep '\%{flto') || ($cxx_build -help ipo 2>&1 | grep '\-ipo')`
640 if [ -n "$has_lto" ]; then
641 log 1 "using link time optimization... yes"
644 log 1 "using link time optimization... no"
645 log 1 "WARNING: you selected link time optimization but it is not found."
649 log 1 "using link time optimization... no"
653 if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
654 if [ "$with_osx_sysroot" = "1" ]; then
657 log 1 "checking OSX sysroot... not OSX, skipping"
659 log 1 "configure: error: --with-osx-sysroot only works if OSX is the target"
664 if [ "$with_osx_sysroot" != "0" ]; then
665 if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then
666 # Sysroot manually specified? Check for usability
667 log 1 "checking OSX sysroot... $with_osx_sysroot"
668 if ! check_osx_sdk "$with_osx_sysroot"; then
669 log 1 "Passed sysroot not found/not functional"
673 # If autodetect and no universal, use system default
674 if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then
675 log 1 "checking OSX sysroot... no (use system default)"
677 log 1 "checking OSX sysroot... automatically"
682 if [ -n "$osx_sdk_path" ]; then
683 if [ "$enable_universal" != "0" ]; then
684 if [ -z "$osx_sdk_104_path" ]; then
685 log 1 "WARNING: Could not find a usable 10.4u SDK, the resulting"
686 log 1 "WARNING: binary will only run on OSX 10.5 or later"
687 osx_sdk_104_path="$osx_sdk_path"
689 OSX_SYSROOT="-isysroot $osx_sdk_104_path"
690 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_104_path"
692 OSX_SYSROOT="-isysroot $osx_sdk_path"
693 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_path"
697 if [ "$os" = "OSX" ]; then
698 log 1 "checking OSX sysroot... no (use system default)"
706 if [ "$enable_dedicated" != "0" ]; then
707 log 1 "checking GDI video driver... dedicated server, skipping"
708 log 1 "checking dedicated... found"
710 if [ "$enable_network" = "0" ]; then
711 log 1 "configure: error: building a dedicated server without network support is pointless"
715 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
716 log 1 "checking GDI video driver... found"
718 log 1 "checking GDI video driver... not Windows, skipping"
721 if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
722 log 1 "configure: error: no video driver development files found"
723 log 1 " If you want a dedicated server use --enable-dedicated as parameter"
726 log 1 "checking dedicated... not selected"
730 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
731 log 1 "checking console application... not Windows, skipping"
732 elif [ "$enable_console" = "1" ] && [ "$enable_dedicated" != "0" ]; then
733 log 1 "checking console application... dedicated server, enabled"
735 elif [ "$enable_console" = "1" ]; then
736 log 1 "checking console application... disabled (only used when forced)"
738 elif [ "$enable_console" = "0" ]; then
739 log 1 "checking console application... disabled"
741 log 1 "checking console application... enabled"
744 if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then
745 log 1 "checking network... DOS, skipping"
747 elif [ "$enable_network" != "0" ]; then
748 log 1 "checking network... found"
750 log 1 "checking network... disabled"
753 log 1 "checking squirrel... found"
754 SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
756 if [ "$enable_translator" != "0" ]; then
757 log 1 "checking translator... debug"
758 # -t shows TODO items, normally they are muted
761 log 1 "checking translator... no"
765 if [ "$enable_assert" != "0" ]; then
766 log 1 "checking assert... enabled"
768 log 1 "checking assert... disabled"
771 pre_detect_with_zlib=$with_zlib
774 if [ "$with_zlib" = "0" ] || [ -z "$zlib" ]; then
775 log 1 "WARNING: zlib was not detected or disabled"
776 log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
777 log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
778 log 1 "WARNING: using PNG, or using fonts, ...) will be disabled."
779 if [ "$pre_detect_with_zlib" = "0" ]; then
780 log 1 "WARNING: We strongly suggest you to install zlib."
782 log 1 "configure: error: no zlib detected"
783 log 1 " If you want to compile without zlib use --without-zlib as parameter"
788 pre_detect_with_lzma=$with_lzma
791 if [ "$with_lzma" = "0" ] || [ -z "$lzma_config" ]; then
792 log 1 "WARNING: lzma was not detected or disabled"
793 log 1 "WARNING: OpenTTD doesn't require lzma, but it does mean that many features"
794 log 1 "WARNING: (like loading most savegames/scenarios and joining most servers)"
795 log 1 "WARNING: will be disabled."
796 if [ "$pre_detect_with_lzma" = "0" ]; then
797 log 1 "WARNING: We strongly suggest you to install liblzma."
798 log 1 "configure: error: no liblzma detected"
800 log 1 " If you want to compile without lzma use --without-lzma as parameter"
805 pre_detect_with_lzo2=$with_lzo2
808 if [ "$with_lzo2" = "0" ] || [ -z "$lzo2" ]; then
809 log 1 "WARNING: liblzo2 was not detected or disabled"
810 log 1 "WARNING: OpenTTD doesn't require liblzo2, but it does mean that"
811 log 1 "WARNING: loading old savegames/scenarios will be disabled."
812 if [ "$pre_detect_with_lzo2" = "0" ]; then
813 log 1 "WARNING: We strongly suggest you to install liblzo2."
815 log 1 "configure: error: no liblzo2 detected"
816 log 1 " If you want to compile without liblzo2 use --without-liblzo2 as parameter"
828 if [ "$with_direct_music" != "0" ]; then
829 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
830 if [ "$with_direct_music" != "1" ]; then
831 log 1 "configure: error: direct-music is only supported on Win32 targets"
834 with_direct_music="0"
836 log 1 "checking direct-music... not Windows, skipping"
844 if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
845 endian="PREPROCESSOR"
848 log 1 "checking endianess... $endian"
850 # Suppress language errors when there is a version defined, indicating a release
851 # It just isn't pretty if any release produces warnings in the languages.
852 if [ -f "$ROOT_DIR/version" ]; then
854 log 1 "suppress language errors... yes"
857 log 1 "suppress language errors... no"
860 if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
861 if [ "$os" = "MORPHOS" ]; then
862 strip_arg="--strip-all --strip-unneeded --remove-section .comment"
863 elif [ "$os" = "OSX" ]; then
865 elif [ "$os" = "OS2" ]; then
867 # OS2 uses strip via gcc, because it needs to be feed to emxbind
868 LDFLAGS="$LDFLAGS -s"
869 elif [ "$os" = "SUNOS" ]; then
870 # The GNU strip does know -s, the non-GNU doesn't
871 # So try to detect it (in a bit of an ugly way)
872 strip_arg="`$strip -s strip.test 2>/dev/null && echo \"-s\"`"
877 log 1 "checking stripping... $strip $strip_arg"
880 log 1 "checking stripping... skipped"
883 if [ "$with_distcc" = "0" ]; then
884 log 1 "checking distcc... no"
885 elif [ "$with_distcc" = "1" ]; then
888 log 1 "checking distcc... no (only used when forced)"
889 elif [ "$with_distcc" = "2" ]; then
892 distcc="$with_distcc"
894 if [ "$with_distcc" != "0" ]; then
895 res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
896 if [ "$res" != "distcc" ]; then
898 log 1 "checking distcc... no"
899 if [ "$with_distcc" = "2" ]; then
900 log 1 "configure: error: no distcc detected, but was forced to be used"
903 if [ "$with_distcc" != "1" ]; then
904 log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
909 log 1 "checking distcc... $distcc"
912 if [ "$with_ccache" = "0" ]; then
913 log 1 "checking ccache... no"
914 elif [ "$with_ccache" = "1" ]; then
917 log 1 "checking ccache... no (only used when forced)"
918 elif [ "$with_ccache" = "2" ]; then
921 ccache="$with_ccache"
923 if [ "$with_ccache" != "0" ]; then
924 res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
925 if [ "$res" != "ccache" ]; then
927 log 1 "checking ccache... no"
928 if [ "$with_ccache" = "2" ]; then
929 log 1 "configure: error: no ccache detected, but was forced to be used"
932 if [ "$with_ccache" != "1" ]; then
933 log 1 "configure: error: '$with_ccache' doesn't seem a ccache to me"
938 log 1 "checking ccache... $ccache"
944 if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then
945 log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum"
949 if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then
950 log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec"
954 if [ "$os" = "DOS" ]; then
958 if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
959 if [ "$with_application_bundle" = "1" ]; then
960 with_application_bundle="0"
962 log 1 "checking OSX application bundle... not OSX, skipping"
964 log 1 "configure: error: --with-application-bundle only works if OSX is the target"
969 if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then
975 if [ "$os" = "OSX" ]; then
976 # Test on ppc970 (G5) - we can optimize there
978 if [ "$enable_osx_g5" != "0" ]; then
979 log 1 "detecting ppc970 (G5)... yes (forced)"
981 # First, are we a real OSX system, else we can't detect it
982 native=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | grep darwin`
983 # If $host doesn't match $build , we are cross-compiling
984 if [ -n "$native" ] && [ "$build" = "$host" ]; then
985 $cxx_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector
988 if [ -n "$res" ]; then
989 # This is G5, add flags for it
992 log 1 "detecting ppc970 (G5)... yes"
996 log 1 "detecting ppc970 (G5)... no"
1001 log 1 "detecting ppc970 (G5)... no (cross-compiling)"
1005 if [ "$enable_osx_g5" != "0" ]; then
1006 log 1 "configure: error: ppc970 (OSX G5) selected, but not compiling for OSX"
1007 log 1 "configure: error: either select OSX as OS, or deselect ppc970"
1013 if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then
1014 log 1 "checking revision... svn detection"
1015 elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && [ -n "`LC_ALL=C svn info $ROOT_DIR/.. | grep '^URL:.*tags$'`" ]; then
1016 # subversion changed its behaviour; now not all folders have a .svn folder,
1017 # but only the root folder. Since making tags requires a (sparse) checkout
1018 # of the tags folder, the folder of the tag does not have a .svn folder
1019 # anymore and this fails to detect the subversion repository checkout.
1020 log 1 "checking revision... svn detection (tag)"
1021 elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
1022 log 1 "checking revision... git detection"
1023 elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`hg help 2>/dev/null`" ]; then
1024 log 1 "checking revision... hg detection"
1025 elif [ -f "$ROOT_DIR/.ottdrev" ]; then
1026 log 1 "checking revision... source tarball"
1028 log 1 "checking revision... no detection"
1029 log 1 "WARNING: there is no means to determine the version."
1030 log 1 "WARNING: please use a subversion, mercurial, or git checkout of OpenTTD."
1031 log 1 "WARNING: you can only join game servers that have been compiled without"
1032 log 1 "WARNING: version detection."
1033 log 1 "WARNING: there is a great chance you desync."
1034 log 1 "WARNING: USE WITH CAUTION!"
1039 if [ "$doc_dir" = "1" ]; then
1040 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1041 doc_dir="share/doc/openttd"
1043 doc_dir="$data_dir/docs"
1046 doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1049 if [ "$icon_theme_dir" = "1" ]; then
1050 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1051 icon_theme_dir="share/icons/hicolor"
1056 icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1059 if [ "$personal_dir" = "1" ]; then
1060 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
1061 personal_dir="OpenTTD"
1062 elif [ "$os" = "OSX" ]; then
1063 personal_dir="Documents/OpenTTD"
1065 personal_dir=".openttd"
1068 personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1071 if [ "$shared_dir" = "1" ]; then
1072 # we are using default values
1073 if [ "$os" = "OSX" ]; then
1074 shared_dir="/Library/Application\\\\ Support/OpenTTD"
1079 shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1082 if [ "$man_dir" = "1" ]; then
1083 # add manpage on UNIX systems
1084 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
1085 man_dir="share/man/man6"
1090 man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1093 if [ "$menu_dir" = "1" ]; then
1094 # add a freedesktop menu item only for some UNIX systems
1095 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1096 menu_dir="share/applications"
1101 menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1106 if [ -n "$personal_dir" ]
1108 log 1 "personal home directory... $personal_dir"
1110 log 1 "personal home directory... none"
1113 if [ -n "$shared_dir" ]
1115 log 1 "shared data directory... $shared_dir"
1117 log 1 "shared data directory... none"
1120 if [ -n "$install_dir" ]
1122 log 1 "installation directory... $install_dir"
1124 log 1 "installation directory... none"
1127 if [ -n "$icon_theme_dir" ]
1129 log 1 "icon theme directory... $icon_theme_dir"
1131 log 1 "icon theme directory... none"
1134 if [ -n "$man_dir" ]
1136 log 1 "manual page directory... $man_dir"
1138 log 1 "manual page directory... none"
1141 if [ -n "$menu_dir" ]
1143 log 1 "menu item directory... $menu_dir"
1145 log 1 "menu item directory... none"
1149 make_compiler_cflags() {
1152 # $2 - name of the cflags variable
1153 # $3 - name of the cxxflags variable
1154 # $4 - name of the ldflags variable
1155 # $5 - name of the features variable
1157 eval eval "flags=\\\$$2"
1158 eval eval "cxxflags=\\\$$3"
1159 eval eval "ldflags=\\\$$4"
1160 eval eval "features=\\\$$5"
1162 if [ `basename $1 | cut -c 1-3` = "icc" ]; then
1163 # Enable some things only for certain ICC versions
1164 cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
1166 flags="$flags -rdynamic"
1167 ldflags="$ldflags -rdynamic"
1169 if [ -z "$first_time_icc_check" ]; then
1170 first_time_icc_check=no
1171 if [ $cc_version -lt 90 ]; then
1172 log 1 "WARNING: you seem to be using a very old version of ICC"
1173 log 1 "WARNING: OpenTTD hasn't been tested with this version"
1175 elif [ $cc_version -lt 120 ]; then
1176 log 1 "WARNING: you seem to be using an unsupported ICC version"
1177 log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD"
1182 flags="$flags -Wall"
1183 # remark #111: statement is unreachable
1184 flags="$flags -wd111"
1185 # remark #181: argument is incompatible with corresponding format string conversion
1186 # ICC is very picky about signedness of operands, warnings provided by GCC are enough
1187 flags="$flags -wd181"
1188 # remark #271: trailing comma is nonstandard
1189 flags="$flags -wd271"
1190 # remark #280: selector expression is constant
1191 flags="$flags -wd280"
1192 # remark #304: access control not specified ("public" by default)
1193 flags="$flags -wd304"
1194 # remark #383: value copied to temporary, reference to temporary used
1195 flags="$flags -wd383"
1196 # remark #444: destructor for base class ... is not virtual
1197 flags="$flags -wd444"
1198 # remark #593: variable ... was set but never used
1199 flags="$flags -wd593"
1200 # warning #654: overloaded virtual function ... is only partially overridden in class ...
1201 flags="$flags -wd654"
1202 # remark #810: conversion from ... to ... may lose significant bits
1203 flags="$flags -wd810"
1204 # remark #869: parameter ... was never referenced
1205 flags="$flags -wd869"
1206 # warning #873: function ... ::operator new ... has no corresponding operator delete ...
1207 flags="$flags -wd873"
1208 # remark #981: operands are evaluated in unspecified order
1209 flags="$flags -wd981"
1210 # remark #1418: external function definition with no prior declaration
1211 flags="$flags -wd1418"
1212 # remark #1419: external declaration in primary source file
1213 flags="$flags -wd1419"
1214 # remark #1572: floating-point equality and inequality
1215 flags="$flags -wd1572"
1216 # remark #1599: declaration hides variable/parameter ...
1217 flags="$flags -wd1599"
1218 # remark #1720: function ... ::operator new ... has no corresponding member operator delete ...
1219 flags="$flags -wd1720"
1221 if [ $cc_version -lt 110 ]; then
1222 # warns about system headers with recent glibc:
1223 # warning #1292: attribute "__nonnull__" ignored
1224 flags="$flags -wd1292"
1227 if [ $cc_version -ge 100 ]; then
1228 # warning #1899: multicharacter character literal (potential portability problem)
1229 flags="$flags -wd1899"
1230 # vec report defaults to telling where it did loop vectorisation, which is not very important
1231 flags="$flags -vec-report=0 "
1234 if [ $cc_version -ge 110 ]; then
1235 # remark #2259: non-pointer conversion from ... to ... may lose significant bits
1236 flags="$flags -wd2259"
1237 # Use c++0x mode so static_assert() is available
1238 cxxflags="$cxxflags -std=c++0x"
1241 if [ "$enable_lto" != "0" ]; then
1242 has_ipo=`$1 -help ipo | grep '\-ipo'`
1243 if [ -n "$has_ipo" ]; then
1244 # Use IPO (only if we see IPO exists and is requested)
1246 features="$features lto"
1249 elif [ `basename $1 | grep 'clang'` ]; then
1250 # Enable some things only for certain clang versions
1251 cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
1253 # aliasing rules are not held in openttd code
1254 flags="$flags -fno-strict-aliasing"
1256 # -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
1257 # -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
1258 flags="$flags -Wall -W"
1260 # warning: unused parameter '...'
1261 flags="$flags -Wno-unused-parameter"
1263 # warning: expression result unused
1264 flags="$flags -Wno-unused-value"
1266 # warning: multi-character character constant
1267 flags="$flags -Wno-multichar"
1269 # warning: explicitly assigning a variable of type '...' to itself
1270 # it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
1271 flags="$flags -Wno-self-assign"
1273 if [ "$cc_version" -lt "30" ]; then
1274 # warning: equality comparison with extraneous parentheses
1275 flags="$flags -Wno-parentheses"
1276 # warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
1277 flags="$flags -Wno-sign-compare"
1280 if [ "$cc_version" -ge "30" ]; then
1281 # warning: equality comparison with extraneous parentheses
1282 # this warning could be useful, but it warns about code in squirrel
1283 flags="$flags -Wno-parentheses-equality"
1286 if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then
1287 # ccache and distcc run separate preprocess and compile passes,
1288 # both are fed with the same CFLAGS. Unfortunately, clang
1289 # complains about -I when compiling preprocessed files:
1290 # "clang: warning: argument unused during compilation: '-I /usr/include'"
1291 flags="$flags -Qunused-arguments"
1294 if [ "$enable_assert" -eq "0" ]; then
1295 # do not warn about unused variables when building without asserts
1296 flags="$flags -Wno-unused-variable"
1299 # rdynamic is used to get useful stack traces from crash reports.
1300 ldflags="$ldflags -rdynamic"
1302 # Enable some things only for certain GCC versions
1303 cc_version=`$1 -dumpversion | cut -c 1,3`
1305 if [ $cc_version -lt 33 ]; then
1306 log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
1310 flags="$flags -Wall -Wno-multichar -Wsign-compare -Wundef"
1311 flags="$flags -Wwrite-strings -Wpointer-arith"
1312 flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
1313 flags="$flags -Wformat=2 -Wformat-security"
1315 if [ $enable_assert -eq 0 ]; then
1316 # Do not warn about unused variables when building without asserts
1317 flags="$flags -Wno-unused-variable"
1318 if [ $cc_version -ge 46 ]; then
1319 # GCC 4.6 gives more warnings, disable them too
1320 flags="$flags -Wno-unused-but-set-variable"
1321 flags="$flags -Wno-unused-but-set-parameter"
1325 if [ $cc_version -ge 34 ]; then
1326 # Warn when a variable is used to initialise itself:
1328 flags="$flags -Winit-self"
1331 if [ $cc_version -ge 40 ]; then
1332 # GCC 4.0+ complains about that we break strict-aliasing.
1333 # On most places we don't see how to fix it, and it doesn't
1334 # break anything. So disable strict-aliasing to make the
1335 # compiler all happy.
1336 flags="$flags -fno-strict-aliasing"
1337 # Warn about casting-out 'const' with regular C-style cast.
1338 # The preferred way is const_cast<>() which doesn't warn.
1339 flags="$flags -Wcast-qual"
1342 if [ $cc_version -ge 42 ]; then
1343 # GCC 4.2+ automatically assumes that signed overflows do
1344 # not occur in signed arithmetics, whereas we are not
1345 # sure that they will not happen. It furthermore complains
1346 # about its own optimized code in some places.
1347 flags="$flags -fno-strict-overflow"
1348 # GCC 4.2 no longer includes -Wnon-virtual-dtor in -Wall.
1349 # Enable it in order to be consistent with older GCC versions.
1350 flags="$flags -Wnon-virtual-dtor"
1353 if [ $cc_version -ge 43 ]; then
1354 # Use gnu++0x mode so static_assert() is available.
1355 # Don't use c++0x, it breaks mingw (with gcc 4.4.0).
1356 cxxflags="$cxxflags -std=gnu++0x"
1359 if [ $cc_version -eq 45 ]; then
1360 # Prevent optimisation supposing enums are in a range specified by the standard
1361 # For details, see http://gcc.gnu.org/PR43680
1362 flags="$flags -fno-tree-vrp"
1365 if [ $cc_version -ge 47 ]; then
1366 # Disable -Wnarrowing which gives many warnings, such as:
1367 # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
1368 # They are valid according to the C++ standard, but useless.
1369 cxxflags="$cxxflags -Wno-narrowing"
1370 # Disable bogus 'attempt to free a non-heap object' warning
1371 flags="$flags -Wno-free-nonheap-object"
1374 if [ "$enable_lto" != "0" ]; then
1375 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
1376 has_lto=`$1 -dumpspecs | grep '\%{flto'`
1377 if [ -n "$has_lto" ]; then
1378 # Use LTO only if we see LTO exists and is requested
1379 if [ $cc_version -lt 46 ]; then
1380 flags="$flags -flto"
1382 flags="$flags -flto=jobserver"
1384 ldflags="$ldflags -fwhole-program"
1385 features="$features lto"
1389 has_rdynamic=`$1 -dumpspecs | grep rdynamic`
1390 if [ -n "$has_rdynamic" ]; then
1391 # rdynamic is used to get useful stack traces from crash reports.
1392 flags="$flags -rdynamic"
1393 ldflags="$ldflags -rdynamic"
1397 eval "$2=\"$flags\""
1398 eval "$3=\"$cxxflags\""
1399 eval "$4=\"$ldflags\""
1400 eval "$5=\"$features\""
1403 make_cflags_and_ldflags() {
1404 # General CFlags for BUILD
1405 CFLAGS_BUILD="$CFLAGS_BUILD"
1406 # Special CXXFlags for BUILD
1407 CXXFLAGS_BUILD="$CXXFLAGS_BUILD"
1409 LDFLAGS_BUILD="$LDFLAGS_BUILD"
1410 # FEATURES for BUILD (lto)
1412 # General CFlags for HOST
1414 # Special CXXFlags for HOST
1415 CXXFLAGS="$CXXFLAGS"
1416 # Libs to compile. In fact this is just LDFLAGS
1418 # LDFLAGS used for HOST
1420 # FEATURES for HOST (lto)
1423 make_compiler_cflags "$cc_build" "CFLAGS_BUILD" "CXXFLAGS_BUILD" "LDFLAGS_BUILD" "FEATURES_BUILD"
1424 make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
1426 CFLAGS="$CFLAGS -D$os"
1428 if [ "$enable_debug" = "0" ]; then
1429 # No debug, add default stuff
1430 OBJS_SUBDIR="release"
1431 if [ "$os" = "MORPHOS" ]; then
1432 CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
1433 LDFLAGS="$LDFLAGS -noixemul"
1436 CFLAGS="-O2 -fomit-frame-pointer $CFLAGS"
1440 # Each debug level reduces the optimization by a bit
1441 if [ $enable_debug -ge 1 ]; then
1442 CFLAGS="$CFLAGS -g -D_DEBUG"
1443 if [ "$os" = "PSP" ]; then
1444 CFLAGS="$CFLAGS -G0"
1447 if [ $enable_debug -ge 2 ]; then
1448 CFLAGS="$CFLAGS -fno-inline"
1450 if [ $enable_debug -ge 3 ]; then
1451 CFLAGS="$CFLAGS -O0"
1453 CFLAGS="$CFLAGS -O2"
1457 if [ $enable_debug -le 2 ]; then
1458 if basename "$cc_host" | grep "gcc" &>/dev/null; then
1459 # Define only when compiling with GCC. Some GLIBC versions use GNU
1460 # extensions in a way that breaks build with at least ICC.
1461 # This requires -O1 or more, so debug level 3 (-O0) is excluded.
1462 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
1464 # Just add -O1 to the tools needed for building.
1465 CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
1469 if [ "$os" = "OSX" ] && [ $cc_version -eq 40 ]; then
1470 # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
1471 # wrongly optimizing ^= in loops. This disables the failing optimisation.
1472 CFLAGS="$CFLAGS -fno-expensive-optimizations"
1475 if [ "$enable_profiling" != "0" ]; then
1477 LDFLAGS="$LDFLAGS -pg"
1480 if [ "$with_threads" = "0" ]; then
1481 CFLAGS="$CFLAGS -DNO_THREADS"
1484 if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
1485 if [ "$os" = "CYGWIN" ]; then
1486 flags="$flags -mwin32"
1487 LDFLAGS="$LDFLAGS -mwin32"
1489 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
1490 if [ $cc_version -lt 46 ]; then
1491 flags="$flags -mno-cygwin"
1492 LDFLAGS="$LDFLAGS -mno-cygwin"
1495 if [ "$enable_console" != "0" ]; then
1496 LDFLAGS="$LDFLAGS -Wl,--subsystem,console"
1498 LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
1501 LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32"
1503 if [ $cc_version -ge 44 ]; then
1504 LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
1506 if [ $cc_version -ge 47 ]; then
1507 CFLAGS="$CFLAGS -mno-ms-bitfields"
1512 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "FREEBSD" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
1513 LIBS="$LIBS -lpthread"
1516 if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
1519 if [ "$os" = "WINCE" ]; then
1520 LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
1522 if [ "$os" = "PSP" ]; then
1523 CFLAGS="$CFLAGS -I`$psp_config -p`/include"
1524 LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
1526 CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
1527 LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
1530 if [ "$os" = "MORPHOS" ]; then
1531 # -Wstrict-prototypes generates much noise because of system headers
1532 CFLAGS="$CFLAGS -Wno-strict-prototypes"
1535 if [ "$os" = "OPENBSD" ]; then
1536 LIBS="$LIBS -pthread"
1539 if [ "$os" = "FREEBSD" ]; then
1540 LIBS="$LIBS -lpthread"
1543 if [ "$os" = "OSX" ]; then
1544 LDFLAGS="$LDFLAGS -framework Cocoa"
1546 # Add macports include dir which is not always set a default system dir. This avoids zillions of bogus warnings.
1547 CFLAGS="$CFLAGS -isystem/opt/local/include"
1549 if [ "$enable_dedicated" = "0" ] && ([ "$cpu_type" = "32" ] || [ "$enable_universal" != "0" ]); then
1550 LIBS="$LIBS -framework QuickTime"
1552 CFLAGS="$CFLAGS -DNO_QUICKTIME"
1555 if [ "$enable_universal" = "0" ]; then
1556 # Universal builds set this elsewhere
1557 CFLAGS="$OSX_SYSROOT $CFLAGS"
1558 LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
1561 if [ "$enable_universal" = "0" ] && [ $cc_version -ge 40 ]; then
1562 # Only set the min version when not doing an universal build.
1563 # Universal builds set the version elsewhere.
1564 if [ "$cpu_type" = "64" ]; then
1565 CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
1567 gcc_cpu=`$cc_host -dumpmachine`
1568 if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
1569 # PowerPC build can run on 10.3
1570 CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
1572 # Intel is only available starting from 10.4
1573 CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
1579 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
1580 LIBS="$LIBS -lmidi -lbe"
1583 # Most targets act like UNIX, just with some additions
1584 if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
1585 CFLAGS="$CFLAGS -DUNIX"
1587 # And others like Windows
1588 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
1589 CFLAGS="$CFLAGS -DWIN"
1592 if [ -n "$allegro_config" ]; then
1593 CFLAGS="$CFLAGS -DWITH_ALLEGRO"
1594 CFLAGS="$CFLAGS `$allegro_config --cflags`"
1595 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1596 if [ "$enable_static" != "0" ]; then
1597 LIBS="$LIBS `$allegro_config --static --libs`"
1599 LIBS="$LIBS `$allegro_config --libs`"
1604 if [ -n "$sdl_config" ]; then
1605 CFLAGS="$CFLAGS -DWITH_SDL"
1606 # SDL must not add _GNU_SOURCE as it breaks many platforms
1607 CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
1608 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1609 if [ "$enable_static" != "0" ]; then
1610 LIBS="$LIBS `$sdl_config --static-libs`"
1612 LIBS="$LIBS `$sdl_config --libs`"
1617 if [ "$with_cocoa" != "0" ]; then
1618 CFLAGS="$CFLAGS -DWITH_COCOA"
1619 LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox"
1621 if [ "$enable_cocoa_quartz" != "0" ]; then
1622 CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ"
1625 if [ "$enable_cocoa_quickdraw" != "0" ]; then
1626 CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW"
1630 if [ "$with_zlib" != "0" ]; then
1631 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1636 CFLAGS="$CFLAGS -DWITH_ZLIB"
1639 if [ -n "$lzma_config" ]; then
1640 CFLAGS="$CFLAGS -DWITH_LZMA"
1641 CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' ' '`"
1643 if [ "$enable_static" != "0" ]; then
1644 CFLAGS="$CFLAGS -DLZMA_API_STATIC"
1645 LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' ' '`"
1647 LIBS="$LIBS `$lzma_config --libs | tr '\n\r' ' '`"
1651 if [ "$with_lzo2" != "0" ]; then
1652 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1657 CFLAGS="$CFLAGS -DWITH_LZO"
1660 # 64bit machines need -D_SQ64
1661 if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
1662 CFLAGS="$CFLAGS -D_SQ64"
1664 CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR"
1666 if [ -n "$png_config" ]; then
1667 CFLAGS="$CFLAGS -DWITH_PNG"
1668 CFLAGS="$CFLAGS `$png_config --cppflags --I_opts | tr '\n\r' ' '`"
1670 # The extra flags are unneeded for latest libpng-config, but some versions are so broken...
1671 if [ "$enable_static" != "0" ]; then
1672 if [ "$os" = "OSX" ]; then
1673 LIBS="$LIBS `$png_config --prefix`/lib/libpng.a"
1675 LIBS="$LIBS `$png_config --static --ldflags | tr '\n\r' ' '`"
1678 LIBS="$LIBS `$png_config --ldflags | tr '\n\r' ' '`"
1682 if [ -n "$fontconfig_config" ]; then
1683 CFLAGS="$CFLAGS -DWITH_FONTCONFIG"
1684 CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' ' '`"
1686 if [ "$enable_static" != "0" ]; then
1687 if [ "$os" = "OSX" ]; then
1688 # fontconfig_config goes via pkg-config on all systems, which doesn't know --prefix
1689 # 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
1690 LIBS="$LIBS `$fontconfig_config --variable=prefix`/lib/libfontconfig.a `$fontconfig_config --libs --static | sed s@-lfontconfig@@`"
1692 LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' ' '`"
1695 LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' ' '`"
1699 if [ -n "$freetype_config" ]; then
1700 CFLAGS="$CFLAGS -DWITH_FREETYPE"
1701 CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`"
1703 if [ "$enable_static" != "0" ]; then
1704 if [ "$os" = "OSX" ]; then
1705 LIBS="$LIBS `$freetype_config --prefix`/lib/libfreetype.a"
1707 # Is it possible to do static with freetype, if so: how?
1708 LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
1711 LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
1715 if [ -n "$icu_config" ]; then
1716 CFLAGS="$CFLAGS -DWITH_ICU"
1717 CFLAGS="$CFLAGS `$icu_config --cppflags | tr '\n\r' ' '`"
1719 # Some icu-configs have the 'feature' of not adding a space where others do add the space
1720 if [ "$static_icu" != "0" ]; then
1721 LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly` `$icu_config --ldflags-layout | tr '\n\r' ' ' | sed s/licu/lsicu/g`"
1723 LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly` `$icu_config --ldflags-layout | tr '\n\r' ' '`"
1728 if [ "$with_direct_music" != "0" ]; then
1729 CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
1730 # GCC 4.0+ doesn't like the DirectX includes (gives tons of
1731 # warnings on it we won't be able to fix). For now just
1732 # suppress those warnings.
1733 if [ $cc_version -ge 40 ]; then
1734 CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
1738 if [ -n "$libtimidity" ]; then
1739 if [ "$enable_static" != "0" ]; then
1740 LIBS="$LIBS $libtimidity"
1742 LIBS="$LIBS -ltimidity"
1744 CFLAGS="$CFLAGS -DLIBTIMIDITY"
1747 if [ "$with_iconv" != "0" ]; then
1748 CFLAGS="$CFLAGS -DWITH_ICONV"
1749 if [ "$link_to_iconv" = "yes" ]; then
1750 LIBS="$LIBS -liconv"
1751 if [ "$with_iconv" != "2" ]; then
1752 CFLAGS="$CFLAGS -I$with_iconv/include"
1753 LIBS="$LIBS -L$with_iconv/lib"
1757 if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then
1758 CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV"
1762 if [ -n "$with_midi" ]; then
1763 CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\""
1765 if [ -n "$with_midi_arg" ]; then
1766 CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\""
1769 if [ "$enable_dedicated" != "0" ]; then
1770 CFLAGS="$CFLAGS -DDEDICATED"
1773 if [ "$enable_unicode" != "0" ]; then
1774 CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
1777 if [ "$enable_network" != "0" ]; then
1778 CFLAGS="$CFLAGS -DENABLE_NETWORK"
1780 if [ "$os" = "BEOS" ]; then
1781 LDFLAGS="$LDFLAGS -lbind -lsocket"
1784 if [ "$os" = "HAIKU" ]; then
1785 LDFLAGS="$LDFLAGS -lnetwork"
1788 if [ "$os" = "SUNOS" ]; then
1789 LDFLAGS="$LDFLAGS -lnsl -lsocket"
1793 if [ "$enable_static" != "0" ]; then
1794 # OSX can't handle -static in LDFLAGS
1795 if [ "$os" != "OSX" ]; then
1796 LDFLAGS="$LDFLAGS -static"
1800 if [ "$enable_assert" = "0" ]; then
1801 CFLAGS="$CFLAGS -DNDEBUG"
1802 CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG"
1805 if [ "$enable_desync_debug" != "0" ]; then
1806 CFLAGS="$CFLAGS -DRANDOM_DEBUG"
1809 if [ "$enable_osx_g5" != "0" ]; then
1810 CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
1813 if [ -n "$personal_dir" ]; then
1814 CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
1817 if [ -n "$shared_dir" ]; then
1818 CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
1821 CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
1823 if [ "$enable_lto" != "0" ]; then
1824 lto_build=`echo "$FEATURES_BUILD" | grep "lto"`
1825 lto_host=`echo "$FEATURES" | grep "lto"`
1826 if [ -z "$lto_build$lto_host" ]; then
1827 log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it"
1828 log 1 "WARNING: LTO/IPO has been disabled"
1830 if [ -n "$lto_build" ]; then
1831 LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD"
1833 if [ -n "$lto_host" ]; then
1834 LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS"
1838 log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
1839 log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
1840 log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
1841 log 1 "using CFLAGS... $CFLAGS"
1842 log 1 "using CXXFLAGS... $CXXFLAGS"
1843 log 1 "using LDFLAGS... $LIBS $LDFLAGS"
1845 # Makedepend doesn't like something like: -isysroot /OSX/blabla
1846 # so convert it to: -isysroot -OSX/blabla. makedepend just ignores
1847 # any - command it doesn't know, so we are pretty save.
1848 # Lovely hackish, not?
1849 # Btw, this almost always comes from outside the configure, so it is
1850 # not something we can control.
1851 # Also make makedepend aware of compiler's built-in defines.
1852 if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then
1853 # Append CXXFLAGS possibly containing -std=c++0x
1854 cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
1856 # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
1857 cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
1862 if [ "$with_distcc" != "0" ]; then
1863 cc_host="$distcc $cc_host"
1864 cxx_host="$distcc $cxx_host"
1866 log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
1870 if [ "$with_ccache" != "0" ]; then
1871 cc_host="$ccache $cc_host"
1872 cxx_host="$ccache $cxx_host"
1878 # $1 - Type for message (build / host)
1879 # $2 - What to fill with the found compiler
1880 # $3 - System to try
1881 # $4 - Compiler to try
1882 # $5 - Env-setting to try
1883 # $6 - GCC alike to try
1884 # $7 - CC alike to try
1885 # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
1886 # $9 - What the command is to check for
1888 if [ -n "$3" ]; then
1890 if [ -z "$6" ]; then
1895 machine=`eval $compiler $9 2>/dev/null`
1897 eval "$2=\"$compiler\""
1899 log 2 "executing $compiler $9"
1900 log 2 " returned $machine"
1901 log 2 " exit code $ret"
1903 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1904 log 1 "checking $1... $compiler not found"
1905 log 1 "I couldn't detect any $6 binary for $3"
1909 if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
1910 log 1 "checking $1... expected $3, found $machine"
1911 log 1 "the compiler suggests it doesn't build code for the machine you specified"
1914 elif [ -n "$4" ]; then
1915 # Check for manual compiler
1916 machine=`$4 $9 2>/dev/null`
1920 log 2 "executing $4 $9"
1921 log 2 " returned $machine"
1922 log 2 " exit code $ret"
1924 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1925 log 1 "checking $1... $4 not found"
1926 log 1 "the selected binary doesn't seem to be a $6 binary"
1930 # Nothing given, autodetect
1932 if [ -n "$5" ]; then
1933 machine=`$5 $9 2>/dev/null`
1937 log 2 "executing $5 $9"
1938 log 2 " returned $machine"
1939 log 2 " exit code $ret"
1941 # The user defined a GCC that doesn't reply to $9.. abort
1942 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1943 log 1 "checking $1... $5 unusable"
1944 log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary"
1945 log 1 "please redefine the CC/CXX environment to a $6 binary"
1949 log 2 "checking $1... CC/CXX not set (skipping)"
1951 # No $5, so try '$6'
1952 machine=`$6 $9 2>/dev/null`
1956 log 2 "executing $6 $9"
1957 log 2 " returned $machine"
1958 log 2 " exit code $ret"
1960 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1962 machine=`$7 $9 2>/dev/null`
1966 log 2 "executing $7 $9"
1967 log 2 " returned $machine"
1968 log 2 " exit code $ret"
1971 if [ -z "$machine" ]; then
1972 log 1 "checking $1... $6 not found"
1973 log 1 "I couldn't detect any $6 binary on your system"
1974 log 1 "please define the CC/CXX environment to where it is located"
1982 if [ "$8" != "0" ]; then
1984 log 1 "checking $1... $res"
1986 log 1 "checking $1... $machine"
1991 if [ "$os" = "FREEBSD" ]; then
1992 # FreeBSD's C compiler does not support dump machine.
1993 # However, removing C support is not possible because PSP must be linked with the C compiler.
1994 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
1996 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
2001 # By default the host is the build
2002 if [ -z "$host" ]; then host="$build"; fi
2004 if [ "$os" = "FREEBSD" ]; then
2005 # FreeBSD's C compiler does not support dump machine.
2006 # However, removing C support is not possible because PSP must be linked with the C compiler.
2007 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
2009 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
2014 check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine"
2018 # By default the host is the build
2019 if [ -z "$host" ]; then host="$build"; fi
2020 check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine"
2024 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2025 check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
2030 if [ "$os" = "OS2" ]; then
2031 # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly
2032 log 1 "checking host strip... using gcc -s option"
2033 elif [ "$os" = "OSX" ]; then
2034 # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something
2035 echo "int main(int argc, char *argv[]) { }" > strip.test.c
2036 $cxx_host strip.test.c -o strip.test
2037 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test"
2038 rm -f strip.test.c strip.test
2040 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V"
2045 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
2046 echo "int main(int argc, char *argv[]) { }" > lipo.test.c
2047 $cxx_host lipo.test.c -o lipo.test
2048 check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test"
2049 rm -f lipo.test.c lipo.test
2055 if [ -n "$1" ]; then
2056 if echo "$1" | grep -q / ; then
2057 # Seems to be a file system path
2060 osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk"
2062 if [ ! -d "$osx_sdk_path" ]; then
2063 # No directory, not present or garbage
2067 # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced
2068 sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4"
2071 cat > tmp.osx.mm << EOF
2072 #include <Cocoa/Cocoa.h>
2074 kCGBitmapByteOrder32Host;
2078 execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2079 eval $execute > /dev/null
2081 log 2 "executing $execute"
2082 log 2 " exit code $ret"
2083 rm -f tmp.osx.mm tmp.osx
2087 check_direct_music() {
2089 #include <windows.h>
2090 #include <dmksctrl.h>
2091 #include <dmusici.h>
2092 #include <dmusicc.h>
2093 #include <dmusicf.h>
2094 int main(int argc, char *argv[]) { }" > direct_music.test.c
2095 $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
2097 rm -f direct_music.test.c direct_music.test
2099 if [ "$res" != "0" ]; then
2100 if [ "$with_direct_music" != "1" ]; then
2101 log 1 "configure: error: direct-music is not available on this system"
2104 with_direct_music="0"
2106 log 1 "checking direct-music... not found"
2108 log 1 "checking direct-music... found"
2112 check_makedepend() {
2113 if [ "$enable_builtin_depend" != "0" ]; then
2117 if [ "$with_makedepend" = "0" ]; then
2118 log 1 "checking makedepend... disabled"
2122 if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then
2123 makedepend="makedepend"
2125 makedepend="$with_makedepend"
2128 rm -f makedepend.tmp
2129 touch makedepend.tmp
2130 res=`$makedepend -fmakedepend.tmp 2>/dev/null`
2132 log 2 "executing $makedepend -f makedepend.tmp"
2133 log 2 " returned `cat makedepend.tmp`"
2134 log 2 " exit code $ret"
2136 if [ ! -s makedepend.tmp ]; then
2137 rm -f makedepend.tmp makedepend.tmp.bak
2139 if [ "$with_makedepend" = "2" ]; then
2140 log 1 "checking makedepend... not found"
2142 log 1 "I couldn't detect any makedepend on your system"
2143 log 1 "please locate it via --makedepend=[binary]"
2146 elif [ "$with_makedepend" != "1" ]; then
2147 log 1 "checking makedepend... $makedepend not found"
2149 log 1 "the selected file doesn't seem to be a valid makedepend binary"
2153 log 1 "checking makedepend... not found"
2160 rm -f makedepend.tmp makedepend.tmp.bak
2162 log 1 "checking makedepend... $makedepend"
2166 # $1 - requested version (major.minor)
2167 # $2 - version we got (major.minor)
2169 if [ -z "$2" ]; then
2173 req_major=`echo $1 | cut -d. -f1`
2174 got_major=`echo $2 | cut -d. -f1`
2175 if [ $got_major -lt $req_major ]; then
2177 elif [ $got_major -gt $req_major ]; then
2181 req_minor=`echo $1 | cut -d. -f2`
2182 got_minor=`echo $2 | cut -d. -f2`
2183 if [ $got_minor -lt $req_minor ]; then
2190 # Not all awks allow gsub(), so we test for that here! It is in fact all we need...
2192 # These awks are known to work. Test for them explicit
2193 awks="gawk mawk nawk"
2195 awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
2196 awk_param="' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", \$0); print \$0; }' 2>/dev/null"
2197 awk_result="a.o b.o c.o "
2198 log 2 "Detecing awk..."
2200 log 2 "Trying: $awk_prefix $awk $awk_param"
2201 res=`eval $awk_prefix $awk $awk_param`
2202 log 2 "Result: '$res'"
2203 if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
2204 # User didn't supply his own awk, so try to detect some other known working names for an awk
2205 for awk in $awks; do
2206 log 2 "Trying: $awk_prefix $awk $awk_param"
2207 res=`eval $awk_prefix $awk $awk_param`
2208 log 2 "Result: '$res'"
2209 if [ "$res" = "$awk_result" ]; then break; fi
2212 if [ "$res" != "$awk_result" ]; then
2213 log 1 "checking awk... not found"
2214 log 1 "configure: error: no awk found"
2215 log 1 "configure: error: please install one of the following: $awks"
2219 if [ "$res" != "$awk_result" ]; then
2220 log 1 "checking awk... not found"
2221 log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
2225 log 1 "checking awk... $awk"
2229 if [ "$os" = "DETECT" ]; then
2230 # Detect UNIX, OSX, FREEBSD, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
2232 # Try first via dumpmachine, then via uname
2233 os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
2234 /linux/ { print "UNIX"; exit}
2235 /darwin/ { print "OSX"; exit}
2236 /freebsd/ { print "FREEBSD"; exit}
2237 /openbsd/ { print "OPENBSD"; exit}
2238 /netbsd/ { print "NETBSD"; exit}
2239 /hp-ux/ { print "HPUX"; exit}
2240 /morphos/ { print "MORPHOS"; exit}
2241 /beos/ { print "BEOS"; exit}
2242 /haiku/ { print "HAIKU"; exit}
2243 /sunos/ { print "SUNOS"; exit}
2244 /solaris/ { print "SUNOS"; exit}
2245 /cygwin/ { print "CYGWIN"; exit}
2246 /mingw/ { print "MINGW"; exit}
2247 /os2/ { print "OS2"; exit}
2248 /dos/ { print "DOS"; exit}
2249 /wince/ { print "WINCE"; exit}
2250 /psp/ { print "PSP"; exit}
2253 if [ -z "$os" ]; then
2254 os=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | $awk '
2255 /linux/ { print "UNIX"; exit}
2256 /darwin/ { print "OSX"; exit}
2257 /freebsd/ { print "FREEBSD"; exit}
2258 /openbsd/ { print "OPENBSD"; exit}
2259 /netbsd/ { print "NETBSD"; exit}
2260 /hp-ux/ { print "HPUX"; exit}
2261 /morphos/ { print "MORPHOS"; exit}
2262 /beos/ { print "BEOS"; exit}
2263 /haiku/ { print "HAIKU"; exit}
2264 /sunos/ { print "SUNOS"; exit}
2265 /cygwin/ { print "CYGWIN"; exit}
2266 /mingw/ { print "MINGW"; exit}
2267 /os\/2/ { print "OS2"; exit}
2268 /gnu/ { print "UNIX"; exit}
2272 if [ -z "$os" ]; then
2273 log 1 "detecting OS... none detected"
2274 log 1 "I couldn't detect your OS. Please use --os=OS to force one"
2275 log 1 "Allowed values are: UNIX, OSX, FREEBSD, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
2279 log 1 "detecting OS... $os"
2281 log 1 "forcing OS... $os"
2286 # 0 means no, 1 is auto-detect, 2 is force
2287 if [ "$with_allegro" = "0" ]; then
2288 log 1 "checking Allegro... disabled"
2294 if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then
2295 log 1 "configure: error: it is impossible to compile both Allegro and COCOA"
2296 log 1 "configure: error: please deselect one of them and try again"
2300 if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2301 log 1 "configure: error: it is impossible to compile a dedicated with Allegro"
2302 log 1 "configure: error: please deselect one of them and try again"
2306 if [ "$enable_dedicated" != "0" ]; then
2307 log 1 "checking Allegro... dedicated server, skipping"
2313 # By default on OSX we don't use SDL. The rest is auto-detect
2314 if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2315 log 1 "checking Allegro... OSX, skipping"
2321 if [ "$with_allegro" = "1" ] || [ "$with_allegro" = "" ] || [ "$with_allegro" = "2" ]; then
2322 allegro_config="allegro-config"
2324 allegro_config="$with_allegro"
2327 version=`$allegro_config --version 2>/dev/null`
2329 log 2 "executing $allegro_config --version"
2330 log 2 " returned $version"
2331 log 2 " exit code $ret"
2333 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2334 log 1 "checking Allegro... not found"
2336 # It was forced, so it should be found.
2337 if [ "$with_allegro" != "1" ]; then
2338 log 1 "configure: error: allegro-config couldn't be found"
2339 log 1 "configure: error: you supplied '$with_allegro', but it seems invalid"
2347 log 1 "checking Allegro... found"
2352 # 0 means no, 1 is auto-detect, 2 is force
2353 if [ "$with_sdl" = "0" ]; then
2354 log 1 "checking SDL... disabled"
2360 if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
2361 log 1 "configure: error: it is impossible to compile both SDL and COCOA"
2362 log 1 "configure: error: please deselect one of them and try again"
2366 if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2367 log 1 "configure: error: it is impossible to compile a dedicated with SDL"
2368 log 1 "configure: error: please deselect one of them and try again"
2372 if [ "$enable_dedicated" != "0" ]; then
2373 log 1 "checking SDL... dedicated server, skipping"
2379 # By default on OSX we don't use SDL. The rest is auto-detect
2380 if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2381 log 1 "checking SDL... OSX, skipping"
2387 if [ "$os" = "OSX" ]; then
2388 log 1 "WARNING: sdl is known to fail on some versions of Mac OS X"
2389 log 1 "WARNING: with some hardware configurations. Use at own risk!"
2393 if [ "$with_sdl" = "1" ] || [ "$with_sdl" = "" ] || [ "$with_sdl" = "2" ]; then
2394 sdl_config="sdl-config"
2396 sdl_config="$with_sdl"
2399 version=`$sdl_config --version 2>/dev/null`
2401 log 2 "executing $sdl_config --version"
2402 log 2 " returned $version"
2403 log 2 " exit code $ret"
2405 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2406 log 1 "checking SDL... not found"
2408 # It was forced, so it should be found.
2409 if [ "$with_sdl" != "1" ]; then
2410 log 1 "configure: error: sdl-config couldn't be found"
2411 log 1 "configure: error: you supplied '$with_sdl', but it seems invalid"
2419 log 1 "checking SDL... found"
2423 # Try to find the best SDK available. For a normal build this
2424 # is currently the 10.5 SDK as this is needed to compile all
2425 # optional code. Because such an executable won't run on 10.4
2426 # or lower, also check for the 10.4u SDK when doing an universal
2429 # Check for the 10.5 SDK, but try 10.6 if that fails
2430 check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path=""
2432 if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then
2433 # No better SDK or universal build enabled? Check 10.4u SDK as well
2434 local old_sdk="$osx_sdk_path"
2435 if check_osx_sdk "10.4u"; then
2436 osx_sdk_104_path="$osx_sdk_path"
2440 if [ -z "$old_sdk" ]; then
2441 osx_sdk_path="$osx_sdk_104_path"
2443 osx_sdk_path="$old_sdk"
2447 if [ -z "$osx_sdk_path" ]; then
2448 log 1 "Your system SDK is probably too old"
2449 log 1 "Please install/upgrade your Xcode to >= 2.5"
2456 # 0 means no, 1 is auto-detect, 2 is force
2457 if [ "$with_cocoa" = "0" ]; then
2458 log 1 "checking COCOA... disabled"
2463 if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2464 log 1 "configure: error: it is impossible to compile a dedicated with COCOA"
2465 log 1 "configure: error: please deselect one of them and try again"
2469 if [ "$enable_dedicated" != "0" ]; then
2470 log 1 "checking COCOA... dedicated server, skipping"
2476 # By default on OSX we use COCOA. The rest doesn't support it
2477 if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then
2478 log 1 "checking COCOA... not OSX, skipping"
2484 if [ "$os" != "OSX" ]; then
2485 log 1 "checking COCOA... not OSX"
2487 log 1 "configure: error: COCOA video driver is only supported for OSX"
2491 log 1 "checking COCOA... found"
2494 if [ "$enable_cocoa_quartz" != "0" ]; then
2495 log 1 "checking whether to enable the Quartz window subdriver... yes"
2497 log 1 "checking whether to enable the Quartz window subdriver... no"
2503 detect_quickdraw() {
2504 # 0 means no, 1 is auto-detect, 2 is force
2505 if [ "$enable_cocoa_quickdraw" = "0" ]; then
2506 log 1 "checking Quickdraw window subdriver... disabled"
2510 # Assume QuickDraw is available when doing an universal build
2511 if [ "$enable_universal" != "0" ]; then
2512 log 1 "checking Quickdraw window subdriver... found"
2516 # 64 bits doesn't have quickdraw
2517 if [ "$cpu_type" = "64" ]; then
2518 enable_cocoa_quickdraw="0"
2519 log 1 "checking Quickdraw window subdriver... disabled (64 bits)"
2523 cat > tmp.osx.mm << EOF
2524 #include <AvailabilityMacros.h>
2525 #import <Cocoa/Cocoa.h>
2526 int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; }
2528 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2529 eval $execute > /dev/null
2531 log 2 "executing $execute"
2532 log 2 " exit code $ret"
2533 rm -f tmp.osx.mm tmp.osx
2534 if [ "$ret" != "0" ]; then
2535 log 1 "checking Quickdraw window subdriver... not found"
2537 # It was forced, so it should be found.
2538 if [ "$enable_cocoa_quickdraw" != "1" ]; then
2539 log 1 "configure: error: Quickdraw window driver could not be found"
2543 enable_cocoa_quickdraw=0
2547 enable_cocoa_quickdraw=1
2548 log 1 "checking Quickdraw window subdriver... found"
2552 # $1 - config-param ($with_zlib value)
2553 # $2 - library name ('zlib', sets $zlib)
2554 # $3 - static library name (libz.a)
2555 # $4 - header directory ()
2556 # $5 - header name (zlib.h)
2557 # $6 - force static (if non-empty)
2559 if [ -n "$6" ]; then force_static="1"; fi
2561 # 0 means no, 1 is auto-detect, 2 is force
2562 if [ "$1" = "0" ]; then
2563 log 1 "checking $2... disabled"
2569 log 2 "detecting $2"
2571 if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2572 eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2574 if [ -z "$res" ]; then
2575 log 2 " trying /usr/include/$4$5... no"
2576 eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2579 if [ -z "$res" ]; then
2580 log 2 " trying /usr/local/include/$4$5... no"
2581 eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2584 if [ -z "$res" ]; then
2585 log 2 " trying /mingw/include/$4$5... no"
2586 eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2589 if [ -z "$res" ]; then
2590 log 2 " trying /opt/local/include/$4$5... no"
2592 if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
2593 eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2595 if [ -z "$res" ]; then
2596 log 2 " trying /usr/pkg/include/$4$5... no"
2599 if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
2600 eval "$2=`ls -1 /boot/common/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2602 if [ -z "$res" ]; then
2603 log 2 " trying /boot/common/include/$4$5... no"
2608 if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
2610 log 2 " trying $res... found"
2611 # Now find the static lib, if needed
2612 eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2614 if [ -z "$res" ]; then
2615 log 2 " trying /lib/$3... no"
2616 eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2619 if [ -z "$res" ]; then
2620 log 2 " trying /usr/lib/$3... no"
2621 eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2624 if [ -z "$res" ]; then
2625 log 2 " trying /usr/local/lib/$3... no"
2626 eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2629 if [ -z "$res" ]; then
2630 log 2 " trying /mingw/lib/$3... no"
2631 log 1 "configure: error: $2 couldn't be found"
2632 log 1 "configure: error: you requested a static link, but I can't find $3"
2638 # Make sure it exists
2639 if [ -f "$1" ]; then
2640 eval "$2=`ls $1 2>/dev/null`"
2642 eval "$2=`ls $1/$3 2>/dev/null`"
2647 if [ -z "$res" ]; then
2648 log 1 "checking $2... not found"
2649 if [ "$1" = "2" ]; then
2650 log 1 "configure: error: $2 couldn't be found"
2653 elif [ "$1" != "1" ]; then
2654 log 1 "configure: error: $2 couldn't be found"
2655 log 1 "configure: error: you supplied '$1', but it seems invalid"
2666 log 2 " trying $res... found"
2668 log 1 "checking $2... found"
2672 detect_library "$with_zlib" "zlib" "libz.a" "" "zlib.h"
2676 detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
2679 detect_libtimidity() {
2680 detect_library "$with_libtimidity" "libtimidity" "libtimidity.a" "" "timidity.h"
2684 # 0 means no, 1 is auto-detect, 2 is force
2685 if [ "$with_lzma" = "0" ]; then
2686 log 1 "checking liblzma... disabled"
2692 if [ "$with_lzma" = "1" ] || [ "$with_lzma" = "" ] || [ "$with_lzma" = "2" ]; then
2693 lzma_config="pkg-config liblzma"
2695 lzma_config="$with_lzma"
2698 version=`$lzma_config --modversion 2>/dev/null`
2700 log 2 "executing $lzma_config --modversion"
2701 log 2 " returned $version"
2702 log 2 " exit code $ret"
2704 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2705 log 1 "checking liblzma... not found"
2707 # It was forced, so it should be found.
2708 if [ "$with_lzma" != "1" ]; then
2709 log 1 "configure: error: pkg-config liblzma couldn't be found"
2710 log 1 "configure: error: you supplied '$with_lzma', but it seems invalid"
2718 log 1 "checking liblzma... found"
2722 # 0 means no, 1 is auto-detect, 2 is force
2723 if [ "$with_png" = "0" ]; then
2724 log 1 "checking libpng... disabled"
2730 if [ "$with_zlib" = "0" ] || [ -z "$zlib" ]; then
2731 if [ "$with_png" != "1" ]; then
2732 log 1 "checking libpng... no zlib"
2733 log 1 "ERROR: libpng was forced, but zlib was not detected / disabled."
2734 log 1 "ERROR: libpng depends on zlib."
2739 log 1 "checking libpng... no zlib, skipping"
2745 if [ "$with_png" = "1" ] || [ "$with_png" = "" ] || [ "$with_png" = "2" ]; then
2746 png_config="libpng-config"
2748 png_config="$with_png"
2751 version=`$png_config --version 2>/dev/null`
2753 log 2 "executing $png_config --version"
2754 log 2 " returned $version"
2755 log 2 " exit code $ret"
2757 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2758 log 1 "checking libpng... not found"
2760 # It was forced, so it should be found.
2761 if [ "$with_png" != "1" ]; then
2762 log 1 "configure: error: libpng-config couldn't be found"
2763 log 1 "configure: error: you supplied '$with_png', but it seems invalid"
2771 log 1 "checking libpng... found"
2775 # 0 means no, 1 is auto-detect, 2 is force
2776 if [ "$with_freetype" = "0" ]; then
2777 log 1 "checking libfreetype... disabled"
2782 if [ "$with_freetype" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2783 log 1 "checking libfreetype... dedicated server, skipping"
2789 if [ "$with_zlib" = "0" ] || [ -z "$zlib" ]; then
2790 if [ "$with_freetype" != "1" ]; then
2791 log 1 "checking libfreetype... no zlib"
2792 log 1 "ERROR: libfreetype was forced, but zlib was not detected / disabled."
2793 log 1 "ERROR: libfreetype depends on zlib."
2798 log 1 "checking libfreetype... no zlib, skipping"
2804 if [ "$with_freetype" = "1" ] || [ "$with_freetype" = "" ] || [ "$with_freetype" = "2" ]; then
2805 freetype_config="freetype-config"
2807 freetype_config="$with_freetype"
2810 version=`$freetype_config --version 2>/dev/null`
2812 log 2 "executing freetype_config --version"
2813 log 2 " returned $version"
2814 log 2 " exit code $ret"
2816 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2817 log 1 "checking libfreetype... not found"
2819 # It was forced, so it should be found.
2820 if [ "$with_freetype" != "1" ]; then
2821 log 1 "configure: error: freetype-config couldn't be found"
2822 log 1 "configure: error: you supplied '$with_freetype', but it seems invalid"
2830 log 1 "checking libfreetype... found"
2833 detect_fontconfig() {
2834 # 0 means no, 1 is auto-detect, 2 is force
2835 if [ "$with_fontconfig" = "0" ]; then
2836 log 1 "checking libfontconfig... disabled"
2838 fontconfig_config=""
2841 if [ "$with_fontconfig" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2842 log 1 "checking libfontconfig... dedicated server, skipping"
2844 fontconfig_config=""
2847 if [ "$with_fontconfig" != "2" ] && [ -z "$freetype_config" ]; then
2848 log 1 "checking libfontconfig... no freetype, skipping"
2850 fontconfig_config=""
2854 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2855 log 1 "checking libfontconfig... WIN32, skipping"
2856 fontconfig_config=""
2860 if [ "$os" = "OSX" ]; then
2861 log 1 "checking libfontconfig... OSX, skipping"
2862 fontconfig_config=""
2866 if [ "$with_fontconfig" = "1" ] || [ "$with_fontconfig" = "" ] || [ "$with_fontconfig" = "2" ]; then
2867 fontconfig_config="pkg-config fontconfig"
2869 fontconfig_config="$with_fontconfig"
2872 version=`$fontconfig_config --modversion 2>/dev/null`
2874 check_version '2.3' "$version"
2876 log 2 "executing $fontconfig_config --modversion"
2877 log 2 " returned $version"
2878 log 2 " exit code $ret"
2880 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2881 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2882 log 1 "checking libfontconfig... needs at least version 2.3.0, fontconfig NOT enabled"
2884 log 1 "checking libfontconfig... not found"
2887 # It was forced, so it should be found.
2888 if [ "$with_fontconfig" != "1" ]; then
2889 log 1 "configure: error: fontconfig-config couldn't be found"
2890 log 1 "configure: error: you supplied '$with_fontconfig', but it seems invalid"
2894 fontconfig_config=""
2898 log 1 "checking libfontconfig... found"
2902 # 0 means no, 1 is auto-detect, 2 is force
2903 if [ "$with_icu" = "0" ]; then
2904 log 1 "checking libicu... disabled"
2909 if [ "$with_icu" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2910 log 1 "checking libicu... dedicated server, skipping"
2916 if [ "$with_icu" = "1" ] || [ "$with_icu" = "" ] || [ "$with_icu" = "2" ]; then
2917 icu_config="icu-config"
2919 icu_config="$with_icu"
2922 version=`$icu_config --version 2>/dev/null`
2924 check_version '3.6' "$version"
2926 log 2 "executing $icu_config --version"
2927 log 2 " returned $version"
2928 log 2 " exit code $ret"
2930 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2931 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2932 log 1 "checking libicu... needs at least version 3.6.0, icu NOT enabled"
2934 log 1 "checking libicu... not found"
2937 # It was forced, so it should be found.
2938 if [ "$with_icu" != "1" ]; then
2939 log 1 "configure: error: icu-config couldn't be found"
2940 log 1 "configure: error: you supplied '$with_icuconfig', but it seems invalid"
2948 log 1 "checking libicu... found"
2951 detect_pspconfig() {
2952 # 0 means no, 1 is auto-detect, 2 is force
2953 if [ "$with_psp_config" = "0" ]; then
2954 log 1 "checking psp-config... disabled"
2960 if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
2961 log 1 "checking psp-config... not PSP, skipping"
2967 if [ "$os" != "PSP" ]; then
2968 log 1 "checking psp-config... not PSP"
2970 log 1 "configure: error: psp-config is only supported for PSP"
2974 if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
2975 psp_config="psp-config"
2977 psp_config="$with_psp_config"
2980 version=`$psp_config -p 2>/dev/null`
2982 log 2 "executing $psp_config -p"
2983 log 2 " returned $version"
2984 log 2 " exit code $ret"
2986 if [ -z "$version" ] || [ "$ret" != "0" ]; then
2987 log 1 "checking psp-config... not found"
2988 log 1 "configure: error: psp-config couldn't be found"
2990 # It was forced, so it should be found.
2991 if [ "$with_psp_config" != "1" ]; then
2992 log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
2997 log 1 "checking psp-config... found"
3001 # 0 means no, 1 is auto-detect, 2 is force
3002 if [ "$with_iconv" = "0" ]; then
3003 log 1 "checking iconv... disabled"
3008 if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then
3009 log 1 "checking iconv... not OSX, skipping"
3015 # Try to find iconv.h, seems to only thing to detect iconv with
3017 if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
3018 iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
3019 if [ -z "$iconv" ]; then
3020 iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
3023 # Make sure it exists
3024 iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
3027 if [ -z "$iconv" ]; then
3028 log 1 "checking iconv... not found"
3029 if [ "$with_iconv" = "2" ]; then
3030 log 1 "configure: error: iconv couldn't be found"
3033 elif [ "$with_iconv" != "1" ]; then
3034 log 1 "configure: error: iconv couldn't be found"
3035 log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it"
3043 if [ "$with_iconv" = "1" ]; then
3047 log 2 "found iconv in $iconv"
3049 log 1 "checking iconv... found"
3051 # There are different implementations of iconv. The older ones,
3052 # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
3053 # IEEE 1003.1 (2004), pass a non-const pointer.
3055 cat > tmp.iconv.cpp << EOF
3056 #include "src/stdafx.h"
3059 static char buf[1024];
3061 const char *inbuf = "";
3063 size_t outlen = 1023;
3065 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
3068 execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
3069 eval $execute > /dev/null
3071 log 2 "executing $execute"
3072 log 2 " exit code $ret"
3073 if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi
3074 log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv"
3076 cat > tmp.iconv.cpp << EOF
3077 #include "src/stdafx.h"
3080 static char buf[1024];
3084 size_t outlen = 1023;
3086 return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
3089 execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
3090 eval $execute > /dev/null
3092 log 2 "executing $execute"
3093 log 2 " exit code $ret"
3094 if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi
3095 log 1 "checking whether to link to iconv... $link_to_iconv"
3096 rm -f tmp.iconv tmp.iconv.cpp
3110 log 2 "running echo <array> | $1"
3112 if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then
3114 log 2 " result was valid"
3116 log 2 " result was invalid"
3121 if [ "$with_sort" = "0" ]; then
3122 log 1 "checking sort... disabled"
3127 if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then
3129 if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi
3130 if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi
3131 if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi
3132 if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi
3133 if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi
3134 if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi
3136 _detect_sort "$with_sort"
3139 if [ -z "$sort" ]; then
3140 if [ "$with_sort" = "2" ]; then
3141 log 1 "checking sort... not found"
3143 log 1 "configure: error: couldn't detect sort on your system"
3145 elif [ "$with_sort" != "1" ]; then
3146 log 1 "checking sort... $with_sort not found"
3148 log 1 "configure: error: '$with_sort' doesn't look like a sort to me"
3149 log 1 "configure: error: please verify its location and function and try again"
3153 log 1 "checking sort... not found"
3156 log 1 "checking sort... $sort"
3161 # 0 means no, 1 is auto-detect, 2 is force
3162 if [ "$with_grfcodec" = "0" ]; then
3163 log 1 "checking grfcodec... disabled"
3169 if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then
3172 grfcodec="$with_grfcodec"
3175 version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3177 log 2 "executing grfcodec -v"
3178 log 2 " returned $version"
3179 log 2 " exit code $ret"
3181 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
3182 if [ -n "$version" ] && [ "$version" -lt "949" ]; then
3183 log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled"
3185 log 1 "checking grfcodec... not found"
3188 # It was forced, so it should be found.
3189 if [ "$with_grfcodec" != "1" ]; then
3190 log 1 "configure: error: grfcodec couldn't be found"
3191 log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid"
3199 log 1 "checking grfcodec... found"
3203 # 0 means no, 1 is auto-detect, 2 is force
3204 if [ "$with_nforenum" = "0" ]; then
3205 log 1 "checking nforenum... disabled"
3211 if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then
3214 nforenum="$with_nforenum"
3217 version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3219 log 2 "executing nforenum -v"
3220 log 2 " returned $version"
3221 log 2 " exit code $ret"
3223 if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
3224 if [ -n "$version" ] && [ "$version" -lt "949" ]; then
3225 log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled"
3227 log 1 "checking nforenum... not found"
3230 # It was forced, so it should be found.
3231 if [ "$with_nforenum" != "1" ]; then
3232 log 1 "configure: error: nforenum couldn't be found"
3233 log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid"
3241 log 1 "checking nforenum... found"
3245 if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
3246 log 1 "forcing cpu-type... $cpu_type bits"
3249 echo "#define _SQ64 1" > tmp.64bit.cpp
3250 echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
3251 echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
3252 echo "int main() { return 0; }" >> tmp.64bit.cpp
3253 execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -DTESTING 2>&1"
3254 cpu_type="`eval $execute 2>/dev/null`"
3256 log 2 "executing $execute"
3257 log 2 " returned $cpu_type"
3258 log 2 " exit code $ret"
3259 if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
3260 log 1 "detecting cpu-type... $cpu_type bits"
3261 rm -f tmp.64bit tmp.64bit.cpp
3266 T_CXXFLAGS="$CXXFLAGS"
3267 T_LDFLAGS="$LDFLAGS"
3269 SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
3271 # All the data needed to compile a single target
3272 # Make sure if you compile multiple targets to
3273 # use multiple OBJS_DIR, because all in-between
3274 # binaries are stored in there, and nowhere else.
3276 s@!!CC_HOST!!@$cc_host@g;
3277 s@!!CXX_HOST!!@$cxx_host@g;
3278 s@!!CC_BUILD!!@$cc_build@g;
3279 s@!!CXX_BUILD!!@$cxx_build@g;
3280 s@!!WINDRES!!@$windres@g;
3281 s@!!STRIP!!@$strip $strip_arg@g;
3283 s@!!CFLAGS!!@$T_CFLAGS@g;
3284 s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g;
3285 s@!!CXXFLAGS!!@$T_CXXFLAGS@g;
3286 s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g;
3287 s@!!STRGEN_FLAGS!!@$strgen_flags@g;
3289 s@!!LDFLAGS!!@$T_LDFLAGS@g;
3290 s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g;
3291 s@!!BIN_DIR!!@$BIN_DIR@g;
3292 s@!!ROOT_DIR!!@$ROOT_DIR@g;
3293 s@!!MEDIA_DIR!!@$MEDIA_DIR@g;
3294 s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
3295 s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
3296 s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
3297 s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
3298 s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g;
3299 s@!!SRC_DIR!!@$SRC_DIR@g;
3300 s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
3301 s@!!OSXAPP!!@$OSXAPP@g;
3302 s@!!LANG_DIR!!@$LANG_DIR@g;
3304 s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g;
3305 s@!!DATA_DIR!!@$prefix_dir/$data_dir@g;
3306 s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g;
3307 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3308 s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g;
3309 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3310 s@!!PERSONAL_DIR!!@$personal_dir@g;
3311 s@!!SHARED_DIR!!@$shared_dir@g;
3312 s@!!INSTALL_DIR!!@$install_dir@g;
3313 s@!!BINARY_NAME!!@$binary_name@g;
3314 s@!!STRGEN!!@$STRGEN@g;
3315 s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
3316 s@!!DEPEND!!@$DEPEND@g;
3317 s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
3318 s@!!ENDIAN_FORCE!!@$endian@g;
3319 s@!!STAGE!!@$STAGE@g;
3320 s@!!MAKEDEPEND!!@$makedepend@g;
3321 s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
3323 s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
3324 s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
3325 s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
3326 s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
3327 s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
3328 s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
3329 s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g;
3330 s@!!LANG_SUPPRESS!!@$lang_suppress@g;
3331 s@!!OBJS_C!!@$OBJS_C@g;
3332 s@!!OBJS_CPP!!@$OBJS_CPP@g;
3333 s@!!OBJS_MM!!@$OBJS_MM@g;
3334 s@!!OBJS_RC!!@$OBJS_RC@g;
3337 s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g;
3339 s@!!DISTCC!!@$distcc@g;
3340 s@!!NFORENUM!!@$nforenum@g;
3341 s@!!GRFCODEC!!@$grfcodec@g;
3344 if [ "$icon_theme_dir" != "" ]; then
3345 SRC_REPLACE="$SRC_REPLACE
3346 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3349 SRC_REPLACE="$SRC_REPLACE
3350 s@!!ICON_THEME_DIR!!@@g;
3354 if [ "$man_dir" != "" ]; then
3355 SRC_REPLACE="$SRC_REPLACE
3356 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3359 SRC_REPLACE="$SRC_REPLACE
3364 if [ "$menu_dir" != "" ]; then
3365 SRC_REPLACE="$SRC_REPLACE
3366 s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g;
3369 SRC_REPLACE="$SRC_REPLACE
3375 generate_menu_item() {
3378 s@!!MENU_GROUP!!@$menu_group@g;
3379 s@!!MENU_NAME!!@$menu_name@g
3381 log 1 "Generating menu item..."
3383 < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop
3391 # Create the main Makefile
3392 log 1 "Generating Makefile..."
3393 echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile
3394 < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile
3395 cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle
3396 echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am
3398 # Make the copy of the source-list, so we don't trigger an unwanted recompile
3399 cp $SOURCE_LIST config.cache.source.list
3400 # Add the current directory, so we don't trigger an unwanted recompile
3401 echo "`pwd`" > config.cache.pwd
3402 # Make sure config.cache is OLDER then config.cache.source.list
3406 if [ "$menu_dir" != "" ]; then
3416 # Create the language file
3417 mkdir -p $LANG_OBJS_DIR
3419 log 1 "Generating lang/Makefile..."
3420 echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile
3421 < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile
3422 echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am
3423 echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
3426 generate_settings() {
3431 # Create the language file
3432 mkdir -p $SETTING_OBJS_DIR
3434 log 1 "Generating setting/Makefile..."
3435 echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile
3436 < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile
3437 echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am
3445 # Create the language file
3446 mkdir -p $GRF_OBJS_DIR
3448 log 1 "Generating grf/Makefile..."
3449 echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
3450 < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
3451 echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
3454 generate_src_normal() {
3459 # Create the source file
3460 mkdir -p $SRC_OBJS_DIR
3462 log 1 "Generating $2/Makefile..."
3463 echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile
3464 < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile
3465 echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am
3466 echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am
3469 generate_src_osx() {
3470 cc_host_orig="$cc_host"
3471 cxx_host_orig="$cxx_host"
3472 CFLAGS_orig="$CFLAGS"
3473 LDFLAGS_orig="$LDFLAGS"
3475 for type in $enable_universal; do
3477 if [ -n "$osx_sdk_104_path" ]; then
3478 # Use 10.4 SDK for 32-bit targets
3479 CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig"
3480 LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig"
3483 # We don't want to duplicate the x86_64 stuff for each target, so do it once here
3484 if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then
3485 # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV
3486 # and they also removed support for QuickTime/QuickDraw
3487 if [ -n "$osx_sdk_path" ]; then
3488 CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig"
3489 LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig"
3491 CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW"
3492 LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`"
3497 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc"
3498 cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3"
3499 cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3"
3500 generate_src_normal "[ppc]" "objs/ppc";;
3502 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970"
3503 cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3504 cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3505 generate_src_normal "[ppc970]" "objs/ppc970";;
3507 BASE_SRC_OBJS_DIR="$OBJS_DIR/i386"
3508 cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4"
3509 cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4"
3510 generate_src_normal "[i386]" "objs/i386";;
3512 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64"
3513 cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3514 cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3515 generate_src_normal "[ppc64]" "objs/ppc64";;
3517 BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64"
3518 cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3519 cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3520 generate_src_normal "[x86_64]" "objs/x86_64";;
3521 *) log 1 "Unknown architecture requested for universal build: $type";;
3527 if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
3530 generate_src_normal "[SRC]" "objs"
3535 echo "'configure' configures OpenTTD."
3537 echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
3539 echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as"
3540 echo "VAR=VALUE. See below for descriptions of some of the useful variables."
3542 echo "Defaults for the options are specified in brackets."
3544 echo "Configuration:"
3545 echo " -h, --help display this help and exit"
3547 echo "System types:"
3548 echo " --build=BUILD configure for building on BUILD [guessed]"
3549 echo " --host=HOST cross-compile to build programs to run"
3550 echo " on HOST [BUILD]"
3551 echo " --windres=WINDRES the windres to use [HOST-windres]"
3552 echo " --strip=STRIP the strip to use [HOST-strip]"
3553 echo " --awk=AWK the awk to use in configure [awk]"
3554 echo " --lipo=LIPO the lipo to use (OSX ONLY) [HOST-lipo]"
3555 echo " --os=OS the OS we are compiling for [DETECT]"
3556 echo " DETECT/UNIX/OSX/FREEBSD/OPENBSD/NETBSD/"
3557 echo " MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/MINGW/OS2/"
3558 echo " DOS/WINCE/PSP/HAIKU"
3559 echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
3562 echo " --prefix-dir=dir specifies the prefix for all installed"
3563 echo " files [/usr/local]"
3564 echo " --binary-dir=dir location of the binary. Will be prefixed"
3565 echo " with the prefix-dir [games]"
3566 echo " --data-dir=dir location of data files (lang, data, gm)."
3567 echo " Will be prefixed with the prefix-dir"
3568 echo " [share/games/openttd]"
3569 echo " --doc-dir=dir location of the doc files"
3570 echo " Will be prefixed with the prefix-dir"
3572 echo " --icon-dir=dir location of icons. Will be prefixed"
3573 echo " with the prefix-dir [share/pixmaps]"
3574 echo " --icon-theme-dir=dir location of icon theme."
3575 echo " Will be prefixed with the prefix-dir"
3576 echo " and postfixed with size-dirs [$icon_theme_dir]"
3577 echo " --man-dir=dir location of the manual page (UNIX only)"
3578 echo " Will be prefixed with the prefix-dir"
3580 echo " --menu-dir=dir location of the menu item. (UNIX only, except OSX)"
3581 echo " Will be prefixed with the prefix-dir"
3582 echo " [share/applications]"
3583 echo " --personal-dir=dir location of the personal directory"
3584 echo " [os-dependent default]"
3585 echo " --shared-dir=dir location of shared data files"
3586 echo " [os-dependent default]"
3587 echo " --install-dir=dir specifies the root to install to."
3588 echo " Useful to install into jails [/]"
3589 echo " --binary-name the name used for the binary, icons,"
3590 echo " desktop file, etc. when installing [openttd]"
3592 echo "Features and packages:"
3593 echo " --enable-debug[=LVL] enable debug-mode (LVL=[0123], 0 is release)"
3594 echo " --enable-desync-debug=[LVL] enable desync debug options (LVL=[012], 0 is none"
3595 echo " --enable-profiling enables profiling"
3596 echo " --enable-lto enables GCC's Link Time Optimization (LTO)/ICC's"
3597 echo " Interprocedural Optimization if available"
3598 echo " --enable-dedicated compile a dedicated server (without video)"
3599 echo " --enable-static enable static compile (doesn't work for"
3601 echo " --enable-translator enable extra output for translators"
3602 echo " --enable-universal[=ARCH] enable universal builds (OSX ONLY). Allowed is any combination"
3603 echo " of architectures: i386 ppc ppc970 ppc64 x86_64"
3604 echo " Default architectures are: i386 ppc"
3605 echo " --enable-osx-g5 enables optimizations for ppc970 (G5) (OSX ONLY)"
3606 echo " --disable-cocoa-quartz disable the quartz window mode driver for Cocoa (OSX ONLY)"
3607 echo " --disable-cocoa-quickdraw disable the quickdraw window mode driver for Cocoa (OSX ONLY)"
3608 echo " --disable-unicode disable unicode support to build win9x"
3609 echo " version (Win32 ONLY)"
3610 echo " --enable-console compile as a console application instead of as a GUI application."
3611 echo " If this setting is active, debug output will appear in the same"
3612 echo " console instead of opening a new window. (Win32 ONLY)"
3613 echo " --disable-network disable network support"
3614 echo " --disable-assert disable asserts (continue on errors)"
3615 echo " --enable-strip enable any possible stripping"
3616 echo " --without-osx-sysroot disable the automatic adding of sysroot "
3618 echo " --without-application-bundle disable generation of application bundle"
3620 echo " --without-menu-entry Don't generate a menu item (Freedesktop based only)"
3621 echo " --menu-group=group Category in which the menu item will be placed (Freedesktop based only)"
3622 echo " --menu-name=name Name of the menu item when placed [OpenTTD]"
3623 echo " --with-direct-music enable direct music support (Win32 ONLY)"
3624 echo " --with-sort=sort define a non-default location for sort"
3625 echo " --with-midi=midi define which midi-player to use"
3626 echo " --with-midi-arg=arg define which args to use for the"
3628 echo " --with-libtimidity enables libtimidity support"
3629 echo " --with-allegro[=allegro-config]"
3630 echo " enables Allegro video driver support"
3631 echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
3632 echo " --with-sdl[=sdl-config] enables SDL video driver support"
3633 echo " --with-zlib[=zlib.a] enables zlib support"
3634 echo " --with-liblzma[=liblzma.a] enables liblzma support"
3635 echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support"
3636 echo " --with-png[=libpng-config] enables libpng support"
3637 echo " --with-freetype[=freetype-config]"
3638 echo " enables libfreetype support"
3639 echo " --with-fontconfig[=pkg-config fontconfig]"
3640 echo " enables fontconfig support"
3641 echo " --with-icu[=icu-config] enables icu (used for right-to-left support)"
3642 echo " --static-icu try to link statically (libsicu instead of"
3643 echo " libicu; can fail as the new name is guessed)"
3644 echo " --with-iconv[=iconv-path] enables iconv support"
3645 echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
3646 echo " --disable-builtin-depend disable use of builtin deps finder"
3647 echo " --with-makedepend[=makedepend] enables makedepend support"
3648 echo " --with-ccache enables ccache support"
3649 echo " --with-distcc enables distcc support"
3650 echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
3652 echo "Some influential environment variables:"
3653 echo " CC C compiler command"
3654 echo " CXX C++ compiler command"
3655 echo " CFLAGS C compiler flags"
3656 echo " CXXFLAGS C++ compiler flags"
3657 echo " WINDRES windres command"
3658 echo " LDFLAGS linker flags, e.g. -L<lib dir> if you"
3659 echo " have libraries in a nonstandard"
3660 echo " directory <lib dir>"
3661 echo " CFLAGS_BUILD C compiler flags for build time tool generation"
3662 echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
3663 echo " LDFLAGS_BUILD linker flags for build time tool generation"
3665 echo "Use these variables to override the choices made by 'configure' or to help"
3666 echo "it to find libraries and programs with nonstandard names/locations."