Add a note in the documentation of font sizes
[openttd/fttd.git] / config.lib
blob460cd0c5f0d5b78a461e2945a472cf0b1c1e6b5a
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
1605                 if [ "$enable_universal" = "0" ] && [ $cc_version -gt 400 ]; then
1606                         # Only set the min version when not doing an universal build.
1607                         # Universal builds set the version elsewhere.
1608                         if [ "$cpu_type" = "64" ]; then
1609                                 CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
1610                         else
1611                                 gcc_cpu=`$cc_host -dumpmachine`
1612                                 if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
1613                                         # PowerPC build can run on 10.3
1614                                         CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
1615                                 else
1616                                         # Intel is only available starting from 10.4
1617                                         CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
1618                                 fi
1619                         fi
1620                 fi
1621         fi
1623         if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
1624                 LIBS="$LIBS -lmidi -lbe"
1625         fi
1627         # Most targets act like UNIX, just with some additions
1628         if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ] || [ "$os" = "OSX" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "FREEBSD" ] || [ "$os" = "DRAGONFLY" ] || [ "$os" = "OPENBSD" ] || [ "$os" = "NETBSD" ] || [ "$os" = "HPUX" ] || [ "$os" = "SUNOS" ] || [ "$os" = "OS2" ]; then
1629                 CFLAGS="$CFLAGS -DUNIX"
1630         fi
1631         # And others like Windows
1632         if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
1633                 CFLAGS="$CFLAGS -DWIN"
1634         fi
1636         if [ -n "$allegro_config" ]; then
1637                 CFLAGS="$CFLAGS -DWITH_ALLEGRO"
1638                 CFLAGS="$CFLAGS `$allegro_config --cflags`"
1639                 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1640                         if [ "$enable_static" != "0" ]; then
1641                                 LIBS="$LIBS `$allegro_config --static --libs`"
1642                         else
1643                                 LIBS="$LIBS `$allegro_config --libs`"
1644                         fi
1645                 fi
1646         fi
1648         if [ -n "$sdl_config" ]; then
1649                 CFLAGS="$CFLAGS -DWITH_SDL"
1650                 # SDL must not add _GNU_SOURCE as it breaks many platforms
1651                 CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
1652                 if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
1653                         if [ "$enable_static" != "0" ]; then
1654                                 LIBS="$LIBS `$sdl_config --static-libs`"
1655                         else
1656                                 LIBS="$LIBS `$sdl_config --libs`"
1657                         fi
1658                 fi
1659         fi
1661         if [ "$with_cocoa" != "0" ]; then
1662                 CFLAGS="$CFLAGS -DWITH_COCOA"
1663                 LIBS="$LIBS -F/System/Library/Frameworks -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox"
1665                 if [ "$enable_cocoa_quartz" != "0" ]; then
1666                         CFLAGS="$CFLAGS -DENABLE_COCOA_QUARTZ"
1667                 fi
1669                 if [ "$enable_cocoa_quickdraw" != "0" ]; then
1670                         CFLAGS="$CFLAGS -DENABLE_COCOA_QUICKDRAW"
1671                 fi
1672         fi
1674         if [ "$with_zlib" != "0" ]; then
1675                 CFLAGS="$CFLAGS -DWITH_ZLIB"
1676                 CFLAGS="$CFLAGS `$zlib_config --cflags | tr '\n\r' '  '`"
1677                 if [ "$enable_static" != "0" ]; then
1678                         LIBS="$LIBS `$zlib_config --libs --static | tr '\n\r' '  '`"
1679                 else
1680                         LIBS="$LIBS `$zlib_config --libs | tr '\n\r' '  '`"
1681                 fi
1682         fi
1684         if [ -n "$lzma_config" ]; then
1685                 CFLAGS="$CFLAGS -DWITH_LZMA"
1686                 CFLAGS="$CFLAGS `$lzma_config --cflags | tr '\n\r' '  '`"
1688                 if [ "$enable_static" != "0" ]; then
1689                         CFLAGS="$CFLAGS -DLZMA_API_STATIC"
1690                         LIBS="$LIBS `$lzma_config --libs --static | tr '\n\r' '  '`"
1691                 else
1692                         LIBS="$LIBS `$lzma_config --libs | tr '\n\r' '  '`"
1693                 fi
1694         fi
1696         if [ "$with_lzo2" != "0" ]; then
1697                 if [ "$enable_static" != "0" ] && [ "$os" != "OSX" ]; then
1698                         LIBS="$LIBS $lzo2"
1699                 else
1700                         LIBS="$LIBS -llzo2"
1701                 fi
1702                 CFLAGS="$CFLAGS -DWITH_LZO"
1703         fi
1705         if [ -n "$xdg_basedir_config" ]; then
1706                 CFLAGS="$CFLAGS -DWITH_XDG_BASEDIR"
1707                 CFLAGS="$CFLAGS `$xdg_basedir_config --cflags | tr '\n\r' '  '`"
1709                 if [ "$enable_static" != "0" ]; then
1710                         LIBS="$LIBS `$xdg_basedir_config --libs --static | tr '\n\r' '  '`"
1711                 else
1712                         LIBS="$LIBS `$xdg_basedir_config --libs | tr '\n\r' '  '`"
1713                 fi
1714         fi
1716         # 64bit machines need -D_SQ64
1717         if [ "$cpu_type" = "64" ] && [ "$enable_universal" = "0" ]; then
1718                 CFLAGS="$CFLAGS -D_SQ64"
1719         fi
1720         CFLAGS="$CFLAGS -I$SCRIPT_SRC_DIR"
1722         if [ -n "$png_config" ]; then
1723                 CFLAGS="$CFLAGS -DWITH_PNG"
1724                 CFLAGS="$CFLAGS `$png_config --cflags | tr '\n\r' '  '`"
1726                 if [ "$enable_static" != "0" ]; then
1727                         LIBS="$LIBS `$png_config --libs --static | tr '\n\r' '  '`"
1728                 else
1729                         LIBS="$LIBS `$png_config --libs | tr '\n\r' '  '`"
1730                 fi
1731         fi
1733         if [ -n "$fontconfig_config" ]; then
1734                 CFLAGS="$CFLAGS -DWITH_FONTCONFIG"
1735                 CFLAGS="$CFLAGS `$fontconfig_config --cflags | tr '\n\r' '  '`"
1737                 if [ "$enable_static" != "0" ]; then
1738                         LIBS="$LIBS `$fontconfig_config --libs --static | tr '\n\r' '  '`"
1739                 else
1740                         LIBS="$LIBS `$fontconfig_config --libs | tr '\n\r' '  '`"
1741                 fi
1742         fi
1744         if [ -n "$freetype_config" ]; then
1745                 CFLAGS="$CFLAGS -DWITH_FREETYPE"
1746                 CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' '  '`"
1748                 if [ "$enable_static" != "0" ]; then
1749                         LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' '  '`"
1750                 else
1751                         LIBS="$LIBS `$freetype_config --libs | tr '\n\r' '  '`"
1752                 fi
1753         fi
1755         if [ -n "$icu_layout_config" ]; then
1756                 CFLAGS="$CFLAGS -DWITH_ICU_LAYOUT"
1757                 CFLAGS="$CFLAGS `$icu_layout_config --cflags | tr '\n\r' '  '`"
1759                 if [ "$static_icu" != "0" ]; then
1760                         LIBS="$LIBS `$icu_layout_config --libs --static | tr '\n\r' '  ' | sed s/-licu/-lsicu/g`"
1761                 else
1762                         LIBS="$LIBS `$icu_layout_config --libs | tr '\n\r' '  '`"
1763                 fi
1764         fi
1766         if [ -n "$icu_sort_config" ]; then
1767                 CFLAGS="$CFLAGS -DWITH_ICU_SORT"
1768                 CFLAGS="$CFLAGS `$icu_sort_config --cflags | tr '\n\r' '  '`"
1770                 if [ "$static_icu" != "0" ]; then
1771                         LIBS="$LIBS `$icu_sort_config --libs --static | tr '\n\r' '  ' | sed s/-licu/-lsicu/g`"
1772                 else
1773                         LIBS="$LIBS `$icu_sort_config --libs | tr '\n\r' '  '`"
1774                 fi
1775         fi
1778         if [ "$with_direct_music" != "0" ]; then
1779                 CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
1780                 # GCC 4.0+ doesn't like the DirectX includes (gives tons of
1781                 #  warnings on it we won't be able to fix). For now just
1782                 #  suppress those warnings.
1783                 if [ $cc_version -ge 400 ]; then
1784                         CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
1785                 fi
1786         fi
1788         if [ -n "$libtimidity_config" ]; then
1789                 CFLAGS="$CFLAGS -DLIBTIMIDITY"
1790                 CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' '  '`"
1792                 if [ "$enable_static" != "0" ]; then
1793                         LIBS="$LIBS `$libtimidity_config --libs --static | tr '\n\r' '  '`"
1794                 else
1795                         LIBS="$LIBS `$libtimidity_config --libs | tr '\n\r' '  '`"
1796                 fi
1797         fi
1799         if [ "$with_iconv" != "0" ]; then
1800                 CFLAGS="$CFLAGS -DWITH_ICONV"
1801                 if [ "$link_to_iconv" = "yes" ]; then
1802                         LIBS="$LIBS -liconv"
1803                         if [ "$with_iconv" != "2" ]; then
1804                                 CFLAGS="$CFLAGS -I$with_iconv/include"
1805                                 LIBS="$LIBS -L$with_iconv/lib"
1806                         fi
1807                 fi
1809                 if [ "$os" != "OSX" ] && [ "$have_non_const_iconv" != "no" ]; then
1810                         CFLAGS="$CFLAGS -DHAVE_NON_CONST_ICONV"
1811                 fi
1812         fi
1814         if [ -n "$with_midi" ]; then
1815                 CFLAGS="$CFLAGS -DEXTERNAL_PLAYER=\\\\\"$with_midi\\\\\""
1816         fi
1817         if [ -n "$with_midi_arg" ]; then
1818                 CFLAGS="$CFLAGS -DMIDI_ARG=\\\\\"$with_midi_arg\\\\\""
1819         fi
1821         if [ "$enable_dedicated" != "0" ]; then
1822                 CFLAGS="$CFLAGS -DDEDICATED"
1823         fi
1825         if [ "$enable_unicode" != "0" ]; then
1826                 CFLAGS="$CFLAGS -DUNICODE -D_UNICODE"
1827         fi
1829         if [ "$enable_network" != "0" ]; then
1830                 CFLAGS="$CFLAGS -DENABLE_NETWORK"
1832                 if [ "$os" = "BEOS" ]; then
1833                         LDFLAGS="$LDFLAGS -lbind -lsocket"
1834                 fi
1836                 if [ "$os" = "HAIKU" ]; then
1837                         LDFLAGS="$LDFLAGS -lnetwork"
1838                 fi
1840                 if [ "$os" = "SUNOS" ]; then
1841                         LDFLAGS="$LDFLAGS -lnsl -lsocket"
1842                 fi
1843         fi
1845         if [ "$enable_static" != "0" ]; then
1846                 # OSX can't handle -static in LDFLAGS
1847                 if [ "$os" != "OSX" ]; then
1848                         LDFLAGS="$LDFLAGS -static"
1849                 fi
1850         fi
1852         if [ "$enable_assert" = "0" ]; then
1853                 CFLAGS="$CFLAGS -DNDEBUG"
1854                 CFLAGS_BUILD="$CFLAGS_BUILD -DNDEBUG"
1855         fi
1857         if [ "$enable_desync_debug" != "0" ]; then
1858                 CFLAGS="$CFLAGS -DRANDOM_DEBUG"
1859         fi
1861         if [ "$enable_osx_g5" != "0" ]; then
1862                 CFLAGS="$CFLAGS -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
1863         fi
1865         if [ -n "$personal_dir" ]; then
1866                 CFLAGS="$CFLAGS -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\\\\\"$personal_dir\\\\\""
1867         fi
1869         if [ -n "$shared_dir" ]; then
1870                 CFLAGS="$CFLAGS -DWITH_SHARED_DIR -DSHARED_DIR=\\\\\"$shared_dir\\\\\""
1871         fi
1873         CFLAGS="$CFLAGS -DGLOBAL_DATA_DIR=\\\\\"$prefix_dir/$data_dir\\\\\""
1875         if [ "$enable_lto" != "0" ]; then
1876                 lto_warn=1
1877                 if echo "$FEATURES_BUILD" | grep -q "lto"; then
1878                         LDFLAGS_BUILD="$LDFLAGS_BUILD $CFLAGS_BUILD $CXXFLAGS_BUILD"
1879                         lto_warn=0
1880                 fi
1881                 if echo "$FEATURES" | grep -q "lto"; then
1882                         LDFLAGS="$LDFLAGS $CFLAGS $CXXFLAGS"
1883                         lto_warn=0
1884                 fi
1885                 if [ "$lto_warn" != "0" ]; then
1886                         log 1 "WARNING: you enabled LTO/IPO, but neither build nor host compiler supports it"
1887                         log 1 "WARNING: LTO/IPO has been disabled"
1888                 fi
1889         fi
1891         log 1 "using CFLAGS_BUILD... $CFLAGS_BUILD"
1892         log 1 "using CXXFLAGS_BUILD... $CXXFLAGS_BUILD"
1893         log 1 "using LDFLAGS_BUILD... $LDFLAGS_BUILD"
1894         log 1 "using CFLAGS... $CFLAGS"
1895         log 1 "using CXXFLAGS... $CXXFLAGS"
1896         log 1 "using LDFLAGS... $LIBS $LDFLAGS"
1898         # Makedepend doesn't like something like: -isysroot /OSX/blabla
1899         #  so convert it to: -isysroot -OSX/blabla. makedepend just ignores
1900         #  any - command it doesn't know, so we are pretty save.
1901         # Lovely hackish, not?
1902         # Btw, this almost always comes from outside the configure, so it is
1903         #  not something we can control.
1904         # Also make makedepend aware of compiler's built-in defines.
1905         if [ "$with_makedepend" != "0" ] || [ "$enable_builtin_depend" != "0" ]; then
1906                 # Append CXXFLAGS possibly containing -std=c++0x
1907                 cflags_makedep="`echo | $cxx_host $CXXFLAGS -E -x c++ -dM - | sed 's@.define @-D@g;s@ .*@ @g;s@(.*)@@g' | tr -d '\r\n'`"
1909                 # Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
1910                 cflags_makedep="$cflags_makedep `echo \"$CFLAGS\" \"$CXXFLAGS\" | sed 's@ /@ -@g;s@-I[ ]*[^ ]*@@g'`"
1911         else
1912                 makedepend=""
1913         fi
1915         if [ "$with_distcc" != "0" ]; then
1916                 cc_host="$distcc $cc_host"
1917                 cxx_host="$distcc $cxx_host"
1918                 log 1 ""
1919                 log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
1920                 log 1 ""
1921         fi
1923         if [ "$with_ccache" != "0" ]; then
1924                 cc_host="$ccache $cc_host"
1925                 cxx_host="$ccache $cxx_host"
1926         fi
1929 check_compiler() {
1930         # Params:
1931         # $1 - Type for message (build / host)
1932         # $2 - What to fill with the found compiler
1933         # $3 - System to try
1934         # $4 - Compiler to try
1935         # $5 - Env-setting to try
1936         # $6 - GCC alike to try
1937         # $7 - CC alike to try
1938         # $8 - "0" gcc, "1" g++, "2" windres, "3" strip, "4" lipo
1939         # $9 - What the command is to check for
1941         if [ -n "$3" ]; then
1942                 # Check for system
1943                 if [ -z "$6" ]; then
1944                         compiler="$3"
1945                 else
1946                         compiler="$3-$6"
1947                 fi
1948                 machine=`eval $compiler $9 2>/dev/null`
1949                 ret=$?
1950                 eval "$2=\"$compiler\""
1952                 log 2 "executing $compiler $9"
1953                 log 2 "  returned $machine"
1954                 log 2 "  exit code $ret"
1956                 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1957                         if [ -z "$5" ]; then
1958                                 log 1 "checking $1... $compiler not found"
1959                                 log 1 "I couldn't detect any $6 binary for $3"
1960                                 exit 1
1961                         else
1962                                 compiler="$3-$5"
1963                         fi
1964                         machine=`eval $compiler $9 2>/dev/null`
1965                         ret=$?
1966                         eval "$2=\"$compiler\""
1968                         log 2 "executing $compiler $9"
1969                         log 2 "  returned $machine"
1970                         log 2 "  exit code $ret"
1972                         if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1973                                 log 1 "checking $1... $compiler not found"
1974                                 log 1 "I couldn't detect any $5 binary for $3"
1975                                 exit 1
1976                         fi
1977                 fi
1979                 if [ "$machine" != "$3" ] && ( [ "$8" = "0" ] || [ "$8" = "1" ] ); then
1980                         log 1 "checking $1... expected $3, found $machine"
1981                         log 1 "the compiler suggests it doesn't build code for the machine you specified"
1982                         exit 1
1983                 fi
1984         elif [ -n "$4" ]; then
1985                 # Check for manual compiler
1986                 machine=`$4 $9 2>/dev/null`
1987                 ret=$?
1988                 eval "$2=\"$4\""
1990                 log 2 "executing $4 $9"
1991                 log 2 "  returned $machine"
1992                 log 2 "  exit code $ret"
1994                 if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
1995                         log 1 "checking $1... $4 not found"
1996                         log 1 "the selected binary doesn't seem to be a $6 binary"
1997                         exit 1
1998                 fi
1999         else
2000                 # Nothing given, autodetect
2002                 if [ -n "$5" ]; then
2003                         machine=`$5 $9 2>/dev/null`
2004                         ret=$?
2005                         eval "$2=\"$5\""
2007                         log 2 "executing $5 $9"
2008                         log 2 "  returned $machine"
2009                         log 2 "  exit code $ret"
2011                         # The user defined a GCC that doesn't reply to $9.. abort
2012                         if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2013                                 log 1 "checking $1... $5 unusable"
2014                                 log 1 "the CC environment variable is set, but it doesn't seem to be a $6 binary"
2015                                 log 1 "please redefine the CC/CXX environment to a $6 binary"
2016                                 exit 1
2017                         fi
2018                 else
2019                         log 2 "checking $1... CC/CXX not set (skipping)"
2021                         # No $5, so try '$6'
2022                         machine=`$6 $9 2>/dev/null`
2023                         ret=$?
2024                         eval "$2=\"$6\""
2026                         log 2 "executing $6 $9"
2027                         log 2 "  returned $machine"
2028                         log 2 "  exit code $ret"
2030                         if ( [ -z "$machine" ] && [ "$8" != "3" ] ) || [ "$ret" != "0" ]; then
2031                                 # Maybe '$7'?
2032                                 machine=`$7 $9 2>/dev/null`
2033                                 ret=$?
2034                                 eval "$2=\"$7\""
2036                                 log 2 "executing $7 $9"
2037                                 log 2 "  returned $machine"
2038                                 log 2 "  exit code $ret"
2040                                 # All failed, abort
2041                                 if [ -z "$machine" ]; then
2042                                         log 1 "checking $1... $6 not found"
2043                                         log 1 "I couldn't detect any $6 binary on your system"
2044                                         log 1 "please define the CC/CXX environment to where it is located"
2046                                         exit 1
2047                                 fi
2048                         fi
2049                 fi
2050         fi
2052         if [ "$8" != "0" ]; then
2053                 eval "res=\$$2"
2054                 log 1 "checking $1... $res"
2055         else
2056                 log 1 "checking $1... $machine"
2057         fi
2060 check_build() {
2061         if [ "$os" = "FREEBSD" ]; then
2062                 # FreeBSD's C compiler does not support dump machine.
2063                 # However, removing C support is not possible because PSP must be linked with the C compiler.
2064                 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CXX" "g++" "c++" "0" "-dumpmachine"
2065         else
2066                 check_compiler "build system type" "cc_build" "$build" "$cc_build" "$CC" "gcc" "cc" "0" "-dumpmachine"
2067         fi
2070 check_host() {
2071         # By default the host is the build
2072         if [ -z "$host" ]; then host="$build"; fi
2074         if [ "$os" = "FREEBSD" ]; then
2075                 # FreeBSD's C compiler does not support dump machine.
2076                 # However, removing C support is not possible because PSP must be linked with the C compiler.
2077                 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CXX" "g++" "c++" "0" "-dumpmachine"
2078         else
2079                 check_compiler "host system type" "cc_host" "$host" "$cc_host" "$CC" "gcc" "cc" "0" "-dumpmachine"
2080         fi
2083 check_cxx_build() {
2084         check_compiler "build c++" "cxx_build" "$build" "$cxx_build" "$CXX" "g++" "c++" 1 "-dumpmachine"
2087 check_cxx_host() {
2088         # By default the host is the build
2089         if [ -z "$host" ]; then host="$build"; fi
2090         check_compiler "host c++" "cxx_host" "$host" "$cxx_host" "$CXX" "g++" "c++" 1 "-dumpmachine"
2093 check_windres() {
2094         if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2095                 check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
2096         fi
2099 check_strip() {
2100         if [ "$os" = "OS2" ]; then
2101                 # OS2 via gcc is a bit weird.. stripping HAS to be done via emxbind, which is via gcc directly
2102                 log 1 "checking host strip... using gcc -s option"
2103         elif [ "$os" = "OSX" ]; then
2104                 # Most targets have -V in strip, to see if they exists... OSX doesn't.. so execute something
2105                 echo "int main(int argc, char *argv[]) { }" > strip.test.c
2106                 $cxx_host strip.test.c -o strip.test
2107                 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "strip.test"
2108                 rm -f strip.test.c strip.test
2109         else
2110                 check_compiler "host strip" "strip" "$host" "$strip" "$STRIP" "strip" "strip" "3" "-V"
2111         fi
2114 check_lipo() {
2115         if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
2116                 echo "int main(int argc, char *argv[]) { }" > lipo.test.c
2117                 $cxx_host lipo.test.c -o lipo.test
2118                 check_compiler "host lipo" "lipo" "$host" "$lipo" "$LIPO" "lipo" "lipo" "4" "-info lipo.test"
2119                 rm -f lipo.test.c lipo.test
2120         fi
2123 check_osx_sdk() {
2124         local sysroot=""
2125         if [ -n "$1" ]; then
2126                 if echo "$1" | grep -q / ; then
2127                         # Seems to be a file system path
2128                         osx_sdk_path="$1"
2129                 else
2130                         osx_sdk_path="/Developer/SDKs/MacOSX$1.sdk"
2131                 fi
2132                 if [ ! -d "$osx_sdk_path" ]; then
2133                         # No directory, not present or garbage
2134                         return 1
2135                 fi
2137                 # Set minimum version to 10.4 as that's when kCGBitmapByteOrder32Host was introduced
2138                 sysroot="-isysroot $osx_sdk_path -Wl,-syslibroot,$osx_sdk_path -mmacosx-version-min=10.4"
2139         fi
2141 cat > tmp.osx.mm << EOF
2142 #include <Cocoa/Cocoa.h>
2143 int main() {
2144         kCGBitmapByteOrder32Host;
2145         return 0;
2148         execute="$cxx_host $sysroot $CFLAGS tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2149         eval $execute > /dev/null
2150         ret=$?
2151         log 2 "executing $execute"
2152         log 2 "  exit code $ret"
2153         rm -f tmp.osx.mm tmp.osx
2154         return $ret
2157 check_direct_music() {
2158         echo "
2159                 #include <windows.h>
2160                 #include <dmksctrl.h>
2161                 #include <dmusici.h>
2162                 #include <dmusicc.h>
2163                 #include <dmusicf.h>
2164                 int main(int argc, char *argv[]) { }" > direct_music.test.c
2165         $cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
2166         res=$?
2167         rm -f direct_music.test.c direct_music.test
2169         if [ "$res" != "0" ]; then
2170                 if [ "$with_direct_music" != "1" ]; then
2171                         log 1 "configure: error: direct-music is not available on this system"
2172                         exit 1
2173                 fi
2174                 with_direct_music="0"
2176                 log 1 "checking direct-music... not found"
2177         else
2178                 log 1 "checking direct-music... found"
2179         fi
2182 check_makedepend() {
2183         if [ "$enable_builtin_depend" != "0" ]; then
2184                 with_makedepend="0"
2185         fi
2187         if [ "$with_makedepend" = "0" ]; then
2188                 log 1 "checking makedepend... disabled"
2189                 return
2190         fi
2192         if [ "$with_makedepend" = "1" ] || [ "$with_makedepend" = "2" ]; then
2193                 makedepend="makedepend"
2194         else
2195                 makedepend="$with_makedepend"
2196         fi
2198         rm -f makedepend.tmp
2199         touch makedepend.tmp
2200         res=`$makedepend -fmakedepend.tmp 2>/dev/null`
2201         res=$?
2202         log 2 "executing $makedepend -f makedepend.tmp"
2203         log 2 "  returned `cat makedepend.tmp`"
2204         log 2 "  exit code $ret"
2206         if [ ! -s makedepend.tmp ]; then
2207                 rm -f makedepend.tmp makedepend.tmp.bak
2209                 if [ "$with_makedepend" = "2" ]; then
2210                         log 1 "checking makedepend... not found"
2212                         log 1 "I couldn't detect any makedepend on your system"
2213                         log 1 "please locate it via --makedepend=[binary]"
2215                         exit 1
2216                 elif [ "$with_makedepend" != "1" ]; then
2217                         log 1 "checking makedepend... $makedepend not found"
2219                         log 1 "the selected file doesn't seem to be a valid makedepend binary"
2221                         exit 1
2222                 else
2223                         log 1 "checking makedepend... not found"
2225                         with_makedepend="0"
2226                         return
2227                 fi
2228         fi
2230         rm -f makedepend.tmp makedepend.tmp.bak
2232         log 1 "checking makedepend... $makedepend"
2235 check_version() {
2236         # $1 - requested version (major.minor)
2237         # $2 - version we got (major.minor)
2239         if [ -z "$2" ]; then
2240                 return 0
2241         fi
2243         req_major=`echo $1 | cut -d. -f1`
2244         got_major=`echo $2 | cut -d. -f1`
2245         if [ $got_major -lt $req_major ]; then
2246                 return 0
2247         elif [ $got_major -gt $req_major ]; then
2248                 return 1
2249         fi
2251         req_minor=`echo $1 | cut -d. -f2`
2252         got_minor=`echo $2 | cut -d. -f2`
2253         if [ $got_minor -lt $req_minor ]; then
2254                 return 0
2255         fi
2256         return 1
2259 detect_awk() {
2260         # Not all awks allow gsub(), so we test for that here! It is in fact all we need...
2262         # These awks are known to work. Test for them explicit
2263         awks="gawk mawk nawk"
2265         awk_prefix="echo \"a.c b.c c.c\" | tr ' ' \\\\n | "
2266         awk_param="' { ORS = \" \" } /\.c$/   { gsub(\".c$\",   \".o\", \$0); print \$0; }' 2>/dev/null"
2267         awk_result="a.o b.o c.o "
2268         log 2 "Detecing awk..."
2270         log 2 "Trying: $awk_prefix $awk $awk_param"
2271         res=`eval $awk_prefix $awk $awk_param`
2272         log 2 "Result: '$res'"
2273         if [ "$res" != "$awk_result" ] && [ "$awk" = "awk" ]; then
2274                 # User didn't supply his own awk, so try to detect some other known working names for an awk
2275                 for awk in $awks; do
2276                         log 2 "Trying: $awk_prefix $awk $awk_param"
2277                         res=`eval $awk_prefix $awk $awk_param`
2278                         log 2 "Result: '$res'"
2279                         if [ "$res" = "$awk_result" ]; then break; fi
2280                 done
2282                 if [ "$res" != "$awk_result" ]; then
2283                         log 1 "checking awk... not found"
2284                         log 1 "configure: error: no awk found"
2285                         log 1 "configure: error: please install one of the following: $awks"
2286                         exit 1
2287                 fi
2288         fi
2289         if [ "$res" != "$awk_result" ]; then
2290                 log 1 "checking awk... not found"
2291                 log 1 "configure: error: you supplied '$awk' but it doesn't seem a valid gawk or mawk"
2292                 exit 1
2293         fi
2295         log 1 "checking awk... $awk"
2298 detect_os() {
2299         if [ "$os" = "DETECT" ]; then
2300                 # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
2302                 # Try first via dumpmachine, then via uname
2303                 case `echo "$host" | tr '[A-Z]' '[a-z]'` in
2304                         *linux*)     os=UNIX;;
2305                         *darwin*)    os=OSX;;
2306                         *freebsd*)   os=FREEBSD;;
2307                         *dragonfly*) os=DRAGONFLY;;
2308                         *openbsd*)   os=OPENBSD;;
2309                         *netbsd*)    os=NETBSD;;
2310                         *hp-ux*)     os=HPUX;;
2311                         *morphos*)   os=MORPHOS;;
2312                         *beos*)      os=BEOS;;
2313                         *haiku*)     os=HAIKU;;
2314                         *sunos*)     os=SUNOS;;
2315                         *solaris*)   os=SUNOS;;
2316                         *cygwin*)    os=CYGWIN;;
2317                         *mingw*)     os=MINGW;;
2318                         *os2*)       os=OS2;;
2319                         *dos*)       os=DOS;;
2320                         *wince*)     os=WINCE;;
2321                         *psp*)       os=PSP;;
2322                 esac
2324                 if [ "$os" = "DETECT" ]; then
2325                         case `LC_ALL=C uname | tr '[A-Z]' '[a-z]'` in
2326                                 *linux*)     os=UNIX;;
2327                                 *darwin*)    os=OSX;;
2328                                 *freebsd*)   os=FREEBSD;;
2329                                 *dragonfly*) os=DRAGONFLY;;
2330                                 *openbsd*)   os=OPENBSD;;
2331                                 *netbsd*)    os=NETBSD;;
2332                                 *hp-ux*)     os=HPUX;;
2333                                 *morphos*)   os=MORPHOS;;
2334                                 *beos*)      os=BEOS;;
2335                                 *haiku*)     os=HAIKU;;
2336                                 *sunos*)     os=SUNOS;;
2337                                 *cygwin*)    os=CYGWIN;;
2338                                 *mingw*)     os=MINGW;;
2339                                 *os/2*)      os=OS2;;
2340                                 *gnu*)       os=UNIX;;
2341                         esac
2342                 fi
2344                 if [ "$os" = "DETECT" ]; then
2345                         log 1 "detecting OS... none detected"
2346                         log 1 "I couldn't detect your OS. Please use --os=OS to force one"
2347                         log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
2348                         exit 1
2349                 fi
2351                 log 1 "detecting OS... $os"
2352         else
2353                 log 1 "forcing OS... $os"
2354         fi
2357 detect_allegro() {
2358         # 0 means no, 1 is auto-detect, 2 is force
2359         if [ "$with_allegro" = "0" ]; then
2360                 log 1 "checking Allegro... disabled"
2362                 allegro_config=""
2363                 return 0
2364         fi
2366         if [ "$with_allegro" = "2" ] && [ "$with_cocoa" = "2" ]; then
2367                 log 1 "configure: error: it is impossible to compile both Allegro and COCOA"
2368                 log 1 "configure: error: please deselect one of them and try again"
2369                 exit 1
2370         fi
2372         if [ "$with_allegro" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2373                 log 1 "configure: error: it is impossible to compile a dedicated with Allegro"
2374                 log 1 "configure: error: please deselect one of them and try again"
2375                 exit 1
2376         fi
2378         if [ "$enable_dedicated" != "0" ]; then
2379                 log 1 "checking Allegro... dedicated server, skipping"
2381                 allegro_config=""
2382                 return 0
2383         fi
2385         # By default on OSX we don't use Allegro. The rest is auto-detect
2386         if [ "$with_allegro" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2387                 log 1 "checking Allegro... OSX, skipping"
2389                 allegro_config=""
2390                 return 0
2391         fi
2393         detect_pkg_config "$with_allegro" "allegro" "allegro_config" "4.4"
2397 detect_sdl() {
2398         # 0 means no, 1 is auto-detect, 2 is force
2399         if [ "$with_sdl" = "0" ]; then
2400                 log 1 "checking SDL... disabled"
2402                 sdl_config=""
2403                 return 0
2404         fi
2406         if [ "$with_sdl" = "2" ] && [ "$with_cocoa" = "2" ]; then
2407                 log 1 "configure: error: it is impossible to compile both SDL and COCOA"
2408                 log 1 "configure: error: please deselect one of them and try again"
2409                 exit 1
2410         fi
2412         if [ "$with_sdl" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2413                 log 1 "configure: error: it is impossible to compile a dedicated with SDL"
2414                 log 1 "configure: error: please deselect one of them and try again"
2415                 exit 1
2416         fi
2418         if [ "$enable_dedicated" != "0" ]; then
2419                 log 1 "checking SDL... dedicated server, skipping"
2421                 sdl_config=""
2422                 return 0
2423         fi
2425         # By default on OSX we don't use SDL. The rest is auto-detect
2426         if [ "$with_sdl" = "1" ] && [ "$os" = "OSX" ] && [ "$with_cocoa" != "0" ]; then
2427                 log 1 "checking SDL... OSX, skipping"
2429                 sdl_config=""
2430                 return 0
2431         fi
2433         if [ "$os" = "OSX" ]; then
2434                 log 1 "WARNING: sdl is known to fail on some versions of Mac OS X"
2435                 log 1 "WARNING: with some hardware configurations. Use at own risk!"
2436                 sleep 5
2437         fi
2439         detect_pkg_config "$with_sdl" "sdl" "sdl_config" "1.2"
2442 detect_osx_sdk() {
2443         # Try to find the best SDK available. For a normal build this
2444         # is currently the 10.5 SDK as this is needed to compile all
2445         # optional code. Because such an executable won't run on 10.4
2446         # or lower, also check for the 10.4u SDK when doing an universal
2447         # build.
2449         # Check for the 10.5 SDK, but try 10.6 if that fails
2450         check_osx_sdk "10.5" || check_osx_sdk "10.6" || osx_sdk_path=""
2452         if [ -z "$osx_sdk_path" ] || [ "$enable_universal" != "0" ]; then
2453                 # No better SDK or universal build enabled? Check 10.4u SDK as well
2454                 local old_sdk="$osx_sdk_path"
2455                 if check_osx_sdk "10.4u"; then
2456                         osx_sdk_104_path="$osx_sdk_path"
2457                 else
2458                         osx_sdk_104_path=""
2459                 fi
2460                 if [ -z "$old_sdk" ]; then
2461                         osx_sdk_path="$osx_sdk_104_path"
2462                 else
2463                         osx_sdk_path="$old_sdk"
2464                 fi
2465         fi
2467         if [ -z "$osx_sdk_path" ]; then
2468                 log 1 "Your system SDK is probably too old"
2469                 log 1 "Please install/upgrade your Xcode to >= 2.5"
2471                 exit 1
2472         fi
2475 detect_cocoa() {
2476         # 0 means no, 1 is auto-detect, 2 is force
2477         if [ "$with_cocoa" = "0" ]; then
2478                 log 1 "checking COCOA... disabled"
2480                 return 0
2481         fi
2483         if [ "$with_cocoa" = "2" ] && [ "$enable_dedicated" != "0" ]; then
2484                 log 1 "configure: error: it is impossible to compile a dedicated with COCOA"
2485                 log 1 "configure: error: please deselect one of them and try again"
2486                 exit 1
2487         fi
2489         if [ "$enable_dedicated" != "0" ]; then
2490                 log 1 "checking COCOA... dedicated server, skipping"
2492                 with_cocoa="0"
2493                 return 0
2494         fi
2496         # By default on OSX we use COCOA. The rest doesn't support it
2497         if [ "$with_cocoa" = "1" ] && [ "$os" != "OSX" ]; then
2498                 log 1 "checking COCOA... not OSX, skipping"
2500                 with_cocoa="0"
2501                 return 0
2502         fi
2504         if [ "$os" != "OSX" ]; then
2505                 log 1 "checking COCOA... not OSX"
2507                 log 1 "configure: error: COCOA video driver is only supported for OSX"
2508                 exit 1
2509         fi
2511         log 1 "checking COCOA... found"
2514         if [ "$enable_cocoa_quartz" != "0" ]; then
2515                 log 1 "checking whether to enable the Quartz window subdriver... yes"
2516         else
2517                 log 1 "checking whether to enable the Quartz window subdriver... no"
2518         fi
2520         detect_quickdraw
2523 detect_quickdraw() {
2524         # 0 means no, 1 is auto-detect, 2 is force
2525         if [ "$enable_cocoa_quickdraw" = "0" ]; then
2526                 log 1 "checking Quickdraw window subdriver... disabled"
2527                 return 0
2528         fi
2530         # Assume QuickDraw is available when doing an universal build
2531         if [ "$enable_universal" != "0" ]; then
2532                 log 1 "checking Quickdraw window subdriver... found"
2533                 return 0
2534         fi
2536         # 64 bits doesn't have quickdraw
2537         if [ "$cpu_type" = "64" ]; then
2538                 enable_cocoa_quickdraw="0"
2539                 log 1 "checking Quickdraw window subdriver... disabled (64 bits)"
2540                 return 0
2541         fi
2543 cat > tmp.osx.mm << EOF
2544 #include <AvailabilityMacros.h>
2545 #import <Cocoa/Cocoa.h>
2546 int main(int argc, char *argv[]) { SetEmptyRgn(NULL); return 0; }
2548         execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS -mmacosx-version-min=10.3 tmp.osx.mm -framework Cocoa -o tmp.osx 2>&1"
2549         eval $execute > /dev/null
2550         ret=$?
2551         log 2 "executing $execute"
2552         log 2 "  exit code $ret"
2553         rm -f tmp.osx.mm tmp.osx
2554         if [ "$ret" != "0" ]; then
2555                 log 1 "checking Quickdraw window subdriver... not found"
2557                 # It was forced, so it should be found.
2558                 if [ "$enable_cocoa_quickdraw" != "1" ]; then
2559                         log 1 "configure: error: Quickdraw window driver could not be found"
2560                         exit 1
2561                 fi
2563                 enable_cocoa_quickdraw=0
2564                 return 0
2565         fi
2567         enable_cocoa_quickdraw=1
2568         log 1 "checking Quickdraw window subdriver... found"
2571 detect_library() {
2572         # $1 - config-param ($with_zlib value)
2573         # $2 - library name ('zlib', sets $zlib)
2574         # $3 - static library name (libz.a)
2575         # $4 - header directory ()
2576         # $5 - header name (zlib.h)
2577         # $6 - force static (if non-empty)
2579         if [ -n "$6" ]; then force_static="1"; fi
2581         # 0 means no, 1 is auto-detect, 2 is force
2582         if [ "$1" = "0" ]; then
2583                 log 1 "checking $2... disabled"
2585                 eval "$2=\"\""
2586                 return 0
2587         fi
2589         log 2 "detecting $2"
2591         if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2592                 eval "$2=`ls -1 /usr/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2593                 eval "res=\$$2"
2594                 if [ -z "$res" ]; then
2595                         log 2 "  trying /usr/include/$4$5... no"
2596                         eval "$2=`ls -1 /usr/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2597                 fi
2598                 eval "res=\$$2"
2599                 if [ -z "$res" ]; then
2600                         log 2 "  trying /usr/local/include/$4$5... no"
2601                         eval "$2=`ls -1 /mingw/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2602                 fi
2603                 eval "res=\$$2"
2604                 if [ -z "$res" ]; then
2605                         log 2 "  trying /mingw/include/$4$5... no"
2606                         eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2607                 fi
2608                 eval "res=\$$2"
2609                 if [ -z "$res" ]; then
2610                         log 2 "  trying /opt/local/include/$4$5... no"
2611                 fi
2612                 if [ -z "$res" ] && [ "$os" = "NETBSD" ]; then
2613                         eval "$2=`ls -1 /usr/pkg/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2614                         eval "res=\$$2"
2615                         if [ -z "$res" ]; then
2616                                 log 2 "  trying /usr/pkg/include/$4$5... no"
2617                         fi
2618                 fi
2619                 if [ -z "$res" ] && [ "$os" = "HAIKU" ]; then
2620                         if [ -z "$includeDir" ]; then
2621                                 includeDir=`finddir B_SYSTEM_HEADERS_DIRECTORY`
2622                         fi
2623                         eval "$2=`ls -1 $includeDir/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
2624                         eval "res=\$$2"
2625                         if [ -z "$res" ]; then
2626                                 log 2 "  trying $includeDir/$4$5... no"
2627                         fi
2628                 fi
2630                 eval "res=\$$2"
2631                 if [ -n "$res" ] && ( [ -n "$force_static" ] || ( [ "$enable_static" != "0" ] && [ "$os" != "OSX" ] ) ); then
2632                         eval "res=\$$2"
2633                         log 2 "  trying $res... found"
2634                         # Now find the static lib, if needed
2635                         eval "$2=`ls /lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2636                         eval "res=\$$2"
2637                         if [ -z "$res" ]; then
2638                                 log 2 "  trying /lib/$3... no"
2639                                 eval "$2=`ls /usr/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2640                         fi
2641                         eval "res=\$$2"
2642                         if [ -z "$res" ]; then
2643                                 log 2 "  trying /usr/lib/$3... no"
2644                                 eval "$2=`ls /usr/local/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2645                         fi
2646                         eval "res=\$$2"
2647                         if [ -z "$res" ]; then
2648                                 log 2 "  trying /usr/local/lib/$3... no"
2649                                 eval "$2=`ls /mingw/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
2650                         fi
2651                         eval "res=\$$2"
2652                         if [ -z "$res" ]; then
2653                                 log 2 "  trying /mingw/lib/$3... no"
2654                                 log 1 "configure: error: $2 couldn't be found"
2655                                 log 1 "configure: error: you requested a static link, but I can't find $3"
2657                                 exit 1
2658                         fi
2659                 fi
2660         else
2661                 # Make sure it exists
2662                 if [ -f "$1" ]; then
2663                         eval "$2=`ls $1 2>/dev/null`"
2664                 else
2665                         eval "$2=`ls $1/$3 2>/dev/null`"
2666                 fi
2667         fi
2669         eval "res=\$$2"
2670         if [ -z "$res" ]; then
2671                 log 1 "checking $2... not found"
2672                 if [ "$1" = "2" ]; then
2673                         log 1 "configure: error: $2 couldn't be found"
2675                         exit 1
2676                 elif [ "$1" != "1" ]; then
2677                         log 1 "configure: error: $2 couldn't be found"
2678                         log 1 "configure: error: you supplied '$1', but it seems invalid"
2680                         exit 1
2681                 fi
2683                 eval "with_$2=0"
2685                 return 0
2686         fi
2688         eval "res=\$$2"
2689         log 2 "  trying $res... found"
2691         log 1 "checking $2... found"
2694 detect_zlib() {
2695         detect_pkg_config "$with_zlib" "zlib" "zlib_config" "1.2"
2698 detect_lzo2() {
2699         detect_library "$with_lzo2" "lzo2" "liblzo2.a" "lzo/" "lzo1x.h"
2702 detect_libtimidity() {
2703         detect_pkg_config "$with_libtimidity" "libtimidity" "libtimidity_config" "0.1" "1"
2706 detect_pkg_config() {
2707         # $1 - config-param ($with_lzma value)
2708         # $2 - package name ('liblzma')
2709         # $3 - config name ('lzma_config', sets $lzma_config)
2710         # $4 - minimum module version ('2.3')
2711         # $5 - check for dedicated, 1 is "skif if dedicated"
2713         # 0 means no, 1 is auto-detect, 2 is force
2714         if [ "$1" = "0" ]; then
2715                 log 1 "checking $2... disabled"
2717                 eval "$3=\"\""
2718                 return 0
2719         fi
2721         if [ "$5" = "1" ] && [ "$1" = "1" ] && [ "$enable_dedicated" != "0" ]; then
2722                 log 1 "checking $2... dedicated server, skipping"
2724                 eval "$3=\"\""
2725                 return 0
2726         fi
2728         log 2 "detecting $2"
2730         if [ "$1" = "1" ] || [ "$1" = "" ] || [ "$1" = "2" ]; then
2731                 pkg_config_call="$pkg_config $2"
2732         else
2733                 pkg_config_call="$1"
2734         fi
2736         version=`$pkg_config_call --modversion 2>/dev/null`
2737         ret=$?
2738         check_version "$4" "$version"
2739         version_ok=$?
2740         log 2 "executing $pkg_config_call --modversion"
2741         log 2 "  returned $version"
2742         log 2 "  exit code $ret"
2744         if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version_ok" != "1" ]; then
2745                 if [ -n "$version" ] && [ "$version_ok" != "1" ]; then
2746                         log 1 "checking $2... needs at least version $4, $2 NOT enabled"
2747                 else
2748                         log 1 "checking $2... not found"
2749                 fi
2751                 # It was forced, so it should be found.
2752                 if [ "$1" != "1" ]; then
2753                         log 1 "configure: error: $pkg_config $2 couldn't be found"
2754                         log 1 "configure: error: you supplied '$1', but it seems invalid"
2755                         exit 1
2756                 fi
2758                 eval "$3=\"\""
2759                 return 0
2760         fi
2762         eval "$3=\"$pkg_config_call\""
2763         log 1 "checking $2... found"
2766 detect_lzma() {
2767         detect_pkg_config "$with_lzma" "liblzma" "lzma_config" "5.0"
2770 detect_xdg_basedir() {
2771         detect_pkg_config "$with_xdg_basedir" "libxdg-basedir" "xdg_basedir_config" "1.2"
2774 detect_png() {
2775         detect_pkg_config "$with_png" "libpng" "png_config" "1.2"
2778 detect_freetype() {
2779         detect_pkg_config "$with_freetype" "freetype2" "freetype_config" "2.2" "1"
2782 detect_fontconfig() {
2783         # 0 means no, 1 is auto-detect, 2 is force
2784         if [ "$with_fontconfig" = "0" ]; then
2785                 log 1 "checking libfontconfig... disabled"
2787                 fontconfig_config=""
2788                 return 0
2789         fi
2790         if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
2791                 log 1 "checking libfontconfig... WIN32, skipping"
2792                 fontconfig_config=""
2793                 return 0
2794         fi
2796         if [ "$os" = "OSX" ]; then
2797                 log 1 "checking libfontconfig... OSX, skipping"
2798                 fontconfig_config=""
2799                 return 0
2800         fi
2802         detect_pkg_config "$with_fontconfig" "fontconfig" "fontconfig_config" "2.3" "1"
2805 detect_icu_layout() {
2806         detect_pkg_config "$with_icu_layout" "icu-lx" "icu_layout_config" "4.8" "1"
2809 detect_icu_sort() {
2810         detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
2813 detect_pspconfig() {
2814         # 0 means no, 1 is auto-detect, 2 is force
2815         if [ "$with_psp_config" = "0" ]; then
2816                 log 1 "checking psp-config... disabled"
2818                 psp_config=""
2819                 return 0
2820         fi
2822         if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
2823                 log 1 "checking psp-config... not PSP, skipping"
2825                 psp_config="";
2826                 return 0
2827         fi
2829         if [ "$os" != "PSP" ]; then
2830                 log 1 "checking psp-config... not PSP"
2832                 log 1 "configure: error: psp-config is only supported for PSP"
2833                 exit 1
2834         fi
2836         if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
2837                 psp_config="psp-config"
2838         else
2839                 psp_config="$with_psp_config"
2840         fi
2842         version=`$psp_config -p 2>/dev/null`
2843         ret=$?
2844         log 2 "executing $psp_config -p"
2845         log 2 "  returned $version"
2846         log 2 "  exit code $ret"
2848         if [ -z "$version" ] || [ "$ret" != "0" ]; then
2849                 log 1 "checking psp-config... not found"
2850                 log 1 "configure: error: psp-config couldn't be found"
2852                 # It was forced, so it should be found.
2853                 if [ "$with_psp_config" != "1" ]; then
2854                         log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
2855                 fi
2856                 exit 1
2857         fi
2859         log 1 "checking psp-config... found"
2862 detect_iconv() {
2863         # 0 means no, 1 is auto-detect, 2 is force
2864         if [ "$with_iconv" = "0" ]; then
2865                 log 1 "checking iconv... disabled"
2867                 return 0
2868         fi
2870         if [ "$with_iconv" = "1" ] && [ "$os" != "OSX" ]; then
2871                 log 1 "checking iconv... not OSX, skipping"
2872                 with_iconv="0"
2874                 return 0
2875         fi
2877         # Try to find iconv.h, seems to only thing to detect iconv with
2879         if [ "$with_iconv" = "1" ] || [ "$with_iconv" = "" ] || [ "$with_iconv" = "2" ]; then
2880                 iconv=`ls -1 /usr/include 2>/dev/null | grep "iconv.h"`
2881                 if [ -z "$iconv" ]; then
2882                         iconv=`ls -1 /usr/local/include 2>/dev/null | grep "iconv.h"`
2883                 fi
2884         else
2885                 # Make sure it exists
2886                 iconv=`ls $with_iconv/include/iconv.h 2>/dev/null`
2887         fi
2889         if [ -z "$iconv" ]; then
2890                 log 1 "checking iconv... not found"
2891                 if [ "$with_iconv" = "2" ]; then
2892                         log 1 "configure: error: iconv couldn't be found"
2894                         exit 1
2895                 elif [ "$with_iconv" != "1" ]; then
2896                         log 1 "configure: error: iconv couldn't be found"
2897                         log 1 "configure: error: you supplied '$with_iconv', but I couldn't detect iconv in it"
2899                         exit 1
2900                 fi
2902                 return 0
2903         fi
2905         if [ "$with_iconv" = "1" ]; then
2906                 with_iconv="2"
2907         fi
2909         log 2 "found iconv in $iconv"
2911         log 1 "checking iconv... found"
2913         # There are different implementations of iconv. The older ones,
2914         # e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
2915         # IEEE 1003.1 (2004), pass a non-const pointer.
2917         cat > tmp.iconv.cpp << EOF
2918 #include "src/stdafx.h"
2919 #include <iconv.h>
2920 int main() {
2921         static char buf[1024];
2922         iconv_t convd = 0;
2923         const char *inbuf = "";
2924         char *outbuf  = buf;
2925         size_t outlen = 1023;
2926         size_t inlen  = 0;
2927         return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2930         execute="$cxx_host $OSX_SYSROOT $CFLAGS -c tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2931         eval $execute > /dev/null
2932         ret=$?
2933         log 2 "executing $execute"
2934         log 2 "  exit code $ret"
2935         if [ "$ret" = "0" ]; then have_non_const_iconv="no"; else have_non_const_iconv="yes"; fi
2936         log 1 "checking if iconv has non-const inbuf... $have_non_const_iconv"
2938         cat > tmp.iconv.cpp << EOF
2939 #include "src/stdafx.h"
2940 #include <iconv.h>
2941 int main() {
2942         static char buf[1024];
2943         iconv_t convd = 0;
2944         char *inbuf = "";
2945         char *outbuf  = buf;
2946         size_t outlen = 1023;
2947         size_t inlen  = 0;
2948         return iconv(convd, &inbuf, &inlen, &outbuf, &outlen);
2951         execute="$cxx_host $OSX_SYSROOT $OSX_LD_SYSROOT $CFLAGS tmp.iconv.cpp -o tmp.iconv -DTESTING 2>&1"
2952         eval $execute > /dev/null
2953         ret=$?
2954         log 2 "executing $execute"
2955         log 2 "  exit code $ret"
2956         if [ "$ret" = "0" ]; then link_to_iconv="no"; else link_to_iconv="yes"; fi
2957         log 1 "checking whether to link to iconv... $link_to_iconv"
2958         rm -f tmp.iconv tmp.iconv.cpp
2961 _detect_sort() {
2962         sort_test_in="d
2967         sort_test_out="a
2972         log 2 "running echo <array> | $1"
2974         if [ "`echo \"$sort_test_in\" | $1 2>/dev/null`" = "$sort_test_out" ]; then
2975                 sort="$1"
2976                 log 2 "  result was valid"
2977         else
2978                 log 2 "  result was invalid"
2979         fi
2982 detect_sort() {
2983         if [ "$with_sort" = "0" ]; then
2984                 log 1 "checking sort... disabled"
2986                 return
2987         fi
2989         if [ "$with_sort" = "1" ] || [ "$with_sort" = "2" ]; then
2990                 _detect_sort "sort"
2991                 if [ -z "$sort" ]; then _detect_sort "/sbin/sort"; fi
2992                 if [ -z "$sort" ]; then _detect_sort "/usr/sbin/sort"; fi
2993                 if [ -z "$sort" ]; then _detect_sort "/usr/local/sbin/sort"; fi
2994                 if [ -z "$sort" ]; then _detect_sort "/bin/sort"; fi
2995                 if [ -z "$sort" ]; then _detect_sort "/usr/bin/sort"; fi
2996                 if [ -z "$sort" ]; then _detect_sort "/usr/local/bin/sort"; fi
2997         else
2998                 _detect_sort "$with_sort"
2999         fi
3001         if [ -z "$sort" ]; then
3002                 if [ "$with_sort" = "2" ]; then
3003                         log 1 "checking sort... not found"
3005                         log 1 "configure: error: couldn't detect sort on your system"
3006                         exit 1
3007                 elif [ "$with_sort" != "1" ]; then
3008                         log 1 "checking sort... $with_sort not found"
3010                         log 1 "configure: error: '$with_sort' doesn't look like a sort to me"
3011                         log 1 "configure: error: please verify its location and function and try again"
3013                         exit 1
3014                 else
3015                         log 1 "checking sort... not found"
3016                 fi
3017         else
3018                 log 1 "checking sort... $sort"
3019         fi
3022 detect_grfcodec() {
3023         # 0 means no, 1 is auto-detect, 2 is force
3024         if [ "$with_grfcodec" = "0" ]; then
3025                 log 1 "checking grfcodec... disabled"
3027                 grfcodec=""
3028                 return 0
3029         fi
3031         if [ "$with_grfcodec" = "1" ] || [ "$with_grfcodec" = "" ] || [ "$with_grfcodec" = "2" ]; then
3032                 grfcodec="grfcodec"
3033         else
3034                 grfcodec="$with_grfcodec"
3035         fi
3037         version=`$grfcodec -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3038         ret=$?
3039         log 2 "executing grfcodec -v"
3040         log 2 "  returned $version"
3041         log 2 "  exit code $ret"
3043         if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3044                 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3045                         log 1 "checking grfcodec... needs at least version 6.0.5 (r985), disabled"
3046                 else
3047                         log 1 "checking grfcodec... not found"
3048                 fi
3050                 # It was forced, so it should be found.
3051                 if [ "$with_grfcodec" != "1" ]; then
3052                         log 1 "configure: error: grfcodec couldn't be found"
3053                         log 1 "configure: error: you supplied '$with_grfcodec', but it seems invalid"
3054                         exit 1
3055                 fi
3057                 grfcodec=""
3058                 return 0
3059         fi
3061         log 1 "checking grfcodec... found"
3064 detect_nforenum() {
3065         # 0 means no, 1 is auto-detect, 2 is force
3066         if [ "$with_nforenum" = "0" ]; then
3067                 log 1 "checking nforenum... disabled"
3069                 nforenum=""
3070                 return 0
3071         fi
3073         if [ "$with_nforenum" = "1" ] || [ "$with_nforenum" = "" ] || [ "$with_nforenum" = "2" ]; then
3074                 nforenum="nforenum"
3075         else
3076                 nforenum="$with_nforenum"
3077         fi
3079         version=`$nforenum -v 2>/dev/null | $awk '{print $3}' | sed 's/[rM]//g;s/-/0/'`
3080         ret=$?
3081         log 2 "executing nforenum -v"
3082         log 2 "  returned $version"
3083         log 2 "  exit code $ret"
3085         if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "985" ]; then
3086                 if [ -n "$version" ] && [ "$version" -lt "985" ]; then
3087                         log 1 "checking nforenum... needs at least version 6.0.5 (r985), disabled"
3088                 else
3089                         log 1 "checking nforenum... not found"
3090                 fi
3092                 # It was forced, so it should be found.
3093                 if [ "$with_nforenum" != "1" ]; then
3094                         log 1 "configure: error: nforenum couldn't be found"
3095                         log 1 "configure: error: you supplied '$with_nforenum', but it seems invalid"
3096                         exit 1
3097                 fi
3099                 nforenum=""
3100                 return 0
3101         fi
3103         log 1 "checking nforenum... found"
3106 detect_cputype() {
3107         if [ -n "$cpu_type" ] && [ "$cpu_type" != "DETECT" ]; then
3108                 log 1 "forcing cpu-type... $cpu_type bits"
3109                 return;
3110         fi
3111         echo "#define _SQ64 1" > tmp.64bit.cpp
3112         echo "#include \"src/stdafx.h\"" >> tmp.64bit.cpp
3113         echo "assert_compile(sizeof(size_t) == 8);" >> tmp.64bit.cpp
3114         echo "int main() { return 0; }" >> tmp.64bit.cpp
3115         execute="$cxx_host $CFLAGS tmp.64bit.cpp -o tmp.64bit -DTESTING 2>&1"
3116         cpu_type="`eval $execute 2>/dev/null`"
3117         ret=$?
3118         log 2 "executing $execute"
3119         log 2 "  returned $cpu_type"
3120         log 2 "  exit code $ret"
3121         if [ "$ret" = "0" ]; then cpu_type="64"; else cpu_type="32"; fi
3122         log 1 "detecting cpu-type... $cpu_type bits"
3123         rm -f tmp.64bit tmp.64bit.cpp
3126 detect_sse_capable_architecture() {
3127         # 0 means no, 1 is auto-detect, 2 is force
3128         if [ "$with_sse" = "0" ]; then
3129                 log 1 "checking SSE... disabled"
3130                 return
3131         fi
3133         echo "#define _SQ64 1" > tmp.sse.cpp
3134         echo "#include <xmmintrin.h>" >> tmp.sse.cpp
3135         echo "#include <smmintrin.h>" >> tmp.sse.cpp
3136         echo "#include <tmmintrin.h>" >> tmp.sse.cpp
3137         echo "int main() { return 0; }" >> tmp.sse.cpp
3138         execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1"
3139         sse="`eval $execute 2>/dev/null`"
3140         ret=$?
3141         log 2 "executing $execute"
3142         log 2 "  returned $sse"
3143         log 2 "  exit code $ret"
3144         if [ "$ret" = "0" ]; then
3145                 log 1 "detecting SSE... found"
3146         else
3147                 # It was forced, so it should be found.
3148                 if [ "$with_sse" != "1" ]; then
3149                         log 1 "configure: error: SSE couln't be found"
3150                         log 1 "configure: error: you force enabled SSE, but it seems unavailable"
3151                         exit 1
3152                 fi
3154                 log 1 "detecting SSE... not found"
3155                 with_sse="0"
3156         fi
3157         rm -f tmp.sse tmp.exe tmp.sse.cpp
3160 make_sed() {
3161         T_CFLAGS="$CFLAGS"
3162         T_CXXFLAGS="$CXXFLAGS"
3163         T_LDFLAGS="$LDFLAGS"
3165         SRC_OBJS_DIR="$BASE_SRC_OBJS_DIR/$OBJS_SUBDIR"
3167         # All the data needed to compile a single target
3168         #  Make sure if you compile multiple targets to
3169         #  use multiple OBJS_DIR, because all in-between
3170         #  binaries are stored in there, and nowhere else.
3171         SRC_REPLACE="
3172                 s@!!CC_HOST!!@$cc_host@g;
3173                 s@!!CXX_HOST!!@$cxx_host@g;
3174                 s@!!CC_BUILD!!@$cc_build@g;
3175                 s@!!CXX_BUILD!!@$cxx_build@g;
3176                 s@!!WINDRES!!@$windres@g;
3177                 s@!!STRIP!!@$strip $strip_arg@g;
3178                 s@!!LIPO!!@$lipo@g;
3179                 s@!!CFLAGS!!@$T_CFLAGS@g;
3180                 s@!!CFLAGS_BUILD!!@$CFLAGS_BUILD@g;
3181                 s@!!CXXFLAGS!!@$T_CXXFLAGS@g;
3182                 s@!!CXXFLAGS_BUILD!!@$CXXFLAGS_BUILD@g;
3183                 s@!!STRGEN_FLAGS!!@$strgen_flags@g;
3184                 s@!!LIBS!!@$LIBS@g;
3185                 s@!!LDFLAGS!!@$T_LDFLAGS@g;
3186                 s@!!LDFLAGS_BUILD!!@$LDFLAGS_BUILD@g;
3187                 s@!!BIN_DIR!!@$BIN_DIR@g;
3188                 s@!!ROOT_DIR!!@$ROOT_DIR@g;
3189                 s@!!MEDIA_DIR!!@$MEDIA_DIR@g;
3190                 s@!!SOURCE_LIST!!@$SOURCE_LIST@g;
3191                 s@!!SRC_OBJS_DIR!!@$SRC_OBJS_DIR@g;
3192                 s@!!LANG_OBJS_DIR!!@$LANG_OBJS_DIR@g;
3193                 s@!!GRF_OBJS_DIR!!@$GRF_OBJS_DIR@g;
3194                 s@!!SETTING_OBJS_DIR!!@$SETTING_OBJS_DIR@g;
3195                 s@!!SRC_DIR!!@$SRC_DIR@g;
3196                 s@!!SCRIPT_SRC_DIR!!@$SCRIPT_SRC_DIR@g;
3197                 s@!!OSXAPP!!@$OSXAPP@g;
3198                 s@!!LANG_DIR!!@$LANG_DIR@g;
3199                 s@!!TTD!!@$TTD@g;
3200                 s@!!BINARY_DIR!!@$prefix_dir/$binary_dir@g;
3201                 s@!!DATA_DIR!!@$prefix_dir/$data_dir@g;
3202                 s@!!DOC_DIR!!@$prefix_dir/$doc_dir@g;
3203                 s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3204                 s@!!ICON_DIR!!@$prefix_dir/$icon_dir@g;
3205                 s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3206                 s@!!PERSONAL_DIR!!@$personal_dir@g;
3207                 s@!!SHARED_DIR!!@$shared_dir@g;
3208                 s@!!INSTALL_DIR!!@$install_dir@g;
3209                 s@!!BINARY_NAME!!@$binary_name@g;
3210                 s@!!STRGEN!!@$STRGEN@g;
3211                 s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
3212                 s@!!DEPEND!!@$DEPEND@g;
3213                 s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
3214                 s@!!ENDIAN_FORCE!!@$endian@g;
3215                 s@!!STAGE!!@$STAGE@g;
3216                 s@!!MAKEDEPEND!!@$makedepend@g;
3217                 s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
3218                 s@!!SORT!!@$sort@g;
3219                 s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
3220                 s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
3221                 s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
3222                 s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
3223                 s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
3224                 s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
3225                 s@!!CONFIG_CACHE_PWD!!@config.cache.pwd@g;
3226                 s@!!LANG_SUPPRESS!!@$lang_suppress@g;
3227                 s@!!OBJS_C!!@$OBJS_C@g;
3228                 s@!!OBJS_CPP!!@$OBJS_CPP@g;
3229                 s@!!OBJS_MM!!@$OBJS_MM@g;
3230                 s@!!OBJS_RC!!@$OBJS_RC@g;
3231                 s@!!SRCS!!@$SRCS@g;
3232                 s@!!OS!!@$os@g;
3233                 s@!!CONFIGURE_FILES!!@$CONFIGURE_FILES@g;
3234                 s@!!AWK!!@$awk@g;
3235                 s@!!DISTCC!!@$distcc@g;
3236                 s@!!NFORENUM!!@$nforenum@g;
3237                 s@!!GRFCODEC!!@$grfcodec@g;
3238         "
3240         if [ "$icon_theme_dir" != "" ]; then
3241                 SRC_REPLACE="$SRC_REPLACE
3242                         s@!!ICON_THEME_DIR!!@$prefix_dir/$icon_theme_dir@g;
3243                 "
3244         else
3245                 SRC_REPLACE="$SRC_REPLACE
3246                         s@!!ICON_THEME_DIR!!@@g;
3247                 "
3248         fi
3250         if [ "$man_dir" != "" ]; then
3251                 SRC_REPLACE="$SRC_REPLACE
3252                         s@!!MAN_DIR!!@$prefix_dir/$man_dir@g;
3253                 "
3254         else
3255                 SRC_REPLACE="$SRC_REPLACE
3256                         s@!!MAN_DIR!!@@g;
3257                 "
3258         fi
3260         if [ "$menu_dir" != "" ]; then
3261                 SRC_REPLACE="$SRC_REPLACE
3262                         s@!!MENU_DIR!!@$prefix_dir/$menu_dir@g;
3263                 "
3264         else
3265                 SRC_REPLACE="$SRC_REPLACE
3266                         s@!!MENU_DIR!!@@g;
3267                 "
3268         fi
3271 generate_menu_item() {
3272         MENU_REPLACE="
3273                 s@!!TTD!!@$TTD@g;
3274                 s@!!MENU_GROUP!!@$menu_group@g;
3275                 s@!!MENU_NAME!!@$menu_name@g
3276         "
3277         log 1 "Generating menu item..."
3278         mkdir -p media
3279         < $ROOT_DIR/media/openttd.desktop.in sed "$MENU_REPLACE" > media/openttd.desktop
3282 generate_main() {
3283         STAGE="[MAIN]"
3285         make_sed
3287         # Create the main Makefile
3288         log 1 "Generating Makefile..."
3289         echo "# Auto-generated file from 'Makefile.in' -- DO NOT EDIT" > Makefile
3290         < $ROOT_DIR/Makefile.in sed "$SRC_REPLACE" >> Makefile
3291         cp $ROOT_DIR/Makefile.bundle.in Makefile.bundle
3292         echo "# Auto-generated file -- DO NOT EDIT" > Makefile.am
3293         echo >> Makefile.am
3294         # Make the copy of the source-list, so we don't trigger an unwanted recompile
3295         cp $SOURCE_LIST config.cache.source.list
3296         # Add the current directory, so we don't trigger an unwanted recompile
3297         echo "`pwd`" > config.cache.pwd
3298         # Make sure config.cache is OLDER then config.cache.source.list
3299         touch config.cache
3300         touch config.pwd
3302         if [ "$menu_dir" != "" ]; then
3303                 generate_menu_item
3304         fi
3307 generate_lang() {
3308         STAGE="[LANG]"
3310         make_sed
3312         # Create the language file
3313         mkdir -p $LANG_OBJS_DIR
3315         log 1 "Generating lang/Makefile..."
3316         echo "# Auto-generated file from 'Makefile.lang.in' -- DO NOT EDIT" > $LANG_OBJS_DIR/Makefile
3317         < $ROOT_DIR/Makefile.lang.in sed "$SRC_REPLACE" >> $LANG_OBJS_DIR/Makefile
3318         echo "DIRS += $LANG_OBJS_DIR" >> Makefile.am
3319         echo "LANG_DIRS += $LANG_OBJS_DIR" >> Makefile.am
3322 generate_settings() {
3323         STAGE="[SETTING]"
3325         make_sed
3327         # Create the language file
3328         mkdir -p $SETTING_OBJS_DIR
3330         log 1 "Generating setting/Makefile..."
3331         echo "# Auto-generated file from 'Makefile.settings.in' -- DO NOT EDIT" > $SETTING_OBJS_DIR/Makefile
3332         < $ROOT_DIR/Makefile.setting.in sed "$SRC_REPLACE" >> $SETTING_OBJS_DIR/Makefile
3333         echo "DIRS += $SETTING_OBJS_DIR" >> Makefile.am
3336 generate_grf() {
3337         STAGE="[BASESET]"
3339         make_sed
3341         # Create the language file
3342         mkdir -p $GRF_OBJS_DIR
3344         log 1 "Generating grf/Makefile..."
3345         echo "# Auto-generated file from 'Makefile.grf.in' -- DO NOT EDIT" > $GRF_OBJS_DIR/Makefile
3346         < $ROOT_DIR/Makefile.grf.in sed "$SRC_REPLACE" >> $GRF_OBJS_DIR/Makefile
3347         echo "DIRS += $GRF_OBJS_DIR" >> Makefile.am
3350 generate_src_normal() {
3351         STAGE=$1
3353         make_sed
3355         # Create the source file
3356         mkdir -p $SRC_OBJS_DIR
3358         log 1 "Generating $2/Makefile..."
3359         echo "# Auto-generated file from 'Makefile.src.in' -- DO NOT EDIT" > $SRC_OBJS_DIR/Makefile
3360         < $ROOT_DIR/Makefile.src.in sed "$SRC_REPLACE" >> $SRC_OBJS_DIR/Makefile
3361         echo "DIRS += $SRC_OBJS_DIR" >> Makefile.am
3362         echo "SRC_DIRS += $SRC_OBJS_DIR" >> Makefile.am
3365 generate_src_osx() {
3366         cc_host_orig="$cc_host"
3367         cxx_host_orig="$cxx_host"
3368         CFLAGS_orig="$CFLAGS"
3369         LDFLAGS_orig="$LDFLAGS"
3371         for type in $enable_universal; do
3373                 if [ -n "$osx_sdk_104_path" ]; then
3374                         # Use 10.4 SDK for 32-bit targets
3375                         CFLAGS="-isysroot $osx_sdk_104_path $CFLAGS_orig"
3376                         LDFLAGS="-Wl,-syslibroot,$osx_sdk_104_path $LDFLAGS_orig"
3377                 fi
3379                 # We don't want to duplicate the x86_64 stuff for each target, so do it once here
3380                 if [ "$type" = "ppc64" ] || [ "$type" = "x86_64" ]; then
3381                         # 64 bits is always 10.5 or higher. Furthermore it has a non const ICONV
3382                         # and they also removed support for QuickTime/QuickDraw
3383                         if [ -n "$osx_sdk_path" ]; then
3384                                 CFLAGS="-isysroot $osx_sdk_path $CFLAGS_orig"
3385                                 LDFLAGS="-Wl,-syslibroot,$osx_sdk_path $LDFLAGS_orig"
3386                         fi
3387                         CFLAGS="$CFLAGS -D_SQ64 -DNO_QUICKTIME -UENABLE_COCOA_QUICKDRAW"
3388                         LIBS="`echo $LIBS | sed 's/-framework QuickTime//'`"
3389                 fi
3391                 case $type in
3392                         ppc)
3393                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc"
3394                                 cc_host="$cc_host_orig -arch ppc -mmacosx-version-min=10.3"
3395                                 cxx_host="$cxx_host_orig -arch ppc -mmacosx-version-min=10.3"
3396                                 generate_src_normal "[ppc]" "objs/ppc";;
3397                         ppc970)
3398                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc970"
3399                                 cc_host="$cc_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3400                                 cxx_host="$cxx_host_orig -arch ppc970 -mmacosx-version-min=10.3 -mcpu=G5 -mpowerpc64 -mtune=970 -mcpu=970 -mpowerpc-gpopt"
3401                                 generate_src_normal "[ppc970]" "objs/ppc970";;
3402                         i386)
3403                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/i386"
3404                                 cc_host="$cc_host_orig -arch i386 -mmacosx-version-min=10.4"
3405                                 cxx_host="$cxx_host_orig -arch i386 -mmacosx-version-min=10.4"
3406                                 generate_src_normal "[i386]" "objs/i386";;
3407                         ppc64)
3408                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/ppc64"
3409                                 cc_host="$cc_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3410                                 cxx_host="$cxx_host_orig -arch ppc64 -mmacosx-version-min=10.5"
3411                                 generate_src_normal "[ppc64]" "objs/ppc64";;
3412                         x86_64)
3413                                 BASE_SRC_OBJS_DIR="$OBJS_DIR/x86_64"
3414                                 cc_host="$cc_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3415                                 cxx_host="$cxx_host_orig -arch x86_64 -mmacosx-version-min=10.5"
3416                                 generate_src_normal "[x86_64]" "objs/x86_64";;
3417                         *) log 1 "Unknown architecture requested for universal build: $type";;
3418                 esac
3419         done
3422 generate_src() {
3423         if [ "$os" = "OSX" ] && [ "$enable_universal" != "0" ]; then
3424                 generate_src_osx
3425         else
3426                 generate_src_normal "[SRC]" "objs"
3427         fi
3430 showhelp() {
3431         echo "'configure' configures OpenTTD."
3432         echo ""
3433         echo "Usage: $0 [OPTION]... [VAR=VALUE]..."
3434         echo ""
3435         echo "To assign environment variables (e.g., CC, CFLAGS...), specify them as"
3436         echo "VAR=VALUE.  See below for descriptions of some of the useful variables."
3437         echo ""
3438         echo "Defaults for the options are specified in brackets."
3439         echo ""
3440         echo "Configuration:"
3441         echo "  -h, --help                     display this help and exit"
3442         echo ""
3443         echo "System types:"
3444         echo "  --build=BUILD                  configure for building on BUILD [guessed]"
3445         echo "  --host=HOST                    cross-compile to build programs to run"
3446         echo "                                 on HOST [BUILD]"
3447         echo "  --windres=WINDRES              the windres to use [HOST-windres]"
3448         echo "  --strip=STRIP                  the strip to use [HOST-strip]"
3449         echo "  --awk=AWK                      the awk to use in configure [awk]"
3450         echo "  --pkg-config=PKG-CONFIG        the pkg-config to use in configure [pkg-config]"
3451         echo "  --lipo=LIPO                    the lipo to use (OSX ONLY) [HOST-lipo]"
3452         echo "  --os=OS                        the OS we are compiling for [DETECT]"
3453         echo "                                 DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
3454         echo "                                 NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
3455         echo "                                 MINGW/OS2/DOS/WINCE/PSP/HAIKU"
3456         echo "  --endian=ENDIAN                set the endian of the HOST (AUTO/LE/BE)"
3457         echo ""
3458         echo "Paths:"
3459         echo "  --prefix-dir=dir               specifies the prefix for all installed"
3460         echo "                                 files [/usr/local]"
3461         echo "  --binary-dir=dir               location of the binary. Will be prefixed"
3462         echo "                                 with the prefix-dir [games]"
3463         echo "  --data-dir=dir                 location of data files (lang, data, gm)."
3464         echo "                                 Will be prefixed with the prefix-dir"
3465         echo "                                 [share/games/openttd]"
3466         echo "  --doc-dir=dir                  location of the doc files"
3467         echo "                                 Will be prefixed with the prefix-dir"
3468         echo "                                 [$doc_dir]"
3469         echo "  --icon-dir=dir                 location of icons. Will be prefixed"
3470         echo "                                 with the prefix-dir [share/pixmaps]"
3471         echo "  --icon-theme-dir=dir           location of icon theme."
3472         echo "                                 Will be prefixed with the prefix-dir"
3473         echo "                                 and postfixed with size-dirs [$icon_theme_dir]"
3474         echo "  --man-dir=dir                  location of the manual page (UNIX only)"
3475         echo "                                 Will be prefixed with the prefix-dir"
3476         echo "                                 [$man_dir]"
3477         echo "  --menu-dir=dir                 location of the menu item. (UNIX only, except OSX)"
3478         echo "                                 Will be prefixed with the prefix-dir"
3479         echo "                                 [share/applications]"
3480         echo "  --personal-dir=dir             location of the personal directory"
3481         echo "                                 [os-dependent default]"
3482         echo "  --shared-dir=dir               location of shared data files"
3483         echo "                                 [os-dependent default]"
3484         echo "  --install-dir=dir              specifies the root to install to."
3485         echo "                                 Useful to install into jails [/]"
3486         echo "  --binary-name                  the name used for the binary, icons,"
3487         echo "                                 desktop file, etc. when installing [openttd]"
3488         echo ""
3489         echo "Features and packages:"
3490         echo "  --enable-debug[=LVL]           enable debug-mode (LVL=[0123], 0 is release)"
3491         echo "  --enable-desync-debug=[LVL]    enable desync debug options (LVL=[012], 0 is none"
3492         echo "  --enable-profiling             enables profiling"
3493         echo "  --enable-lto                   enables GCC's Link Time Optimization (LTO)/ICC's"
3494         echo "                                 Interprocedural Optimization if available"
3495         echo "  --enable-dedicated             compile a dedicated server (without video)"
3496         echo "  --enable-static                enable static compile (doesn't work for"
3497         echo "                                 all HOSTs)"
3498         echo "  --enable-translator            enable extra output for translators"
3499         echo "  --enable-universal[=ARCH]      enable universal builds (OSX ONLY). Allowed is any combination"
3500         echo "                                 of architectures: i386 ppc ppc970 ppc64 x86_64"
3501         echo "                                 Default architectures are: i386 ppc"
3502         echo "  --enable-osx-g5                enables optimizations for ppc970 (G5) (OSX ONLY)"
3503         echo "  --disable-cocoa-quartz         disable the quartz window mode driver for Cocoa (OSX ONLY)"
3504         echo "  --disable-cocoa-quickdraw      disable the quickdraw window mode driver for Cocoa (OSX ONLY)"
3505         echo "  --disable-unicode              disable unicode support to build win9x"
3506         echo "                                 version (Win32 ONLY)"
3507         echo "  --enable-console               compile as a console application instead of as a GUI application."
3508         echo "                                 If this setting is active, debug output will appear in the same"
3509         echo "                                 console instead of opening a new window. (Win32 ONLY)"
3510         echo "  --disable-network              disable network support"
3511         echo "  --disable-assert               disable asserts (continue on errors)"
3512         echo "  --enable-strip                 enable any possible stripping"
3513         echo "  --without-osx-sysroot          disable the automatic adding of sysroot "
3514         echo "                                 (OSX ONLY)"
3515         echo "  --without-application-bundle   disable generation of application bundle"
3516         echo "                                 (OSX ONLY)"
3517         echo "  --without-menu-entry           Don't generate a menu item (Freedesktop based only)"
3518         echo "  --menu-group=group             Category in which the menu item will be placed (Freedesktop based only)"
3519         echo "  --menu-name=name               Name of the menu item when placed [OpenTTD]"
3520         echo "  --with-direct-music            enable direct music support (Win32 ONLY)"
3521         echo "  --with-sort=sort               define a non-default location for sort"
3522         echo "  --with-midi=midi               define which midi-player to use"
3523         echo "  --with-midi-arg=arg            define which args to use for the"
3524         echo "                                 midi-player"
3525         echo "  --with-libtimidity[=\"pkg-config libtimidity\"]"
3526         echo "                                 enables libtimidity support"
3527         echo "  --with-allegro[=\"pkg-config allegro\"]"
3528         echo "                                 enables Allegro video driver support"
3529         echo "  --with-cocoa                   enables COCOA video driver (OSX ONLY)"
3530         echo "  --with-sdl[=\"pkg-config sdl\"]  enables SDL video driver support"
3531         echo "  --with-zlib[=\"pkg-config zlib\"]"
3532         echo "                                 enables zlib support"
3533         echo "  --with-liblzma[=\"pkg-config liblzma\"]"
3534         echo "                                 enables liblzma support"
3535         echo "  --with-liblzo2[=liblzo2.a]     enables liblzo2 support"
3536         echo "  --with-png[=\"pkg-config libpng\"]"
3537         echo "                                 enables libpng support"
3538         echo "  --with-freetype[=\"pkg-config freetype2\"]"
3539         echo "                                 enables libfreetype support"
3540         echo "  --with-fontconfig[=\"pkg-config fontconfig\"]"
3541         echo "                                 enables fontconfig support"
3542         echo "  --with-xdg-basedir[=\"pkg-config libxdg-basedir\"]"
3543         echo "                                 enables XDG base directory support"
3544         echo "  --with-icu                     enables icu components for layout and sorting"
3545         echo "  --with-icu-layout[=\"pkg-config icu-lx\"]"
3546         echo "                                 enables icu components for layouting (right-to-left support)"
3547         echo "  --with-icu-sort[=\"pkg-config icu-i18n\"]"
3548         echo "                                 enables icu components for locale specific string sorting"
3549         echo "  --static-icu                   try to link statically (libsicu instead of"
3550         echo "                                 libicu; can fail as the new name is guessed)"
3551         echo "  --with-iconv[=iconv-path]      enables iconv support"
3552         echo "  --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
3553         echo "  --disable-builtin-depend       disable use of builtin deps finder"
3554         echo "  --with-makedepend[=makedepend] enables makedepend support"
3555         echo "  --with-ccache                  enables ccache support"
3556         echo "  --with-distcc                  enables distcc support"
3557         echo "  --without-grfcodec             disable usage of grfcodec and re-generation of base sets"
3558         echo "  --without-threads              disable threading support"
3559         echo "  --without-sse                  disable SSE support (x86/x86_64 only)"
3560         echo ""
3561         echo "Some influential environment variables:"
3562         echo "  CC                             C compiler command"
3563         echo "  CXX                            C++ compiler command"
3564         echo "  CFLAGS                         C compiler flags"
3565         echo "  CXXFLAGS                       C++ compiler flags"
3566         echo "  WINDRES                        windres command"
3567         echo "  LDFLAGS                        linker flags, e.g. -L<lib dir> if you"
3568         echo "                                 have libraries in a nonstandard"
3569         echo "                                 directory <lib dir>"
3570         echo "  CFLAGS_BUILD                   C compiler flags for build time tool generation"
3571         echo "  CXXFLAGS_BUILD                 C++ compiler flags for build time tool generation"
3572         echo "  LDFLAGS_BUILD                  linker flags for build time tool generation"
3573         echo ""
3574         echo "Use these variables to override the choices made by 'configure' or to help"
3575         echo "it to find libraries and programs with nonstandard names/locations."