Remove FileToSaveLoad::SetMode operation parameter
[openttd/fttd.git] / config.lib
blobe18438c4c825bb88842a46e6f9d7ab78d4d0f2bb
1 # $Id$
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/>.
8 log() {
9         if [ $1 = "1" ]; then
10                 shift
11                 echo "$@"
12         else
13                 shift
14         fi
15         echo "$@" >> $config_log
18 set_default() {
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.
22         build=""
23         host=""
24         cc_build=""
25         cc_host=""
26         cxx_build=""
27         cxx_host=""
28         windres=""
29         strip=""
30         lipo=""
31         awk="awk"
32         pkg_config="pkg-config"
33         os="DETECT"
34         endian="AUTO"
35         cpu_type="DETECT"
36         config_log="config.log"
37         prefix_dir="/usr/local"
38         binary_dir="games"
39         data_dir="share/games/openttd"
40         doc_dir="1"
41         icon_dir="share/pixmaps"
42         icon_theme_dir="1"
43         personal_dir="1"
44         shared_dir="1"
45         install_dir="/"
46         man_dir="1"
47         menu_dir="1"
48         menu_group="Game;"
49         menu_name="OpenTTD"
50         binary_name="openttd"
51         enable_debug="0"
52         enable_desync_debug="0"
53         enable_profiling="0"
54         enable_lto="0"
55         enable_dedicated="0"
56         enable_network="1"
57         enable_static="1"
58         enable_translator="0"
59         enable_unicode="1"
60         enable_console="1";
61         enable_assert="1"
62         enable_strip="0"
63         enable_universal="0"
64         enable_osx_g5="0"
65         enable_cocoa_quartz="1"
66         enable_cocoa_quickdraw="1"
67         with_osx_sysroot="1"
68         with_application_bundle="1"
69         with_menu_entry="1"
70         with_allegro="1"
71         with_sdl="1"
72         with_cocoa="1"
73         with_zlib="1"
74         with_lzma="1"
75         with_lzo2="1"
76         with_xdg_basedir="1"
77         with_png="1"
78         enable_builtin_depend="1"
79         with_makedepend="0"
80         with_direct_music="1"
81         with_sort="1"
82         with_iconv="1"
83         with_midi=""
84         with_midi_arg=""
85         with_libtimidity="1"
86         with_freetype="1"
87         with_fontconfig="1"
88         with_icu_layout="1"
89         with_icu_sort="1"
90         static_icu="0"
91         with_psp_config="1"
92         with_threads="1"
93         with_distcc="1"
94         with_ccache="1"
95         with_nforenum="1"
96         with_grfcodec="1"
97         with_sse="1"
99         save_params_array="
100                 build
101                 host
102                 cc_build
103                 cc_host
104                 cxx_build
105                 cxx_host
106                 windres
107                 strip
108                 lipo
109                 awk
110                 pkg_config
111                 os
112                 endian
113                 cpu_type
114                 config_log
115                 prefix_dir
116                 binary_dir
117                 data_dir
118                 doc_dir
119                 icon_dir
120                 icon_theme_dir
121                 man_dir
122                 menu_dir
123                 personal_dir
124                 shared_dir
125                 install_dir
126                 menu_group
127                 menu_name
128                 binary_name
129                 enable_debug
130                 enable_desync_debug
131                 enable_profiling
132                 enable_lto
133                 enable_dedicated
134                 enable_network
135                 enable_static
136                 enable_translator
137                 enable_unicode
138                 enable_console
139                 enable_assert
140                 enable_strip
141                 enable_universal
142                 enable_osx_g5
143                 enable_cocoa_quartz
144                 enable_cocoa_quickdraw
145                 with_osx_sysroot
146                 with_application_bundle
147                 with_allegro
148                 with_sdl
149                 with_cocoa
150                 with_zlib
151                 with_lzma
152                 with_lzo2
153                 with_xdg_basedir
154                 with_png
155                 enable_builtin_depend
156                 with_makedepend
157                 with_direct_music
158                 with_sort
159                 with_iconv
160                 with_midi
161                 with_midi_arg
162                 with_libtimidity
163                 with_freetype
164                 with_fontconfig
165                 with_icu_layout
166                 with_icu_sort
167                 static_icu
168                 with_psp_config
169                 with_threads
170                 with_distcc
171                 with_ccache
172                 with_grfcodec
173                 with_nforenum
174                 with_sse
175         CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
178 detect_params() {
179         # Walk over all params from the user and override any default settings if
180         #  needed. This also handles any invalid option.
181         for p in "$@"; do
182                 if [ -n "$prev_p" ]; then
183                         eval "$prev_p=\$p"
184                         prev_p=
185                         continue
186                 fi
188                 optarg=`expr "x$p" : 'x[^=]*=\(.*\)'`
190                 case "$p" in
191                         --help | -h | -\?)            showhelp; exit 0;;
193                         --config-log)                 prev_p="config_log";;
194                         --config-log=*)               config_log="$optarg";;
196                         --build)                      prev_p="build";;
197                         --build=*)                    build="$optarg";;
199                         --host)                       prev_p="host";;
200                         --host=*)                     host="$optarg";;
202                         --os)                         prev_p="os";;
203                         --os=*)                       os="$optarg";;
205                         --cpu-type)                   prev_p="cpu_type";;
206                         --cpu-type=*)                 cpu_type="$optarg";;
208                         --cc-build)                   prev_p="cc_build";;
209                         --cc-build=*)                 cc_build="$optarg";;
210                         --cc-host)                    prev_p="cc_host";;
211                         --cc-host=*)                  cc_host="$optarg";;
212                         --cxx-build)                  prev_p="cxx_build";;
213                         --cxx-build=*)                cxx_build="$optarg";;
214                         --cxx-host)                   prev_p="cxx_host";;
215                         --cxx-host=*)                 cxx_host="$optarg";;
216                         --windres)                    prev_p="windres";;
217                         --windres=*)                  windres="$optarg";;
218                         --awk)                        prev_p="awk";;
219                         --awk=*)                      awk="$optarg";;
220                         --pkg-config)                 prev_p="pkg_config";;
221                         --pkg-config=*)               pkg_config="$optarg";;
222                         --strip)                      prev_p="strip";;
223                         --strip=*)                    strip="$optarg";;
224                         --lipo)                       prev_p="lipo";;
225                         --lipo=*)                     lipo="$optarg";;
227                         --endian)                     prev_p="endian";;
228                         --endian=*)                   endian="$optarg";;
232                         # Alias --prefix with --prefix-dir, for compatibility with GNU autotools
233                         --prefix-dir | --prefix)      prev_p="prefix_dir";;
234                         --prefix-dir=* | --prefix=*)  prefix_dir="$optarg";;
236                         --binary-dir)                 prev_p="binary_dir";;
237                         --binary-dir=*)               binary_dir="$optarg";;
239                         --data-dir)                   prev_p="data_dir";;
240                         --data-dir=*)                 data_dir="$optarg";;
242                         --doc-dir)                    prev_p="doc_dir";;
243                         --doc-dir=*)                  doc_dir="$optarg";;
245                         --icon-dir)                   prev_p="icon_dir";;
246                         --icon-dir=*)                 icon_dir="$optarg";;
248                         --icon-theme-dir)             prev_p="icon_theme_dir";;
249                         --icon-theme-dir=*)           icon_theme_dir="$optarg";;
250                         --without-icon-theme)         icon_theme_dir="";;
252                         --menu-dir)                   prev_p="menu_dir";;
253                         --menu-dir=*)                 menu_dir="$optarg";;
254                         --without-menu-entry)         menu_dir="";;
256                         --menu-name)                  prev_p="menu_name";;
257                         --menu-name=*)                menu_name="$optarg";;
259                         --binary-name)                prev_p="binary_name";;
260                         --binary-name=*)              binary_name="$optarg";;
262                         --man-dir)                    prev_p="man_dir";;
263                         --man-dir=*)                  man_dir="$optarg";;
265                         --personal-dir)               prev_p="personal_dir";;
266                         --personal-dir=*)             personal_dir="$optarg";;
267                         --without-personal-dir)       personal_dir="";;
269                         --shared-dir)                 prev_p="shared_dir";;
270                         --shared-dir=*)               shared_dir="$optarg";;
271                         --without-shared-dir)         shared_dir="";;
273                         --install-dir)                prev_p="install_dir";;
274                         --install-dir=*)              install_dir="$optarg";;
278                         --menu-group)                 prev_p="menu_group";;
279                         --menu-group=*)               menu_group="$optarg";;
283                         --enable-debug)               enable_debug="1";;
284                         --enable-debug=*)             enable_debug="$optarg";;
285                         --enable-desync-debug)        enable_desync_debug="1";;
286                         --enable-desync-debug=*)      enable_desync_debug="$optarg";;
287                         --enable-profiling)           enable_profiling="1";;
288                         --enable-profiling=*)         enable_profiling="$optarg";;
289                         --enable-lto)                 enable_lto="1";;
290                         --enable-lto=*)               enable_lto="$optarg";;
291                         --enable-ipo)                 enable_lto="1";;
292                         --enable-ipo=*)               enable_lto="$optarg";;
293                         --enable-dedicated)           enable_dedicated="1";;
294                         --enable-dedicated=*)         enable_dedicated="$optarg";;
295                         --enable-network)             enable_network="2";;
296                         --enable-network=*)           enable_network="$optarg";;
297                         --disable-network)            enable_network="0";;
298                         --disable-static)             enable_static="0";;
299                         --enable-static)              enable_static="2";;
300                         --enable-static=*)            enable_static="$optarg";;
301                         --disable-translator)         enable_translator="0";;
302                         --enable-translator)          enable_translator="2";;
303                         --enable-translator=*)        enable_translator="$optarg";;
304                         --disable-assert)             enable_assert="0";;
305                         --enable-assert)              enable_assert="2";;
306                         --enable-assert=*)            enable_assert="$optarg";;
307                         --disable-strip)              enable_strip="0";;
308                         --enable-strip)               enable_strip="2";;
309                         --enable-strip=*)             enable_strip="$optarg";;
310                         --disable-universal)          enable_universal="0";;
311                         --enable-universal)           enable_universal="i386 ppc";;
312                         --enable-universal=*)         enable_universal="$optarg";;
313                         --disable-osx-g5)             enable_osx_g5="0";;
314                         --enable-osx-g5)              enable_osx_g5="2";;
315                         --enable-osx-g5=*)            enable_osx_g5="$optarg";;
316                         --disable-unicode)            enable_unicode="0";;
317                         --enable-unicode)             enable_unicode="2";;
318                         --enable-unicode=*)           enable_unicode="$optarg";;
319                         --disable-console)            enable_console="0";;
320                         --enable-console)             enable_console="2";;
321                         --enable-console=*)           enable_console="$optarg";;
323                         --disable-cocoa-quartz)       enable_cocoa_quartz="0";;
324                         --enable-cocoa-quartz)        enable_cocoa_quartz="2";;
325                         --enable-cocoa-quartz=*)      enable_cocoa_quartz="$optarg";;
326                         --disable-cocoa-quickdraw)    enable_cocoa_quickdraw="0";;
327                         --enable-cocoa-quickdraw)     enable_cocoa_quickdraw="2";;
328                         --enable-cocoa-quickdraw=*)   enable_cocoa_quickdraw="$optarg";;
330                         --with-allegro)               with_allegro="2";;
331                         --without-allegro)            with_allegro="0";;
332                         --with-allegro=*)             with_allegro="$optarg";;
334                         --with-sdl)                   with_sdl="2";;
335                         --without-sdl)                with_sdl="0";;
336                         --with-sdl=*)                 with_sdl="$optarg";;
338                         --with-cocoa)                 with_cocoa="2";;
339                         --without-cocoa)              with_cocoa="0";;
340                         --with-cocoa=*)               with_cocoa="$optarg";;
342                         --with-zlib)                  with_zlib="2";;
343                         --without-zlib)               with_zlib="0";;
344                         --with-zlib=*)                with_zlib="$optarg";;
346                         --with-lzma)                  with_lzma="2";;
347                         --without-lzma)               with_lzma="0";;
348                         --with-lzma=*)                with_lzma="$optarg";;
349                         --with-liblzma)               with_lzma="2";;
350                         --without-liblzma)            with_lzma="0";;
351                         --with-liblzma=*)             with_lzma="$optarg";;
353                         --with-lzo2)                  with_lzo2="2";;
354                         --without-lzo2)               with_lzo2="0";;
355                         --with-lzo2=*)                with_lzo2="$optarg";;
356                         --with-liblzo2)               with_lzo2="2";;
357                         --without-liblzo2)            with_lzo2="0";;
358                         --with-liblzo2=*)             with_lzo2="$optarg";;
360                         --with-xdg-basedir)           with_xdg_basedir="2";;
361                         --without-xdg-basedir)        with_xdg_basedir="0";;
362                         --with-xdg-basedir=*)         with_xdg_basedir="$optarg";;
363                         --with-libxdg-basedir)        with_xdg_basedir="2";;
364                         --without-libxdg-basedir)     with_xdg_basedir="0";;
365                         --with-libxdg-basedir=*)      with_xdg_basedir="$optarg";;
367                         --with-png)                   with_png="2";;
368                         --without-png)                with_png="0";;
369                         --with-png=*)                 with_png="$optarg";;
370                         --with-libpng)                with_png="2";;
371                         --without-libpng)             with_png="0";;
372                         --with-libpng=*)              with_png="$optarg";;
374                         --with-libtimidity)           with_libtimidity="2";;
375                         --without-libtimidity)        with_libtimidity="0";;
376                         --with-libtimidity=*)         with_libtimidity="$optarg";;
378                         --with-freetype)              with_freetype="2";;
379                         --without-freetype)           with_freetype="0";;
380                         --with-freetype=*)            with_freetype="$optarg";;
381                         --with-libfreetype)           with_freetype="2";;
382                         --without-libfreetype)        with_freetype="0";;
383                         --with-libfreetype=*)         with_freetype="$optarg";;
385                         --with-fontconfig)            with_fontconfig="2";;
386                         --without-fontconfig)         with_fontconfig="0";;
387                         --with-fontconfig=*)          with_fontconfig="$optarg";;
388                         --with-libfontconfig)         with_fontconfig="2";;
389                         --without-libfontconfig)      with_fontconfig="0";;
390                         --with-libfontconfig=*)       with_fontconfig="$optarg";;
392                         --with-icu)                   with_icu_layout="2";with_icu_sort="2";;
393                         --without-icu)                with_icu_layout="0";with_icu_sort="0";;
394                         --with-icu=*)                 with_icu_layout="$optarg";with_icu_sort="$optarg";;
395                         --with-libicu)                with_icu_layout="2";with_icu_sort="2";;
396                         --without-libicu)             with_icu_layout="0";with_icu_sort="0";;
397                         --with-libicu=*)              with_icu_layout="$optarg";with_icu_sort="$optarg";;
398                         --with-icu-layout)            with_icu_layout="2";;
399                         --without-icu-layout)         with_icu_layout="0";;
400                         --with-icu-layout=*)          with_icu_layout="$optarg";;
401                         --with-icu-sort)              with_icu_sort="2";;
402                         --without-icu-sort)           with_icu_sort="0";;
403                         --with-icu-sort=*)            with_icu_sort="$optarg";;
404                         --static-icu)                 static_icu="1";;
405                         --static-icu=*)               static_icu="$optarg";;
406                         --static-libicu)              static_icu="1";;
407                         --static-libicu=*)            static_icu="$optarg";;
409                         --with-psp-config)            with_psp_config="2";;
410                         --without-psp-config)         with_psp_config="0";;
411                         --with-psp-config=*)          with_psp_config="$optarg";;
413                         --disable-builtin-depend)     enable_builtin_depend="0";;
414                         --enable-builtin-depend)      enable_builtin_depend="2";;
415                         --enable-builtin-depend=*)    enable_builtin_depend="$optarg";;
417                         --with-makedepend)            with_makedepend="2";;
418                         --without-makedepend)         with_makedepend="0";;
419                         --with-makedepend=*)          with_makedepend="$optarg";;
421                         --with-direct-music)          with_direct_music="2";;
422                         --without-direct-music)       with_direct_music="0";;
423                         --with-direct-music=*)        with_direct_music="$optarg";;
425                         --with-sort)                  with_sort="2";;
426                         --without-sort)               with_sort="0";;
427                         --with-sort=*)                with_sort="$optarg";;
429                         --with-iconv)                 with_iconv="2";;
430                         --without-iconv)              with_iconv="0";;
431                         --with-iconv=*)               with_iconv="$optarg";;
433                         --with-midi=*)                with_midi="$optarg";;
434                         --with-midi-arg=*)            with_midi_arg="$optarg";;
436                         --without-distcc)             with_distcc="0";;
437                         --with-distcc)                with_distcc="2";;
438                         --with-distcc=*)              with_distcc="$optarg";;
440                         --without-ccache)             with_ccache="0";;
441                         --with-ccache)                with_ccache="2";;
442                         --with-ccache=*)              with_ccache="$optarg";;
444                         --without-nforenum)           with_nforenum="0";;
445                         --with-nforenum)              with_nforenum="2";;
446                         --with-nforenum=*)            with_nforenum="$optarg";;
448                         --without-grfcodec)           with_grfcodec="0";;
449                         --with-grfcodec)              with_grfcodec="2";;
450                         --with-grfcodec=*)            with_grfcodec="$optarg";;
452                         --without-osx-sysroot)        with_osx_sysroot="0";;
453                         --with-osx-sysroot)           with_osx_sysroot="2";;
454                         --with-osx-sysroot=*)         with_osx_sysroot="$optarg";;
456                         --without-application-bundle) with_application_bundle="0";;
457                         --with-application-bundle)    with_application_bundle="1";;
458                         --with-application-bundle=*)  with_application_bundle="$optarg";;
460                         --without-threads)            with_threads="0";;
461                         --with-threads)               with_threads="1";;
462                         --with-threads=*)             with_threads="$optarg";;
464                         --without-sse)                with_sse="0";;
465                         --with-sse)                   with_sse="1";;
466                         --with-sse=*)                 with_sse="$optarg";;
468                         CC=* | --CC=*)                CC="$optarg";;
469                         CXX=* | --CXX=*)              CXX="$optarg";;
470                         CFLAGS=* | --CFLAGS=*)        CFLAGS="$optarg";;
471                         CXXFLAGS=* | --CXXFLAGS=*)    CXXFLAGS="$optarg";;
472                         LDFLAGS=* | --LDFLAGS=*)      LDFLAGS="$optarg";;
473                         CFLAGS_BUILD=* | --CFLAGS_BUILD=* | --CFLAGS-BUILD=*)     CFLAGS_BUILD="$optarg";;
474                         CXXFLAGS_BUILD=* | --CXXFLAGS_BUILD=* | --CXXFLAGS-BUILD=*) CXXFLAGS_BUILD="$optarg";;
475                         LDFLAGS_BUILD=* | --LDFLAGS_BUILD=* | --LDFLAGS-BUILD=*)   LDFLAGS_BUILD="$optarg";;
477                         --ignore-extra-parameters)    ignore_extra_parameters="1";;
479                         --* | -*)
480                                 if [ "$ignore_extra_parameters" = "0" ]; then
481                                         log 1 "Unknown option $p"
482                                         exit 1
483                                 else
484                                         log 1 "Unknown option $p ignored"
485                                 fi
486                                 ;;
487                 esac
488         done
490         if [ -n "$prev_p" ]; then
491                 log 1 "configure: error: missing argument to --$prev_p"
492                 exit 1
493         fi
495         # Clean the logfile
496         echo "" > $config_log
497         log 2 "Invocation: $0 $*"
500 save_params() {
501         # Here we save all params, so we can later on do an exact redo of this
502         #  configuration, without having the user to re-input stuff
504         echo "Running configure with following options:" >> $config_log
505         echo "" >> $config_log
507         configure="$CONFIGURE_EXECUTABLE --ignore-extra-parameters"
508         for p in $save_params_array; do
509                 eval "v=\"\$$p\""
510                 p=`echo "$p" | sed 's@_@-@g;s@\n@@g;s@ @\\ @g'`
511                 # Only save those params that aren't empty
512                 configure="$configure --$p=\"$v\""
513         done
515         echo "$configure" >> $config_log
516         echo "$configure" > config.cache
517         echo "" >> $config_log
520 check_params() {
521         # Some params want to be in full uppercase, else they might not work as
522         # expected.. fix that here
524         endian=`echo $endian | tr '[a-z]' '[A-Z]'`
525         os=`echo $os | tr '[a-z]' '[A-Z]'`
526         cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
528         # Check if all params have valid values
530         # Endian only allows AUTO, LE and, BE
531         if ! echo $endian | egrep -q '^(AUTO|LE|BE|PREPROCESSOR)$'; then
532                 log 1 "configure: error: invalid option --endian=$endian"
533                 log 1 " Available options are: --endian=[AUTO|LE|BE]"
534                 exit 1
535         fi
536         if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
537                 log 1 "configure: error: invalid option --endian=$endian"
538                 log 1 " PREPROCESSOR is only available for OSX"
539                 exit 1
540         fi
541         # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
542         if ! echo $os | egrep -q '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'; then
543                 log 1 "configure: error: invalid option --os=$os"
544                 log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
545                 exit 1
546         fi
547         # cpu_type can be either 32 or 64
548         if ! echo $cpu_type | egrep -q '^(32|64|DETECT)$'; then
549                 log 1 "configure: error: invalid option --cpu-type=$cpu_type"
550                 log 1 " Available options are: --cpu-type[=DETECT|32|64]"
551                 exit 1
552         fi
553         # enable_debug should be between 0 and 4
554         if ! echo $enable_debug | egrep -q '^[0123]$'; then
555                 log 1 "configure: error: invalid option --enable-debug=$enable_debug"
556                 log 1 " Available options are: --enable-debug[=0123]"
557                 exit 1
558         fi
560         # enable_desync_debug should be between 0 and 3
561         if ! echo $enable_desync_debug | egrep -q '^[012]$'; then
562                 log 1 "configure: error: invalid option --enable-desync-debug=$enable_desync_debug"
563                 log 1 " Available options are: --enable-desync-debug[=012]"
564                 exit 1
565         fi
567         detect_awk
569         detect_os
571         check_build
572         check_host
574         # Check for universal builds; they only make sense for OSX, so fail if enabled for another OS
575         if [ "$enable_universal" = "0" ]; then
576                 log 1 "checking universal build... no"
577         else
578                 if [ "$os" != "OSX" ]; then
579                         log 1 "configure: error: --enable-universal only works on OSX"
580                         exit 1
581                 fi
582                 log 1 "checking universal build... yes, for: $enable_universal"
583         fi
585         # Already detected by check_build
586         log 1 "checking build cc... $cc_build"
587         log 1 "checking host cc... $cc_host"
589         check_cxx_build
590         check_cxx_host
591         check_windres
592         if [ "$enable_strip" != "0" ]; then
593                 check_strip
594         else
595                 log 1 "checking strip... disabled"
596         fi
597         check_lipo
599         if [ "$enable_builtin_depend" != "0" ]; then
600                 log 1 "checking builtin depend... yes"
601                 makedepend="\$(SRC_OBJS_DIR)/\$(DEPEND)"
602         else
603                 log 1 "checking builtin depend... no"
604         fi
606         check_makedepend
607         detect_cputype
608         detect_sse_capable_architecture
610         if [ "$enable_static" = "1" ]; then
611                 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then
612                         enable_static="2"
613                 else
614                         enable_static="0"
615                 fi
616         fi
618         if [ "$enable_static" != "0" ]; then
619                 log 1 "checking static... yes"
621                 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "OSX" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "DOS" ]; then
622                         log 1 "WARNING: static is only known to work on Windows, DOS, MacOSX and MorphOS"
623                         log 1 "WARNING: use static at your own risk on this platform"
625                         sleep 5
626                 fi
627         else
628                 log 1 "checking static... no"
629         fi
631         if [ "$enable_unicode" = "1" ]; then
632                 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ]; then
633                         enable_unicode="2"
634                 else
635                         enable_unicode="0"
636                 fi
637         fi
639         if [ "$enable_unicode" != "0" ]; then
640                 log 1 "checking unicode... yes"
641         else
642                 log 1 "checking unicode... no"
643         fi
645         # Show what we configured
646         if [ "$enable_debug" = "0" ]; then
647                 log 1 "using debug level... no"
648         elif [ "$enable_profiling" != "0" ]; then
649                 log 1 "using debug level... profiling (debug level $enable_debug)"
650         else
651                 log 1 "using debug level... level $enable_debug"
652         fi
654         if [ "$enable_desync_debug" = "0" ]; then
655                 log 1 "using desync debug level... no"
656         else
657                 log 1 "using desync debug level... level $enable_desync_debug"
658                 log 1 "WARNING: desync debug functions slow down the game considerably."
659                 log 1 "WARNING: use only when you are instructed to do so"
660                 log 1 "         or when you know what you are doing."
662                 sleep 5
663         fi
665         if [ "$enable_lto" != "0" ]; then
666                 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
667                 if $cxx_build -dumpspecs 2>&1 | grep -q '\%{flto' || $cxx_build -help ipo 2>&1 | grep -q '\-ipo'; then
668                         log 1 "using link time optimization... yes"
669                 else
670                         enable_lto="0"
671                         log 1 "using link time optimization... no"
672                         log 1 "WARNING: you selected link time optimization but it is not found."
673                         sleep 5
674                 fi
675         else
676                 log 1 "using link time optimization... no"
677         fi
680         if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
681                 if [ "$with_osx_sysroot" = "1" ]; then
682                         with_osx_sysroot="0"
684                         log 1 "checking OSX sysroot... not OSX, skipping"
685                 else
686                         log 1 "configure: error: --with-osx-sysroot only works if OSX is the target"
687                         exit 1
688                 fi
689         fi
691         if [ "$with_osx_sysroot" != "0" ]; then
692                 if [ "$enable_universal" = "0" ] && [ "$with_osx_sysroot" != "1" ] && [ "$with_osx_sysroot" != "2" ]; then
693                         # Sysroot manually specified? Check for usability
694                         log 1 "checking OSX sysroot... $with_osx_sysroot"
695                         if ! check_osx_sdk "$with_osx_sysroot"; then
696                                 log 1 "Passed sysroot not found/not functional"
697                                 exit 1
698                         fi
699                 else
700                         # If autodetect and no universal, use system default
701                         if [ "$with_osx_sysroot" = "1" ] && [ "$enable_universal" = "0" ]; then
702                                 log 1 "checking OSX sysroot... no (use system default)"
703                         else
704                                 log 1 "checking OSX sysroot... automatically"
705                                 detect_osx_sdk
706                         fi
707                 fi
709                 if [ -n "$osx_sdk_path" ]; then
710                         if [ "$enable_universal" != "0" ]; then
711                                 if [ -z "$osx_sdk_104_path" ]; then
712                                         log 1 "WARNING: Could not find a usable 10.4u SDK, the resulting"
713                                         log 1 "WARNING: binary will only run on OSX 10.5 or later"
714                                         osx_sdk_104_path="$osx_sdk_path"
715                                 fi
716                                 OSX_SYSROOT="-isysroot $osx_sdk_104_path"
717                                 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_104_path"
718                         else
719                                 OSX_SYSROOT="-isysroot $osx_sdk_path"
720                                 OSX_LD_SYSROOT="-Wl,-syslibroot,$osx_sdk_path"
721                         fi
722                 fi
723         else
724                 if [ "$os" = "OSX" ]; then
725                         log 1 "checking OSX sysroot... no (use system default)"
726                 fi
727         fi
729         detect_allegro
730         detect_sdl
731         detect_cocoa
733         if [ "$enable_dedicated" != "0" ]; then
734                 log 1 "checking GDI video driver... dedicated server, skipping"
735                 log 1 "checking dedicated... found"
737                 if [ "$enable_network" = "0" ]; then
738                         log 1 "configure: error: building a dedicated server without network support is pointless"
739                         exit 1
740                 fi
741         else
742                 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
743                         log 1 "checking GDI video driver... found"
744                 else
745                         log 1 "checking GDI video driver... not Windows, skipping"
746                 fi
748                 if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
749                         log 1 "configure: error: no video driver development files found"
750                         log 1 " If you want a dedicated server use --enable-dedicated as parameter"
751                         exit 1
752                 else
753                         log 1 "checking dedicated... not selected"
754                 fi
755         fi
757         if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
758                 log 1 "checking console application... not Windows, skipping"
759         elif [ "$enable_console" = "1" ] && [ "$enable_dedicated" != "0" ]; then
760                 log 1 "checking console application... dedicated server, enabled"
761                 enable_console="2"
762         elif [ "$enable_console" = "1" ]; then
763                 log 1 "checking console application... disabled (only used when forced)"
764                 enable_console="0"
765         elif [ "$enable_console" = "0" ]; then
766                 log 1 "checking console application... disabled"
767         else
768                 log 1 "checking console application... enabled"
769         fi
771         if [ "$enable_network" = "1" ] && [ "$os" = "DOS" ]; then
772                 log 1 "checking network... DOS, skipping"
773                 enable_network=0
774         elif [ "$enable_network" != "0" ]; then
775                 log 1 "checking network... found"
776         else
777                 log 1 "checking network... disabled"
778         fi
780         log 1 "checking squirrel... found"
781         SCRIPT_SRC_DIR="$ROOT_DIR/src/3rdparty/squirrel/include"
783         if [ "$enable_translator" != "0" ]; then
784                 log 1 "checking translator... debug"
785                 # -t shows TODO items, normally they are muted
786                 strgen_flags="-t"
787         else
788                 log 1 "checking translator... no"
789                 strgen_flags=""
790         fi
792         if [ "$enable_assert" != "0" ]; then
793                 log 1 "checking assert... enabled"
794         else
795                 log 1 "checking assert... disabled"
796         fi
798         pre_detect_with_zlib=$with_zlib
799         detect_zlib
801         if [ "$with_zlib" = "0" ] || [ -z "$zlib-config" ]; then
802                 log 1 "WARNING: zlib was not detected or disabled"
803                 log 1 "WARNING: OpenTTD doesn't require zlib, but it does mean that many features"
804                 log 1 "WARNING: (like loading most old savegames/scenarios, loading heightmaps,"
805                 log 1 "WARNING: using PNG, or using fonts, ...) will be disabled."
806                 if [ "$pre_detect_with_zlib" = "0" ]; then
807                         log 1 "WARNING: We strongly suggest you to install zlib."
808                 else
809                         log 1 "configure: error: no zlib detected"
810                         log 1 " If you want to compile without zlib use --without-zlib as parameter"
811                         exit
812                 fi
813         fi
815         pre_detect_with_lzma=$with_lzma
816         detect_lzma
818         if [ "$with_lzma" = "0" ] || [ -z "$lzma_config" ]; then
819                 log 1 "WARNING: lzma was not detected or disabled"
820                 log 1 "WARNING: OpenTTD doesn't require lzma, but it does mean that many features"
821                 log 1 "WARNING: (like loading most savegames/scenarios and joining most servers)"
822                 log 1 "WARNING: will be disabled."
823                 if [ "$pre_detect_with_lzma" = "0" ]; then
824                         log 1 "WARNING: We strongly suggest you to install liblzma."
825                         log 1 "configure: error: no liblzma detected"
826                 else
827                         log 1 " If you want to compile without lzma use --without-lzma as parameter"
828                         exit
829                 fi
830         fi
832         pre_detect_with_lzo2=$with_lzo2
833         detect_lzo2
835         if [ "$with_lzo2" = "0" ] || [ -z "$lzo2" ]; then
836                 log 1 "WARNING: liblzo2 was not detected or disabled"
837                 log 1 "WARNING: OpenTTD doesn't require liblzo2, but it does mean that"
838                 log 1 "WARNING: loading old savegames/scenarios will be disabled."
839                 if [ "$pre_detect_with_lzo2" = "0" ]; then
840                         log 1 "WARNING: We strongly suggest you to install liblzo2."
841                 else
842                         log 1 "configure: error: no liblzo2 detected"
843                         log 1 " If you want to compile without liblzo2 use --without-liblzo2 as parameter"
844                         exit
845                 fi
846         fi
848         detect_xdg_basedir
849         detect_png
850         detect_freetype
851         detect_fontconfig
852         detect_icu_layout
853         detect_icu_sort
854         detect_pspconfig
855         detect_libtimidity
857         if [ "$with_direct_music" != "0" ]; then
858                 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
859                         if [ "$with_direct_music" != "1" ]; then
860                                 log 1 "configure: error: direct-music is only supported on Win32 targets"
861                                 exit 1
862                         fi
863                         with_direct_music="0"
865                         log 1 "checking direct-music... not Windows, skipping"
866                 else
867                         check_direct_music
868                 fi
869         fi
871         detect_sort
873         if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
874                 endian="PREPROCESSOR"
875         fi
877         log 1 "checking endianness... $endian"
879         # Suppress language errors when there is a version defined, indicating a release
880         #  It just isn't pretty if any release produces warnings in the languages.
881         if [ -f "$ROOT_DIR/version" ]; then
882                 lang_suppress="yes"
883                 log 1 "suppress language errors... yes"
884         else
885                 lang_suppress=""
886                 log 1 "suppress language errors... no"
887         fi
889         if [ "$enable_debug" = "0" ] && [ "$enable_profiling" = "0" ] && [ "$enable_strip" != "0" ]; then
890                 if [ "$os" = "MORPHOS" ]; then
891                         strip_arg="--strip-all --strip-unneeded --remove-section .comment"
892                 elif [ "$os" = "OSX" ]; then
893                         strip_arg=""
894                 elif [ "$os" = "OS2" ]; then
895                         strip_arg=""
896                         # OS2 uses strip via gcc, because it needs to be feed to emxbind
897                         LDFLAGS="$LDFLAGS -s"
898                 elif [ "$os" = "SUNOS" ]; then
899                         # The GNU strip does know -s, the non-GNU doesn't
900                         #  So try to detect it (in a bit of an ugly way)
901                         strip_arg="`$strip -s strip.test 2>/dev/null && echo \"-s\"`"
902                 else
903                         strip_arg="-s"
904                 fi
906                 log 1 "checking stripping... $strip $strip_arg"
907         else
908                 strip=""
909                 log 1 "checking stripping... skipped"
910         fi
912         if [ "$with_distcc" = "0" ]; then
913                 log 1 "checking distcc... no"
914         elif [ "$with_distcc" = "1" ]; then
915                 with_distcc="0"
917                 log 1 "checking distcc... no (only used when forced)"
918         elif [ "$with_distcc" = "2" ]; then
919                 distcc="distcc"
920         else
921                 distcc="$with_distcc"
922         fi
923         if [ "$with_distcc" != "0" ]; then
924                 res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 1-6`"
925                 if [ "$res" != "distcc" ]; then
926                         distcc=""
927                         log 1 "checking distcc... no"
928                         if [ "$with_distcc" = "2" ]; then
929                                 log 1 "configure: error: no distcc detected, but was forced to be used"
930                                 exit 1
931                         fi
932                         if [ "$with_distcc" != "1" ]; then
933                                 log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
934                                 exit 1
935                         fi
936                 fi
938                 log 1 "checking distcc... $distcc"
939         fi
941         if [ "$with_ccache" = "0" ]; then
942                 log 1 "checking ccache... no"
943         elif [ "$with_ccache" = "1" ]; then
944                 with_ccache="0"
946                 log 1 "checking ccache... no (only used when forced)"
947         elif [ "$with_ccache" = "2" ]; then
948                 ccache="ccache"
949         else
950                 ccache="$with_ccache"
951         fi
952         if [ "$with_ccache" != "0" ]; then
953                 res="`$ccache --version 2>/dev/null | head -n 1 | cut -b 1-6`"
954                 if [ "$res" != "ccache" ]; then
955                         ccache=""
956                         log 1 "checking ccache... no"
957                         if [ "$with_ccache" = "2" ]; then
958                                 log 1 "configure: error: no ccache detected, but was forced to be used"
959                                 exit 1
960                         fi
961                         if [ "$with_ccache" != "1" ]; then
962                                 log 1 "configure: error: '$with_ccache' doesn't seem a ccache to me"
963                                 exit 1
964                         fi
965                 fi
967                 log 1 "checking ccache... $ccache"
968         fi
970         detect_grfcodec
971         detect_nforenum
973         if [ -z "$grfcodec" ] && [ -n "$nforenum" ]; then
974                 log 1 "checking nforenum/grfcodec... nforenum needs grfcodec enabled, disabling nforenum"
975                 nforenum=""
976         fi
978         if [ -z "$nforenum" ] && [ -n "$grfcodec" ]; then
979                 log 1 "checking nforenum/grfcodec... grfcodec needs nforenum enabled, disabling grfcodec"
980                 grfcodec=""
981         fi
983         if [ "$os" = "DOS" ]; then
984                 with_threads="0"
985         fi
987         if [ "$os" != "OSX" ] && [ "$with_application_bundle" != "0" ]; then
988                 if [ "$with_application_bundle" = "1" ]; then
989                         with_application_bundle="0"
991                         log 1 "checking OSX application bundle... not OSX, skipping"
992                 else
993                         log 1 "configure: error: --with-application-bundle only works if OSX is the target"
994                         exit 1
995                 fi
996         fi
998         if [ "$os" = "OSX" ] && [ "$with_application_bundle" = "1" ]; then
999                 OSXAPP="OpenTTD.app"
1000         else
1001                 OSXAPP=""
1002         fi
1004         if [ "$os" = "OSX" ]; then
1005                 # Test on ppc970 (G5) - we can optimize there
1007                 if [ "$enable_osx_g5" != "0" ]; then
1008                         log 1 "detecting ppc970 (G5)... yes (forced)"
1009                 else
1010                         # First, are we a real OSX system, else we can't detect it
1011                         native=`LC_ALL=C uname | tr '[A-Z]' '[a-z]' | grep darwin`
1012                         # If $host doesn't match $build , we are cross-compiling
1013                         if [ -n "$native" ] && [ "$build" = "$host" ]; then
1014                                 $cxx_build $SRC_DIR/os/macosx/G5_detector.cpp -o G5_detector
1015                                 res=`./G5_detector`
1016                                 rm -f G5_detector
1017                                 if [ -n "$res" ]; then
1018                                         # This is G5, add flags for it
1019                                         enable_osx_g5="2"
1021                                         log 1 "detecting ppc970 (G5)... yes"
1022                                 else
1023                                         enable_osx_g5="0"
1025                                         log 1 "detecting ppc970 (G5)... no"
1026                                 fi
1027                         else
1028                                 enable_osx_g5="0"
1030                                 log 1 "detecting ppc970 (G5)... no (cross-compiling)"
1031                         fi
1032                 fi
1033         else
1034                 if [ "$enable_osx_g5" != "0" ]; then
1035                         log 1 "configure: error: ppc970 (OSX G5) selected, but not compiling for OSX"
1036                         log 1 "configure: error: either select OSX as OS, or deselect ppc970"
1038                         exit 1
1039                 fi
1040         fi
1042         if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then
1043                 log 1 "checking revision... svn detection"
1044         elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && LC_ALL=C svn info $ROOT_DIR/.. | grep -q '^URL:.*tags$'; then
1045                 # subversion changed its behaviour; now not all folders have a .svn folder,
1046                 # but only the root folder. Since making tags requires a (sparse) checkout
1047                 # of the tags folder, the folder of the tag does not have a .svn folder
1048                 # anymore and this fails to detect the subversion repository checkout.
1049                 log 1 "checking revision... svn detection (tag)"
1050         elif [ -e "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
1051                 log 1 "checking revision... git detection"
1052         elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`HGPLAIN= hg help 2>/dev/null`" ]; then
1053                 log 1 "checking revision... hg detection"
1054         elif [ -f "$ROOT_DIR/.ottdrev" ]; then
1055                 log 1 "checking revision... source tarball"
1056         else
1057                 log 1 "checking revision... no detection"
1058                 log 1 "WARNING: there is no means to determine the version."
1059                 log 1 "WARNING: please use a subversion, mercurial, or git checkout of OpenTTD."
1060                 log 1 "WARNING: you can only join game servers that have been compiled without"
1061                 log 1 "WARNING:   version detection."
1062                 log 1 "WARNING: there is a great chance you desync."
1063                 log 1 "WARNING: USE WITH CAUTION!"
1065                 sleep 5
1066         fi
1068         if [ "$doc_dir" = "1" ]; then
1069                 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1070                         doc_dir="share/doc/openttd"
1071                 else
1072                         doc_dir="$data_dir/docs"
1073                 fi
1074         else
1075                 doc_dir="`echo $doc_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1076         fi
1078         if [ "$icon_theme_dir" = "1" ]; then
1079                 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1080                         icon_theme_dir="share/icons/hicolor"
1081                 else
1082                         icon_theme_dir=""
1083                 fi
1084         else
1085                 icon_theme_dir="`echo $icon_theme_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1086         fi
1088         if [ "$personal_dir" = "1" ]; then
1089                 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
1090                         personal_dir="OpenTTD"
1091                 elif [ "$os" = "OSX" ]; then
1092                         personal_dir="Documents/OpenTTD"
1093                 else
1094                         personal_dir=".openttd"
1095                 fi
1096         else
1097                 personal_dir="`echo $personal_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1098         fi
1100         if [ "$shared_dir" = "1" ]; then
1101                 # we are using default values
1102                 if [ "$os" = "OSX" ]; then
1103                         shared_dir="/Library/Application\\\\ Support/OpenTTD"
1104                 else
1105                         shared_dir=""
1106                 fi
1107         else
1108                 shared_dir="`echo $shared_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1109         fi
1111         if [ "$man_dir" = "1" ]; then
1112                 # add manpage on UNIX systems
1113                 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OSX" ]; then
1114                         man_dir="share/man/man6"
1115                 else
1116                         man_dir=""
1117                 fi
1118         else
1119                 man_dir="`echo $man_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1120         fi
1122         if [ "$menu_dir" = "1" ]; then
1123                 # add a freedesktop menu item only for some UNIX systems
1124                 if [ "$os" = "UNIX" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ]; then
1125                         menu_dir="share/applications"
1126                 else
1127                         menu_dir=""
1128                 fi
1129         else
1130                 menu_dir="`echo $menu_dir | sed 's@\([^\]\)\\\\ @\1\\\\\\\\ @g;s@\([^\]\) @\1\\\\\\\\ @g'`"
1131         fi
1133         detect_iconv
1135         if [ -n "$personal_dir" ]
1136         then
1137                 log 1 "personal home directory... $personal_dir"
1138         else
1139                 log 1 "personal home directory... none"
1140         fi
1142         if [ -n "$shared_dir" ]
1143         then
1144                 log 1 "shared data directory... $shared_dir"
1145         else
1146                 log 1 "shared data directory... none"
1147         fi
1149         if [ -n "$install_dir" ]
1150         then
1151                 log 1 "installation directory... $install_dir"
1152         else
1153                 log 1 "installation directory... none"
1154         fi
1156         if [ -n "$icon_theme_dir" ]
1157         then
1158                 log 1 "icon theme directory... $icon_theme_dir"
1159         else
1160                 log 1 "icon theme directory... none"
1161         fi
1163         if [ -n "$man_dir" ]
1164         then
1165                 log 1 "manual page directory... $man_dir"
1166         else
1167                 log 1 "manual page directory... none"
1168         fi
1170         if [ -n "$menu_dir" ]
1171         then
1172                 log 1 "menu item directory... $menu_dir"
1173         else
1174                 log 1 "menu item directory... none"
1175         fi
1178 make_compiler_cflags() {
1179         # Params:
1180         # $1 - compiler
1181         # $2 - name of the cflags variable
1182         # $3 - name of the cxxflags variable
1183         # $4 - name of the ldflags variable
1184         # $5 - name of the features variable
1186         eval eval "flags=\\\$$2"
1187         eval eval "cxxflags=\\\$$3"
1188         eval eval "ldflags=\\\$$4"
1189         eval eval "features=\\\$$5"
1191         if [ `basename $1 | cut -c 1-3` = "icc" ]; then
1192                 # Enable some things only for certain ICC versions
1193                 cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
1195                 flags="$flags -rdynamic"
1196                 ldflags="$ldflags -rdynamic"
1198                 if [ -z "$first_time_icc_check" ]; then
1199                         first_time_icc_check=no
1200                         if [ $cc_version -lt 90 ]; then
1201                                 log 1 "WARNING: you seem to be using a very old version of ICC"
1202                                 log 1 "WARNING: OpenTTD hasn't been tested with this version"
1203                                 sleep 5
1204                         elif [ $cc_version -lt 120 ]; then
1205                                 log 1 "WARNING: you seem to be using an unsupported ICC version"
1206                                 log 1 "WARNING: ICC older than 12.0 is known to fail to compile OpenTTD"
1207                                 sleep 5
1208                         fi
1209                 fi
1211                 flags="$flags -Wall"
1212                 # remark #111: statement is unreachable
1213                 flags="$flags -wd111"
1214                 # remark #181: argument is incompatible with corresponding format string conversion
1215                 # ICC is very picky about signedness of operands, warnings provided by GCC are enough
1216                 flags="$flags -wd181"
1217                 # remark #271: trailing comma is nonstandard
1218                 flags="$flags -wd271"
1219                 # remark #280: selector expression is constant
1220                 flags="$flags -wd280"
1221                 # remark #304: access control not specified ("public" by default)
1222                 flags="$flags -wd304"
1223                 # remark #383: value copied to temporary, reference to temporary used
1224                 flags="$flags -wd383"
1225                 # remark #444: destructor for base class ... is not virtual
1226                 flags="$flags -wd444"
1227                 # remark #593: variable ... was set but never used
1228                 flags="$flags -wd593"
1229                 # warning #654: overloaded virtual function ... is only partially overridden in class ...
1230                 flags="$flags -wd654"
1231                 # remark #810: conversion from ... to ... may lose significant bits
1232                 flags="$flags -wd810"
1233                 # remark #869: parameter ... was never referenced
1234                 flags="$flags -wd869"
1235                 # warning #873: function ... ::operator new ... has no corresponding operator delete ...
1236                 flags="$flags -wd873"
1237                 # remark #981: operands are evaluated in unspecified order
1238                 flags="$flags -wd981"
1239                 # remark #1418: external function definition with no prior declaration
1240                 flags="$flags -wd1418"
1241                 # remark #1419: external declaration in primary source file
1242                 flags="$flags -wd1419"
1243                 # remark #1572: floating-point equality and inequality
1244                 flags="$flags -wd1572"
1245                 # remark #1599: declaration hides variable/parameter ...
1246                 flags="$flags -wd1599"
1247                 # remark #1720: function ... ::operator new ... has no corresponding member operator delete ...
1248                 flags="$flags -wd1720"
1250                 if [ $cc_version -lt 110 ]; then
1251                         # warns about system headers with recent glibc:
1252                         # warning #1292: attribute "__nonnull__" ignored
1253                         flags="$flags -wd1292"
1254                 fi
1256                 if [ $cc_version -ge 100 ]; then
1257                         # warning #1899: multicharacter character literal (potential portability problem)
1258                         flags="$flags -wd1899"
1259                         # vec report defaults to telling where it did loop vectorisation, which is not very important
1260                         flags="$flags -vec-report=0 "
1261                 fi
1263                 if [ $cc_version -ge 110 ]; then
1264                         # remark #2259: non-pointer conversion from ... to ... may lose significant bits
1265                         flags="$flags -wd2259"
1266                         # Use c++0x mode so static_assert() is available
1267                         cxxflags="$cxxflags -std=c++0x"
1268                 fi
1270                 if [ "$enable_lto" != "0" ] && $1 -help ipo | grep -q '\-ipo'; then
1271                         # Use IPO (only if we see IPO exists and is requested)
1272                         flags="$flags -ipo"
1273                         features="$features lto"
1274                 fi
1275         elif basename $1 | grep -q 'clang'; then
1276                 # Enable some things only for certain clang versions
1277                 cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
1279                 # aliasing rules are not held in openttd code
1280                 flags="$flags -fno-strict-aliasing"
1282                 # -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
1283                 # -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
1284                 flags="$flags -Wall -W -Wextra"
1286                 # warning: unused parameter '...'
1287                 flags="$flags -Wno-unused-parameter"
1289                 # warning: expression result unused
1290                 flags="$flags -Wno-unused-value"
1292                 # warning: multi-character character constant
1293                 flags="$flags -Wno-multichar"
1295                 # warning: explicitly assigning a variable of type '...' to itself
1296                 # it happens when using the FOR_ALL_WINDOWS_FROM_BACK_FROM macro
1297                 flags="$flags -Wno-self-assign"
1299                 if [ "$cc_version" -lt "30" ]; then
1300                         # warning: equality comparison with extraneous parentheses
1301                         flags="$flags -Wno-parentheses"
1302                         # warning: operands of ? are integers of different signs: 'unsigned int' and 'int'
1303                         flags="$flags -Wno-sign-compare"
1304                 fi
1306                 if [ "$cc_version" -ge "30" ]; then
1307                         # warning: equality comparison with extraneous parentheses
1308                         # this warning could be useful, but it warns about code in squirrel
1309                         flags="$flags -Wno-parentheses-equality"
1310                 fi
1312                 if [ "$with_ccache" != "0" -o "$with_distcc" != "0" ]; then
1313                         # ccache and distcc run separate preprocess and compile passes,
1314                         # both are fed with the same CFLAGS. Unfortunately, clang
1315                         # complains about -I when compiling preprocessed files:
1316                         # "clang: warning: argument unused during compilation: '-I /usr/include'"
1317                         flags="$flags -Qunused-arguments"
1318                 fi
1320                 if [ "$enable_assert" -eq "0" ]; then
1321                         # do not warn about unused variables when building without asserts
1322                         flags="$flags -Wno-unused-variable"
1323                 fi
1325                 if [ "$cc_version" -ge "33" ]; then
1326                         # clang completed C++11 support in version 3.3
1327                         flags="$flags -std=c++11"
1328                 fi
1330                 # rdynamic is used to get useful stack traces from crash reports.
1331                 ldflags="$ldflags -rdynamic"
1332         else
1333                 # Enable some things only for certain GCC versions
1334                 # cc_version = major_version * 100 + minor_version
1335                 # For example: "3.3" -> 303, "4.9.2" -> 409, "6" -> 600, "23.5" -> 2305
1336                 cc_version=`$1 -dumpversion | $awk -F . '{printf "%d%02d", $1, $2}'`
1338                 if [ $cc_version -lt 303 ]; then
1339                         log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
1340                         exit 1
1341                 fi
1343                 flags="$flags -Wall -Wno-multichar -Wsign-compare -Wundef"
1344                 flags="$flags -Wwrite-strings -Wpointer-arith"
1345                 flags="$flags -W -Wno-unused-parameter -Wredundant-decls"
1346                 flags="$flags -Wformat=2 -Wformat-security"
1348                 if [ $enable_assert -eq 0 ]; then
1349                         # Do not warn about unused variables when building without asserts
1350                         flags="$flags -Wno-unused-variable"
1351                         if [ $cc_version -ge 406 ]; then
1352                                 # GCC 4.6 gives more warnings, disable them too
1353                                 flags="$flags -Wno-unused-but-set-variable"
1354                                 flags="$flags -Wno-unused-but-set-parameter"
1355                         fi
1356                 fi
1358                 if [ $cc_version -ge 304 ]; then
1359                         # Warn when a variable is used to initialise itself:
1360                         # int a = a;
1361                         flags="$flags -Winit-self"
1362                 fi
1364                 if [ $cc_version -ge 400 ]; then
1365                         # GCC 4.0+ complains about that we break strict-aliasing.
1366                         #  On most places we don't see how to fix it, and it doesn't
1367                         #  break anything. So disable strict-aliasing to make the
1368                         #  compiler all happy.
1369                         flags="$flags -fno-strict-aliasing"
1370                         # Warn about casting-out 'const' with regular C-style cast.
1371                         #  The preferred way is const_cast<>() which doesn't warn.
1372                         flags="$flags -Wcast-qual"
1373                 fi
1375                 if [ $cc_version -ge 402 ]; then
1376                         # GCC 4.2+ automatically assumes that signed overflows do
1377                         # not occur in signed arithmetics, whereas we are not
1378                         # sure that they will not happen. It furthermore complains
1379                         # about its own optimized code in some places.
1380                         flags="$flags -fno-strict-overflow"
1381                         # GCC 4.2 no longer includes -Wnon-virtual-dtor in -Wall.
1382                         # Enable it in order to be consistent with older GCC versions.
1383                         flags="$flags -Wnon-virtual-dtor"
1384                 fi
1386                 if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then
1387                         # Use gnu++0x mode so static_assert() is available.
1388                         # Don't use c++0x, it breaks mingw (with gcc 4.4.0).
1389                         cxxflags="$cxxflags -std=gnu++0x"
1390                 fi
1392                 if [ $cc_version -eq 405 ]; then
1393                         # Prevent optimisation supposing enums are in a range specified by the standard
1394                         # For details, see http://gcc.gnu.org/PR43680
1395                         flags="$flags -fno-tree-vrp"
1396                 fi
1398                 if [ $cc_version -eq 407 ]; then
1399                         # Disable -Wnarrowing which gives many warnings, such as:
1400                         # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
1401                         # They are valid according to the C++ standard, but useless.
1402                         cxxflags="$cxxflags -Wno-narrowing"
1403                 fi
1405                 if [ $cc_version -ge 407 ]; then
1406                         # Disable bogus 'attempt to free a non-heap object' warning
1407                         flags="$flags -Wno-free-nonheap-object"
1408                 fi
1410                 if [ $cc_version -ge 600 ]; then
1411                         # -flifetime-dse=2 (default since GCC 6) doesn't play
1412                         # well with our custom pool item allocator
1413                         cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14"
1414                 fi
1416                 # GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
1417                 if [ "$enable_lto" != "0" ] && $1 -dumpspecs | grep -q '\%{flto'; then
1418                         # Use LTO only if we see LTO exists and is requested
1419                         if [ $cc_version -lt 406 ]; then
1420                                 flags="$flags -flto"
1421                         else
1422                                 flags="$flags -flto=jobserver"
1423                         fi
1424                         ldflags="$ldflags -fwhole-program"
1425                         features="$features lto"
1426                 fi
1428                 if $1 -dumpspecs | grep -q rdynamic; then
1429                         # rdynamic is used to get useful stack traces from crash reports.
1430                         flags="$flags -rdynamic"
1431                         ldflags="$ldflags -rdynamic"
1432                 fi
1433         fi
1435         eval "$2=\"$flags\""
1436         eval "$3=\"$cxxflags\""
1437         eval "$4=\"$ldflags\""
1438         eval "$5=\"$features\""
1441 make_cflags_and_ldflags() {
1442         # General CFlags for BUILD
1443         CFLAGS_BUILD="$CFLAGS_BUILD"
1444         # Special CXXFlags for BUILD
1445         CXXFLAGS_BUILD="$CXXFLAGS_BUILD"
1446         # LDFLAGS for BUILD
1447         LDFLAGS_BUILD="$LDFLAGS_BUILD"
1448         # FEATURES for BUILD (lto)
1449         FEATURES_BUILD=""
1450         # General CFlags for HOST
1451         CFLAGS="$CFLAGS"
1452         # Special CXXFlags for HOST
1453         CXXFLAGS="$CXXFLAGS"
1454         # Libs to compile. In fact this is just LDFLAGS
1455         LIBS="-lstdc++"
1456         # LDFLAGS used for HOST
1457         LDFLAGS="$LDFLAGS"
1458         # FEATURES for HOST (lto)
1459         FEATURES=""
1461         make_compiler_cflags "$cc_build" "CFLAGS_BUILD" "CXXFLAGS_BUILD" "LDFLAGS_BUILD" "FEATURES_BUILD"
1462         make_compiler_cflags "$cc_host" "CFLAGS" "CXXFLAGS" "LDFLAGS" "FEATURES"
1464         CFLAGS="$CFLAGS -D$os"
1465         CFLAGS_BUILD="$CFLAGS_BUILD -D$os"
1467         if [ "$enable_debug" = "0" ]; then
1468                 # No debug, add default stuff
1469                 OBJS_SUBDIR="release"
1470                 if [ "$os" = "MORPHOS" ]; then
1471                         CFLAGS="-I/gg/os-include -noixemul -fstrict-aliasing -fexpensive-optimizations -mcpu=604 -fno-inline -mstring -mmultiple $CFLAGS"
1472                         LDFLAGS="$LDFLAGS -noixemul"
1473                 fi
1475                 if [ "$enable_profiling" = "0" ]; then
1476                         # -fomit-frame-pointer and -pg do not go well together (gcc errors they are incompatible)
1477                         CFLAGS="-fomit-frame-pointer $CFLAGS"
1478                 fi
1479                 CFLAGS="-O2 $CFLAGS"
1480         else
1481                 OBJS_SUBDIR="debug"
1483                 # Each debug level reduces the optimization by a bit
1484                 if [ $enable_debug -ge 1 ]; then
1485                         CFLAGS="$CFLAGS -g -D_DEBUG"
1486                         if [ "$os" = "PSP" ]; then
1487                                 CFLAGS="$CFLAGS -G0"
1488                         fi
1489                 fi
1490                 if [ $enable_debug -ge 2 ]; then
1491                         CFLAGS="$CFLAGS -fno-inline"
1492                 fi
1493                 if [ $enable_debug -ge 3 ]; then
1494                         CFLAGS="$CFLAGS -O0"
1495                 else
1496                         CFLAGS="$CFLAGS -O2"
1497                 fi
1498         fi
1500         if [ $enable_debug -le 2 ]; then
1501                 if basename "$cc_host" | grep -q "gcc"; then
1502                         # Define only when compiling with GCC. Some GLIBC versions use GNU
1503                         # extensions in a way that breaks build with at least ICC.
1504                         # This requires -O1 or more, so debug level 3 (-O0) is excluded.
1505                         CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
1506                 fi
1508                 if basename "$cc_build" | grep -q "gcc"; then
1509                         # Just add -O1 to the tools needed for building.
1510                         CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
1511                 fi
1512         fi
1514         if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then
1515                 # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
1516                 # wrongly optimizing ^= in loops. This disables the failing optimisation.
1517                 CFLAGS="$CFLAGS -fno-expensive-optimizations"
1518         fi
1520         if [ "$enable_profiling" != "0" ]; then
1521                 CFLAGS="$CFLAGS -pg"
1522                 LDFLAGS="$LDFLAGS -pg"
1523         fi
1525         if [ "$with_threads" = "0" ]; then
1526                 CFLAGS="$CFLAGS -DNO_THREADS"
1527         fi
1528         if [ "$with_sse" = "1" ]; then
1529                 CFLAGS="$CFLAGS -DWITH_SSE"
1530         fi
1532         if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
1533                 if [ "$os" = "CYGWIN" ]; then
1534                         flags="$flags -mwin32"
1535                         LDFLAGS="$LDFLAGS -mwin32"
1536                 fi
1537                 if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
1538                         if [ $cc_version -lt 406 ]; then
1539                                 flags="$flags -mno-cygwin"
1540                                 LDFLAGS="$LDFLAGS -mno-cygwin"
1541                         fi
1543                         if [ "$enable_console" != "0" ]; then
1544                                 LDFLAGS="$LDFLAGS -Wl,--subsystem,console"
1545                         else
1546                                 LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
1547                         fi
1549                         LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
1551                         if [ $cc_version -ge 404 ]; then
1552                                 LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
1553                         fi
1554                         if [ $cc_version -ge 407 ]; then
1555                                 CFLAGS="$CFLAGS -mno-ms-bitfields"
1556                         fi
1557                 fi
1558         fi
1560         if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
1561                 LIBS="$LIBS -lpthread"
1562         fi
1564         if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
1565                 LIBS="$LIBS -lc"
1566         fi
1567         if [ "$os" = "WINCE" ]; then
1568                 LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
1569         fi
1570         if [ "$os" = "PSP" ]; then
1571                 CFLAGS="$CFLAGS -I`$psp_config -p`/include"
1572                 LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
1574                 CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
1575                 LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
1576         fi
1578         if [ "$os" = "MORPHOS" ]; then
1579                 # -Wstrict-prototypes generates much noise because of system headers
1580                 CFLAGS="$CFLAGS -Wno-strict-prototypes"
1581         fi
1583         if [ "$os" = "OPENBSD" ]; then
1584                 LIBS="$LIBS -pthread"
1585         fi
1587         if [ "$os" = "OSX" ]; then
1588                 LDFLAGS="$LDFLAGS -framework Cocoa"
1590                 # Add macports include dir which is not always set a default system dir. This avoids zillions of bogus warnings.
1591                 CFLAGS="$CFLAGS -isystem/opt/local/include"
1593                 if [ "$enable_dedicated" = "0" ] && ([ "$cpu_type" = "32" ] || [ "$enable_universal" != "0" ]); then
1594                         LIBS="$LIBS -framework QuickTime"
1595                 else
1596                         CFLAGS="$CFLAGS -DNO_QUICKTIME"
1597                 fi
1599                 if [ "$enable_universal" = "0" ]; then
1600                         # Universal builds set this elsewhere
1601                         CFLAGS="$OSX_SYSROOT $CFLAGS"
1602                         LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
1603                 fi
1604         fi
1606         if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
1607                 LIBS="$LIBS -lmidi -lbe"
1608         fi
1610         # Most targets act like UNIX, just with some additions
1611         if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
1612                 CFLAGS="$CFLAGS -DUNIX"
1613         fi
1614         # And others like Windows
1615         if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
1616                 CFLAGS="$CFLAGS -DWIN"
1617         fi
1619         if [ -n "$allegro_config" ]; then
1620                 CFLAGS="$CFLAGS -DWITH_ALLEGRO"
1621                 CFLAGS="$CFLAGS `$allegro_config --cflags`"
1622                 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1623                         if [ "$enable_static" != "0" ]; then
1624                                 LIBS="$LIBS `$allegro_config --static --libs`"
1625                         else
1626                                 LIBS="$LIBS `$allegro_config --libs`"
1627                         fi
1628                 fi
1629         fi
1631         if [ -n "$sdl_config" ]; then
1632                 CFLAGS="$CFLAGS -DWITH_SDL"
1633                 # SDL must not add _GNU_SOURCE as it breaks many platforms
1634                 CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
1635                 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1636                         if [ "$enable_static" != "0" ]; then
1637                                 LIBS="$LIBS `$sdl_config --static-libs`"
1638                         else
1639                                 LIBS="$LIBS `$sdl_config --libs`"
1640                         fi
1641                 fi
1642         fi
1644         if [ "$with_cocoa" != "0" ]; then
1645                 CFLAGS="$CFLAGS -DWITH_COCOA"
1646                 LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox"
1648                 if [ "$enable_cocoa_quartz" != "0" ]; then
1649                         CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ"
1650                 fi
1652                 if [ "$enable_cocoa_quickdraw" != "0" ]; then
1653                         CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW"
1654                 fi
1655         fi
1657         if [ "$with_zlib" != "0" ]; then
1658                 CFLAGS="$CFLAGS -DWITH_ZLIB"
1659                 CFLAGS="$CFLAGS `$zlib_config --cflags | tr '\n\r' '  '`"
1660                 if [ "$enable_static" != "0" ]; then
1661                         LIBS="$LIBS `$zlib_config --libs --static | tr '\n\r' '  '`"
1662                 else
1663                         LIBS="$LIBS `$zlib_config --libs | tr '\n\r' '  '`"
1664                 fi
1665         fi
1667         if [ -n "$lzma_config" ]; then
1668                 CFLAGS="$CFLAGS -DWITH_LZMA"
1669                 CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' '  '`"
1671                 if [ "$enable_static" != "0" ]; then
1672                         CFLAGS="$CFLAGS -DLZMA_API_STATIC"
1673                         LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' '  '`"
1674                 else
1675                         LIBS="$LIBS `$lzma_config --libs | tr '\n\r' '  '`"
1676                 fi
1677         fi
1679         if [ "$with_lzo2" != "0" ]; then
1680                 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1681                         LIBS="$LIBS $lzo2"
1682                 else
1683                         LIBS="$LIBS -llzo2"
1684                 fi
1685                 CFLAGS="$CFLAGS -DWITH_LZO"
1686         fi
1688         if [ -n "$xdg_basedir_config" ]; then
1689                 CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR"
1690                 CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' '  '`"
1692                 if [ "$enable_static" != "0" ]; then
1693                         LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' '  '`"
1694                 else
1695                         LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' '  '`"
1696                 fi
1697         fi
1699         # 64bit machines need -D_SQ64
1700         if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
1701                 CFLAGS="$CFLAGS -D_SQ64"
1702         fi
1703         CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR"
1705         if [ -n "$png_config" ]; then
1706                 CFLAGS="$CFLAGS -DWITH_PNG"
1707                 CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' '  '`"
1709                 if [ "$enable_static" != "0" ]; then
1710                         LIBS="$LIBS `$png_config --libs --static | tr '\n\r' '  '`"
1711                 else
1712                         LIBS="$LIBS `$png_config --libs | tr '\n\r' '  '`"
1713                 fi
1714         fi
1716         if [ -n "$fontconfig_config" ]; then
1717                 CFLAGS="$CFLAGS -DWITH_FONTCONFIG"
1718                 CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' '  '`"
1720                 if [ "$enable_static" != "0" ]; then
1721                         LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' '  '`"
1722                 else
1723                         LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' '  '`"
1724                 fi
1725         fi
1727         if [ -n "$freetype_config" ]; then
1728                 CFLAGS="$CFLAGS -DWITH_FREETYPE"
1729                 CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' '  '`"
1731                 if [ "$enable_static" != "0" ]; then
1732                         LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' '  '`"
1733                 else
1734                         LIBS="$LIBS `$freetype_config --libs | tr '\n\r' '  '`"
1735                 fi
1736         fi
1738         if [ -n "$icu_layout_config" ]; then
1739                 CFLAGS="$CFLAGS -DWITH_ICU_LAYOUT"
1740                 CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' '  '`"
1742                 if [ "$static_icu" != "0" ]; then
1743                         LIBS="$LIBS `$icu_layout_config --libs --static | tr '\n\r' '  ' | sed s/-licu/-lsicu/g`"
1744                 else
1745                         LIBS="$LIBS `$icu_layout_config --libs | tr '\n\r' '  '`"
1746                 fi
1747         fi
1749         if [ -n "$icu_sort_config" ]; then
1750                 CFLAGS="$CFLAGS -DWITH_ICU_SORT"
1751                 CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' '  '`"
1753                 if [ "$static_icu" != "0" ]; then
1754                         LIBS="$LIBS `$icu_sort_config --libs --static | tr '\n\r' '  ' | sed s/-licu/-lsicu/g`"
1755                 else
1756                         LIBS="$LIBS `$icu_sort_config --libs | tr '\n\r' '  '`"
1757                 fi
1758         fi
1761         if [ "$with_direct_music" != "0" ]; then
1762                 CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
1763                 # GCC 4.0+ doesn't like the DirectX includes (gives tons of
1764                 #  warnings on it we won't be able to fix). For now just
1765                 #  suppress those warnings.
1766                 if [ $cc_version -ge 400 ]; then
1767                         CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
1768                 fi
1769         fi
1771         if [ -n "$libtimidity_config" ]; then
1772                 CFLAGS="$CFLAGS -DLIBTIMIDITY"
1773                 CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' '  '`"
1775                 if [ "$enable_static" != "0" ]; then
1776                         LIBS="$LIBS `$libtimidity_config --libs --static | tr '\n\r' '  '`"
1777                 else
1778                         LIBS="$LIBS `$libtimidity_config --libs | tr '\n\r' '  '`"
1779                 fi
1780         fi
1782         if [ "$with_iconv" != "0" ]; then
1783                 CFLAGS="$CFLAGS -DWITH_ICONV"
1784                 if [ "$link_to_iconv" = "yes" ]; then
1785                         LIBS="$LIBS -liconv"
1786                         if [ "$with_iconv" != "2" ]; then
1787                                 CFLAGS="$CFLAGS -I$with_iconv/include"
1788                                 LIBS="$LIBS -L$with_iconv/lib"
1789                         fi
1790                 fi
1792                 if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then
1793                         CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV"
1794                 fi
1795         fi
1797         if [ -n "$with_midi" ]; then
1798                 CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\""
1799         fi
1800         if [ -n "$with_midi_arg" ]; then
1801                 CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\""
1802         fi
1804         if [ "$enable_dedicated" != "0" ]; then
1805                 CFLAGS="$CFLAGS -DDEDICATED"
1806         fi
1808         if [ "$enable_unicode" != "0" ]; then
1809                 CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
1810         fi
1812         if [ "$enable_network" != "0" ]; then
1813                 CFLAGS="$CFLAGS -DENABLE_NETWORK"
1815                 if [ "$os" = "BEOS" ]; then
1816                         LDFLAGS="$LDFLAGS -lbind -lsocket"
1817                 fi
1819                 if [ "$os" = "HAIKU" ]; then
1820                         LDFLAGS="$LDFLAGS -lnetwork"
1821                 fi
1823                 if [ "$os" = "SUNOS" ]; then
1824                         LDFLAGS="$LDFLAGS -lnsl -lsocket"
1825                 fi
1826         fi
1828         if [ "$enable_static" != "0" ]; then
1829                 # OSX can't handle -static in LDFLAGS
1830                 if [ "$os" != "OSX" ]; then
1831                         LDFLAGS="$LDFLAGS -static"
1832                 fi
1833         fi
1835         if [ "$enable_assert" = "0" ]; then
1836                 CFLAGS="$CFLAGS -DNDEBUG"
1837                 CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG"
1838         fi
1840         if [ "$enable_desync_debug" != "0" ]; then
1841                 CFLAGS="$CFLAGS -DRANDOM_DEBUG"
1842         fi
1844         if [ "$enable_osx_g5" != "0" ]; then
1845                 CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
1846         fi
1848         if [ -n "$personal_dir" ]; then
1849                 CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
1850         fi
1852         if [ -n "$shared_dir" ]; then
1853                 CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
1854         fi
1856         CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
1858         if [ "$enable_lto" != "0" ]; then
1859                 lto_warn=1
1860                 if echo "$FEATURES_BUILD" | grep -q "lto"; then
1861                         LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD"
1862                         lto_warn=0
1863                 fi
1864                 if echo "$FEATURES" | grep -q "lto"; then
1865                         LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS"
1866                         lto_warn=0
1867                 fi
1868                 if [ "$lto_warn" != "0" ]; then
1869                         log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it"
1870                         log 1 "WARNING: LTO/IPO has been disabled"
1871                 fi
1872         fi
1874         log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
1875         log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
1876         log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
1877         log 1 "using CFLAGS... $CFLAGS"
1878         log 1 "using CXXFLAGS... $CXXFLAGS"
1879         log 1 "using LDFLAGS... $LIBS $LDFLAGS"
1881         # Makedepend doesn't like something like: -isysroot /OSX/blabla
1882         #  so convert it to: -isysroot -OSX/blabla. makedepend just ignores
1883         #  any - command it doesn't know, so we are pretty save.
1884         # Lovely hackish, not?
1885         # Btw, this almost always comes from outside the configure, so it is
1886         #  not something we can control.
1887         # Also make makedepend aware of compiler's built-in defines.
1888         if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then
1889                 # Append CXXFLAGS possibly containing -std=c++0x
1890                 cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
1892                 # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
1893                 cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
1894         else
1895                 makedepend=""
1896         fi
1898         if [ "$with_distcc" != "0" ]; then
1899                 cc_host="$distcc $cc_host"
1900                 cxx_host="$distcc $cxx_host"
1901                 log 1 ""
1902                 log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
1903                 log 1 ""
1904         fi
1906         if [ "$with_ccache" != "0" ]; then
1907                 cc_host="$ccache $cc_host"
1908                 cxx_host="$ccache $cxx_host"
1909         fi
1912 check_compiler() {
1913         # Params:
1914         # $1 - Type for message (build / host)
1915         # $2 - What to fill with the found compiler
1916         # $3 - System to try
1917         # $4 - Compiler to try
1918         # $5 - Env-setting to try
1919         # $6 - GCC alike to try
1920         # $7 - CC alike to try
1921         # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
1922         # $9 - What the command is to check for
1924         if [ -n "$3" ]; then
1925                 # Check for system
1926                 if [ -z "$6" ]; then
1927                         compiler="$3"
1928                 else
1929                         compiler="$3-$6"
1930                 fi
1931                 machine=`eval $compiler $9 2>/dev/null`
1932                 ret=$?
1933                 eval "$2=\"$compiler\""
1935                 log 2 "executing $compiler $9"
1936                 log 2 "  returned $machine"
1937                 log 2 "  exit code $ret"
1939                 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1940                         if [ -z "$5" ]; then
1941                                 log 1 "checking $1... $compiler not found"
1942                                 log 1 "I couldn't detect any $6 binary for $3"
1943                                 exit 1
1944                         else
1945                                 compiler="$3-$5"
1946                         fi
1947                         machine=`eval $compiler $9 2>/dev/null`
1948                         ret=$?
1949                         eval "$2=\"$compiler\""
1951                         log 2 "executing $compiler $9"
1952                         log 2 "  returned $machine"
1953                         log 2 "  exit code $ret"
1955                         if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1956                                 log 1 "checking $1... $compiler not found"
1957                                 log 1 "I couldn't detect any $5 binary for $3"
1958                                 exit 1
1959                         fi
1960                 fi
1962                 if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
1963                         log 1 "checking $1... expected $3, found $machine"
1964                         log 1 "the compiler suggests it doesn't build code for the machine you specified"
1965                         exit 1
1966                 fi
1967         elif [ -n "$4" ]; then
1968                 # Check for manual compiler
1969                 machine=`$4 $9 2>/dev/null`
1970                 ret=$?
1971                 eval "$2=\"$4\""
1973                 log 2 "executing $4 $9"
1974                 log 2 "  returned $machine"
1975                 log 2 "  exit code $ret"
1977                 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1978                         log 1 "checking $1... $4 not found"
1979                         log 1 "the selected binary doesn't seem to be a $6 binary"
1980                         exit 1
1981                 fi
1982         else
1983                 # Nothing given, autodetect
1985                 if [ -n "$5" ]; then
1986                         machine=`$5 $9 2>/dev/null`
1987                         ret=$?
1988                         eval "$2=\"$5\""
1990                         log 2 "executing $5 $9"
1991                         log 2 "  returned $machine"
1992                         log 2 "  exit code $ret"
1994                         # The user defined a GCC that doesn't reply to $9.. abort
1995                         if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1996                                 log 1 "checking $1... $5 unusable"
1997                                 log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary"
1998                                 log 1 "please redefine the CC/CXX environment to a $6 binary"
1999                                 exit 1
2000                         fi
2001                 else
2002                         log 2 "checking $1... CC/CXX not set (skipping)"
2004                         # No $5, so try '$6'
2005                         machine=`$6 $9 2>/dev/null`
2006                         ret=$?
2007                         eval "$2=\"$6\""
2009                         log 2 "executing $6 $9"
2010                         log 2 "  returned $machine"
2011                         log 2 "  exit code $ret"
2013                         if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2014                                 # Maybe '$7'?
2015                                 machine=`$7 $9 2>/dev/null`
2016                                 ret=$?
2017                                 eval "$2=\"$7\""
2019                                 log 2 "executing $7 $9"
2020                                 log 2 "  returned $machine"
2021                                 log 2 "  exit code $ret"
2023                                 # All failed, abort
2024                                 if [ -z "$machine" ]; then
2025                                         log 1 "checking $1... $6 not found"
2026                                         log 1 "I couldn't detect any $6 binary on your system"
2027                                         log 1 "please define the CC/CXX environment to where it is located"
2029                                         exit 1
2030                                 fi
2031                         fi
2032                 fi
2033         fi
2035         if [ "$8" != "0" ]; then
2036                 eval "res=\$$2"
2037                 log 1 "checking $1... $res"
2038         else
2039                 log 1 "checking $1... $machine"
2040         fi
2043 check_build() {
2044         if [ "$os" = "FREEBSD" ]; then
2045                 # FreeBSD's C compiler does not support dump machine.
2046                 # However, removing C support is not possible because PSP must be linked with the C compiler.
2047                 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
2048         else
2049                 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
2050         fi
2053 check_host() {
2054         # By default the host is the build
2055         if [ -z "$host" ]; then host="$build"; fi
2057         if [ "$os" = "FREEBSD" ]; then
2058                 # FreeBSD's C compiler does not support dump machine.
2059                 # However, removing C support is not possible because PSP must be linked with the C compiler.
2060                 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
2061         else
2062                 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
2063         fi
2066 check_cxx_build() {
2067         check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine"
2070 check_cxx_host() {
2071         # By default the host is the build
2072         if [ -z "$host" ]; then host="$build"; fi
2073         check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine"
2076 check_windres() {
2077         if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2078                 check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
2079         fi
2082 check_strip() {
2083         if [ "$os" = "OS2" ]; then
2084                 # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly
2085                 log 1 "checking host strip... using gcc -s option"
2086         elif [ "$os" = "OSX" ]; then
2087                 # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something
2088                 echo "int main(int argc, char *argv[]) { }" > strip.test.c
2089                 $cxx_host strip.test.c -o strip.test
2090                 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test"
2091                 rm -f strip.test.c strip.test
2092         else
2093                 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V"
2094         fi
2097 check_lipo() {
2098         if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
2099                 echo "int main(int argc, char *argv[]) { }" > lipo.test.c
2100                 $cxx_host lipo.test.c -o lipo.test
2101                 check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test"
2102                 rm -f lipo.test.c lipo.test
2103         fi
2106 check_osx_sdk() {
2107         local sysroot=""
2108         if [ -n "$1" ]; then
2109                 if echo "$1" | grep -q / ; then
2110                         # Seems to be a file system path
2111                         osx_sdk_path="$1"
2112                 else
2113                         osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk"
2114                 fi
2115                 if [ ! -d "$osx_sdk_path" ]; then
2116                         # No directory, not present or garbage
2117                         return 1
2118                 fi
2120                 # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced
2121                 sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4"
2122         fi
2124 cat > tmp.osx.mm << EOF
2125 #include <Cocoa/Cocoa.h>
2126 int main() {
2127         kCGBitmapByteOrder32Host;
2128         return 0;
2131         execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2132         eval $execute > /dev/null
2133         ret=$?
2134         log 2 "executing $execute"
2135         log 2 "  exit code $ret"
2136         rm -f tmp.osx.mm tmp.osx
2137         return $ret
2140 check_direct_music() {
2141         echo "
2142                 #include <windows.h>
2143                 #include <dmksctrl.h>
2144                 #include <dmusici.h>
2145                 #include <dmusicc.h>
2146                 #include <dmusicf.h>
2147                 int main(int argc, char *argv[]) { }" > direct_music.test.c
2148         $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
2149         res=$?
2150         rm -f direct_music.test.c direct_music.test
2152         if [ "$res" != "0" ]; then
2153                 if [ "$with_direct_music" != "1" ]; then
2154                         log 1 "configure: error: direct-music is not available on this system"
2155                         exit 1
2156                 fi
2157                 with_direct_music="0"
2159                 log 1 "checking direct-music... not found"
2160         else
2161                 log 1 "checking direct-music... found"
2162         fi
2165 check_makedepend() {
2166         if [ "$enable_builtin_depend" != "0" ]; then
2167                 with_makedepend="0"
2168         fi
2170         if [ "$with_makedepend" = "0" ]; then
2171                 log 1 "checking makedepend... disabled"
2172                 return
2173         fi
2175         if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then
2176                 makedepend="makedepend"
2177         else
2178                 makedepend="$with_makedepend"
2179         fi
2181         rm -f makedepend.tmp
2182         touch makedepend.tmp
2183         res=`$makedepend -fmakedepend.tmp 2>/dev/null`
2184         res=$?
2185         log 2 "executing $makedepend -f makedepend.tmp"
2186         log 2 "  returned `cat makedepend.tmp`"
2187         log 2 "  exit code $ret"
2189         if [ ! -s makedepend.tmp ]; then
2190                 rm -f makedepend.tmp makedepend.tmp.bak
2192                 if [ "$with_makedepend" = "2" ]; then
2193                         log 1 "checking makedepend... not found"
2195                         log 1 "I couldn't detect any makedepend on your system"
2196                         log 1 "please locate it via --makedepend=[binary]"
2198                         exit 1
2199                 elif [ "$with_makedepend" != "1" ]; then
2200                         log 1 "checking makedepend... $makedepend not found"
2202                         log 1 "the selected file doesn't seem to be a valid makedepend binary"
2204                         exit 1
2205                 else
2206                         log 1 "checking makedepend... not found"
2208                         with_makedepend="0"
2209                         return
2210                 fi
2211         fi
2213         rm -f makedepend.tmp makedepend.tmp.bak
2215         log 1 "checking makedepend... $makedepend"
2218 check_version() {
2219         # $1 - requested version (major.minor)
2220         # $2 - version we got (major.minor)
2222         if [ -z "$2" ]; then
2223                 return 0
2224         fi
2226         req_major=`echo $1 | cut -d. -f1`
2227         got_major=`echo $2 | cut -d. -f1`
2228         if [ $got_major -lt $req_major ]; then
2229                 return 0
2230         elif [ $got_major -gt $req_major ]; then
2231                 return 1
2232         fi
2234         req_minor=`echo $1 | cut -d. -f2`
2235         got_minor=`echo $2 | cut -d. -f2`
2236         if [ $got_minor -lt $req_minor ]; then
2237                 return 0
2238         fi
2239         return 1
2242 detect_awk() {
2243         # Not all awks allow gsub(), so we test for that here! It is in fact all we need...
2245         # These awks are known to work. Test for them explicit
2246         awks="gawk mawk nawk"
2248         awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
2249         awk_param="' { ORS = \" \" } /\.c$/   { gsub(\".c$\",   \".o\", \$0); print \$0; }' 2>/dev/null"
2250         awk_result="a.o b.o c.o "
2251         log 2 "Detecing awk..."
2253         log 2 "Trying: $awk_prefix $awk $awk_param"
2254         res=`eval $awk_prefix $awk $awk_param`
2255         log 2 "Result: '$res'"
2256         if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
2257                 # User didn't supply his own awk, so try to detect some other known working names for an awk
2258                 for awk in $awks; do
2259                         log 2 "Trying: $awk_prefix $awk $awk_param"
2260                         res=`eval $awk_prefix $awk $awk_param`
2261                         log 2 "Result: '$res'"
2262                         if [ "$res" = "$awk_result" ]; then break; fi
2263                 done
2265                 if [ "$res" != "$awk_result" ]; then
2266                         log 1 "checking awk... not found"
2267                         log 1 "configure: error: no awk found"
2268                         log 1 "configure: error: please install one of the following: $awks"
2269                         exit 1
2270                 fi
2271         fi
2272         if [ "$res" != "$awk_result" ]; then
2273                 log 1 "checking awk... not found"
2274                 log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
2275                 exit 1
2276         fi
2278         log 1 "checking awk... $awk"
2281 detect_os() {
2282         if [ "$os" = "DETECT" ]; then
2283                 # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
2285                 # Try first via dumpmachine, then via uname
2286                 case `echo "$host" | tr '[A-Z]' '[a-z]'` in
2287                         *linux*)     os=UNIX;;
2288                         *darwin*)    os=OSX;;
2289                         *freebsd*)   os=FREEBSD;;
2290                         *dragonfly*) os=DRAGONFLY;;
2291                         *openbsd*)   os=OPENBSD;;
2292                         *netbsd*)    os=NETBSD;;
2293                         *hp-ux*)     os=HPUX;;
2294                         *morphos*)   os=MORPHOS;;
2295                         *beos*)      os=BEOS;;
2296                         *haiku*)     os=HAIKU;;
2297                         *sunos*)     os=SUNOS;;
2298                         *solaris*)   os=SUNOS;;
2299                         *cygwin*)    os=CYGWIN;;
2300                         *mingw*)     os=MINGW;;
2301                         *os2*)       os=OS2;;
2302                         *dos*)       os=DOS;;
2303                         *wince*)     os=WINCE;;
2304                         *psp*)       os=PSP;;
2305                 esac
2307                 if [ "$os" = "DETECT" ]; then
2308                         case `LC_ALL=C uname | tr '[A-Z]' '[a-z]'` in
2309                                 *linux*)     os=UNIX;;
2310                                 *darwin*)    os=OSX;;
2311                                 *freebsd*)   os=FREEBSD;;
2312                                 *dragonfly*) os=DRAGONFLY;;
2313                                 *openbsd*)   os=OPENBSD;;
2314                                 *netbsd*)    os=NETBSD;;
2315                                 *hp-ux*)     os=HPUX;;
2316                                 *morphos*)   os=MORPHOS;;
2317                                 *beos*)      os=BEOS;;
2318                                 *haiku*)     os=HAIKU;;
2319                                 *sunos*)     os=SUNOS;;
2320                                 *cygwin*)    os=CYGWIN;;
2321                                 *mingw*)     os=MINGW;;
2322                                 *os/2*)      os=OS2;;
2323                                 *gnu*)       os=UNIX;;
2324                         esac
2325                 fi
2327                 if [ "$os" = "DETECT" ]; then
2328                         log 1 "detecting OS... none detected"
2329                         log 1 "I couldn't detect your OS. Please use --os=OS to force one"
2330                         log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
2331                         exit 1
2332                 fi
2334                 log 1 "detecting OS... $os"
2335         else
2336                 log 1 "forcing OS... $os"
2337         fi
2340 detect_allegro() {
2341         # 0 means no, 1 is auto-detect, 2 is force
2342         if [ "$with_allegro" = "0" ]; then
2343                 log 1 "checking Allegro... disabled"
2345                 allegro_config=""
2346                 return 0
2347         fi
2349         if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then
2350                 log 1 "configure: error: it is impossible to compile both Allegro and COCOA"
2351                 log 1 "configure: error: please deselect one of them and try again"
2352                 exit 1
2353         fi
2355         if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2356                 log 1 "configure: error: it is impossible to compile a dedicated with Allegro"
2357                 log 1 "configure: error: please deselect one of them and try again"
2358                 exit 1
2359         fi
2361         if [ "$enable_dedicated" != "0" ]; then
2362                 log 1 "checking Allegro... dedicated server, skipping"
2364                 allegro_config=""
2365                 return 0
2366         fi
2368         # By default on OSX we don't use Allegro. The rest is auto-detect
2369         if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2370                 log 1 "checking Allegro... OSX, skipping"
2372                 allegro_config=""
2373                 return 0
2374         fi
2376         detect_pkg_config "$with_allegro" "allegro" "allegro_config" "4.4"
2380 detect_sdl() {
2381         # 0 means no, 1 is auto-detect, 2 is force
2382         if [ "$with_sdl" = "0" ]; then
2383                 log 1 "checking SDL... disabled"
2385                 sdl_config=""
2386                 return 0
2387         fi
2389         if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
2390                 log 1 "configure: error: it is impossible to compile both SDL and COCOA"
2391                 log 1 "configure: error: please deselect one of them and try again"
2392                 exit 1
2393         fi
2395         if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2396                 log 1 "configure: error: it is impossible to compile a dedicated with SDL"
2397                 log 1 "configure: error: please deselect one of them and try again"
2398                 exit 1
2399         fi
2401         if [ "$enable_dedicated" != "0" ]; then
2402                 log 1 "checking SDL... dedicated server, skipping"
2404                 sdl_config=""
2405                 return 0
2406         fi
2408         # By default on OSX we don't use SDL. The rest is auto-detect
2409         if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2410                 log 1 "checking SDL... OSX, skipping"
2412                 sdl_config=""
2413                 return 0
2414         fi
2416         if [ "$os" = "OSX" ]; then
2417                 log 1 "WARNING: sdl is known to fail on some versions of Mac OS X"
2418                 log 1 "WARNING: with some hardware configurations. Use at own risk!"
2419                 sleep 5
2420         fi
2422         detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2"
2425 detect_osx_sdk() {
2426         # Try to find the best SDK available. For a normal build this
2427         # is currently the 10.5 SDK as this is needed to compile all
2428         # optional code. Because such an executable won't run on 10.4
2429         # or lower, also check for the 10.4u SDK when doing an universal
2430         # build.
2432         # Check for the 10.5 SDK, but try 10.6 if that fails
2433         check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path=""
2435         if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then
2436                 # No better SDK or universal build enabled? Check 10.4u SDK as well
2437                 local old_sdk="$osx_sdk_path"
2438                 if check_osx_sdk "10.4u"; then
2439                         osx_sdk_104_path="$osx_sdk_path"
2440                 else
2441                         osx_sdk_104_path=""
2442                 fi
2443                 if [ -z "$old_sdk" ]; then
2444                         osx_sdk_path="$osx_sdk_104_path"
2445                 else
2446                         osx_sdk_path="$old_sdk"
2447                 fi
2448         fi
2450         if [ -z "$osx_sdk_path" ]; then
2451                 log 1 "Your system SDK is probably too old"
2452                 log 1 "Please install/upgrade your Xcode to >= 2.5"
2454                 exit 1
2455         fi
2458 detect_cocoa() {
2459         # 0 means no, 1 is auto-detect, 2 is force
2460         if [ "$with_cocoa" = "0" ]; then
2461                 log 1 "checking COCOA... disabled"
2463                 return 0
2464         fi
2466         if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2467                 log 1 "configure: error: it is impossible to compile a dedicated with COCOA"
2468                 log 1 "configure: error: please deselect one of them and try again"
2469                 exit 1
2470         fi
2472         if [ "$enable_dedicated" != "0" ]; then
2473                 log 1 "checking COCOA... dedicated server, skipping"
2475                 with_cocoa="0"
2476                 return 0
2477         fi
2479         # By default on OSX we use COCOA. The rest doesn't support it
2480         if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then
2481                 log 1 "checking COCOA... not OSX, skipping"
2483                 with_cocoa="0"
2484                 return 0
2485         fi
2487         if [ "$os" != "OSX" ]; then
2488                 log 1 "checking COCOA... not OSX"
2490                 log 1 "configure: error: COCOA video driver is only supported for OSX"
2491                 exit 1
2492         fi
2494         log 1 "checking COCOA... found"
2497         if [ "$enable_cocoa_quartz" != "0" ]; then
2498                 log 1 "checking whether to enable the Quartz window subdriver... yes"
2499         else
2500                 log 1 "checking whether to enable the Quartz window subdriver... no"
2501         fi
2503         detect_quickdraw
2506 detect_quickdraw() {
2507         # 0 means no, 1 is auto-detect, 2 is force
2508         if [ "$enable_cocoa_quickdraw" = "0" ]; then
2509                 log 1 "checking Quickdraw window subdriver... disabled"
2510                 return 0
2511         fi
2513         # Assume QuickDraw is available when doing an universal build
2514         if [ "$enable_universal" != "0" ]; then
2515                 log 1 "checking Quickdraw window subdriver... found"
2516                 return 0
2517         fi
2519         # 64 bits doesn't have quickdraw
2520         if [ "$cpu_type" = "64" ]; then
2521                 enable_cocoa_quickdraw="0"
2522                 log 1 "checking Quickdraw window subdriver... disabled (64 bits)"
2523                 return 0
2524         fi
2526 cat > tmp.osx.mm << EOF
2527 #include <AvailabilityMacros.h>
2528 #import <Cocoa/Cocoa.h>
2529 int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; }
2531         execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2532         eval $execute > /dev/null
2533         ret=$?
2534         log 2 "executing $execute"
2535         log 2 "  exit code $ret"
2536         rm -f tmp.osx.mm tmp.osx
2537         if [ "$ret" != "0" ]; then
2538                 log 1 "checking Quickdraw window subdriver... not found"
2540                 # It was forced, so it should be found.
2541                 if [ "$enable_cocoa_quickdraw" != "1" ]; then
2542                         log 1 "configure: error: Quickdraw window driver could not be found"
2543                         exit 1
2544                 fi
2546                 enable_cocoa_quickdraw=0
2547                 return 0
2548         fi
2550         enable_cocoa_quickdraw=1
2551         log 1 "checking Quickdraw window subdriver... found"
2554 detect_library() {
2555         # $1 - config-param ($with_zlib value)
2556         # $2 - library name ('zlib', sets $zlib)
2557         # $3 - static library name (libz.a)
2558         # $4 - header directory ()
2559         # $5 - header name (zlib.h)
2560         # $6 - force static (if non-empty)
2562         if [ -n "$6" ]; then force_static="1"; fi
2564         # 0 means no, 1 is auto-detect, 2 is force
2565         if [ "$1" = "0" ]; then
2566                 log 1 "checking $2... disabled"
2568                 eval "$2=\"\""
2569                 return 0
2570         fi
2572         log 2 "detecting $2"
2574         if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2575                 eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2576                 eval "res=\$$2"
2577                 if [ -z "$res" ]; then
2578                         log 2 "  trying /usr/include/$4$5... no"
2579                         eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2580                 fi
2581                 eval "res=\$$2"
2582                 if [ -z "$res" ]; then
2583                         log 2 "  trying /usr/local/include/$4$5... no"
2584                         eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2585                 fi
2586                 eval "res=\$$2"
2587                 if [ -z "$res" ]; then
2588                         log 2 "  trying /mingw/include/$4$5... no"
2589                         eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2590                 fi
2591                 eval "res=\$$2"
2592                 if [ -z "$res" ]; then
2593                         log 2 "  trying /opt/local/include/$4$5... no"
2594                 fi
2595                 if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
2596                         eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2597                         eval "res=\$$2"
2598                         if [ -z "$res" ]; then
2599                                 log 2 "  trying /usr/pkg/include/$4$5... no"
2600                         fi
2601                 fi
2602                 if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
2603                         if [ -z "$includeDir" ]; then
2604                                 includeDir=`finddir B_SYSTEM_HEADERS_DIRECTORY`
2605                         fi
2606                         eval "$2=`ls -1 $includeDir/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2607                         eval "res=\$$2"
2608                         if [ -z "$res" ]; then
2609                                 log 2 "  trying $includeDir/$4$5... no"
2610                         fi
2611                 fi
2613                 eval "res=\$$2"
2614                 if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
2615                         eval "res=\$$2"
2616                         log 2 "  trying $res... found"
2617                         # Now find the static lib, if needed
2618                         eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2619                         eval "res=\$$2"
2620                         if [ -z "$res" ]; then
2621                                 log 2 "  trying /lib/$3... no"
2622                                 eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2623                         fi
2624                         eval "res=\$$2"
2625                         if [ -z "$res" ]; then
2626                                 log 2 "  trying /usr/lib/$3... no"
2627                                 eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2628                         fi
2629                         eval "res=\$$2"
2630                         if [ -z "$res" ]; then
2631                                 log 2 "  trying /usr/local/lib/$3... no"
2632                                 eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2633                         fi
2634                         eval "res=\$$2"
2635                         if [ -z "$res" ]; then
2636                                 log 2 "  trying /mingw/lib/$3... no"
2637                                 log 1 "configure: error: $2 couldn't be found"
2638                                 log 1 "configure: error: you requested a static link, but I can't find $3"
2640                                 exit 1
2641                         fi
2642                 fi
2643         else
2644                 # Make sure it exists
2645                 if [ -f "$1" ]; then
2646                         eval "$2=`ls $1 2>/dev/null`"
2647                 else
2648                         eval "$2=`ls $1/$3 2>/dev/null`"
2649                 fi
2650         fi
2652         eval "res=\$$2"
2653         if [ -z "$res" ]; then
2654                 log 1 "checking $2... not found"
2655                 if [ "$1" = "2" ]; then
2656                         log 1 "configure: error: $2 couldn't be found"
2658                         exit 1
2659                 elif [ "$1" != "1" ]; then
2660                         log 1 "configure: error: $2 couldn't be found"
2661                         log 1 "configure: error: you supplied '$1', but it seems invalid"
2663                         exit 1
2664                 fi
2666                 eval "with_$2=0"
2668                 return 0
2669         fi
2671         eval "res=\$$2"
2672         log 2 "  trying $res... found"
2674         log 1 "checking $2... found"
2677 detect_zlib() {
2678         detect_pkg_config "$with_zlib" "zlib" "zlib_config" "1.2"
2681 detect_lzo2() {
2682         detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
2685 detect_libtimidity() {
2686         detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1"
2689 detect_pkg_config() {
2690         # $1 - config-param ($with_lzma value)
2691         # $2 - package name ('liblzma')
2692         # $3 - config name ('lzma_config', sets $lzma_config)
2693         # $4 - minimum module version ('2.3')
2694         # $5 - check for dedicated, 1 is "skif if dedicated"
2696         # 0 means no, 1 is auto-detect, 2 is force
2697         if [ "$1" = "0" ]; then
2698                 log 1 "checking $2... disabled"
2700                 eval "$3=\"\""
2701                 return 0
2702         fi
2704         if [ "$5" = "1" ] && [ "$1" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2705                 log 1 "checking $2... dedicated server, skipping"
2707                 eval "$3=\"\""
2708                 return 0
2709         fi
2711         log 2 "detecting $2"
2713         if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2714                 pkg_config_call="$pkg_config $2"
2715         else
2716                 pkg_config_call="$1"
2717         fi
2719         version=`$pkg_config_call --modversion 2>/dev/null`
2720         ret=$?
2721         check_version "$4" "$version"
2722         version_ok=$?
2723         log 2 "executing $pkg_config_call --modversion"
2724         log 2 "  returned $version"
2725         log 2 "  exit code $ret"
2727         if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2728                 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2729                         log 1 "checking $2... needs at least version $4, $2 NOT enabled"
2730                 else
2731                         log 1 "checking $2... not found"
2732                 fi
2734                 # It was forced, so it should be found.
2735                 if [ "$1" != "1" ]; then
2736                         log 1 "configure: error: $pkg_config $2 couldn't be found"
2737                         log 1 "configure: error: you supplied '$1', but it seems invalid"
2738                         exit 1
2739                 fi
2741                 eval "$3=\"\""
2742                 return 0
2743         fi
2745         eval "$3=\"$pkg_config_call\""
2746         log 1 "checking $2... found"
2749 detect_lzma() {
2750         detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0"
2753 detect_xdg_basedir() {
2754         detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2"
2757 detect_png() {
2758         detect_pkg_config "$with_png" "libpng" "png_config" "1.2"
2761 detect_freetype() {
2762         detect_pkg_config "$with_freetype" "freetype2" "freetype_config" "2.2" "1"
2765 detect_fontconfig() {
2766         # 0 means no, 1 is auto-detect, 2 is force
2767         if [ "$with_fontconfig" = "0" ]; then
2768                 log 1 "checking libfontconfig... disabled"
2770                 fontconfig_config=""
2771                 return 0
2772         fi
2773         if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2774                 log 1 "checking libfontconfig... WIN32, skipping"
2775                 fontconfig_config=""
2776                 return 0
2777         fi
2779         if [ "$os" = "OSX" ]; then
2780                 log 1 "checking libfontconfig... OSX, skipping"
2781                 fontconfig_config=""
2782                 return 0
2783         fi
2785         detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3" "1"
2788 detect_icu_layout() {
2789         detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
2792 detect_icu_sort() {
2793         detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
2796 detect_pspconfig() {
2797         # 0 means no, 1 is auto-detect, 2 is force
2798         if [ "$with_psp_config" = "0" ]; then
2799                 log 1 "checking psp-config... disabled"
2801                 psp_config=""
2802                 return 0
2803         fi
2805         if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
2806                 log 1 "checking psp-config... not PSP, skipping"
2808                 psp_config="";
2809                 return 0
2810         fi
2812         if [ "$os" != "PSP" ]; then
2813                 log 1 "checking psp-config... not PSP"
2815                 log 1 "configure: error: psp-config is only supported for PSP"
2816                 exit 1
2817         fi
2819         if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
2820                 psp_config="psp-config"
2821         else
2822                 psp_config="$with_psp_config"
2823         fi
2825         version=`$psp_config -p 2>/dev/null`
2826         ret=$?
2827         log 2 "executing $psp_config -p"
2828         log 2 "  returned $version"
2829         log 2 "  exit code $ret"
2831         if [ -z "$version" ] || [ "$ret" != "0" ]; then
2832                 log 1 "checking psp-config... not found"
2833                 log 1 "configure: error: psp-config couldn't be found"
2835                 # It was forced, so it should be found.
2836                 if [ "$with_psp_config" != "1" ]; then
2837                         log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
2838                 fi
2839                 exit 1
2840         fi
2842         log 1 "checking psp-config... found"
2845 detect_iconv() {
2846         # 0 means no, 1 is auto-detect, 2 is force
2847         if [ "$with_iconv" = "0" ]; then
2848                 log 1 "checking iconv... disabled"
2850                 return 0
2851         fi
2853         if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then
2854                 log 1 "checking iconv... not OSX, skipping"
2855                 with_iconv="0"
2857                 return 0
2858         fi
2860         # Try to find iconv.h, seems to only thing to detect iconv with
2862         if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
2863                 iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
2864                 if [ -z "$iconv" ]; then
2865                         iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
2866                 fi
2867         else
2868                 # Make sure it exists
2869                 iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
2870         fi
2872         if [ -z "$iconv" ]; then
2873                 log 1 "checking iconv... not found"
2874                 if [ "$with_iconv" = "2" ]; then
2875                         log 1 "configure: error: iconv couldn't be found"
2877                         exit 1
2878                 elif [ "$with_iconv" != "1" ]; then
2879                         log 1 "configure: error: iconv couldn't be found"
2880                         log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it"
2882                         exit 1
2883                 fi
2885                 return 0
2886         fi
2888         if [ "$with_iconv" = "1" ]; then
2889                 with_iconv="2"
2890         fi
2892         log 2 "found iconv in $iconv"
2894         log 1 "checking iconv... found"
2896         # There are different implementations of iconv. The older ones,
2897         # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
2898         # IEEE 1003.1 (2004), pass a non-const pointer.
2900         cat > tmp.iconv.cpp << EOF
2901 #include "src/stdafx.h"
2902 #include <iconv.h>
2903 int main() {
2904         static char buf[1024];
2905         iconv_t convd = 0;
2906         const char *inbuf = "";
2907         char *outbuf  = buf;
2908         size_t outlen = 1023;
2909         size_t inlen  = 0;
2910         return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2913         execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2914         eval $execute > /dev/null
2915         ret=$?
2916         log 2 "executing $execute"
2917         log 2 "  exit code $ret"
2918         if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi
2919         log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv"
2921         cat > tmp.iconv.cpp << EOF
2922 #include "src/stdafx.h"
2923 #include <iconv.h>
2924 int main() {
2925         static char buf[1024];
2926         iconv_t convd = 0;
2927         char *inbuf = "";
2928         char *outbuf  = buf;
2929         size_t outlen = 1023;
2930         size_t inlen  = 0;
2931         return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2934         execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2935         eval $execute > /dev/null
2936         ret=$?
2937         log 2 "executing $execute"
2938         log 2 "  exit code $ret"
2939         if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi
2940         log 1 "checking whether to link to iconv... $link_to_iconv"
2941         rm -f tmp.iconv tmp.iconv.cpp
2944 _detect_sort() {
2945         sort_test_in="d
2950         sort_test_out="a
2955         log 2 "running echo <array> | $1"
2957         if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then
2958                 sort="$1"
2959                 log 2 "  result was valid"
2960         else
2961                 log 2 "  result was invalid"
2962         fi
2965 detect_sort() {
2966         if [ "$with_sort" = "0" ]; then
2967                 log 1 "checking sort... disabled"
2969                 return
2970         fi
2972         if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then
2973                 _detect_sort "sort"
2974                 if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi
2975                 if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi
2976                 if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi
2977                 if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi
2978                 if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi
2979                 if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi
2980         else
2981                 _detect_sort "$with_sort"
2982         fi
2984         if [ -z "$sort" ]; then
2985                 if [ "$with_sort" = "2" ]; then
2986                         log 1 "checking sort... not found"
2988                         log 1 "configure: error: couldn't detect sort on your system"
2989                         exit 1
2990                 elif [ "$with_sort" != "1" ]; then
2991                         log 1 "checking sort... $with_sort not found"
2993                         log 1 "configure: error: '$with_sort' doesn't look like a sort to me"
2994                         log 1 "configure: error: please verify its location and function and try again"
2996                         exit 1
2997                 else
2998                         log 1 "checking sort... not found"
2999                 fi
3000         else
3001                 log 1 "checking sort... $sort"
3002         fi
3005 detect_grfcodec() {
3006         # 0 means no, 1 is auto-detect, 2 is force
3007         if [ "$with_grfcodec" = "0" ]; then
3008                 log 1 "checking grfcodec... disabled"
3010                 grfcodec=""
3011                 return 0
3012         fi
3014         if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then
3015                 grfcodec="grfcodec"
3016         else
3017                 grfcodec="$with_grfcodec"
3018         fi
3020         version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3021         ret=$?
3022         log 2 "executing grfcodec -v"
3023         log 2 "  returned $version"
3024         log 2 "  exit code $ret"
3026         if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3027                 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3028                         log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled"
3029                 else
3030                         log 1 "checking grfcodec... not found"
3031                 fi
3033                 # It was forced, so it should be found.
3034                 if [ "$with_grfcodec" != "1" ]; then
3035                         log 1 "configure: error: grfcodec couldn't be found"
3036                         log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid"
3037                         exit 1
3038                 fi
3040                 grfcodec=""
3041                 return 0
3042         fi
3044         log 1 "checking grfcodec... found"
3047 detect_nforenum() {
3048         # 0 means no, 1 is auto-detect, 2 is force
3049         if [ "$with_nforenum" = "0" ]; then
3050                 log 1 "checking nforenum... disabled"
3052                 nforenum=""
3053                 return 0
3054         fi
3056         if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then
3057                 nforenum="nforenum"
3058         else
3059                 nforenum="$with_nforenum"
3060         fi
3062         version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3063         ret=$?
3064         log 2 "executing nforenum -v"
3065         log 2 "  returned $version"
3066         log 2 "  exit code $ret"
3068         if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3069                 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3070                         log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled"
3071                 else
3072                         log 1 "checking nforenum... not found"
3073                 fi
3075                 # It was forced, so it should be found.
3076                 if [ "$with_nforenum" != "1" ]; then
3077                         log 1 "configure: error: nforenum couldn't be found"
3078                         log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid"
3079                         exit 1
3080                 fi
3082                 nforenum=""
3083                 return 0
3084         fi
3086         log 1 "checking nforenum... found"
3089 detect_cputype() {
3090         if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
3091                 log 1 "forcing cpu-type... $cpu_type bits"
3092                 return;
3093         fi
3094         echo "#define _SQ64 1" > tmp.64bit.cpp
3095         echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
3096         echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
3097         echo "int main() { return 0; }" >> tmp.64bit.cpp
3098         execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -DTESTING 2>&1"
3099         cpu_type="`eval $execute 2>/dev/null`"
3100         ret=$?
3101         log 2 "executing $execute"
3102         log 2 "  returned $cpu_type"
3103         log 2 "  exit code $ret"
3104         if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
3105         log 1 "detecting cpu-type... $cpu_type bits"
3106         rm -f tmp.64bit tmp.64bit.cpp
3109 detect_sse_capable_architecture() {
3110         # 0 means no, 1 is auto-detect, 2 is force
3111         if [ "$with_sse" = "0" ]; then
3112                 log 1 "checking SSE... disabled"
3113                 return
3114         fi
3116         echo "#define _SQ64 1" > tmp.sse.cpp
3117         echo "#include <xmmintrin.h>" >> tmp.sse.cpp
3118         echo "#include <smmintrin.h>" >> tmp.sse.cpp
3119         echo "#include <tmmintrin.h>" >> tmp.sse.cpp
3120         echo "int main() { return 0; }" >> tmp.sse.cpp
3121         execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1"
3122         sse="`eval $execute 2>/dev/null`"
3123         ret=$?
3124         log 2 "executing $execute"
3125         log 2 "  returned $sse"
3126         log 2 "  exit code $ret"
3127         if [ "$ret" = "0" ]; then
3128                 log 1 "detecting SSE... found"
3129         else
3130                 # It was forced, so it should be found.
3131                 if [ "$with_sse" != "1" ]; then
3132                         log 1 "configure: error: SSE couln't be found"
3133                         log 1 "configure: error: you force enabled SSE, but it seems unavailable"
3134                         exit 1
3135                 fi
3137                 log 1 "detecting SSE... not found"
3138                 with_sse="0"
3139         fi
3140         rm -f tmp.sse tmp.exe tmp.sse.cpp
3143 make_sed() {
3144         T_CFLAGS="$CFLAGS"
3145         T_CXXFLAGS="$CXXFLAGS"
3146         T_LDFLAGS="$LDFLAGS"
3148         SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
3150         # All the data needed to compile a single target
3151         #  Make sure if you compile multiple targets to
3152         #  use multiple OBJS_DIR, because all in-between
3153         #  binaries are stored in there, and nowhere else.
3154         SRC_REPLACE="
3155                 s@!!CC_HOST!!@$cc_host@g;
3156                 s@!!CXX_HOST!!@$cxx_host@g;
3157                 s@!!CC_BUILD!!@$cc_build@g;
3158                 s@!!CXX_BUILD!!@$cxx_build@g;
3159                 s@!!WINDRES!!@$windres@g;
3160                 s@!!STRIP!!@$strip $strip_arg@g;
3161                 s@!!LIPO!!@$lipo@g;
3162                 s@!!CFLAGS!!@$T_CFLAGS@g;
3163                 s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g;
3164                 s@!!CXXFLAGS!!@$T_CXXFLAGS@g;
3165                 s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g;
3166                 s@!!STRGEN_FLAGS!!@$strgen_flags@g;
3167                 s@!!LIBS!!@$LIBS@g;
3168                 s@!!LDFLAGS!!@$T_LDFLAGS@g;
3169                 s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g;
3170                 s@!!BIN_DIR!!@$BIN_DIR@g;
3171                 s@!!ROOT_DIR!!@$ROOT_DIR@g;
3172                 s@!!MEDIA_DIR!!@$MEDIA_DIR@g;
3173                 s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
3174                 s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
3175                 s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
3176                 s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
3177                 s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g;
3178                 s@!!SRC_DIR!!@$SRC_DIR@g;
3179                 s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
3180                 s@!!OSXAPP!!@$OSXAPP@g;
3181                 s@!!LANG_DIR!!@$LANG_DIR@g;
3182                 s@!!TTD!!@$TTD@g;
3183                 s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g;
3184                 s@!!DATA_DIR!!@$prefix_dir/$data_dir@g;
3185                 s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g;
3186                 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3187                 s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g;
3188                 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3189                 s@!!PERSONAL_DIR!!@$personal_dir@g;
3190                 s@!!SHARED_DIR!!@$shared_dir@g;
3191                 s@!!INSTALL_DIR!!@$install_dir@g;
3192                 s@!!BINARY_NAME!!@$binary_name@g;
3193                 s@!!STRGEN!!@$STRGEN@g;
3194                 s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
3195                 s@!!DEPEND!!@$DEPEND@g;
3196                 s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
3197                 s@!!ENDIAN_FORCE!!@$endian@g;
3198                 s@!!STAGE!!@$STAGE@g;
3199                 s@!!MAKEDEPEND!!@$makedepend@g;
3200                 s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
3201                 s@!!SORT!!@$sort@g;
3202                 s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
3203                 s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
3204                 s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
3205                 s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
3206                 s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
3207                 s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
3208                 s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g;
3209                 s@!!LANG_SUPPRESS!!@$lang_suppress@g;
3210                 s@!!OBJS_C!!@$OBJS_C@g;
3211                 s@!!OBJS_CPP!!@$OBJS_CPP@g;
3212                 s@!!OBJS_MM!!@$OBJS_MM@g;
3213                 s@!!OBJS_RC!!@$OBJS_RC@g;
3214                 s@!!SRCS!!@$SRCS@g;
3215                 s@!!OS!!@$os@g;
3216                 s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g;
3217                 s@!!AWK!!@$awk@g;
3218                 s@!!DISTCC!!@$distcc@g;
3219                 s@!!NFORENUM!!@$nforenum@g;
3220                 s@!!GRFCODEC!!@$grfcodec@g;
3221         "
3223         if [ "$icon_theme_dir" != "" ]; then
3224                 SRC_REPLACE="$SRC_REPLACE
3225                         s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3226                 "
3227         else
3228                 SRC_REPLACE="$SRC_REPLACE
3229                         s@!!ICON_THEME_DIR!!@@g;
3230                 "
3231         fi
3233         if [ "$man_dir" != "" ]; then
3234                 SRC_REPLACE="$SRC_REPLACE
3235                         s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3236                 "
3237         else
3238                 SRC_REPLACE="$SRC_REPLACE
3239                         s@!!MAN_DIR!!@@g;
3240                 "
3241         fi
3243         if [ "$menu_dir" != "" ]; then
3244                 SRC_REPLACE="$SRC_REPLACE
3245                         s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g;
3246                 "
3247         else
3248                 SRC_REPLACE="$SRC_REPLACE
3249                         s@!!MENU_DIR!!@@g;
3250                 "
3251         fi
3254 generate_menu_item() {
3255         MENU_REPLACE="
3256                 s@!!TTD!!@$TTD@g;
3257                 s@!!MENU_GROUP!!@$menu_group@g;
3258                 s@!!MENU_NAME!!@$menu_name@g
3259         "
3260         log 1 "Generating menu item..."
3261         mkdir -p media
3262         < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop
3265 generate_main() {
3266         STAGE="[MAIN]"
3268         make_sed
3270         # Create the main Makefile
3271         log 1 "Generating Makefile..."
3272         echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile
3273         < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile
3274         cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle
3275         echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am
3276         echo >> Makefile.am
3277         # Make the copy of the source-list, so we don't trigger an unwanted recompile
3278         cp $SOURCE_LIST config.cache.source.list
3279         # Add the current directory, so we don't trigger an unwanted recompile
3280         echo "`pwd`" > config.cache.pwd
3281         # Make sure config.cache is OLDER then config.cache.source.list
3282         touch config.cache
3283         touch config.pwd
3285         if [ "$menu_dir" != "" ]; then
3286                 generate_menu_item
3287         fi
3290 generate_lang() {
3291         STAGE="[LANG]"
3293         make_sed
3295         # Create the language file
3296         mkdir -p $LANG_OBJS_DIR
3298         log 1 "Generating lang/Makefile..."
3299         echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile
3300         < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile
3301         echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am
3302         echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
3305 generate_settings() {
3306         STAGE="[SETTING]"
3308         make_sed
3310         # Create the language file
3311         mkdir -p $SETTING_OBJS_DIR
3313         log 1 "Generating setting/Makefile..."
3314         echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile
3315         < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile
3316         echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am
3319 generate_grf() {
3320         STAGE="[BASESET]"
3322         make_sed
3324         # Create the language file
3325         mkdir -p $GRF_OBJS_DIR
3327         log 1 "Generating grf/Makefile..."
3328         echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
3329         < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
3330         echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
3333 generate_src_normal() {
3334         STAGE=$1
3336         make_sed
3338         # Create the source file
3339         mkdir -p $SRC_OBJS_DIR
3341         log 1 "Generating $2/Makefile..."
3342         echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile
3343         < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile
3344         echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am
3345         echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am
3348 generate_src_osx() {
3349         cc_host_orig="$cc_host"
3350         cxx_host_orig="$cxx_host"
3351         CFLAGS_orig="$CFLAGS"
3352         LDFLAGS_orig="$LDFLAGS"
3354         for type in $enable_universal; do
3356                 if [ -n "$osx_sdk_104_path" ]; then
3357                         # Use 10.4 SDK for 32-bit targets
3358                         CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig"
3359                         LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig"
3360                 fi
3362                 # We don't want to duplicate the x86_64 stuff for each target, so do it once here
3363                 if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then
3364                         # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV
3365                         # and they also removed support for QuickTime/QuickDraw
3366                         if [ -n "$osx_sdk_path" ]; then
3367                                 CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig"
3368                                 LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig"
3369                         fi
3370                         CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW"
3371                         LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`"
3372                 fi
3374                 case $type in
3375                         ppc)
3376                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc"
3377                                 cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3"
3378                                 cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3"
3379                                 generate_src_normal "[ppc]" "objs/ppc";;
3380                         ppc970)
3381                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970"
3382                                 cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3383                                 cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3384                                 generate_src_normal "[ppc970]" "objs/ppc970";;
3385                         i386)
3386                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/i386"
3387                                 cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4"
3388                                 cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4"
3389                                 generate_src_normal "[i386]" "objs/i386";;
3390                         ppc64)
3391                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64"
3392                                 cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3393                                 cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3394                                 generate_src_normal "[ppc64]" "objs/ppc64";;
3395                         x86_64)
3396                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64"
3397                                 cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3398                                 cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3399                                 generate_src_normal "[x86_64]" "objs/x86_64";;
3400                         *) log 1 "Unknown architecture requested for universal build: $type";;
3401                 esac
3402         done
3405 generate_src() {
3406         if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
3407                 generate_src_osx
3408         else
3409                 generate_src_normal "[SRC]" "objs"
3410         fi
3413 showhelp() {
3414         echo "'configure' configures OpenTTD."
3415         echo ""
3416         echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
3417         echo ""
3418         echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as"
3419         echo "VAR=VALUE.  See below for descriptions of some of the useful variables."
3420         echo ""
3421         echo "Defaults for the options are specified in brackets."
3422         echo ""
3423         echo "Configuration:"
3424         echo "  -h, --help                     display this help and exit"
3425         echo ""
3426         echo "System types:"
3427         echo "  --build=BUILD                  configure for building on BUILD [guessed]"
3428         echo "  --host=HOST                    cross-compile to build programs to run"
3429         echo "                                 on HOST [BUILD]"
3430         echo "  --windres=WINDRES              the windres to use [HOST-windres]"
3431         echo "  --strip=STRIP                  the strip to use [HOST-strip]"
3432         echo "  --awk=AWK                      the awk to use in configure [awk]"
3433         echo "  --pkg-config=PKG-CONFIG        the pkg-config to use in configure [pkg-config]"
3434         echo "  --lipo=LIPO                    the lipo to use (OSX ONLY) [HOST-lipo]"
3435         echo "  --os=OS                        the OS we are compiling for [DETECT]"
3436         echo "                                 DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
3437         echo "                                 NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
3438         echo "                                 MINGW/OS2/DOS/WINCE/PSP/HAIKU"
3439         echo "  --endian=ENDIAN                set the endian of the HOST (AUTO/LE/BE)"
3440         echo ""
3441         echo "Paths:"
3442         echo "  --prefix-dir=dir               specifies the prefix for all installed"
3443         echo "                                 files [/usr/local]"
3444         echo "  --binary-dir=dir               location of the binary. Will be prefixed"
3445         echo "                                 with the prefix-dir [games]"
3446         echo "  --data-dir=dir                 location of data files (lang, data, gm)."
3447         echo "                                 Will be prefixed with the prefix-dir"
3448         echo "                                 [share/games/openttd]"
3449         echo "  --doc-dir=dir                  location of the doc files"
3450         echo "                                 Will be prefixed with the prefix-dir"
3451         echo "                                 [$doc_dir]"
3452         echo "  --icon-dir=dir                 location of icons. Will be prefixed"
3453         echo "                                 with the prefix-dir [share/pixmaps]"
3454         echo "  --icon-theme-dir=dir           location of icon theme."
3455         echo "                                 Will be prefixed with the prefix-dir"
3456         echo "                                 and postfixed with size-dirs [$icon_theme_dir]"
3457         echo "  --man-dir=dir                  location of the manual page (UNIX only)"
3458         echo "                                 Will be prefixed with the prefix-dir"
3459         echo "                                 [$man_dir]"
3460         echo "  --menu-dir=dir                 location of the menu item. (UNIX only, except OSX)"
3461         echo "                                 Will be prefixed with the prefix-dir"
3462         echo "                                 [share/applications]"
3463         echo "  --personal-dir=dir             location of the personal directory"
3464         echo "                                 [os-dependent default]"
3465         echo "  --shared-dir=dir               location of shared data files"
3466         echo "                                 [os-dependent default]"
3467         echo "  --install-dir=dir              specifies the root to install to."
3468         echo "                                 Useful to install into jails [/]"
3469         echo "  --binary-name                  the name used for the binary, icons,"
3470         echo "                                 desktop file, etc. when installing [openttd]"
3471         echo ""
3472         echo "Features and packages:"
3473         echo "  --enable-debug[=LVL]           enable debug-mode (LVL=[0123], 0 is release)"
3474         echo "  --enable-desync-debug=[LVL]    enable desync debug options (LVL=[012], 0 is none"
3475         echo "  --enable-profiling             enables profiling"
3476         echo "  --enable-lto                   enables GCC's Link Time Optimization (LTO)/ICC's"
3477         echo "                                 Interprocedural Optimization if available"
3478         echo "  --enable-dedicated             compile a dedicated server (without video)"
3479         echo "  --enable-static                enable static compile (doesn't work for"
3480         echo "                                 all HOSTs)"
3481         echo "  --enable-translator            enable extra output for translators"
3482         echo "  --enable-universal[=ARCH]      enable universal builds (OSX ONLY). Allowed is any combination"
3483         echo "                                 of architectures: i386 ppc ppc970 ppc64 x86_64"
3484         echo "                                 Default architectures are: i386 ppc"
3485         echo "  --enable-osx-g5                enables optimizations for ppc970 (G5) (OSX ONLY)"
3486         echo "  --disable-cocoa-quartz         disable the quartz window mode driver for Cocoa (OSX ONLY)"
3487         echo "  --disable-cocoa-quickdraw      disable the quickdraw window mode driver for Cocoa (OSX ONLY)"
3488         echo "  --disable-unicode              disable unicode support to build win9x"
3489         echo "                                 version (Win32 ONLY)"
3490         echo "  --enable-console               compile as a console application instead of as a GUI application."
3491         echo "                                 If this setting is active, debug output will appear in the same"
3492         echo "                                 console instead of opening a new window. (Win32 ONLY)"
3493         echo "  --disable-network              disable network support"
3494         echo "  --disable-assert               disable asserts (continue on errors)"
3495         echo "  --enable-strip                 enable any possible stripping"
3496         echo "  --without-osx-sysroot          disable the automatic adding of sysroot "
3497         echo "                                 (OSX ONLY)"
3498         echo "  --without-application-bundle   disable generation of application bundle"
3499         echo "                                 (OSX ONLY)"
3500         echo "  --without-menu-entry           Don't generate a menu item (Freedesktop based only)"
3501         echo "  --menu-group=group             Category in which the menu item will be placed (Freedesktop based only)"
3502         echo "  --menu-name=name               Name of the menu item when placed [OpenTTD]"
3503         echo "  --with-direct-music            enable direct music support (Win32 ONLY)"
3504         echo "  --with-sort=sort               define a non-default location for sort"
3505         echo "  --with-midi=midi               define which midi-player to use"
3506         echo "  --with-midi-arg=arg            define which args to use for the"
3507         echo "                                 midi-player"
3508         echo "  --with-libtimidity[=\"pkg-config libtimidity\"]"
3509         echo "                                 enables libtimidity support"
3510         echo "  --with-allegro[=\"pkg-config allegro\"]"
3511         echo "                                 enables Allegro video driver support"
3512         echo "  --with-cocoa                   enables COCOA video driver (OSX ONLY)"
3513         echo "  --with-sdl[=\"pkg-config sdl\"]  enables SDL video driver support"
3514         echo "  --with-zlib[=\"pkg-config zlib\"]"
3515         echo "                                 enables zlib support"
3516         echo "  --with-liblzma[=\"pkg-config liblzma\"]"
3517         echo "                                 enables liblzma support"
3518         echo "  --with-liblzo2[=liblzo2.a]     enables liblzo2 support"
3519         echo "  --with-png[=\"pkg-config libpng\"]"
3520         echo "                                 enables libpng support"
3521         echo "  --with-freetype[=\"pkg-config freetype2\"]"
3522         echo "                                 enables libfreetype support"
3523         echo "  --with-fontconfig[=\"pkg-config fontconfig\"]"
3524         echo "                                 enables fontconfig support"
3525         echo "  --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]"
3526         echo "                                 enables XDG base directory support"
3527         echo "  --with-icu                     enables icu components for layout and sorting"
3528         echo "  --with-icu-layout[=\"pkg-config icu-lx\"]"
3529         echo "                                 enables icu components for layouting (right-to-left support)"
3530         echo "  --with-icu-sort[=\"pkg-config icu-i18n\"]"
3531         echo "                                 enables icu components for locale specific string sorting"
3532         echo "  --static-icu                   try to link statically (libsicu instead of"
3533         echo "                                 libicu; can fail as the new name is guessed)"
3534         echo "  --with-iconv[=iconv-path]      enables iconv support"
3535         echo "  --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
3536         echo "  --disable-builtin-depend       disable use of builtin deps finder"
3537         echo "  --with-makedepend[=makedepend] enables makedepend support"
3538         echo "  --with-ccache                  enables ccache support"
3539         echo "  --with-distcc                  enables distcc support"
3540         echo "  --without-grfcodec             disable usage of grfcodec and re-generation of base sets"
3541         echo "  --without-threads              disable threading support"
3542         echo "  --without-sse                  disable SSE support (x86/x86_64 only)"
3543         echo ""
3544         echo "Some influential environment variables:"
3545         echo "  CC                             C compiler command"
3546         echo "  CXX                            C++ compiler command"
3547         echo "  CFLAGS                         C compiler flags"
3548         echo "  CXXFLAGS                       C++ compiler flags"
3549         echo "  WINDRES                        windres command"
3550         echo "  LDFLAGS                        linker flags, e.g. -L<lib dir> if you"
3551         echo "                                 have libraries in a nonstandard"
3552         echo "                                 directory <lib dir>"
3553         echo "  CFLAGS_BUILD                   C compiler flags for build time tool generation"
3554         echo "  CXXFLAGS_BUILD                 C++ compiler flags for build time tool generation"
3555         echo "  LDFLAGS_BUILD                  linker flags for build time tool generation"
3556         echo ""
3557         echo "Use these variables to override the choices made by 'configure' or to help"
3558         echo "it to find libraries and programs with nonstandard names/locations."