Add wxUSE_PREFERENCES_EDITOR and the corresponding configure option.
[wxWidgets.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION($Id$)dnl
3
4 AC_PREREQ(2.58)
5
6 dnl ---------------------------------------------------------------------------
7 dnl
8 dnl Top-level configure.in for wxWidgets by Robert Roebling, Phil Blecker,
9 dnl Vadim Zeitlin and Ron Lee
10 dnl
11 dnl This script is under the wxWindows licence.
12 dnl
13 dnl Version: $Id$
14 dnl ---------------------------------------------------------------------------
15
16 dnl ---------------------------------------------------------------------------
17 dnl initialization
18 dnl ---------------------------------------------------------------------------
19
20 AC_INIT([wxWidgets], [2.9.5], [wx-dev@lists.wxwidgets.org])
21
22 dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package
23 AC_CONFIG_SRCDIR([wx-config.in])
24
25 dnl sets build, host variables and the same with _alias
26 AC_CANONICAL_BUILD
27 AC_CANONICAL_HOST
28
29 dnl notice that if --host was given but --build was not, cross_compiling is
30 dnl only set to "maybe" and not "yes" and will be either set to "yes" later or
31 dnl configure will exit with error in AC_PROG_CC so don't test for = "yes" here
32 if test "$cross_compiling" != "no"; then
33     HOST_PREFIX="${host_alias}-"
34     HOST_SUFFIX="-$host_alias"
35 else
36     HOST_PREFIX=
37     HOST_SUFFIX=
38 fi
39
40 dnl When making releases do:
41 dnl
42 dnl wx_release_number += 1
43
44 wx_major_version_number=2
45 wx_minor_version_number=9
46 wx_release_number=5
47 wx_subrelease_number=0
48
49 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number
50 WX_VERSION=$WX_RELEASE.$wx_release_number
51 WX_SUBVERSION=$WX_VERSION.$wx_subrelease_number
52
53 WX_MSW_VERSION=$wx_major_version_number$wx_minor_version_number$wx_release_number
54
55
56 dnl Autoconf-2.60 changed the meaning of top_builddir variable, so we have
57 dnl to use our own replacement that will work with both 2.5x and 2.60+:
58 wx_top_builddir="`pwd`"
59 AC_SUBST(wx_top_builddir)
60
61
62 dnl ------------------------------------------------------------------------
63 dnl Check platform (host system)
64 dnl ------------------------------------------------------------------------
65
66 dnl OS (assume Unix)
67 USE_UNIX=1
68 USE_OS2=0
69 USE_WIN32=0
70 USE_DOS=0
71 USE_BEOS=0
72 USE_MAC=0
73
74 dnl Unix kind
75 USE_AIX=
76 USE_BSD=                            dnl any BSD
77 USE_DARWIN=                         dnl a.k.a. Mac OS X
78 USE_FREEBSD=
79 USE_GNU=                            dnl GNU/Hurd
80 USE_HPUX=
81 USE_LINUX=
82 USE_NETBSD=
83 USE_OPENBSD=
84 USE_OSF=                            dnl OSF/1 (obsolete?)
85 USE_SGI=
86 USE_SOLARIS=                        dnl Solaris ("SunOS" >= 5)
87 USE_SUN=                            dnl SunOS or Solaris
88 USE_SUNOS=                          dnl old/real SunOS (obsolete)
89 USE_SVR4=                           dnl SysV R4
90 USE_SYSV=                           dnl any System V
91 USE_VMS=
92 USE_ULTRIX=
93 USE_UNIXWARE=
94
95 dnl hardware platform
96 USE_ALPHA=
97
98 dnl on some platforms xxx_r() functions are declared inside "#ifdef
99 dnl _REENTRANT" and it's easier to just define this symbol for these platforms
100 dnl than checking it during run-time
101 NEEDS_D_REENTRANT_FOR_R_FUNCS=0
102
103 dnl the list of all available toolkits
104 dnl
105 dnl update NUM_TOOLKITS calculation below when adding a new toolkit here!
106 ALL_TOOLKITS="COCOA GTK OSX_CARBON OSX_COCOA OSX_IPHONE MICROWIN MOTIF MSW PM X11 DFB"
107
108 dnl NB: these wxUSE_XXX constants have value of 0 or 1 unlike all the other ones
109 dnl     which are either yes or no
110 DEFAULT_wxUSE_OLD_COCOA=0
111 DEFAULT_wxUSE_GTK=0
112 DEFAULT_wxUSE_OSX_CARBON=0
113 DEFAULT_wxUSE_OSX_COCOA=0
114 DEFAULT_wxUSE_OSX_IPHONE=0
115 DEFAULT_wxUSE_MICROWIN=0
116 DEFAULT_wxUSE_MOTIF=0
117 DEFAULT_wxUSE_MSW=0
118 DEFAULT_wxUSE_PM=0
119 DEFAULT_wxUSE_X11=0
120 DEFAULT_wxUSE_DFB=0
121
122 dnl these are the values which are really default for the given platform:
123 dnl they're used if no --with-<toolkit> options were given to detect the
124 dnl toolkit to use by default for the target platform
125 DEFAULT_DEFAULT_wxUSE_OLD_COCOA=0
126 DEFAULT_DEFAULT_wxUSE_GTK=0
127 DEFAULT_DEFAULT_wxUSE_OSX_CARBON=0
128 DEFAULT_DEFAULT_wxUSE_OSX_COCOA=0
129 DEFAULT_DEFAULT_wxUSE_OSX_IPHONE=0
130 DEFAULT_DEFAULT_wxUSE_MICROWIN=0
131 DEFAULT_DEFAULT_wxUSE_MOTIF=0
132 DEFAULT_DEFAULT_wxUSE_MSW=0
133 DEFAULT_DEFAULT_wxUSE_PM=0
134 DEFAULT_DEFAULT_wxUSE_X11=0
135 DEFAULT_DEFAULT_wxUSE_DFB=0
136
137 PROGRAM_EXT=
138 SAMPLES_RPATH_FLAG=
139 DYLIB_RPATH_INSTALL=
140 DYLIB_RPATH_POSTLINK=
141
142 DEFAULT_STD_FLAG=yes
143
144 dnl to support a new system, you need to add its canonical name (as determined
145 dnl by config.sub or specified by the configure command line) to this "case"
146 dnl and also define the shared library flags below - search for
147 dnl SHARED_LIB_SETUP to find the exact place
148 case "${host}" in
149   *-hp-hpux* )
150     USE_HPUX=1
151     DEFAULT_DEFAULT_wxUSE_MOTIF=1
152     NEEDS_D_REENTRANT_FOR_R_FUNCS=1
153     AC_DEFINE(__HPUX__)
154
155     dnl many standard declarations in HP-UX headers are only included if either
156     dnl _HPUX_SOURCE is defined, see stdsyms(5)
157     CPPFLAGS="-D_HPUX_SOURCE $CPPFLAGS"
158   ;;
159   *-*-linux* )
160     USE_LINUX=1
161     AC_DEFINE(__LINUX__)
162     TMP=`uname -m`
163     if test "x$TMP" = "xalpha"; then
164       USE_ALPHA=1
165       AC_DEFINE(__ALPHA__)
166     fi
167     DEFAULT_DEFAULT_wxUSE_GTK=1
168   ;;
169   *-*-gnu* | *-*-k*bsd*-gnu )
170     USE_GNU=1
171     TMP=`uname -m`
172     if test "x$TMP" = "xalpha"; then
173       USE_ALPHA=1
174       AC_DEFINE(__ALPHA__)
175     fi
176     DEFAULT_DEFAULT_wxUSE_GTK=1
177   ;;
178   *-*-irix5* | *-*-irix6* )
179     USE_SGI=1
180     USE_SVR4=1
181     AC_DEFINE(__SGI__)
182     AC_DEFINE(__SVR4__)
183     DEFAULT_DEFAULT_wxUSE_MOTIF=1
184   ;;
185   *-*-qnx*)
186     USE_QNX=1
187     AC_DEFINE(__QNX__)
188     DEFAULT_DEFAULT_wxUSE_X11=1
189   ;;
190   *-*-solaris2* )
191     USE_SUN=1
192     USE_SOLARIS=1
193     USE_SVR4=1
194     AC_DEFINE(__SUN__)
195     AC_DEFINE(__SOLARIS__)
196     AC_DEFINE(__SVR4__)
197     DEFAULT_DEFAULT_wxUSE_MOTIF=1
198     NEEDS_D_REENTRANT_FOR_R_FUNCS=1
199   ;;
200   *-*-sunos4* )
201     USE_SUN=1
202     USE_SUNOS=1
203     USE_BSD=1
204     AC_DEFINE(__SUN__)
205     AC_DEFINE(__SUNOS__)
206     AC_DEFINE(__BSD__)
207     DEFAULT_DEFAULT_wxUSE_MOTIF=1
208   ;;
209   *-*-freebsd*)
210     USE_BSD=1
211     USE_FREEBSD=1
212     AC_DEFINE(__FREEBSD__)
213     AC_DEFINE(__BSD__)
214     DEFAULT_DEFAULT_wxUSE_GTK=1
215   ;;
216   *-*-openbsd*|*-*-mirbsd*)
217     USE_BSD=1
218     USE_OPENBSD=1
219     AC_DEFINE(__OPENBSD__)
220     AC_DEFINE(__BSD__)
221     DEFAULT_DEFAULT_wxUSE_GTK=1
222   ;;
223   *-*-netbsd*)
224     USE_BSD=1
225     USE_NETBSD=1
226     AC_DEFINE(__NETBSD__)
227     AC_DEFINE(__BSD__)
228     DEFAULT_DEFAULT_wxUSE_GTK=1
229     NEEDS_D_REENTRANT_FOR_R_FUNCS=1
230
231     dnl some standard declarations in NetBSD headers are only included if
232     dnl _NETBSD_SOURCE and _LIBC are defined, e.g. getservbyname_r in netdb.h
233     CPPFLAGS="-D_NETBSD_SOURCE -D_LIBC $CPPFLAGS"
234   ;;
235   *-*-osf* )
236     USE_ALPHA=1
237     USE_OSF=1
238     AC_DEFINE(__ALPHA__)
239     AC_DEFINE(__OSF__)
240     DEFAULT_DEFAULT_wxUSE_MOTIF=1
241     NEEDS_D_REENTRANT_FOR_R_FUNCS=1
242   ;;
243   *-*-dgux5* )
244     USE_ALPHA=1
245     USE_SVR4=1
246     AC_DEFINE(__ALPHA__)
247     AC_DEFINE(__SVR4__)
248     DEFAULT_DEFAULT_wxUSE_MOTIF=1
249   ;;
250   *-*-sysv5* )
251     USE_SYSV=1
252     USE_SVR4=1
253     AC_DEFINE(__SYSV__)
254     AC_DEFINE(__SVR4__)
255     DEFAULT_DEFAULT_wxUSE_MOTIF=1
256   ;;
257   *-*-aix* )
258     USE_AIX=1
259     USE_SYSV=1
260     USE_SVR4=1
261     AC_DEFINE(__AIX__)
262     AC_DEFINE(__SYSV__)
263     AC_DEFINE(__SVR4__)
264     DEFAULT_DEFAULT_wxUSE_MOTIF=1
265   ;;
266
267   *-*-*UnixWare*)
268     USE_SYSV=1
269     USE_SVR4=1
270     USE_UNIXWARE=1
271     AC_DEFINE(__UNIXWARE__)
272   ;;
273
274   *-*-cygwin* | *-*-mingw32* )
275     dnl MBN: some of the defines have been moved after toolkit detection
276     dnl      because for wxMotif/wxGTK/wxX11 to build on Cygwin
277     dnl      USE_UNIX  must be set and not USE_WIN32
278     PROGRAM_EXT=".exe"
279     DEFAULT_DEFAULT_wxUSE_MSW=1
280   ;;
281
282   *-pc-msdosdjgpp )
283     USE_UNIX=0
284     USE_DOS=1
285     AC_DEFINE(__DOS__)
286     PROGRAM_EXT=".exe"
287   ;;
288
289   *-pc-os2_emx | *-pc-os2-emx )
290     AC_DEFINE(__EMX__)
291     USE_OS2=1
292     AC_DEFINE(__OS2__)
293     PROGRAM_EXT=".exe"
294     DEFAULT_DEFAULT_wxUSE_PM=1
295     dnl "c++" wrapper is not always available, so always use plain gcc.
296     CXX=gcc
297     LDFLAGS="$LDFLAGS -Zcrtdll"
298     dnl
299     dnl Some special code that's automatically added by autoconf-2.57 for OS/2
300     dnl and hopefully also by autoconf-2.58 and newer on all other platforms.
301     dnl For now however, we still need it to make sure the configure script
302     dnl works on OS/2 no matter what platform it is generated on.
303     ac_executable_extensions=".exe"
304     export ac_executable_extensions
305     dnl This strange code is necessary to deal with handling of
306     dnl backslashes by ksh and pdksh's sh variant.
307     ac_save_IFS="$IFS"
308     IFS='\\'
309     ac_TEMP_PATH=
310     for ac_dir in $PATH; do
311       IFS=$ac_save_IFS
312       if test -z "$ac_TEMP_PATH"; then
313         ac_TEMP_PATH="$ac_dir"
314       else
315         ac_TEMP_PATH="$ac_TEMP_PATH/$ac_dir"
316       fi
317     done
318     export PATH="$ac_TEMP_PATH"
319     unset ac_TEMP_PATH
320     DEFAULT_STD_FLAG=no
321   ;;
322
323   arm-apple-darwin*)
324     dnl iPhone
325     USE_BSD=1
326     USE_DARWIN=1
327     AC_DEFINE(__BSD__)
328     AC_DEFINE(__DARWIN__)
329     DEFAULT_DEFAULT_wxUSE_OSX_IPHONE=1
330   ;;
331
332   *-*-darwin* )
333     dnl Darwin based distributions (including Mac OS X)
334     USE_BSD=1
335     USE_DARWIN=1
336     AC_DEFINE(__BSD__)
337     AC_DEFINE(__DARWIN__)
338     AC_DEFINE(TARGET_CARBON)
339     DEFAULT_DEFAULT_wxUSE_OSX_COCOA=1
340   ;;
341
342   *-*-beos* )
343     dnl leave USE_UNIX on - BeOS is sufficiently Unix-like for this
344     USE_BEOS=1
345     AC_DEFINE(__BEOS__)
346   ;;
347
348   *)
349     AC_MSG_WARN([*** System type ${host} is unknown, assuming generic Unix and continuing nevertheless.])
350     AC_MSG_WARN([*** Please report the build results to wx-dev@lists.wxwidgets.org.])
351
352     DEFAULT_DEFAULT_wxUSE_X11=1
353     DEFAULT_wxUSE_SHARED=no
354 esac
355
356 dnl ---------------------------------------------------------------------------
357 dnl command line options for configure
358 dnl ---------------------------------------------------------------------------
359
360 dnl the default values for all options - we collect them all here to simplify
361 dnl modification of the default values (for example, if the defaults for some
362 dnl platform should be changed, it can be done here too)
363 dnl
364 dnl NB: see also DEFAULT_wxUSE<toolkit> variables defined above
365
366 dnl it's only necessary to list the options which should be disabled by
367 dnl default, all the rest have default value of "yes" (or, rather, of
368 dnl wxUSE_ALL_FEATURES which is the only which has to be set to "yes" by
369 dnl default)
370 DEFAULT_wxUSE_ALL_FEATURES=yes
371
372 DEFAULT_wxUSE_STD_CONTAINERS=no
373 DEFAULT_wxUSE_STD_IOSTREAM=$DEFAULT_STD_FLAG
374 DEFAULT_wxUSE_STD_STRING=$DEFAULT_STD_FLAG
375
376 dnl libraries disabled by default
377 DEFAULT_wxUSE_DMALLOC=no
378 DEFAULT_wxUSE_LIBGNOMEVFS=no
379 DEFAULT_wxUSE_LIBHILDON=no
380 DEFAULT_wxUSE_LIBHILDON2=no
381 DEFAULT_wxUSE_LIBMSPACK=no
382 DEFAULT_wxUSE_LIBSDL=no
383
384 dnl features disabled by default
385 DEFAULT_wxUSE_ACCESSIBILITY=no
386 DEFAULT_wxUSE_IPV6=no
387 DEFAULT_wxUSE_GSTREAMER8=no
388 DEFAULT_wxUSE_UNICODE_UTF8=no
389 DEFAULT_wxUSE_UNICODE_UTF8_LOCALE=no
390
391 dnl automatic features
392 DEFAULT_wxUSE_ARTPROVIDER_TANGO=auto
393 DEFAULT_wxUSE_OPENGL=auto
394 DEFAULT_wxUSE_MEDIACTRL=auto
395 DEFAULT_wxUSE_COMPILER_TLS=auto
396 DEFAULT_wxUSE_HOTKEY=auto
397 DEFAULT_wxUSE_METAFILE=auto
398
399 dnl Mac/Cocoa users need to enable building universal binaries explicitly
400 DEFAULT_wxUSE_UNIVERSAL_BINARY=no
401 DEFAULT_wxUSE_MAC_ARCH=no
402
403 DEFAULT_wxUSE_OFFICIAL_BUILD=no
404
405 dnl Always default to no. Only special cases require this.
406 DEFAULT_wxUSE_OBJC_UNIQUIFYING=no
407
408 dnl ===========================
409 dnl deal with configure options
410 dnl ===========================
411
412 dnl we use several macros here:
413 dnl     - AC_ARG_WITH/AC_ARG_ENABLE are the standard autoconf macros, see
414 dnl       autoconf manual for details about them
415 dnl     - WX_ARG_WITH/WX_ARG_ENABLE are their wx counterparts which perform
416 dnl       the caching of the command line options and also use DEFAULT_foo
417 dnl       variable as the default value for "foo" if neither --enable-foo nor
418 dnl       --disable-foo is specified
419 dnl     - WX_ARG_SYS_WITH is a special version of WX_ARG_WITH which allows
420 dnl       to choose not only whether an external library is used but also if we
421 dnl       use the copy of it included with wxWidgets or an already installed
422 dnl       system version
423 dnl     - WX_ARG_WITHOUT/WX_ARG_DISABLE mirror WX_ARG_WITH/WX_ARG_ENABLE but
424 dnl       should be used for the options which are enabled by default
425 dnl     - WX_ARG_FEATURE is a version of WX_ARG_ENABLE which should be used for
426 dnl       optional features, i.e. options which should be disabled if
427 dnl       --disable-all-features is specified (WX_ARG_WITH/WX_ARG_SYS_WITH are
428 dnl       also affected by this)
429
430 dnl ---------------------------------------------------------------------------
431 dnl global build options
432 dnl ---------------------------------------------------------------------------
433
434 WX_ARG_DISABLE(gui,        [  --disable-gui           don't build GUI parts of the library], wxUSE_GUI)
435 WX_ARG_ENABLE(monolithic,  [  --enable-monolithic     build wxWidgets as single library], wxUSE_MONOLITHIC)
436 WX_ARG_ENABLE(plugins,     [  --enable-plugins        build parts of wxWidgets as loadable components], wxUSE_PLUGINS)
437 WX_ARG_WITHOUT(subdirs,    [  --without-subdirs       don't generate makefiles for samples/demos/...], wxWITH_SUBDIRS)
438 AC_ARG_WITH(flavour,       [  --with-flavour=NAME     specify a name to identify this build], [WX_FLAVOUR="$withval"])
439 WX_ARG_ENABLE(official_build,  [  --enable-official_build official build of wxWidgets (win32 DLL only)], wxUSE_OFFICIAL_BUILD)
440 AC_ARG_ENABLE(vendor,  [  --enable-vendor=VENDOR  vendor name (win32 DLL only)], [VENDOR="$enableval"])
441 if test "x$VENDOR" = "x"; then
442     VENDOR="custom"
443 fi
444
445 WX_ARG_DISABLE(all-features,[  --disable-all-features  disable all optional features to build minimal library], wxUSE_ALL_FEATURES)
446
447 if test "$wxUSE_ALL_FEATURES" = "no"; then
448     dnl this is a bit ugly but currently we have no choice but to manually
449     dnl reset all the options with default value of auto if all features are to
450     dnl be disabled because we can't have an option with default value of
451     dnl "auto-or-no-if-wxUSE_ALL_FEATURES-is-disabled"
452     DEFAULT_wxUSE_ARTPROVIDER_TANGO=no
453     DEFAULT_wxUSE_MEDIACTRL=no
454 fi
455
456 dnl ---------------------------------------------------------------------------
457 dnl port selection
458 dnl ---------------------------------------------------------------------------
459
460 if test "$wxUSE_GUI" = "yes"; then
461
462 WX_ARG_ENABLE(universal,   [  --enable-universal      use wxWidgets GUI controls instead of native ones], wxUSE_UNIVERSAL)
463 if test "$wxUSE_UNIVERSAL" = "yes"; then
464     AC_ARG_WITH(themes,    [  --with-themes=all|list  use only the specified comma-separated list of wxUniversal themes], [wxUNIV_THEMES="$withval"])
465 fi
466
467 dnl we use AC_ARG_WITH and not WX_ARG_WITH for the toolkit options as they
468 dnl shouldn't default to wxUSE_ALL_FEATURES
469 AC_ARG_WITH(gtk,          [[  --with-gtk[=VERSION]    use GTK+, VERSION can be 3, 2 (default), 1 or "any"]], [wxUSE_GTK="$withval" CACHE_GTK=1 TOOLKIT_GIVEN=1])
470 AC_ARG_WITH(motif,         [  --with-motif            use Motif/Lesstif], [wxUSE_MOTIF="$withval" CACHE_MOTIF=1 TOOLKIT_GIVEN=1])
471 AC_ARG_WITH(osx_carbon,    [  --with-osx_carbon       use Mac OS X (Carbon)], [wxUSE_OSX_CARBON="$withval" CACHE_OSX_CARBON=1 TOOLKIT_GIVEN=1])
472 AC_ARG_WITH(osx_cocoa,     [  --with-osx_cocoa        use Mac OS X (Cocoa)], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1])
473 AC_ARG_WITH(osx_iphone,    [  --with-osx_iphone       use iPhone OS X port], [wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1])
474 AC_ARG_WITH(osx,           [  --with-osx              use Mac OS X (default port, currently Carbon)], [wxUSE_OSX_CARBON="$withval" CACHE_OSX_CARBON=1 TOOLKIT_GIVEN=1])
475 AC_ARG_WITH(carbon,        [  --with-carbon           same as --with-osx_carbon], [wxUSE_OSX_CARBON="$withval" CACHE_OSX_CARBON=1 TOOLKIT_GIVEN=1])
476 AC_ARG_WITH(cocoa,         [  --with-cocoa            same as --with-osx_cocoa], [wxUSE_OSX_COCOA="$withval" CACHE_OSX_COCOA=1 TOOLKIT_GIVEN=1])
477 AC_ARG_WITH(iphone,        [  --with-iphone           same as --with-osx_iphone], [wxUSE_OSX_IPHONE="$withval" CACHE_OSX_IPHONE=1 TOOLKIT_GIVEN=1])
478 AC_ARG_WITH(mac,           [  --with-mac              same as --with-osx], [wxUSE_OSX_CARBON="$withval" CACHE_OSX_CARBON=1 TOOLKIT_GIVEN=1])
479 AC_ARG_WITH(old_cocoa,     [  --with-old_cocoa        use old, deprecated, Cocoa port], [wxUSE_OLD_COCOA="$withval" CACHE_OLD_COCOA=1 TOOLKIT_GIVEN=1])
480 AC_ARG_WITH(wine,          [  --with-wine             use Wine], [wxUSE_WINE="$withval" CACHE_WINE=1])
481 AC_ARG_WITH(msw,           [  --with-msw              use MS-Windows], [wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1])
482 AC_ARG_WITH(pm,            [  --with-pm               use OS/2 Presentation Manager], [wxUSE_PM="$withval" CACHE_PM=1 TOOLKIT_GIVEN=1])
483 AC_ARG_WITH(directfb,      [  --with-directfb         use DirectFB], [wxUSE_DFB="$withval" wxUSE_UNIVERSAL="yes" CACHE_DFB=1 TOOLKIT_GIVEN=1])
484 AC_ARG_WITH(microwin,      [  --with-microwin         use MicroWindows], [wxUSE_MICROWIN="$withval" CACHE_MICROWIN=1 TOOLKIT_GIVEN=1])
485 AC_ARG_WITH(x11,           [  --with-x11              use X11], [wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1])
486 WX_ARG_ENABLE(nanox,       [  --enable-nanox          use NanoX], wxUSE_NANOX)
487 WX_ARG_ENABLE(gpe,         [  --enable-gpe            use GNOME PDA Environment features if possible], wxUSE_GPE)
488
489 dnl check that no more than one toolkit is given and that if none are given that
490 dnl we have a default one
491
492 AC_MSG_CHECKING(for toolkit)
493
494
495
496 # In Wine, we need to default to MSW, not GTK or MOTIF
497 if test "$wxUSE_WINE" = "yes"; then
498     DEFAULT_DEFAULT_wxUSE_GTK=0
499     DEFAULT_DEFAULT_wxUSE_MOTIF=0
500     DEFAULT_DEFAULT_wxUSE_MSW=1
501     wxUSE_SHARED=no
502     CC=${CC:-winegcc}
503     CXX=${CXX:-wineg++}
504 fi
505
506
507 if test "$wxUSE_GUI" = "yes"; then
508
509     if test "$USE_BEOS" = 1; then
510         AC_MSG_ERROR([BeOS GUI is not supported yet, use --disable-gui])
511     fi
512
513     if test "$TOOLKIT_GIVEN" = 1; then
514       dnl convert "yes", "any" or a number to 1 and "no" to 0
515       for toolkit in $ALL_TOOLKITS; do
516         var=wxUSE_$toolkit
517         eval "value=\$${var}"
518         if test "x$value" = "xno"; then
519           eval "$var=0"
520         elif test "x$value" != "x"; then
521           eval "$var=1"
522         fi
523
524         if test "x$value" != "x" -a "x$value" != "xyes" -a "x$value" != "xno"; then
525           eval "wx${toolkit}_VERSION=$value"
526         fi
527       done
528     else
529       dnl try to guess the most appropriate toolkit for this platform
530       for toolkit in $ALL_TOOLKITS; do
531         var=DEFAULT_DEFAULT_wxUSE_$toolkit
532         eval "wxUSE_$toolkit=\$${var}"
533       done
534     fi
535
536     dnl we suppose that expr is available (maybe there is a better way to do
537     dnl this? what about using ALL_TOOLKITS? TODO)
538     NUM_TOOLKITS=`expr ${wxUSE_OLD_COCOA:-0} + ${wxUSE_GTK:-0} + ${wxUSE_OSX_CARBON:-0} \
539                   + ${wxUSE_OSX_COCOA:-0} + ${wxUSE_OSX_IPHONE:-0} + ${wxUSE_DFB:-0} \
540                   + ${wxUSE_MICROWIN:-0} + ${wxUSE_MOTIF:-0} + ${wxUSE_MSW:-0} + ${wxUSE_X11:-0}`
541
542     dnl Allow wxUSE_PM only for OS/2 with EMX.
543     case "${host}" in
544       *-pc-os2_emx | *-pc-os2-emx )
545         NUM_TOOLKITS=`expr ${NUM_TOOLKITS} + ${wxUSE_PM:-0}`
546     esac
547
548     case "$NUM_TOOLKITS" in
549       1)
550       ;;
551       0)
552         AC_MSG_ERROR(Please specify a toolkit -- cannot determine the default for ${host})
553       ;;
554       *)
555         AC_MSG_ERROR(Please specify at most one toolkit)
556     esac
557
558     for toolkit in $ALL_TOOLKITS; do
559         var=wxUSE_$toolkit
560         eval "value=\$${var}"
561         if test "$value" = 1; then
562           toolkit_echo=`echo $toolkit | tr '[[A-Z]]' '[[a-z]]'`
563           AC_MSG_RESULT($toolkit_echo)
564         fi
565     done
566 else
567     if test "x$host_alias" != "x"; then
568         AC_MSG_RESULT(base ($host_alias hosted) only)
569     else
570         AC_MSG_RESULT(base only)
571     fi
572 fi
573
574 wxUSE_MAC=0
575 if test "$wxUSE_OSX_CARBON" = 1 \
576        -o "$wxUSE_OSX_COCOA" = 1 \
577        -o "$wxUSE_OSX_IPHONE" = 1; then
578     wxUSE_MAC=1
579 fi
580
581 dnl ---------------------------------------------------------------------------
582 dnl external libraries
583 dnl ---------------------------------------------------------------------------
584
585 WX_ARG_SYS_WITH(libpng,    [  --with-libpng           use libpng (PNG image format)], wxUSE_LIBPNG)
586 WX_ARG_SYS_WITH(libjpeg,   [  --with-libjpeg          use libjpeg (JPEG file format)], wxUSE_LIBJPEG)
587 WX_ARG_SYS_WITH(libtiff,   [  --with-libtiff          use libtiff (TIFF file format)], wxUSE_LIBTIFF)
588 WX_ARG_WITHOUT(libjbig,    [  --without-libjbig       don't use libjbig in libtiff even if available)], wxUSE_LIBJBIG)
589 WX_ARG_WITHOUT(liblzma,    [  --without-liblzma       don't use liblzma in libtiff even if available)], wxUSE_LIBLZMA)
590 WX_ARG_SYS_WITH(libxpm,    [  --with-libxpm           use libxpm (XPM file format)], wxUSE_LIBXPM)
591 WX_ARG_WITH(libiconv,      [  --with-libiconv         use libiconv (character conversion)], wxUSE_LIBICONV)
592 WX_ARG_WITH(libmspack,     [  --with-libmspack        use libmspack (CHM help files loading)], wxUSE_LIBMSPACK)
593 WX_ARG_WITHOUT(gtkprint,   [  --without-gtkprint      don't use GTK printing support], wxUSE_GTKPRINT)
594 WX_ARG_WITHOUT(gnomeprint, [  --without-gnomeprint    don't use GNOME printing libraries], wxUSE_LIBGNOMEPRINT)
595 WX_ARG_WITH(gnomevfs,      [  --with-gnomevfs         use GNOME VFS for associating MIME types], wxUSE_LIBGNOMEVFS)
596 WX_ARG_WITH(libnotify,     [  --with-libnotify        use libnotify for notifications], wxUSE_LIBNOTIFY)
597 WX_ARG_WITH(hildon,        [  --with-hildon           use Hildon framework for Nokia 770/800/810], wxUSE_LIBHILDON)
598 WX_ARG_WITH(opengl,        [  --with-opengl           use OpenGL (or Mesa)], wxUSE_OPENGL)
599
600 fi
601 dnl for GUI only
602
603 WX_ARG_WITH(dmalloc,       [  --with-dmalloc          use dmalloc library (http://dmalloc.com/)], wxUSE_DMALLOC)
604 WX_ARG_WITH(sdl,           [  --with-sdl              use SDL for audio on Unix], wxUSE_LIBSDL)
605 WX_ARG_SYS_WITH(regex,     [  --with-regex            enable support for wxRegEx class], wxUSE_REGEX)
606 WX_ARG_SYS_WITH(zlib,      [  --with-zlib             use zlib for LZW compression], wxUSE_ZLIB)
607 WX_ARG_SYS_WITH(expat,     [  --with-expat            enable XML support using expat parser], wxUSE_EXPAT)
608
609 AC_MSG_CHECKING([for --with-macosx-sdk])
610 AC_ARG_WITH(macosx-sdk,    [  --with-macosx-sdk=PATH  use an OS X SDK at PATH], [
611         wxUSE_MACOSX_SDK=$withval
612         wx_cv_use_macosx_sdk="wxUSE_MACOSX_SDK=$withval"
613     ])
614 AC_MSG_RESULT([$wxUSE_MACOSX_SDK])
615
616 AC_MSG_CHECKING([for --with-macosx-version-min])
617 AC_ARG_WITH(macosx-version-min,    [  --with-macosx-version-min=VER   build binaries which require at least this OS X version], [
618         wxUSE_MACOSX_VERSION_MIN=$withval
619         wx_cv_use_macosx_version_min="wxUSE_MACOSX_VERSION_MIN=$withval"
620     ])
621 AC_MSG_RESULT([$wxUSE_MACOSX_VERSION_MIN])
622
623 dnl ---------------------------------------------------------------------------
624 dnl debugging options
625 dnl ---------------------------------------------------------------------------
626
627 dnl don't use WX_ARG_ENABLE as it just gets in the way instead of helping with
628 dnl this rather unusual option
629 AC_MSG_CHECKING([for --enable-debug])
630 AC_ARG_ENABLE(debug,       [  --enable-debug          build library for debugging],
631     [
632         if test "$enableval" = yes; then
633             wxUSE_DEBUG=yes
634         elif test "$enableval" = no; then
635             wxUSE_DEBUG=no
636         elif test "$enableval" = max; then
637             wxUSE_DEBUG=yes
638             WXCONFIG_CPPFLAGS="$WXCONFIG_CPPFLAGS -DwxDEBUG_LEVEL=2"
639         else
640             AC_MSG_ERROR([Invalid --enable-debug value, must be yes, no or max])
641         fi
642     ],
643     wxUSE_DEBUG=default
644 )
645 AC_MSG_RESULT([${enable_debug-default}])
646
647 case "$wxUSE_DEBUG" in
648     yes)
649         dnl build the library for debugging: enable debugging code and generate
650         dnl the debug information for the library itself
651         DEFAULT_wxUSE_DEBUG_FLAG=yes
652         DEFAULT_wxUSE_DEBUG_INFO=yes
653
654         dnl also disable optimizations by default if --enable-debug was used
655         dnl (this can still be overridden by an explicit --enable-optimise)
656         DEFAULT_wxUSE_OPTIMISE=no
657         ;;
658
659     no)
660         dnl --disable-debug is equivalent to both --disable-debug_flag and
661         dnl --disable-debug_info
662         DEFAULT_wxUSE_DEBUG_FLAG=no
663         DEFAULT_wxUSE_DEBUG_INFO=no
664         ;;
665
666     default)
667         dnl the library is built with debugging support by default but without
668         dnl debug information as this requires much, much more disk space
669         DEFAULT_wxUSE_DEBUG_FLAG=yes
670         DEFAULT_wxUSE_DEBUG_INFO=no
671         ;;
672 esac
673
674 WX_ARG_DISABLE(debug_flag,   [  --disable-debug_flag    disable all debugging support], wxUSE_DEBUG_FLAG)
675 WX_ARG_ENABLE(debug_info,    [  --enable-debug_info     generate debug information], wxUSE_DEBUG_INFO)
676
677 dnl enabled if just --enable-debug_{flag,info} was
678 dnl
679 dnl in any case, only set the default value and allow overriding it with an
680
681 WX_ARG_ENABLE(debug_gdb,     [  --enable-debug_gdb      create code with extra GDB debugging information], wxUSE_DEBUG_GDB)
682 WX_ARG_ENABLE(debug_cntxt,   [  --enable-debug_cntxt    obsolete, don't use: use wxDebugContext], wxUSE_DEBUG_CONTEXT)
683 WX_ARG_ENABLE(mem_tracing,   [  --enable-mem_tracing    obsolete, don't use: create code with memory tracing], wxUSE_MEM_TRACING)
684
685 dnl ---------------------------------------------------------------------------
686 dnl global compile options
687 dnl ---------------------------------------------------------------------------
688
689 WX_ARG_DISABLE(shared,     [  --disable-shared        create static library instead of shared], wxUSE_SHARED)
690 WX_ARG_ENABLE(stl,         [  --enable-stl            use standard C++ classes for everything], wxUSE_STL)
691 if test "$wxUSE_STL" = "yes"; then
692     DEFAULT_wxUSE_STD_CONTAINERS=yes
693     DEFAULT_wxUSE_STD_IOSTREAM=yes
694     DEFAULT_wxUSE_STD_STRING=yes
695 fi
696 WX_ARG_ENABLE(std_containers,[  --enable-std_containers use standard C++ container classes], wxUSE_STD_CONTAINERS)
697 WX_ARG_ENABLE(std_iostreams, [  --enable-std_iostreams  use standard C++ stream classes], wxUSE_STD_IOSTREAM)
698 WX_ARG_ENABLE(std_string,    [  --enable-std_string     use standard C++ string classes], wxUSE_STD_STRING)
699 WX_ARG_ENABLE(std_string_conv_in_wxstring, [ --enable-std_string_conv_in_wxstring     provide implicit conversion to std::string in wxString], wxUSE_STD_STRING_CONV_IN_WXSTRING)
700 WX_ARG_DISABLE(unicode,      [  --disable-unicode       compile without Unicode support], wxUSE_UNICODE)
701 WX_ARG_ENABLE(mslu,          [  --enable-mslu           use MS Layer for Unicode on Windows 9x (Win32 only)], wxUSE_UNICODE_MSLU)
702 WX_ARG_ENABLE_PARAM(utf8,    [  --enable-utf8           use UTF-8 representation for strings (Unix only)], wxUSE_UNICODE_UTF8)
703 WX_ARG_ENABLE(utf8only,      [  --enable-utf8only       only support UTF-8 locales in UTF-8 build (Unix only)], wxUSE_UNICODE_UTF8_LOCALE)
704 WX_ARG_ENABLE(extended_rtti, [  --enable-extended_rtti  use extended RTTI (XTI)], wxUSE_EXTENDED_RTTI)
705 if test "$USE_OS2" = 1; then
706     DEFAULT_wxUSE_OMF=no
707     WX_ARG_ENABLE(omf,     [  --enable-omf            use OMF object format], wxUSE_OMF)
708 fi
709
710 WX_ARG_DISABLE(optimise,   [  --disable-optimise      compile without optimisations], wxUSE_OPTIMISE)
711
712 WX_ARG_ENABLE(profile,       [  --enable-profile        create code with profiling information], wxUSE_PROFILE)
713 WX_ARG_ENABLE(no_rtti,       [  --enable-no_rtti        create code without RTTI information], wxUSE_NO_RTTI)
714 WX_ARG_ENABLE(no_exceptions, [  --enable-no_exceptions  create code without C++ exceptions handling], wxUSE_NO_EXCEPTIONS)
715 WX_ARG_ENABLE(permissive,    [  --enable-permissive     compile code disregarding strict ANSI], wxUSE_PERMISSIVE)
716 WX_ARG_ENABLE(no_deps,       [  --enable-no_deps        create code without dependency information], wxUSE_NO_DEPS)
717 WX_ARG_DISABLE(vararg_macros,[  --disable-vararg_macros don't use vararg macros, even if they are supported], wxUSE_VARARG_MACROS)
718
719 WX_ARG_ENABLE_PARAM(universal_binary, [[  --enable-universal_binary=archs create universal binary for the specified (or all supported) architectures]], wxUSE_UNIVERSAL_BINARY)
720 WX_ARG_ENABLE_PARAM(macosx_arch,      [[  --enable-macosx_arch=ARCH  build for just the specified architecture]], wxUSE_MAC_ARCH)
721
722 WX_ARG_ENABLE(compat26,      [  --enable-compat26       enable wxWidgets 2.6 compatibility], WXWIN_COMPATIBILITY_2_6)
723 WX_ARG_DISABLE(compat28,     [  --disable-compat28      disable wxWidgets 2.8 compatibility], WXWIN_COMPATIBILITY_2_8)
724
725 WX_ARG_DISABLE(rpath,        [  --disable-rpath         disable use of rpath for uninstalled builds], wxUSE_RPATH)
726
727 WX_ARG_ENABLE(objc_uniquifying,[  --enable-objc_uniquifying enable Objective-C class name uniquifying], wxUSE_OBJC_UNIQUIFYING)
728
729 WX_ARG_DISABLE(visibility,   [  --disable-visibility    disable use of ELF symbols visibility even if supported], wxUSE_VISIBILITY)
730 WX_ARG_DISABLE(tls,          [  --disable-tls           disable use of compiler TLS support], wxUSE_COMPILER_TLS)
731
732 dnl ---------------------------------------------------------------------------
733 dnl optional non GUI features
734 dnl ---------------------------------------------------------------------------
735
736 WX_ARG_FEATURE(intl,          [  --enable-intl           use internationalization system], wxUSE_INTL)
737 WX_ARG_FEATURE(xlocale,       [  --enable-xlocale        use x-locale support (requires wxLocale)], wxUSE_XLOCALE)
738 WX_ARG_FEATURE(config,        [  --enable-config         use wxConfig (and derived) classes], wxUSE_CONFIG)
739
740 WX_ARG_FEATURE(protocols,     [  --enable-protocols      use wxProtocol and derived classes], wxUSE_PROTOCOL)
741 WX_ARG_FEATURE(ftp,           [  --enable-ftp            use wxFTP (requires wxProtocol], wxUSE_PROTOCOL_FTP)
742 WX_ARG_FEATURE(http,          [  --enable-http           use wxHTTP (requires wxProtocol], wxUSE_PROTOCOL_HTTP)
743 WX_ARG_FEATURE(fileproto,     [  --enable-fileproto      use wxFileProto class (requires wxProtocol], wxUSE_PROTOCOL_FILE)
744 WX_ARG_FEATURE(sockets,       [  --enable-sockets        use socket/network classes], wxUSE_SOCKETS)
745 WX_ARG_FEATURE(ipv6,          [  --enable-ipv6           enable IPv6 support in wxSocket], wxUSE_IPV6)
746 WX_ARG_FEATURE(ole,           [  --enable-ole            use OLE classes (Win32 only)], wxUSE_OLE)
747 WX_ARG_FEATURE(dataobj,       [  --enable-dataobj        use data object classes], wxUSE_DATAOBJ)
748
749 WX_ARG_FEATURE(ipc,           [  --enable-ipc            use interprocess communication (wxSocket etc.)], wxUSE_IPC)
750
751 WX_ARG_FEATURE(baseevtloop,   [  --enable-baseevtloop    use event loop in console programs too], wxUSE_CONSOLE_EVENTLOOP)
752 WX_ARG_FEATURE(epollloop,     [  --enable-epollloop      use wxEpollDispatcher class (Linux only)], wxUSE_EPOLL_DISPATCHER)
753 WX_ARG_FEATURE(selectloop,    [  --enable-selectloop     use wxSelectDispatcher class], wxUSE_SELECT_DISPATCHER)
754
755 dnl please keep the settings below in alphabetical order
756 WX_ARG_FEATURE(any,           [  --enable-any            use wxAny class], wxUSE_ANY)
757 WX_ARG_FEATURE(apple_ieee,    [  --enable-apple_ieee     use the Apple IEEE codec], wxUSE_APPLE_IEEE)
758 WX_ARG_FEATURE(arcstream,     [  --enable-arcstream      use wxArchive streams], wxUSE_ARCHIVE_STREAMS)
759 WX_ARG_FEATURE(base64,        [  --enable-base64         use base64 encoding/decoding functions], wxUSE_BASE64)
760 WX_ARG_FEATURE(backtrace,     [  --enable-backtrace      use wxStackWalker class for getting backtraces], wxUSE_STACKWALKER)
761 WX_ARG_FEATURE(catch_segvs,   [  --enable-catch_segvs    catch signals in wxApp::OnFatalException (Unix only)], wxUSE_ON_FATAL_EXCEPTION)
762 WX_ARG_FEATURE(cmdline,       [  --enable-cmdline        use wxCmdLineParser class], wxUSE_CMDLINE_PARSER)
763 WX_ARG_FEATURE(datetime,      [  --enable-datetime       use wxDateTime class], wxUSE_DATETIME)
764 WX_ARG_FEATURE(debugreport,   [  --enable-debugreport    use wxDebugReport class], wxUSE_DEBUGREPORT)
765 WX_ARG_FEATURE(dialupman,     [  --enable-dialupman      use dialup network classes], wxUSE_DIALUP_MANAGER)
766 WX_ARG_FEATURE(dynlib,        [  --enable-dynlib         use wxLibrary class for DLL loading], wxUSE_DYNLIB_CLASS)
767 WX_ARG_FEATURE(dynamicloader, [  --enable-dynamicloader  use (new) wxDynamicLibrary class], wxUSE_DYNAMIC_LOADER)
768 WX_ARG_FEATURE(exceptions,    [  --enable-exceptions     build exception-safe library], wxUSE_EXCEPTIONS)
769 WX_ARG_FEATURE(ffile,         [  --enable-ffile          use wxFFile class], wxUSE_FFILE)
770 WX_ARG_FEATURE(file,          [  --enable-file           use wxFile class], wxUSE_FILE)
771 WX_ARG_FEATURE(filehistory,   [  --enable-filehistory    use wxFileHistory class], wxUSE_FILE_HISTORY)
772 WX_ARG_FEATURE(filesystem,    [  --enable-filesystem     use virtual file systems classes], wxUSE_FILESYSTEM)
773 WX_ARG_FEATURE(fontenum,      [  --enable-fontenum       use wxFontEnumerator class], wxUSE_FONTENUM)
774 WX_ARG_FEATURE(fontmap,       [  --enable-fontmap        use font encodings conversion classes], wxUSE_FONTMAP)
775 WX_ARG_FEATURE(fs_archive,    [  --enable-fs_archive     use virtual archive filesystems], wxUSE_FS_ARCHIVE)
776 WX_ARG_FEATURE(fs_inet,       [  --enable-fs_inet        use virtual HTTP/FTP filesystems], wxUSE_FS_INET)
777 WX_ARG_FEATURE(fs_zip,        [  --enable-fs_zip         now replaced by fs_archive], wxUSE_FS_ZIP)
778 WX_ARG_FEATURE(fsvolume,      [  --enable-fsvolume       use wxFSVolume class], wxUSE_FSVOLUME)
779 WX_ARG_FEATURE(fswatcher,     [  --enable-fswatcher      use wxFileSystemWatcher class], wxUSE_FSWATCHER)
780 WX_ARG_FEATURE(geometry,      [  --enable-geometry       use geometry class], wxUSE_GEOMETRY)
781 WX_ARG_FEATURE(log,           [  --enable-log            use logging system], wxUSE_LOG)
782 WX_ARG_FEATURE(longlong,      [  --enable-longlong       use wxLongLong class], wxUSE_LONGLONG)
783 WX_ARG_FEATURE(mimetype,      [  --enable-mimetype       use wxMimeTypesManager], wxUSE_MIMETYPE)
784 WX_ARG_FEATURE(printfposparam,[  --enable-printfposparam use wxVsnprintf() which supports positional parameters], wxUSE_PRINTF_POS_PARAMS)
785 WX_ARG_FEATURE(snglinst,      [  --enable-snglinst       use wxSingleInstanceChecker class], wxUSE_SNGLINST_CHECKER)
786 WX_ARG_FEATURE(sound,         [  --enable-sound          use wxSound class], wxUSE_SOUND)
787 WX_ARG_FEATURE(stdpaths,      [  --enable-stdpaths       use wxStandardPaths class], wxUSE_STDPATHS)
788 WX_ARG_FEATURE(stopwatch,     [  --enable-stopwatch      use wxStopWatch class], wxUSE_STOPWATCH)
789 WX_ARG_FEATURE(streams,       [  --enable-streams        use wxStream etc classes], wxUSE_STREAMS)
790 WX_ARG_FEATURE(sysoptions,    [  --enable-sysoptions     use wxSystemOptions], wxUSE_SYSTEM_OPTIONS)
791 WX_ARG_FEATURE(tarstream,     [  --enable-tarstream      use wxTar streams], wxUSE_TARSTREAM)
792 WX_ARG_FEATURE(textbuf,       [  --enable-textbuf        use wxTextBuffer class], wxUSE_TEXTBUFFER)
793 WX_ARG_FEATURE(textfile,      [  --enable-textfile       use wxTextFile class], wxUSE_TEXTFILE)
794 WX_ARG_FEATURE(timer,         [  --enable-timer          use wxTimer class], wxUSE_TIMER)
795 WX_ARG_FEATURE(variant,       [  --enable-variant        use wxVariant class], wxUSE_VARIANT)
796 WX_ARG_FEATURE(zipstream,     [  --enable-zipstream      use wxZip streams], wxUSE_ZIPSTREAM)
797
798 dnl URL-related classes
799 WX_ARG_FEATURE(url,           [  --enable-url            use wxURL class], wxUSE_URL)
800 WX_ARG_FEATURE(protocol,      [  --enable-protocol       use wxProtocol class], wxUSE_PROTOCOL)
801 WX_ARG_FEATURE(protocol_http, [  --enable-protocol-http  HTTP support in wxProtocol], wxUSE_PROTOCOL_HTTP)
802 WX_ARG_FEATURE(protocol_ftp,  [  --enable-protocol-ftp   FTP support in wxProtocol], wxUSE_PROTOCOL_FTP)
803 WX_ARG_FEATURE(protocol_file, [  --enable-protocol-file  FILE support in wxProtocol], wxUSE_PROTOCOL_FILE)
804
805 WX_ARG_FEATURE(threads,     [  --enable-threads        use threads], wxUSE_THREADS)
806
807 WX_ARG_ENABLE(iniconf,      [  --enable-iniconf        use wxIniConfig (Win32 only)], wxUSE_INICONF)
808 WX_ARG_FEATURE(regkey,      [  --enable-regkey         use wxRegKey class (Win32 only)], wxUSE_REGKEY)
809
810 if test "$wxUSE_GUI" = "yes"; then
811
812 dnl ---------------------------------------------------------------------------
813 dnl optional "big" GUI features
814 dnl ---------------------------------------------------------------------------
815
816 WX_ARG_FEATURE(docview,     [  --enable-docview        use document view architecture], wxUSE_DOC_VIEW_ARCHITECTURE)
817 WX_ARG_FEATURE(help,        [  --enable-help           use help subsystem], wxUSE_HELP)
818 WX_ARG_FEATURE(mshtmlhelp,  [  --enable-mshtmlhelp     use MS HTML Help (win32)], wxUSE_MS_HTML_HELP)
819 WX_ARG_FEATURE(html,        [  --enable-html           use wxHTML sub-library], wxUSE_HTML)
820 WX_ARG_FEATURE(htmlhelp,    [  --enable-htmlhelp       use wxHTML-based help], wxUSE_WXHTML_HELP)
821 WX_ARG_FEATURE(xrc,         [  --enable-xrc            use XRC resources sub-library], wxUSE_XRC)
822 WX_ARG_FEATURE(aui,         [  --enable-aui            use AUI docking library], wxUSE_AUI)
823 WX_ARG_FEATURE(propgrid,    [  --enable-propgrid       use wxPropertyGrid library], wxUSE_PROPGRID)
824 WX_ARG_FEATURE(ribbon,      [  --enable-ribbon         use wxRibbon library], wxUSE_RIBBON)
825 WX_ARG_FEATURE(stc,         [  --enable-stc            use wxStyledTextCtrl library], wxUSE_STC)
826 WX_ARG_FEATURE(constraints, [  --enable-constraints    use layout-constraints system], wxUSE_CONSTRAINTS)
827 WX_ARG_FEATURE(loggui,      [  --enable-loggui         use standard GUI logger], wxUSE_LOGGUI)
828 WX_ARG_FEATURE(logwin,      [  --enable-logwin         use wxLogWindow], wxUSE_LOGWINDOW)
829 WX_ARG_FEATURE(logdialog,   [  --enable-logdialog      use wxLogDialog], wxUSE_LOGDIALOG)
830 WX_ARG_FEATURE(mdi,         [  --enable-mdi            use multiple document interface architecture], wxUSE_MDI)
831 WX_ARG_FEATURE(mdidoc,      [  --enable-mdidoc         use docview architecture with MDI], wxUSE_MDI_ARCHITECTURE)
832 WX_ARG_FEATURE(mediactrl,   [  --enable-mediactrl      use wxMediaCtrl class], wxUSE_MEDIACTRL)
833 WX_ARG_FEATURE(gstreamer8,  [  --enable-gstreamer8     force GStreamer 0.8 instead of 0.10 with the wxMediaCtrl class on unix], wxUSE_GSTREAMER8)
834 WX_ARG_FEATURE(richtext,    [  --enable-richtext       use wxRichTextCtrl], wxUSE_RICHTEXT)
835 WX_ARG_FEATURE(postscript,  [  --enable-postscript     use wxPostscriptDC device context (default for gtk+)], wxUSE_POSTSCRIPT)
836 WX_ARG_FEATURE(printarch,   [  --enable-printarch      use printing architecture], wxUSE_PRINTING_ARCHITECTURE)
837 WX_ARG_FEATURE(svg,         [  --enable-svg            use wxSVGFileDC device context], wxUSE_SVG)
838 WX_ARG_FEATURE(webkit,      [  --enable-webkit         use wxWebKitCtrl (Mac-only, use wxWebView instead)], wxUSE_WEBKIT)
839 WX_ARG_FEATURE(webview,     [  --enable-webview        use wxWebView library], wxUSE_WEBVIEW)
840
841 dnl wxDC is implemented in terms of wxGraphicsContext in wxOSX so the latter
842 dnl can't be disabled, don't even provide an option to do it
843 if test "$wxUSE_MAC" != 1; then
844 WX_ARG_FEATURE(graphics_ctx,[  --enable-graphics_ctx   use graphics context 2D drawing API], wxUSE_GRAPHICS_CONTEXT)
845 fi
846
847 dnl ---------------------------------------------------------------------------
848 dnl IPC &c
849 dnl ---------------------------------------------------------------------------
850
851 WX_ARG_FEATURE(clipboard,   [  --enable-clipboard      use wxClipboard class], wxUSE_CLIPBOARD)
852 WX_ARG_FEATURE(dnd,         [  --enable-dnd            use Drag'n'Drop classes], wxUSE_DRAG_AND_DROP)
853
854 dnl ---------------------------------------------------------------------------
855 dnl optional GUI controls (in alphabetical order except the first one)
856 dnl ---------------------------------------------------------------------------
857
858 dnl don't set DEFAULT_wxUSE_XXX below if the option is not specified
859 DEFAULT_wxUSE_CONTROLS=none
860 WX_ARG_DISABLE(controls,    [  --disable-controls      disable compilation of all standard controls], wxUSE_CONTROLS)
861
862 dnl even with --disable-controls, some may be enabled by an explicit
863 dnl --enable-<control> later on the command line -- but by default all will be
864 dnl disabled
865 if test "$wxUSE_CONTROLS" = "no"; then
866     DEFAULT_wxUSE_ACCEL=no
867     DEFAULT_wxUSE_ANIMATIONCTRL=no
868     DEFAULT_wxUSE_BANNERWINDOW=no
869     DEFAULT_wxUSE_BMPBUTTON=no
870     DEFAULT_wxUSE_BUTTON=no
871     DEFAULT_wxUSE_CALCTRL=no
872     DEFAULT_wxUSE_CARET=no
873     DEFAULT_wxUSE_CHECKBOX=no
874     DEFAULT_wxUSE_CHECKLISTBOX=no
875     DEFAULT_wxUSE_CHOICE=no
876     DEFAULT_wxUSE_CHOICEBOOK=no
877     DEFAULT_wxUSE_COLLPANE=no
878     DEFAULT_wxUSE_COLOURPICKERCTRL=no
879     DEFAULT_wxUSE_COMBOBOX=no
880     DEFAULT_wxUSE_COMBOBOX=no
881     DEFAULT_wxUSE_COMMANDLINKBUTTON=no
882     DEFAULT_wxUSE_DATAVIEWCTRL=no
883     DEFAULT_wxUSE_DATEPICKCTRL=no
884     DEFAULT_wxUSE_DETECT_SM=no
885     DEFAULT_wxUSE_DIRPICKERCTRL=no
886     DEFAULT_wxUSE_DISPLAY=no
887     DEFAULT_wxUSE_FILECTRL=no
888     DEFAULT_wxUSE_FILEPICKERCTRL=no
889     DEFAULT_wxUSE_FONTPICKERCTRL=no
890     DEFAULT_wxUSE_GAUGE=no
891     DEFAULT_wxUSE_GRID=no
892     DEFAULT_wxUSE_HEADERCTRL=no
893     DEFAULT_wxUSE_HYPERLINKCTRL=no
894     DEFAULT_wxUSE_IMAGLIST=no
895     DEFAULT_wxUSE_LISTBOOK=no
896     DEFAULT_wxUSE_LISTBOX=no
897     DEFAULT_wxUSE_LISTCTRL=no
898     DEFAULT_wxUSE_MARKUP=no
899     DEFAULT_wxUSE_NOTEBOOK=no
900     DEFAULT_wxUSE_POPUPWIN=no
901     DEFAULT_wxUSE_RADIOBOX=no
902     DEFAULT_wxUSE_RADIOBTN=no
903     DEFAULT_wxUSE_RICHMSGDLG=no
904     DEFAULT_wxUSE_RICHTOOLTIP=no
905     DEFAULT_wxUSE_REARRANGECTRL=no
906     DEFAULT_wxUSE_SASH=no
907     DEFAULT_wxUSE_SCROLLBAR=no
908     DEFAULT_wxUSE_SEARCHCTRL=no
909     DEFAULT_wxUSE_SLIDER=no
910     DEFAULT_wxUSE_SPINBTN=no
911     DEFAULT_wxUSE_SPINCTRL=no
912     DEFAULT_wxUSE_SPLITTER=no
913     DEFAULT_wxUSE_STATBMP=no
914     DEFAULT_wxUSE_STATBOX=no
915     DEFAULT_wxUSE_STATLINE=no
916     DEFAULT_wxUSE_STATUSBAR=no
917     DEFAULT_wxUSE_TIMEPICKCTRL=no
918     DEFAULT_wxUSE_TIPWINDOW=no
919     DEFAULT_wxUSE_TOGGLEBTN=no
920     DEFAULT_wxUSE_TOOLBAR=no
921     DEFAULT_wxUSE_TOOLBAR_NATIVE=no
922     DEFAULT_wxUSE_TOOLBOOK=no
923     DEFAULT_wxUSE_TOOLTIPS=no
924     DEFAULT_wxUSE_TREEBOOK=no
925     DEFAULT_wxUSE_TREECTRL=no
926     DEFAULT_wxUSE_TREELISTCTRL=no
927 fi
928
929 dnl features affecting multiple controls
930 WX_ARG_FEATURE(markup,      [  --enable-markup         support wxControl::SetLabelMarkup], wxUSE_MARKUP)
931
932 dnl please keep the settings below in alphabetical order
933 WX_ARG_FEATURE(accel,       [  --enable-accel          use accelerators], wxUSE_ACCEL)
934 WX_ARG_FEATURE(animatectrl, [  --enable-animatectrl    use wxAnimationCtrl class], wxUSE_ANIMATIONCTRL)
935 WX_ARG_FEATURE(bannerwindow,[  --enable-bannerwindow   use wxBannerWindow class], wxUSE_BANNERWINDOW)
936 WX_ARG_FEATURE(artstd,      [  --enable-artstd         use standard XPM icons in wxArtProvider], wxUSE_ARTPROVIDER_STD)
937 WX_ARG_FEATURE(arttango,    [  --enable-arttango       use Tango icons in wxArtProvider], wxUSE_ARTPROVIDER_TANGO)
938 WX_ARG_FEATURE(bmpbutton,   [  --enable-bmpbutton      use wxBitmapButton class], wxUSE_BMPBUTTON)
939 WX_ARG_FEATURE(bmpcombobox, [  --enable-bmpcombobox    use wxBitmapComboBox class], wxUSE_BITMAPCOMBOBOX)
940 WX_ARG_FEATURE(button,      [  --enable-button         use wxButton class], wxUSE_BUTTON)
941 WX_ARG_FEATURE(calendar,    [  --enable-calendar       use wxCalendarCtrl class], wxUSE_CALCTRL)
942 WX_ARG_FEATURE(caret,       [  --enable-caret          use wxCaret class], wxUSE_CARET)
943 WX_ARG_FEATURE(checkbox,    [  --enable-checkbox       use wxCheckBox class], wxUSE_CHECKBOX)
944 WX_ARG_FEATURE(checklst,    [  --enable-checklst       use wxCheckListBox (listbox with checkboxes) class], wxUSE_CHECKLST)
945 WX_ARG_FEATURE(choice,      [  --enable-choice         use wxChoice class], wxUSE_CHOICE)
946 WX_ARG_FEATURE(choicebook,  [  --enable-choicebook     use wxChoicebook class], wxUSE_CHOICEBOOK)
947 WX_ARG_FEATURE(collpane,    [  --enable-collpane       use wxCollapsiblePane class], wxUSE_COLLPANE)
948 WX_ARG_FEATURE(colourpicker,[  --enable-colourpicker   use wxColourPickerCtrl class], wxUSE_COLOURPICKERCTRL)
949 WX_ARG_FEATURE(combobox,    [  --enable-combobox       use wxComboBox class], wxUSE_COMBOBOX)
950 WX_ARG_FEATURE(comboctrl,   [  --enable-comboctrl      use wxComboCtrl class], wxUSE_COMBOCTRL)
951 WX_ARG_FEATURE(commandlinkbutton, [  --enable-commandlinkbutton      use wxCommmandLinkButton class], wxUSE_COMMANDLINKBUTTON)
952 WX_ARG_FEATURE(dataviewctrl,[  --enable-dataviewctrl   use wxDataViewCtrl class], wxUSE_DATAVIEWCTRL)
953 WX_ARG_FEATURE(datepick,    [  --enable-datepick       use wxDatePickerCtrl class], wxUSE_DATEPICKCTRL)
954 WX_ARG_FEATURE(detect_sm,   [  --enable-detect_sm      use code to detect X11 session manager], wxUSE_DETECT_SM)
955 WX_ARG_FEATURE(dirpicker,   [  --enable-dirpicker      use wxDirPickerCtrl class], wxUSE_DIRPICKERCTRL)
956 WX_ARG_FEATURE(display,     [  --enable-display        use wxDisplay class], wxUSE_DISPLAY)
957 WX_ARG_FEATURE(editablebox, [  --enable-editablebox    use wxEditableListBox class], wxUSE_EDITABLELISTBOX)
958 WX_ARG_FEATURE(filectrl,    [  --enable-filectrl       use wxFileCtrl class], wxUSE_FILECTRL)
959 WX_ARG_FEATURE(filepicker,  [  --enable-filepicker     use wxFilePickerCtrl class], wxUSE_FILEPICKERCTRL)
960 WX_ARG_FEATURE(fontpicker,  [  --enable-fontpicker     use wxFontPickerCtrl class], wxUSE_FONTPICKERCTRL)
961 WX_ARG_FEATURE(gauge,       [  --enable-gauge          use wxGauge class], wxUSE_GAUGE)
962 WX_ARG_FEATURE(grid,        [  --enable-grid           use wxGrid class], wxUSE_GRID)
963 WX_ARG_FEATURE(headerctrl,  [  --enable-headerctrl     use wxHeaderCtrl class], wxUSE_HEADERCTRL)
964 WX_ARG_FEATURE(hyperlink,   [  --enable-hyperlink      use wxHyperlinkCtrl class], wxUSE_HYPERLINKCTRL)
965 WX_ARG_FEATURE(imaglist,    [  --enable-imaglist       use wxImageList class], wxUSE_IMAGLIST)
966 WX_ARG_FEATURE(infobar,     [  --enable-infobar        use wxInfoBar class], wxUSE_INFOBAR)
967 WX_ARG_FEATURE(listbook,    [  --enable-listbook       use wxListbook class], wxUSE_LISTBOOK)
968 WX_ARG_FEATURE(listbox,     [  --enable-listbox        use wxListBox class], wxUSE_LISTBOX)
969 WX_ARG_FEATURE(listctrl,    [  --enable-listctrl       use wxListCtrl class], wxUSE_LISTCTRL)
970 WX_ARG_FEATURE(notebook,    [  --enable-notebook       use wxNotebook class], wxUSE_NOTEBOOK)
971 WX_ARG_FEATURE(notifmsg,    [  --enable-notifmsg       use wxNotificationMessage class], wxUSE_NOTIFICATION_MESSAGE)
972 WX_ARG_FEATURE(odcombobox,  [  --enable-odcombobox     use wxOwnerDrawnComboBox class], wxUSE_ODCOMBOBOX)
973 WX_ARG_FEATURE(popupwin,    [  --enable-popupwin       use wxPopUpWindow class], wxUSE_POPUPWIN)
974 WX_ARG_FEATURE(prefseditor, [  --enable-prefseditor    use wxPreferencesEditor class], wxUSE_PREFERENCES_EDITOR)
975 WX_ARG_FEATURE(radiobox,    [  --enable-radiobox       use wxRadioBox class], wxUSE_RADIOBOX)
976 WX_ARG_FEATURE(radiobtn,    [  --enable-radiobtn       use wxRadioButton class], wxUSE_RADIOBTN)
977 WX_ARG_FEATURE(richmsgdlg,  [  --enable-richmsgdlg     use wxRichMessageDialog class], wxUSE_RICHMSGDLG)
978 WX_ARG_FEATURE(richtooltip, [  --enable-richtooltip    use wxRichToolTip class], wxUSE_RICHTOOLTIP)
979 WX_ARG_FEATURE(rearrangectrl,[  --enable-rearrangectrl  use wxRearrangeList/Ctrl/Dialog], wxUSE_REARRANGECTRL)
980 WX_ARG_FEATURE(sash,        [  --enable-sash           use wxSashWindow class], wxUSE_SASH)
981 WX_ARG_FEATURE(scrollbar,   [  --enable-scrollbar      use wxScrollBar class and scrollable windows], wxUSE_SCROLLBAR)
982 WX_ARG_FEATURE(searchctrl,  [  --enable-searchctrl     use wxSearchCtrl class], wxUSE_SEARCHCTRL)
983 WX_ARG_FEATURE(slider,      [  --enable-slider         use wxSlider class], wxUSE_SLIDER)
984 WX_ARG_FEATURE(spinbtn,     [  --enable-spinbtn        use wxSpinButton class], wxUSE_SPINBTN)
985 WX_ARG_FEATURE(spinctrl,    [  --enable-spinctrl       use wxSpinCtrl class], wxUSE_SPINCTRL)
986 WX_ARG_FEATURE(splitter,    [  --enable-splitter       use wxSplitterWindow class], wxUSE_SPLITTER)
987 WX_ARG_FEATURE(statbmp,     [  --enable-statbmp        use wxStaticBitmap class], wxUSE_STATBMP)
988 WX_ARG_FEATURE(statbox,     [  --enable-statbox        use wxStaticBox class], wxUSE_STATBOX)
989 WX_ARG_FEATURE(statline,    [  --enable-statline       use wxStaticLine class], wxUSE_STATLINE)
990 WX_ARG_FEATURE(stattext,    [  --enable-stattext       use wxStaticText class], wxUSE_STATTEXT)
991 WX_ARG_FEATURE(statusbar,   [  --enable-statusbar      use wxStatusBar class], wxUSE_STATUSBAR)
992 WX_ARG_FEATURE(taskbaricon, [  --enable-taskbaricon    use wxTaskBarIcon class], wxUSE_TASKBARICON)
993 WX_ARG_FEATURE(tbarnative,  [  --enable-tbarnative     use native wxToolBar class], wxUSE_TOOLBAR_NATIVE)
994 WX_ARG_FEATURE(textctrl,    [  --enable-textctrl       use wxTextCtrl class], wxUSE_TEXTCTRL)
995 WX_ARG_FEATURE(datepick,    [  --enable-timepick       use wxTimePickerCtrl class], wxUSE_TIMEPICKCTRL)
996 WX_ARG_FEATURE(tipwindow,   [  --enable-tipwindow      use wxTipWindow class], wxUSE_TIPWINDOW)
997 WX_ARG_FEATURE(togglebtn,   [  --enable-togglebtn      use wxToggleButton class], wxUSE_TOGGLEBTN)
998 WX_ARG_FEATURE(toolbar,     [  --enable-toolbar        use wxToolBar class], wxUSE_TOOLBAR)
999 WX_ARG_FEATURE(toolbook,    [  --enable-toolbook       use wxToolbook class], wxUSE_TOOLBOOK)
1000 WX_ARG_FEATURE(treebook,    [  --enable-treebook       use wxTreebook class], wxUSE_TREEBOOK)
1001 WX_ARG_FEATURE(treectrl,    [  --enable-treectrl       use wxTreeCtrl class], wxUSE_TREECTRL)
1002 WX_ARG_FEATURE(treelist,    [  --enable-treelist       use wxTreeListCtrl class], wxUSE_TREELISTCTRL)
1003
1004 dnl ---------------------------------------------------------------------------
1005 dnl common dialogs
1006 dnl ---------------------------------------------------------------------------
1007
1008 WX_ARG_FEATURE(commondlg,   [  --enable-commondlg      use all common dialogs], wxUSE_COMMONDLGS)
1009 WX_ARG_FEATURE(aboutdlg,    [  --enable-aboutdlg       use wxAboutBox], wxUSE_ABOUTDLG)
1010 WX_ARG_FEATURE(choicedlg,   [  --enable-choicedlg      use wxChoiceDialog], wxUSE_CHOICEDLG)
1011 WX_ARG_FEATURE(coldlg,      [  --enable-coldlg         use wxColourDialog], wxUSE_COLOURDLG)
1012 WX_ARG_FEATURE(filedlg,     [  --enable-filedlg        use wxFileDialog], wxUSE_FILEDLG)
1013 WX_ARG_FEATURE(finddlg,     [  --enable-finddlg        use wxFindReplaceDialog], wxUSE_FINDREPLDLG)
1014 WX_ARG_FEATURE(fontdlg,     [  --enable-fontdlg        use wxFontDialog], wxUSE_FONTDLG)
1015 WX_ARG_FEATURE(dirdlg,      [  --enable-dirdlg         use wxDirDialog], wxUSE_DIRDLG)
1016 WX_ARG_FEATURE(msgdlg,      [  --enable-msgdlg         use wxMessageDialog], wxUSE_MSGDLG)
1017 WX_ARG_FEATURE(numberdlg,   [  --enable-numberdlg      use wxNumberEntryDialog], wxUSE_NUMBERDLG)
1018 WX_ARG_FEATURE(splash,      [  --enable-splash         use wxSplashScreen], wxUSE_SPLASH)
1019 WX_ARG_FEATURE(textdlg,     [  --enable-textdlg        use wxTextDialog], wxUSE_TEXTDLG)
1020 WX_ARG_FEATURE(tipdlg,      [  --enable-tipdlg         use startup tips], wxUSE_STARTUP_TIPS)
1021 WX_ARG_FEATURE(progressdlg, [  --enable-progressdlg    use wxProgressDialog], wxUSE_PROGRESSDLG)
1022 WX_ARG_FEATURE(wizarddlg,   [  --enable-wizarddlg      use wxWizard], wxUSE_WIZARDDLG)
1023
1024 dnl ---------------------------------------------------------------------------
1025 dnl misc GUI options
1026 dnl ---------------------------------------------------------------------------
1027
1028 WX_ARG_FEATURE(menus,       [  --enable-menus          use wxMenu/wxMenuBar/wxMenuItem classes], wxUSE_MENUS)
1029 WX_ARG_FEATURE(miniframe,   [  --enable-miniframe      use wxMiniFrame class], wxUSE_MINIFRAME)
1030 WX_ARG_FEATURE(tooltips,    [  --enable-tooltips       use wxToolTip class], wxUSE_TOOLTIPS)
1031 WX_ARG_FEATURE(splines,     [  --enable-splines        use spline drawing code], wxUSE_SPLINES)
1032 WX_ARG_FEATURE(mousewheel,  [  --enable-mousewheel     use mousewheel], wxUSE_MOUSEWHEEL)
1033 WX_ARG_FEATURE(validators,  [  --enable-validators     use wxValidator and derived classes], wxUSE_VALIDATORS)
1034 WX_ARG_FEATURE(busyinfo,    [  --enable-busyinfo       use wxBusyInfo], wxUSE_BUSYINFO)
1035 WX_ARG_FEATURE(hotkey,      [  --enable-hotkey         use wxWindow::RegisterHotKey()], wxUSE_HOTKEY)
1036 WX_ARG_FEATURE(joystick,    [  --enable-joystick       use wxJoystick], wxUSE_JOYSTICK)
1037 WX_ARG_FEATURE(metafile,    [  --enable-metafiles      use wxMetaFile], wxUSE_METAFILE)
1038 WX_ARG_FEATURE(dragimage,   [  --enable-dragimage      use wxDragImage], wxUSE_DRAGIMAGE)
1039 WX_ARG_FEATURE(accessibility,[  --enable-accessibility  enable accessibility support], wxUSE_ACCESSIBILITY)
1040 WX_ARG_FEATURE(uiactionsim,  [  --enable-uiactionsim    use wxUIActionSimulator (experimental)], wxUSE_UIACTIONSIMULATOR)
1041 WX_ARG_FEATURE(dctransform,  [  --enable-dctransform    use wxDC::SetTransformMatrix and related], wxUSE_DC_TRANSFORM_MATRIX)
1042 WX_ARG_FEATURE(webviewwebkit,[  --enable-webviewwebkit  use wxWebView WebKit backend], wxUSE_WEBVIEW_WEBKIT)
1043
1044 dnl ---------------------------------------------------------------------------
1045 dnl support for image formats that do not rely on external library
1046 dnl ---------------------------------------------------------------------------
1047
1048 WX_ARG_FEATURE(palette,     [  --enable-palette        use wxPalette class], wxUSE_PALETTE)
1049 WX_ARG_FEATURE(image,       [  --enable-image          use wxImage class], wxUSE_IMAGE)
1050 WX_ARG_FEATURE(gif,         [  --enable-gif            use gif images (GIF file format)], wxUSE_GIF)
1051 WX_ARG_FEATURE(pcx,         [  --enable-pcx            use pcx images (PCX file format)], wxUSE_PCX)
1052 WX_ARG_FEATURE(tga,         [  --enable-tga            use tga images (TGA file format)], wxUSE_TGA)
1053 WX_ARG_FEATURE(iff,         [  --enable-iff            use iff images (IFF file format)], wxUSE_IFF)
1054 WX_ARG_FEATURE(pnm,         [  --enable-pnm            use pnm images (PNM file format)], wxUSE_PNM)
1055 WX_ARG_FEATURE(xpm,         [  --enable-xpm            use xpm images (XPM file format)], wxUSE_XPM)
1056 WX_ARG_FEATURE(ico_cur,     [  --enable-ico_cur        use Windows ICO and CUR formats], wxUSE_ICO_CUR)
1057
1058 dnl ---------------------------------------------------------------------------
1059 dnl wxMSW-only options
1060 dnl ---------------------------------------------------------------------------
1061
1062 WX_ARG_FEATURE(dccache,     [  --enable-dccache        cache temporary wxDC objects (Win32 only)], wxUSE_DC_CACHEING)
1063 WX_ARG_FEATURE(ps-in-msw,   [  --enable-ps-in-msw      use PS printing in wxMSW (Win32 only)], wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW)
1064 WX_ARG_FEATURE(ownerdrawn,  [  --enable-ownerdrawn     use owner drawn controls (Win32 and OS/2 only)], wxUSE_OWNER_DRAWN)
1065 WX_ARG_FEATURE(uxtheme,     [  --enable-uxtheme        enable support for Windows XP themed look (Win32 only)], wxUSE_UXTHEME)
1066 WX_ARG_FEATURE(wxdib,       [  --enable-wxdib          use wxDIB class (Win32 only)], wxUSE_DIB)
1067 WX_ARG_FEATURE(webviewie,   [  --enable-webviewie      use wxWebView IE backend (Win32 only)], wxUSE_WEBVIEW_IE)
1068
1069 dnl this one is not really MSW-specific but it exists mainly to be turned off
1070 dnl under MSW, it should be off by default on the other platforms
1071 if test "$wxUSE_MSW" != 1; then
1072     DEFAULT_wxUSE_AUTOID_MANAGEMENT=no
1073 fi
1074
1075 WX_ARG_FEATURE(autoidman,   [  --enable-autoidman      use automatic ids management], wxUSE_AUTOID_MANAGEMENT)
1076
1077 fi
1078 dnl for GUI only
1079
1080 dnl ---------------------------------------------------------------------------
1081 dnl Checks for programs
1082 dnl ---------------------------------------------------------------------------
1083
1084 dnl flush the cache because checking for programs might abort
1085 AC_CACHE_SAVE
1086
1087 dnl C-compiler checks
1088 dnl   defines CC with the compiler to use
1089 dnl   defines GCC with yes if using gcc
1090 dnl   defines GCC empty if not using gcc
1091 dnl   defines CFLAGS
1092 dnl
1093 dnl this magic incantation is needed to prevent AC_PROG_CC from setting the
1094 dnl default CFLAGS (something like "-g -O2") -- we don't need this as we add
1095 dnl (if not already present in C*FLAGS) the -g and -O flags ourselves below
1096 CFLAGS=${CFLAGS:=}
1097 AC_BAKEFILE_PROG_CC
1098
1099 dnl is -traditional needed for correct compilations
1100 dnl   adds -traditional for gcc if needed
1101 AC_PROG_GCC_TRADITIONAL
1102
1103 dnl C++-compiler checks
1104 dnl   defines CXX with the compiler to use
1105 dnl   defines GXX with yes if using gxx
1106 dnl   defines GXX empty if not using gxx
1107 dnl   defines CXXFLAGS
1108 dnl
1109 dnl see CFLAGS line above
1110 CXXFLAGS=${CXXFLAGS:=}
1111 AC_BAKEFILE_PROG_CXX
1112
1113 dnl configure always sets CXX to something as it falls back to g++ even if no
1114 dnl C++ compiler was found, but we prefer to abort now with a clear error
1115 dnl message rather than give errors about all tests failures below
1116 if test "$CXX" = "g++" -a "$GXX" != "yes"; then
1117     AC_MSG_ERROR([C++ compiler is needed to build wxWidgets])
1118 fi
1119
1120 dnl ar command
1121 dnl   defines AR with the appropriate command
1122 dnl
1123 dnl For Sun CC AC_BAKEFILE below sets AR to the compiler itself.
1124 if test "x$SUNCXX" != xyes; then
1125     AC_CHECK_TOOL(AR, ar)
1126     if test "x$AR" = "x" ; then
1127         AC_MSG_ERROR([ar is needed to build wxWidgets])
1128     fi
1129 fi
1130
1131 dnl ---------------------------------------------------------------------------
1132 dnl Mac-specific SDK/architectures checks
1133 dnl ---------------------------------------------------------------------------
1134
1135 if test "$wxUSE_MAC" = 1; then
1136
1137 retest_macosx_linking=no
1138
1139 OSX_ARCH_OPTS=""
1140
1141 dnl Deal with architecture selection. By default, we compile for the current
1142 dnl architecture, whatever it is. With --enable-universal_binary the list of
1143 dnl architectures can be explicitly specified. If it isn't, we compile for all
1144 dnl supported ones.
1145 if test "x$wxUSE_UNIVERSAL_BINARY" != xno ; then
1146     if test "x$wxUSE_MAC_ARCH" != xno; then
1147         AC_MSG_WARN([--enable-macosx_arch is ignored when --enable-universal_binary is used.])
1148     fi
1149
1150     if test "x$wxUSE_UNIVERSAL_BINARY" != xyes; then
1151         OSX_ARCH_OPTS=$wxUSE_UNIVERSAL_BINARY
1152     else dnl Use all architectures supported
1153         OSX_ARCH_OPTS="ppc,i386"
1154         if test "$wxUSE_OSX_COCOA" = 1; then
1155             OSX_ARCH_OPTS="$OSX_ARCH_OPTS,x86_64"
1156         fi
1157     fi
1158
1159     AC_MSG_CHECKING([for architectures to use in universal binary])
1160     AC_MSG_RESULT([$OSX_ARCH_OPTS])
1161
1162     dnl NOTE: Only the compiler driver needs arch flags.  The link editor
1163     dnl is incapable of using them but the compiler driver (which we use
1164     dnl as LD when building dynamic libraries) uses them to invoke the
1165     dnl real ld multiple times.  If we moved to libtool -dynamic we would
1166     dnl need no arch flags because libtool automatically invokes ld for
1167     dnl every architecture found in the fat input files.
1168     dnl
1169     dnl For static library builds, AR/RANLIB automatically create proper
1170     dnl fat archives although AR is unable to update them once RANLIB has
1171     dnl made them into proper fat archives.  Fortunately, our link process
1172     dnl simply removes the .a file before using ar to create a new one.
1173     dnl If we did move to libtool -static we still wouldn't need arch flags
1174     dnl because libtool automatically figures it out based on input.
1175     retest_macosx_linking=yes
1176 else
1177     if test "x$wxUSE_MAC_ARCH" != xno; then
1178         OSX_ARCH_OPTS=$wxUSE_MAC_ARCH
1179     fi
1180 fi
1181
1182 if test "x$OSX_ARCH_OPTS" != "x"; then
1183     dnl Check if there is more than one architecture
1184     if echo $OSX_ARCH_OPTS | grep -q ","; then
1185         AC_MSG_WARN([Disabling dependency tracking due to universal binary build.])
1186         disable_macosx_deps=yes
1187
1188         dnl HACK: PCH could be made to work by precompiling for each architecture into separate directories
1189         dnl and including all architecture directories with each compiler invocation.
1190         dnl That would require a major rework of Bakefile and at the same time it would be nice to have
1191         dnl Objective-C++ precompiled headers.
1192         AC_MSG_WARN([Disabling precompiled headers due to universal binary build.])
1193         bk_use_pch=no
1194     fi
1195
1196     OSX_ARCH_OPTS=`echo $OSX_ARCH_OPTS | sed -e 's/^/-arch /' -e 's/,/ -arch /g'`
1197
1198     CXXFLAGS="$OSX_ARCH_OPTS $CXXFLAGS"
1199     CFLAGS="$OSX_ARCH_OPTS $CFLAGS"
1200     OBJCXXFLAGS="$OSX_ARCH_OPTS $OBJCXXFLAGS"
1201     OBJCFLAGS="$OSX_ARCH_OPTS $OBJCFLAGS"
1202     LDFLAGS="$OSX_ARCH_OPTS $LDFLAGS"
1203 fi
1204
1205 dnl Set up the Mac OS X SDK.  We do this early so configure tests will occur
1206 dnl with the SDK in place.
1207 dnl NOTE: We clobber wxUSE_MACOSX_SDK with the SDK path
1208 if test "x$wxUSE_MACOSX_SDK" = "xno"; then
1209     wxUSE_MACOSX_SDK=
1210 elif test "x$wxUSE_MACOSX_SDK" = "xyes"; then
1211     # TODO: Search for most recent SDK and use it.
1212     wxUSE_MACOSX_SDK="/Developer/SDKs/MacOSX10.4u.sdk"
1213 fi
1214
1215
1216 if test "x$wxUSE_MACOSX_SDK" != "x"; then
1217     AC_MSG_CHECKING([for SDK directory $wxUSE_MACOSX_SDK])
1218     if ! test -d "$wxUSE_MACOSX_SDK"; then
1219         AC_MSG_FAILURE([not found])
1220     else
1221         AC_MSG_RESULT([exists])
1222     fi
1223     dnl CC and CXX will have these flags added below, after the compiler has been chosen
1224     MACOSX_SDK_OPTS="-isysroot $wxUSE_MACOSX_SDK"
1225     retest_macosx_linking=yes
1226     dnl NOTE: When libtool is used in lieu of AR/RANLIB (i.e. in static mode)
1227     dnl the syslibroot makes no difference.  We aren't using libtool now but
1228     dnl if we ever did, be aware that you don't need to worry about it.
1229 fi
1230
1231 dnl Set up the deployment target
1232 dnl No   : Don't specify a min version even if using an SDK
1233 dnl Yes  : Use the version from the SDK if used, otherwise same as no
1234 dnl Param: Use the specified version
1235 if test "x$wxUSE_MACOSX_VERSION_MIN" = "xno"; then
1236     wxUSE_MACOSX_VERSION_MIN=
1237 elif test "x$wxUSE_MACOSX_VERSION_MIN" = "xyes"; then
1238     if test "x$wxUSE_MACOSX_SDK" != "x"; then
1239         AC_MSG_CHECKING([SDK deployment version])
1240 dnl We need to quote the next line where we don't need macros and do need [] in the regex
1241 [
1242         MACOSX_SDK_PLIST_VERSION_MIN=`defaults read "$wxUSE_MACOSX_SDK/SDKSettings" buildSettings | grep '^ *"\{0,1\}MACOSX_DEPLOYMENT_TARGET"\{0,1\} *= *"\{0,1\}[^"]*"\{0,1\}; *$' | sed 's/^ *"\{0,1\}MACOSX_DEPLOYMENT_TARGET"\{0,1\} *= *"\{0,1\}\([^"]*\)"\{0,1\} *; *$/\1/'`
1243 ]
1244         # If that failed, try again with the new key
1245         if test "x$MACOSX_SDK_PLIST_VERSION_MIN" == "x"; then
1246 [
1247             MACOSX_SDK_PLIST_VERSION_MIN=`defaults read "$wxUSE_MACOSX_SDK/SDKSettings" DefaultProperties | grep '^ *"\{0,1\}MACOSX_DEPLOYMENT_TARGET"\{0,1\} *= *"\{0,1\}[^"]*"\{0,1\}; *$' | sed 's/^ *"\{0,1\}MACOSX_DEPLOYMENT_TARGET"\{0,1\} *= *"\{0,1\}\([^"]*\)"\{0,1\} *; *$/\1/'`
1248 ]
1249         fi
1250
1251         if test "x$MACOSX_SDK_PLIST_VERSION_MIN" != "x"; then
1252             wxUSE_MACOSX_VERSION_MIN=$MACOSX_SDK_PLIST_VERSION_MIN
1253             AC_MSG_RESULT([$wxUSE_MACOSX_VERSION_MIN])
1254         else
1255             AC_MSG_WARN([Could not determine deployment target from SDKSettings.plist])
1256             wxUSE_MACOSX_VERSION_MIN=
1257         fi
1258     else
1259         wxUSE_MACOSX_VERSION_MIN=
1260     fi
1261 elif test "x$wxUSE_MACOSX_VERSION_MIN" = "x"; then
1262     wxUSE_MACOSX_VERSION_MIN=10.5
1263 fi
1264
1265 if test "x$MACOSX_SDK_OPTS" != "x"; then 
1266     eval "CC=\"$CC $MACOSX_SDK_OPTS\""
1267     eval "CXX=\"$CXX $MACOSX_SDK_OPTS\""
1268     eval "LD=\"$LD $MACOSX_SDK_OPTS\""
1269     retest_macosx_linking=yes
1270 fi
1271
1272 if test "x$wxUSE_MACOSX_VERSION_MIN" != "x"; then
1273     if test "$wxUSE_OSX_IPHONE" = 1; then
1274         MACOSX_VERSION_MIN_OPTS="-miphoneos-version-min=$wxUSE_MACOSX_VERSION_MIN"
1275     else
1276         MACOSX_VERSION_MIN_OPTS="-mmacosx-version-min=$wxUSE_MACOSX_VERSION_MIN"
1277     fi
1278     eval "CC=\"$CC $MACOSX_VERSION_MIN_OPTS\""
1279     eval "CXX=\"$CXX $MACOSX_VERSION_MIN_OPTS\""
1280     eval "LD=\"$LD $MACOSX_VERSION_MIN_OPTS\""
1281     retest_macosx_linking=yes
1282 fi
1283
1284 dnl If either an SDK or a version option was added, make sure that we can
1285 dnl still compile and link both C and C++.  If we didn't do this, then most
1286 dnl of the remaining tests would fail.
1287 if test "x$retest_macosx_linking" = "xyes"; then
1288     AC_LANG_PUSH(C)
1289     AC_MSG_CHECKING([if C compiler ($CC) works with SDK/version options])
1290     AC_TRY_LINK([],[],[AC_MSG_RESULT([yes])],[AC_MSG_FAILURE([no.  Try a different SDK]); exit 1])
1291     AC_LANG_POP()
1292
1293     AC_LANG_PUSH(C++)
1294     AC_MSG_CHECKING([if C++ compiler ($CXX) works with SDK/version options])
1295     AC_TRY_LINK([],[],[AC_MSG_RESULT([yes])],[AC_MSG_FAILURE([no.  Try a different SDK]); exit 1])
1296     AC_LANG_POP()
1297 fi
1298
1299 fi dnl wxUSE_MAC
1300
1301 case "${host}" in
1302
1303     dnl The other BSD's should probably go in here too, since this is
1304     dnl to workaround a strange static lib BSDism.
1305     dnl Mac OS X install seems to ignore -p option...
1306     *-*-darwin* )
1307         INSTALL_PROGRAM="cp -fp"
1308         INSTALL_DATA="cp -fp"
1309         ;;
1310     *)
1311         ;;
1312 esac
1313
1314 dnl ------------------------------------------------------------------------
1315 dnl Platform specific tests
1316 dnl ------------------------------------------------------------------------
1317
1318 if test "$USE_LINUX" = 1 -o "$USE_GNU" = 1; then
1319     dnl While g++ predefines _GNU_SOURCE by default, gcc does not, so do it
1320     dnl explicitly to ensure that the tests done below using C compiler
1321     dnl succeed, otherwise things like pthread_mutexattr_settype() (and many
1322     dnl others) wouldn't be detected.
1323     AC_DEFINE(_GNU_SOURCE)
1324
1325     dnl For non-g++ compilers (including gcc, as mentioned above) we need to
1326     dnl add this flag explicitly when building our own code later too.
1327     GNU_SOURCE_FLAG="-D_GNU_SOURCE"
1328     CFLAGS="$GNU_SOURCE_FLAG $CFLAGS"
1329 fi
1330
1331 if test "x$USE_AIX" = "x1"; then
1332     dnl xlC needs -qunique under AIX so that one source file can be
1333     dnl compiled to multiple object files and safely linked together.
1334     if test "x$XLCXX" = "xyes"; then
1335         CXXFLAGS="-qunique $CXXFLAGS"
1336     fi
1337
1338     dnl AIX sys/timer.h header #defines func_data as t_union.data breaking the
1339     dnl compilation of GTK+ headers that use func_data as parameter name in
1340     dnl several places. We could work around this by inserting "#undef
1341     dnl func_data" in the code but IBM provides a possibility to disable this
1342     dnl #define by pre-defining the symbol below and this seems to be simpler.
1343     dnl And if we have any problems because of it we can always remove it and
1344     dnl use the #undef approach.
1345     CPPFLAGS="-D_LINUX_SOURCE_COMPAT $CPPFLAGS"
1346 fi
1347
1348 dnl This case is for PowerPC OS X vs. everything else
1349 case "${host}" in
1350   powerpc-*-darwin* )
1351     AC_MSG_CHECKING([if __POWERPC__ is already defined])
1352     AC_TRY_COMPILE([],[#ifndef __POWERPC__
1353         choke me for lack of PowerPC
1354 #endif
1355 ],
1356         [AC_MSG_RESULT([yes])],
1357         [AC_MSG_RESULT([no])
1358         AC_DEFINE(__POWERPC__)
1359     ])
1360   ;;
1361 esac
1362
1363 dnl This case is for OS X vs. everything else
1364 case "${host}" in
1365   *-*-darwin* )
1366     AC_MSG_CHECKING([if CoreFoundation/CFBase.h is usable])
1367     AC_TRY_COMPILE([#include <CoreFoundation/CFBase.h>
1368 ],[],
1369         [AC_MSG_RESULT([yes])],
1370         [AC_MSG_RESULT([no])
1371         AC_MSG_CHECKING([if __CF_USE_FRAMEWORK_INCLUDES__ is required])
1372         AC_TRY_COMPILE([#define __CF_USE_FRAMEWORK_INCLUDES__
1373 #include <CoreFoundation/CFBase.h>
1374         ],[],
1375         [AC_MSG_RESULT([yes])
1376         dnl We must use -D so source files that don't include wx/setup.h
1377         dnl but do include CFBase will work.
1378         CPPFLAGS="-D__CF_USE_FRAMEWORK_INCLUDES__ $CPPFLAGS"],
1379         [AC_MSG_FAILURE([no.  CoreFoundation not available.])]
1380         )
1381         ]
1382     )
1383   ;;
1384 esac
1385
1386 dnl Determine whether we want to use Cygwin as Windows or POSIX platform: the
1387 dnl latter makes more sense for wxGTK/Motif/X11 ports
1388 wants_win32=0
1389 doesnt_want_win32=0
1390 case "${host}" in
1391   *-*-cygwin*)
1392       if test "$wxUSE_MSW" = 1 ; then
1393         wants_win32=1
1394       else
1395         dnl when we use cygwin compiler with -mno-cygwin option it uses mingw32
1396         dnl headers and libraries, so it's Windows-like in this case
1397         AC_CACHE_CHECK([if -mno-cygwin is in effect], wx_cv_nocygwin,
1398             [
1399                 AC_TRY_COMPILE(
1400                     [],
1401                     [
1402                         #ifdef __MINGW32__
1403                             choke me
1404                         #endif
1405                     ],
1406                     wx_cv_nocygwin=no,
1407                     wx_cv_nocygwin=yes
1408                 )
1409             ]
1410         )
1411
1412         if test "$wx_cv_nocygwin" = "yes"; then
1413             wants_win32=1
1414         else
1415             doesnt_want_win32=1
1416         fi
1417       fi
1418       if test "$wants_win32" = 1 ; then
1419         BAKEFILE_FORCE_PLATFORM=win32
1420       fi
1421   ;;
1422   *-*-mingw*)
1423       wants_win32=1
1424   ;;
1425 esac
1426
1427 if test "$wxUSE_WINE" = "yes"; then
1428     wants_win32=1
1429     LDFLAGS_GUI="-mwindows"
1430 fi
1431
1432 dnl NB: The two tests below are *NOT* mutually exclusive! They should only
1433 dnl     take effect on Cygwin/Mingw and not other platforms.
1434 if test "$wants_win32" = 1 ; then
1435     USE_UNIX=0
1436     USE_WIN32=1
1437     AC_DEFINE(__WIN32__)
1438     AC_DEFINE(__WINDOWS__)
1439     AC_DEFINE(__GNUWIN32__)
1440     AC_DEFINE(STRICT)
1441 fi
1442 if test "$doesnt_want_win32" = 1 ; then
1443     USE_UNIX=1
1444     USE_WIN32=0
1445 fi
1446 dnl (end of Windows-only piece)
1447
1448 if test "$USE_UNIX" = 1 ; then
1449     wxUSE_UNIX=yes
1450     AC_DEFINE(__UNIX__)
1451 fi
1452
1453 dnl This case is for OS/2 vs. everything else
1454 case "${host}" in
1455   *-pc-os2_emx | *-pc-os2-emx )
1456       dnl ---------------------------------------------------------------------
1457       dnl When we are using gcc on OS/2, we want to be either using resources
1458       dnl (PM) or a more complete POSIX emulation for Motif/GTK+/X11.
1459       dnl Moreover we need to link explicitly against either stdcpp.a or
1460       dnl stdcxx.a (depending on compiler version), since we are using "gcc",
1461       dnl not "g++/c++".
1462       dnl ---------------------------------------------------------------------
1463       dnl (OS/2-only piece)
1464       if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then
1465           dnl More complete Unix emulation for unix-like ports
1466           dnl by linking in POSIX/2's cExt (if available).
1467           AC_CHECK_LIB(cExt, drand48, LIBS="$LIBS -lcExt")
1468       fi
1469       dnl Check for the gcc version (and thereby for the C runtime library).
1470       dnl wx_cv_gccversion = EMX2 -> Standard EMX environment
1471       dnl wx_cv_gccversion = EMX3 -> EMX with gcc-3.0.3 or gcc-3.2.1
1472       dnl wx_cv_gccversion = Innotek5 -> gcc-3.2.2 with Innotek libc5
1473       dnl wx_cv_gccversion = Innotek6 -> gcc-3.3.5 with Innotek libc6.
1474       AC_CACHE_CHECK([for gcc/libc version], wx_cv_gccversion,[
1475           AC_TRY_RUN(
1476               dnl Check the gcc version macro.
1477               [
1478                   #include <stdio.h>
1479
1480                   int main()
1481                   {
1482                       FILE *f=fopen("conftestval", "w");
1483                       if (!f) exit(1);
1484                       fprintf(f,
1485                   #if (__GNUC__ < 3)
1486                               "EMX2"
1487                   #elif (__GNUC__==3) && ((__GNUC_MINOR__ < 2) || ((__GNUC_MINOR__==2) && (__GNUC_PATCHLEVEL__<2)))
1488                               "EMX3"
1489                   #elif (__GNUC__==3) && (__GNUC_MINOR__==2) && (__GNUC_PATCHLEVEL__==2)
1490                               "Innotek5"
1491                   #else
1492                               "Innotek6"
1493                   #endif
1494                       );
1495                       exit(0);
1496                   }
1497               ],
1498               wx_cv_gccversion=`cat conftestval`,
1499               wx_cv_gccversion="EMX2",
1500               dnl Compilation error: Assuming standard EMX environment
1501               wx_cv_gccversion="EMX2"
1502           )
1503       ])
1504       if test "$wx_cv_gccversion" = "EMX2"; then
1505           LIBS="$LIBS -lstdcpp"
1506           LDFLAGS="$LDFLAGS -Zsysv-signals"
1507       else
1508           if test "$wx_cv_gccversion" = "EMX3"; then
1509               LIBS="$LIBS -lstdcxx -lgcc"
1510               LDFLAGS="$LDFLAGS -Zsysv-signals"
1511           else
1512               LIBS="$LIBS -lstdc++"
1513           fi
1514       fi
1515       if test "$wxUSE_SHARED" = "yes" -a "$wxUSE_OMF" = "no"; then
1516         AC_MSG_WARN([Building DLLs requires OMF mode, enabled])
1517         wxUSE_OMF=yes
1518         enable_omf=yes
1519       fi
1520       dnl (end of OS/2-only piece)
1521   ;;
1522   *)
1523       dnl ---------------------------------------------------------------------
1524       dnl look for strcasecmp() in string.h and then strings.h if it's not
1525       dnl there. Don't do this on OS/2, where "stricmp" is the function to be
1526       dnl used.
1527       dnl ---------------------------------------------------------------------
1528       dnl (non-OS/2-only piece)
1529
1530       AC_CACHE_CHECK([for strcasecmp() in string.h], ac_cv_string_strcasecmp, [
1531           AC_TRY_LINK([
1532               #include <string.h>
1533               ],
1534               [
1535                   strcasecmp("foo", "bar");
1536               ],
1537               ac_cv_string_strcasecmp=yes,
1538               ac_cv_string_strcasecmp=no
1539           )
1540       ])
1541
1542       if test x"$ac_cv_string_strcasecmp" = "xyes"; then
1543           AC_DEFINE(HAVE_STRCASECMP_IN_STRING_H)
1544       else
1545           AC_CACHE_CHECK([for strcasecmp() in strings.h], ac_cv_strings_strcasecmp, [
1546               AC_TRY_LINK([
1547                   #include <strings.h>
1548                   ],
1549                   [
1550                       strcasecmp("foo", "bar");
1551                   ],
1552                   ac_cv_strings_strcasecmp=yes,
1553                   ac_cv_strings_strcasecmp=no
1554               )
1555           ])
1556
1557           if test x"$ac_cv_strings_strcasecmp" = "xyes"; then
1558               AC_DEFINE(HAVE_STRCASECMP_IN_STRINGS_H)
1559           else
1560               AC_MSG_ERROR([No case-insensitive string comparison function found.])
1561           fi
1562       fi
1563
1564       dnl (end of non-OS/2-only piece)
1565   ;;
1566 esac
1567
1568 dnl ------------------------------------------------------------------------
1569 dnl Check for headers
1570 dnl ------------------------------------------------------------------------
1571
1572 dnl Note: non-empty last parameter makes check compile-only,
1573 dnl   skipping worthless preprocessing check
1574 AC_CHECK_HEADERS(langinfo.h wchar.h,,, [AC_INCLUDES_DEFAULT])
1575
1576 dnl maybe wchar_t is in wcstr.h if we don't have wchar.h?
1577 if test "$ac_cv_header_wchar_h" != "yes"; then
1578     AC_CHECK_HEADERS([wcstr.h],,, [AC_INCLUDES_DEFAULT()])
1579 fi
1580
1581 case "${host}" in
1582   *-pc-os2_emx | *-pc-os2-emx )
1583       dnl Explicitly link -lintl if langinfo.h is available
1584       dnl and intl not yet included in libc
1585       if test $ac_cv_header_langinfo_h = "yes" \
1586                 -a \(   "$wx_cv_gccversion" = "EMX2" \
1587                      -o "$wx_cv_gccversion" = "EMX3" \
1588                      -o "$wx_cv_gccversion" = "Innotek5" \); then
1589           LIBS="$LIBS -lintl"
1590       fi
1591   ;;
1592 esac
1593
1594 if test "$USE_UNIX" = 1 ; then
1595     dnl POSIX needs this for select(), but old systems don't have it
1596     AC_CHECK_HEADERS([sys/select.h],,, [AC_INCLUDES_DEFAULT()])
1597
1598     dnl Header defining C++ ABI is currently only available with g++ but test
1599     dnl for it unconditionally in case it becomes supported by other compilers.
1600     AC_LANG_PUSH(C++)
1601     AC_CHECK_HEADERS([cxxabi.h],,, [AC_INCLUDES_DEFAULT()])
1602     AC_LANG_POP()
1603 fi
1604
1605 dnl ---------------------------------------------------------------------------
1606 dnl Checks for compiler characteristics
1607 dnl ---------------------------------------------------------------------------
1608
1609 dnl defines const to be empty if c-compiler does not support const fully
1610 AC_C_CONST
1611 dnl defines inline to a sensible value for the c-compiler
1612 AC_C_INLINE
1613
1614 dnl check the sizes of integral types (give some reasonable default values for
1615 dnl cross-compiling)
1616 dnl   defines the size of certain types of variables in SIZEOF_<TYPE>
1617 AC_CHECK_SIZEOF(short, 2)
1618 AC_CHECK_SIZEOF(void *, 4)
1619 AC_CHECK_SIZEOF(int, 4)
1620 AC_CHECK_SIZEOF(long, 4)
1621 AC_CHECK_SIZEOF(size_t, 4)
1622
1623 case "${host}" in
1624     arm-*-linux* )
1625         AC_CHECK_SIZEOF(long long, 8)
1626     ;;
1627     *-hp-hpux* )
1628         AC_CHECK_SIZEOF(long long, 0)
1629         if test "$ac_cv_sizeof_long_long" != 0; then
1630             dnl HPUX 10.20 headers need this define in order to use long long definitions
1631             CPPFLAGS="-D_INCLUDE_LONGLONG $CPPFLAGS"
1632         fi
1633     ;;
1634     * )
1635         AC_CHECK_SIZEOF(long long, 0)
1636 esac
1637
1638 dnl SGI/Irix's stdio.h does not include wchar_t. Mac OS X does not provide
1639 dnl wchar.h and wchar_t is defined by stdlib.h (GD)
1640 AC_CHECK_SIZEOF(wchar_t, 0,
1641     [
1642         /* DJGPP's wchar_t is now a keyword in C++ (still not C though) */
1643         #if defined(__DJGPP__) && !( (__GNUC_MINOR__ >= 8 && __GNUC__ == 2 ) || __GNUC__ >= 3 )
1644         #  error "fake wchar_t"
1645         #endif
1646         #ifdef HAVE_WCHAR_H
1647         #  ifdef __CYGWIN__
1648         #    include <stddef.h>
1649         #  endif
1650         #  include <wchar.h>
1651         #endif
1652         #ifdef HAVE_STDLIB_H
1653         #  include <stdlib.h>
1654         #endif
1655         #include <stdio.h>
1656     ]
1657 )
1658 if test "$ac_cv_sizeof_wchar_t" = 0; then
1659     AC_MSG_ERROR([wxWidgets requires wchar_t support.])
1660 fi
1661 AC_DEFINE(wxUSE_WCHAR_T)
1662
1663 dnl checks needed to define wxVaCopy
1664 AC_CACHE_CHECK([for va_copy],
1665     wx_cv_func_va_copy,
1666     [
1667         AC_LANG_PUSH(C++)
1668         AC_LINK_IFELSE([
1669             AC_LANG_SOURCE([
1670                 #include <stdarg.h>
1671                 void foo(char *f, ...)
1672                 {
1673                     va_list ap1, ap2;
1674                     va_start(ap1, f);
1675                     va_copy(ap2, ap1);
1676                     va_end(ap2);
1677                     va_end(ap1);
1678                 }
1679                 int main()
1680                 {
1681                     foo("hi", 17);
1682                     return 0;
1683                 }])
1684             ],
1685             wx_cv_func_va_copy=yes,
1686             wx_cv_func_va_copy=no
1687         )
1688         AC_LANG_POP()
1689     ]
1690 )
1691
1692 if test $wx_cv_func_va_copy = "yes"; then
1693     AC_DEFINE(HAVE_VA_COPY)
1694 else
1695     dnl try to understand how can we copy va_lists
1696     AC_CACHE_CHECK([if va_list can be copied by value],
1697         wx_cv_type_va_list_lvalue,
1698         [
1699             AC_RUN_IFELSE([
1700                 AC_LANG_SOURCE([
1701                     #include <stdarg.h>
1702                     int foo(char *f, ...)
1703                     {
1704                         va_list ap1, ap2;
1705                         va_start(ap1, f);
1706                         ap2 = ap1;
1707                         if ( va_arg(ap1, int) != 17 || va_arg(ap2, int) != 17 )
1708                             return 1;
1709                         va_end(ap2);
1710                         va_end(ap1);
1711                         return 0;
1712                     }
1713                     int main()
1714                     {
1715                         return foo("hi", 17);
1716                     }])
1717                 ],
1718                 wx_cv_type_va_list_lvalue=yes,
1719                 wx_cv_type_va_list_lvalue=no,
1720                 dnl assume most common case for cross-compiling...
1721                 wx_cv_type_va_list_lvalue=yes
1722             )
1723         ]
1724     )
1725
1726     if test $wx_cv_type_va_list_lvalue != "yes"; then
1727         dnl we suppose that the only thing which can't be copied like this
1728         dnl are arrays... only experience will show whether this is really true
1729         AC_DEFINE(VA_LIST_IS_ARRAY)
1730     fi
1731 fi
1732
1733 dnl don't check for vararg macros if they're explicitly disabled: this is
1734 dnl useful if the user code using the library wants to limit itself to standard
1735 dnl C++ only (e.g. is compiled with g++ -std=c++98)
1736 if test "$wxUSE_VARARG_MACROS" = "yes"; then
1737
1738 dnl Check if variadic macros (C99 feature) are supported:
1739 AC_CACHE_CHECK(
1740     [whether the compiler supports variadic macros],
1741     [wx_cv_have_variadic_macros],
1742     [
1743         dnl C compiler might support variadic macros when C++ one doesn't
1744         dnl (happens with gcc/g++ 2.95.4), so must use C++ one explicitly
1745         AC_LANG_PUSH(C++)
1746         AC_COMPILE_IFELSE([
1747             AC_LANG_PROGRAM(
1748                 [
1749                     #include <stdio.h>
1750                     #define test(fmt, ...) printf(fmt, __VA_ARGS__)
1751                 ],
1752                 [
1753                     test("%s %d %p", "test", 1, 0);
1754                 ]
1755             )],
1756             [wx_cv_have_variadic_macros=yes],
1757             [wx_cv_have_variadic_macros=no]
1758             )
1759         AC_LANG_POP()
1760     ]
1761 )
1762
1763 if test $wx_cv_have_variadic_macros = "yes"; then
1764     AC_DEFINE(HAVE_VARIADIC_MACROS)
1765 fi
1766
1767 else
1768     AC_DEFINE(wxNO_VARIADIC_MACROS)
1769 fi dnl wxUSE_VARARG_MACROS == yes
1770
1771
1772 dnl check for large file support
1773 LARGEFILE_CPPFLAGS=
1774 AC_SYS_LARGEFILE
1775 if test "$ac_cv_sys_file_offset_bits" = "64"; then
1776     LARGEFILE_CPPFLAGS="-D_FILE_OFFSET_BITS=64"
1777 elif test "$ac_cv_sys_large_files" = 1; then
1778     LARGEFILE_CPPFLAGS="-D_LARGE_FILES"
1779 fi
1780
1781 dnl we need to define _FILE_OFFSET_BITS or _LARGE_FILES on the compiler command
1782 dnl line because otherwise the system headers risk being included before
1783 dnl wx/defs.h which defines these constants leading to inconsistent
1784 dnl sizeof(off_t) in different source files of the same program and linking
1785 dnl problems
1786 if test -n "$LARGEFILE_CPPFLAGS"; then
1787     WXCONFIG_CPPFLAGS="$WXCONFIG_CPPFLAGS $LARGEFILE_CPPFLAGS"
1788
1789     dnl We get "Large Files (ILP32) not supported in strict ANSI mode."
1790     dnl #error from HP standard headers unless __STDC_EXT__ is defined.
1791     dnl The compiler should define it automatically, but some old g++
1792     dnl versions don't define it, so test and add it if necessary. AFAIK
1793     dnl the problem only affects the C++ compiler so it is added to
1794     dnl CXXFLAGS only.
1795     if test "$USE_HPUX" = 1 -a "$GXX" = "yes"; then
1796         AC_CACHE_CHECK(
1797             [if -D__STDC_EXT__ is required],
1798             wx_cv_STDC_EXT_required,
1799             [
1800                 AC_LANG_PUSH(C++)
1801                 AC_TRY_COMPILE(
1802                     [],
1803                     [
1804                         #ifndef __STDC_EXT__
1805                             choke me
1806                         #endif
1807                     ],
1808                     wx_cv_STDC_EXT_required=no,
1809                     wx_cv_STDC_EXT_required=yes
1810                 )
1811                 AC_LANG_POP()
1812             ]
1813         )
1814         if test "x$wx_cv_STDC_EXT_required" = "xyes"; then
1815             WXCONFIG_CXXFLAGS="$WXCONFIG_CXXFLAGS -D__STDC_EXT__"
1816         fi
1817     fi
1818 fi
1819
1820 dnl AC_FUNC_FSEEKO sets HAVE_FSEEKO and $ac_cv_sys_largefile_source
1821 dnl
1822 dnl it may be affected by large file flags (this happens under HP-UX 11 for
1823 dnl example) so set them before using it and also use C++ to ensure that we get
1824 dnl errors, not warnings, about the missing functions
1825 AC_LANG_PUSH(C++)
1826 old_CPPFLAGS="$CPPFLAGS"
1827 CPPFLAGS="$CPPFLAGS $LARGEFILE_CPPFLAGS"
1828 AC_FUNC_FSEEKO
1829 CPPFLAGS="$old_CPPFLAGS"
1830 AC_LANG_POP()
1831 if test "$ac_cv_sys_largefile_source" != no; then
1832     WXCONFIG_CPPFLAGS="$WXCONFIG_CPPFLAGS -D_LARGEFILE_SOURCE=$ac_cv_sys_largefile_source"
1833 fi
1834
1835 dnl check for bytesex stuff (don't use AC_C_BIGENDIAN to allow cross-compiling)
1836 WX_C_BIGENDIAN
1837
1838 dnl check for iostream (as opposed to iostream.h) standard header
1839 WX_CPP_NEW_HEADERS(, AC_DEFINE(wxUSE_IOSTREAMH))
1840
1841 dnl check whether C++ compiler supports explicit keyword
1842 WX_CPP_EXPLICIT
1843
1844 dnl With Sun CC, temporaries have block scope by default. This flag is needed
1845 dnl to get the expression scope behaviour that conforms to the standard.
1846 if test "x$SUNCXX" = xyes; then
1847     CXXFLAGS="-features=tmplife $GNU_SOURCE_FLAG $CXXFLAGS"
1848 fi
1849
1850 dnl Sun X11 headers are (still, in 2005!) non-ANSI and the best they could do
1851 dnl was to hack their C++ compiler to accept them silently -- but C compiler
1852 dnl still spits out dozens of warnings for each X include file, so suppress
1853 dnl them
1854 if test "x$SUNCC" = xyes; then
1855     CFLAGS="-erroff=E_NO_EXPLICIT_TYPE_GIVEN $CFLAGS"
1856 fi
1857
1858 dnl SGI mipsPro compiler version 7.4.4 and later (and maybe some earlier
1859 dnl versions too but it's known that 7.4.2 doesn't give this warning but does
1860 dnl instead warn about "unknown warning number 3970" which explains that we
1861 dnl don't want to do this for it) gives this warning for "conversion from
1862 dnl pointer to same-sized integral type" even when there is an explicit cast
1863 dnl and as there is no way to turn it off and there are hundreds of these
1864 dnl warnings in wx sources, just turn it off for now
1865 dnl
1866 dnl a better long term solution would be to use #pragma set/reset woff in
1867 dnl wxPtrToUInt() and use it instead of casts elsewhere
1868 if test "x$SGICC" = "xyes"; then
1869     AC_CACHE_CHECK([if cc version is 7.4.4 or greater],
1870         wx_cv_prog_sgicc744,
1871         [
1872             AC_TRY_COMPILE([],
1873                 [
1874                     #if _SGI_COMPILER_VERSION >= 744
1875                     chock me: mipsPro is 7.4.4 or later
1876                     #endif
1877                 ],
1878                 wx_cv_prog_sgicc744=no,
1879                 wx_cv_prog_sgicc744=yes
1880             )
1881         ]
1882     )
1883
1884     if test "x$wx_cv_prog_sgicc744" = "xyes"; then
1885         CFLAGS="-woff 3970 $CFLAGS"
1886     fi
1887 fi
1888 if test "x$SGICXX" = "xyes"; then
1889     AC_CACHE_CHECK([if CC version is 7.4.4 or greater],
1890         wx_cv_prog_sgicxx744,
1891         [
1892             AC_LANG_PUSH(C++)
1893             AC_TRY_COMPILE([],
1894                 [
1895                     #if _SGI_COMPILER_VERSION >= 744
1896                     chock me: mipsPro is 7.4.4 or later
1897                     #endif
1898                 ],
1899                 wx_cv_prog_sgicxx744=no,
1900                 wx_cv_prog_sgicxx744=yes
1901             )
1902             AC_LANG_POP()
1903         ]
1904     )
1905
1906     if test "x$wx_cv_prog_sgicxx744" = "xyes"; then
1907         CXXFLAGS="-woff 3970 $CXXFLAGS"
1908     fi
1909 fi
1910
1911 dnl HP-UX c89/aCC compiler warnings
1912 if test "x$HPCC" = "xyes"; then
1913     dnl 2011: "unrecognized preprocessor directive": nice warning but it's given
1914     dnl       even for directives inside #if which is not true (i.e. which are
1915     dnl       used for other compilers/OS) and so we have no way to get rid of it
1916     dnl 2450: "long long is non standard" -- yes, we know
1917     CFLAGS="+W 2011,2450 $CFLAGS"
1918 fi
1919 if test "x$HPCXX" = "xyes"; then
1920     dnl 2340: "value copied to temporary, reference to temporary used": very
1921     dnl       painful as triggered by any occurrence of user-defined conversion
1922     dnl 4232: "conversion from 'Foo *' to a more strictly aligned type 'Bar *'
1923     dnl       may cause misaligned access": this might indicate a real problem
1924     dnl       but any use of GTK+ cast macros results in it so it's unusable
1925     dnl       for wxGTK code
1926     CXXFLAGS="+W 2340,4232 $CXXFLAGS"
1927 fi
1928
1929 dnl DEC/Compaq/HP cxx warnings
1930 if test "x$COMPAQCXX" = "xyes"; then
1931     dnl -w0 enables all warnings, then we disable some of them:
1932     dnl basclsnondto: base class dtor non virtual (sometimes we do want this)
1933     dnl unrimpret:  "end of routine block may be unreachable" is given for
1934     dnl             every "if ( ) return ...; else return ...;"
1935     dnl intconlosbit: "conversion to integral type of smaller size could lose
1936     dnl               data" this is a useful warning but there are too many of
1937     dnl               them for now
1938     CXXFLAGS="-w0 -msg_disable basclsnondto,unrimpret,intconlosbit"
1939 fi
1940
1941 dnl the next few tests are all for C++ features and so need to be done using
1942 dnl C++ compiler
1943 AC_LANG_PUSH(C++)
1944
1945 dnl check for std::string or std::wstring
1946 if test "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes"; then
1947     if test "$wxUSE_UNICODE" = "yes"; then
1948         std_string="std::wstring"
1949         char_type="wchar_t"
1950     else
1951         std_string="std::string"
1952         char_type="char"
1953     fi
1954
1955     dnl check if <string> declares std::[w]string
1956     AC_CACHE_CHECK([for $std_string in <string>],
1957         wx_cv_class_stdstring,
1958         [
1959             AC_TRY_COMPILE([#include <string>],
1960                 [$std_string foo;],
1961                 wx_cv_class_stdstring=yes,
1962                 wx_cv_class_stdstring=no
1963             )
1964         ]
1965     )
1966
1967     if test "$wx_cv_class_stdstring" = yes; then
1968         if test "$wxUSE_UNICODE" = "yes"; then
1969             AC_DEFINE(HAVE_STD_WSTRING)
1970         fi
1971         dnl we don't need HAVE_STD_STRING, we just suppose it's available if
1972         dnl wxUSE_STD_STRING==yes
1973     else
1974         AC_CACHE_CHECK([if std::basic_string<$char_type> works],
1975             wx_cv_class_stdbasicstring,
1976             [
1977                 AC_TRY_COMPILE([
1978                     #ifdef HAVE_WCHAR_H
1979                     #  ifdef __CYGWIN__
1980                     #    include <stddef.h>
1981                     #  endif
1982                     #  include <wchar.h>
1983                     #endif
1984                     #ifdef HAVE_STDLIB_H
1985                     #  include <stdlib.h>
1986                     #endif
1987                     #include <stdio.h>
1988                     #include <string>
1989                     ],
1990                     [std::basic_string<$char_type> foo;
1991                      const $char_type* dummy = foo.c_str();],
1992                     wx_cv_class_stdbasicstring=yes,
1993                     wx_cv_class_stdbasicstring=no
1994                 )
1995             ]
1996         )
1997
1998         if test "$wx_cv_class_stdbasicstring" != yes; then
1999             if test "$wxUSE_STL" = "yes"; then
2000                 AC_MSG_ERROR([Can't use --enable-stl without $std_string or std::basic_string<$char_type>])
2001             elif test "$wxUSE_STD_STRING" = "yes"; then
2002                 AC_MSG_ERROR([Can't use --enable-std_string without $std_string or std::basic_string<$char_type>])
2003             else
2004                 AC_MSG_WARN([No $std_string or std::basic_string<$char_type>, switching to --disable-std_string])
2005                 wxUSE_STD_STRING=no
2006             fi
2007         fi
2008     fi
2009 fi
2010
2011 if test "$wxUSE_STD_IOSTREAM" = "yes"; then
2012     AC_CHECK_TYPES([std::istream, std::ostream],,
2013                    [wxUSE_STD_IOSTREAM=no],
2014                    [#include <iostream>])
2015
2016     if test "$wxUSE_STD_IOSTREAM" != "yes"; then
2017         if test "$wxUSE_STD_IOSTREAM" = "yes"; then
2018             AC_MSG_ERROR([Can't use --enable-std_iostreams without std::istream and std::ostream])
2019         else
2020             AC_MSG_WARN([No std::iostreams, switching to --disable-std_iostreams])
2021         fi
2022     fi
2023 fi
2024
2025 if test "$wxUSE_STL" = "yes"; then
2026     dnl check for basic STL functionality
2027     AC_CACHE_CHECK([for basic STL functionality],
2028         wx_cv_lib_stl,
2029         [AC_TRY_COMPILE([#include <string>
2030             #include <functional>
2031             #include <algorithm>
2032             #include <vector>
2033             #include <list>],
2034             [std::vector<int> moo;
2035              std::list<int> foo;
2036              std::vector<int>::iterator it =
2037                  std::find_if(moo.begin(), moo.end(),
2038                               std::bind2nd(std::less<int>(), 3));],
2039             wx_cv_lib_stl=yes,
2040             wx_cv_lib_stl=no
2041         )]
2042     )
2043
2044     if test "$wx_cv_lib_stl" != yes; then
2045          AC_MSG_ERROR([Can't use --enable-stl as basic STL functionality is missing])
2046     fi
2047
2048     dnl check for compliant std::string::compare
2049     AC_CACHE_CHECK([for compliant std::string::compare],
2050         wx_cv_func_stdstring_compare,
2051         [AC_TRY_COMPILE([#include <string>],
2052             [std::string foo, bar;
2053             foo.compare(bar);
2054             foo.compare(1, 1, bar);
2055             foo.compare(1, 1, bar, 1, 1);
2056             foo.compare("");
2057             foo.compare(1, 1, "");
2058             foo.compare(1, 1, "", 2);],
2059             wx_cv_func_stdstring_compare=yes,
2060             wx_cv_func_stdstring_compare=no
2061         )]
2062     )
2063
2064     if test "$wx_cv_func_stdstring_compare" = yes; then
2065         AC_DEFINE(HAVE_STD_STRING_COMPARE)
2066     fi
2067
2068     if test "$wx_cv_class_gnuhashmapset" = yes; then
2069          AC_DEFINE(HAVE_EXT_HASH_MAP)
2070          AC_DEFINE(HAVE_GNU_CXX_HASH_MAP)
2071     fi
2072
2073     AC_CHECK_HEADER([unordered_map],
2074         [AC_CACHE_CHECK([for unordered_map and unordered_set in std],
2075             wx_cv_class_stdunorderedmapset,
2076             [AC_TRY_COMPILE([#include <unordered_map>
2077                 #include <unordered_set>],
2078                 [std::unordered_map<double*, char*> test1;
2079                  std::unordered_set<char*> test2;],
2080                 wx_cv_class_stdunorderedmapset=yes,
2081                 wx_cv_class_stdunorderedmapset=no)
2082             ]
2083         )],
2084         [],
2085         [ ]
2086     )
2087
2088     if test "$wx_cv_class_stdunorderedmapset" = yes; then
2089          AC_DEFINE(HAVE_STD_UNORDERED_MAP)
2090          AC_DEFINE(HAVE_STD_UNORDERED_SET)
2091     else
2092         AC_CHECK_HEADER([tr1/unordered_map],
2093             [AC_CACHE_CHECK([for unordered_map and unordered_set in std::tr1],
2094                 wx_cv_class_tr1unorderedmapset,
2095                 [AC_TRY_COMPILE([#include <tr1/unordered_map>
2096                     #include <tr1/unordered_set>],
2097                     [std::tr1::unordered_map<double*, char*> test1;
2098                      std::tr1::unordered_set<char*> test2;
2099             #if defined(__GNUC__) && (__GNUC__==4) && (__GNUC_MINOR__<2)
2100             #error can't use unordered_{map,set} with gcc-4.[01]: http://gcc.gnu.org/PR24389
2101             #endif],
2102                     wx_cv_class_tr1unorderedmapset=yes,
2103                     wx_cv_class_tr1unorderedmapset=no)
2104                 ]
2105             )],
2106             [],
2107             [ ]
2108         )
2109
2110         if test "$wx_cv_class_tr1unorderedmapset" = yes; then
2111             AC_DEFINE(HAVE_TR1_UNORDERED_MAP)
2112             AC_DEFINE(HAVE_TR1_UNORDERED_SET)
2113         else
2114             dnl check for hash_map and hash_set headers
2115             AC_CHECK_HEADER([hash_map],
2116                 [AC_CACHE_CHECK([for std::hash_map and hash_set],
2117                     wx_cv_class_stdhashmapset,
2118                     [AC_TRY_COMPILE([#include <hash_map>
2119                         #include <hash_set>],
2120                         [std::hash_map<double*, char*, std::hash<double*>, std::equal_to<double*> > test1;
2121                          std::hash_set<char*, std::hash<char*>, std::equal_to<char*> > test2;],
2122                         wx_cv_class_stdhashmapset=yes,
2123                         wx_cv_class_stdhashmapset=no)
2124                     ]
2125                 )],
2126                 [],
2127                 [ ]
2128             )
2129
2130             if test "$wx_cv_class_stdhashmapset" = yes; then
2131                 AC_DEFINE(HAVE_HASH_MAP)
2132                 AC_DEFINE(HAVE_STD_HASH_MAP)
2133             fi
2134
2135             AC_CHECK_HEADER([ext/hash_map],
2136                 [AC_CACHE_CHECK([for GNU hash_map and hash_set],
2137                     wx_cv_class_gnuhashmapset,
2138                     [AC_TRY_COMPILE([#include <ext/hash_map>
2139                         #include <ext/hash_set>],
2140                         [__gnu_cxx::hash_map<double*, char*, __gnu_cxx::hash<double*>, std::equal_to<double*> > test1;
2141                          __gnu_cxx::hash_set<char*, __gnu_cxx::hash<char*>, std::equal_to<char*> > test2;],
2142                         wx_cv_class_gnuhashmapset=yes,
2143                         wx_cv_class_gnuhashmapset=no)
2144                     ]
2145                 )],
2146                 [],
2147                 [ ]
2148             )
2149
2150         fi
2151     fi
2152 fi
2153
2154 AC_CHECK_HEADERS([type_traits tr1/type_traits])
2155
2156 dnl check for atomic operations builtins for wx/atomic.h:
2157 WX_ATOMIC_BUILTINS
2158
2159 dnl pop C++
2160 AC_LANG_POP()
2161
2162 dnl ---------------------------------------------------------------------------
2163 dnl Define search path for includes and libraries: all headers and libs will be
2164 dnl looked for in all directories of this path
2165 dnl ---------------------------------------------------------------------------
2166
2167 dnl Notice that /usr/include should *not* be in this list, otherwise it breaks
2168 dnl compilation on Solaris/AIX/... with gcc because standard (non ANSI C)
2169 dnl headers are included instead of the "fixed" (ANSI-fied) gcc ones.
2170 dnl
2171 dnl Also try to put all directories which may contain X11R6 before those which
2172 dnl may contain X11R5/4 - we want to use R6 on machines which have both!
2173 dnl
2174 dnl In the same vein. Motif 2.1 should be tried before Motif 1.2 for the
2175 dnl systems which have both (AIX 4.x does)
2176 SEARCH_INCLUDE="\
2177     /usr/local/include        \
2178     /usr/local/X11/include    \
2179     /usr/local/include/X11    \
2180     /usr/local/X11R7/include  \
2181     /usr/local/X11R6/include  \
2182     /usr/local/include/X11R7  \
2183     /usr/local/include/X11R6  \
2184                               \
2185     /usr/Motif-2.1/include    \
2186     /usr/Motif-1.2/include    \
2187     /usr/include/Motif1.2     \
2188                               \
2189     /usr/dt/include           \
2190     /usr/openwin/include      \
2191                               \
2192     /usr/include/Xm           \
2193                               \
2194     /usr/X11R7/include        \
2195     /usr/X11R6/include        \
2196     /usr/X11R6.4/include      \
2197                               \
2198     /usr/include/X11R7        \
2199     /usr/include/X11R6        \
2200                               \
2201     /usr/X11/include          \
2202     /usr/include/X11          \
2203                               \
2204     /usr/XFree86/include/X11  \
2205     /usr/pkg/include          \
2206                               \
2207     /usr/local/X1R5/include  \
2208     /usr/local/include/X11R5  \
2209     /usr/X11R5/include        \
2210     /usr/include/X11R5        \
2211                               \
2212     /usr/local/X11R4/include  \
2213     /usr/local/include/X11R4  \
2214     /usr/X11R4/include        \
2215     /usr/include/X11R4        \
2216                               \
2217     /usr/openwin/share/include"
2218
2219 dnl try to find out the standard lib locations for the systems with multiple
2220 dnl ABIs
2221 AC_MSG_CHECKING([for libraries directories])
2222
2223 case "${host}" in
2224     *-*-irix6* )
2225         AC_CACHE_VAL(
2226             wx_cv_std_libpath,
2227             [
2228                 for d in WX_STD_LIBPATH(); do
2229                     for e in a so sl dylib dll.a; do
2230                         libc="$d/libc.$e"
2231                         if test -f $libc; then
2232                             save_LIBS="$LIBS"
2233                             LIBS="$libc"
2234                             AC_LINK_IFELSE([
2235                                     AC_LANG_SOURCE([int main() { return 0; }])
2236                                 ],
2237                                 wx_cv_std_libpath=`echo $d | sed s@/usr/@@`)
2238                             LIBS="$save_LIBS"
2239                             if test "x$wx_cv_std_libpath" != "x"; then
2240                                 break 2
2241                             fi
2242                         fi
2243                     done
2244                 done
2245             ]
2246         )
2247         ;;
2248
2249     *-*-solaris2* )
2250         dnl use ../lib or ../lib/64 depending on the size of void*
2251         if test "$ac_cv_sizeof_void_p" = 8 -a -d "/usr/lib/64"; then
2252             wx_cv_std_libpath="lib/64"
2253         fi
2254         ;;
2255
2256     *-*-linux* )
2257         dnl Recent Debian versions (as of 2011) use new approach to multiarch
2258         dnl and put the libraries under /usr/lib/arch-linux-gnu. Annoyingly,
2259         dnl "arch" here is not `uname -m` because it is "i386" even when uname
2260         dnl returns e.g. "i686". So we need to test for it explicitly.
2261         if test "$ac_cv_sizeof_void_p" = 8; then
2262             if test -d "/usr/lib/`uname -m`-linux-gnu"; then
2263                 wx_cv_std_libfullpath="/usr/lib/`uname -m`-linux-gnu"
2264             elif test -d "/usr/lib64" -a ! -h "/usr/lib64"; then
2265                 wx_cv_std_libpath="lib64"
2266             fi
2267         else
2268             case "${host}" in
2269                 i*86-*-linux* )
2270                     if test -d '/usr/lib/i386-linux-gnu'; then
2271                         wx_cv_std_libfullpath='/usr/lib/i386-linux-gnu'
2272                     fi
2273             esac
2274         fi
2275
2276         dnl And on top of all this, some packages haven't been updated for
2277         dnl full multiarch support yet so we still need to look in /usr/lib
2278         dnl too as well.
2279         if test -n "$wx_cv_std_libfullpath" -a -d "/usr/lib"; then
2280             wx_cv_std_libfullpath="$wx_cv_std_libfullpath /usr/lib"
2281         fi
2282         ;;
2283 esac
2284
2285 if test -z "$wx_cv_std_libpath"; then
2286     wx_cv_std_libpath="lib"
2287 fi
2288
2289 if test -z "$wx_cv_std_libfullpath"; then
2290     wx_cv_std_libfullpath="/usr/$wx_cv_std_libpath"
2291 fi
2292
2293
2294 AC_MSG_RESULT($wx_cv_std_libfullpath)
2295
2296 SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s@include@$wx_cv_std_libpath@g` $wx_cv_std_libfullpath"
2297
2298 dnl Cross compiling with gcc?
2299 if test "$build" != "$host" -a "$GCC" = yes; then
2300     dnl for gcc cross-compilers "$CC -print-prog-name=ld" prints the path to
2301     dnl the linker. Stripping off the trailing '/bin/ld' gives us a candiate
2302     dnl for a 'root' below which libraries and headers for the target system
2303     dnl might be installed.
2304     if cross_root=`$CC -print-prog-name=ld 2>/dev/null`; then
2305         cross_root=`dirname $cross_root`
2306         cross_root=`dirname $cross_root`
2307
2308         dnl substitute this candiate root for '^/usr' in the search lists,
2309         dnl strip out any that don't start '^/usr'.
2310         SEARCH_LIB=`for x in $SEARCH_LIB; do echo $x; done | sed -ne "s|^/usr|$cross_root|p"`
2311         SEARCH_INCLUDE=`for x in $SEARCH_INCLUDE; do echo $x; done | sed -ne "s|^/usr|$cross_root|p"`
2312         SEARCH_INCLUDE="$SEARCH_INCLUDE $cross_root/include"
2313
2314         dnl also have pkg-config search for *.pc files under this 'root'
2315         if test -z "$PKG_CONFIG_PATH"; then
2316             PKG_CONFIG_PATH="$cross_root/local/lib/pkgconfig:$cross_root/lib/pkgconfig"
2317             export PKG_CONFIG_PATH
2318         fi
2319
2320         dnl AC_PATH_XTRA doesn't work currently unless -x-includes and
2321         dnl -x-libraries are given on the command line. So if they are not
2322         dnl set then set them here to plausible defaults.
2323         if test -z "$x_includes" -o "$x_includes" = NONE; then
2324             WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, X11/Intrinsic.h)
2325             x_includes=$ac_find_includes
2326         fi
2327         if test -z "$x_libraries" -o "$x_libraries" = NONE; then
2328             WX_PATH_FIND_LIBRARIES(Xt)
2329             x_libraries=$ac_find_libraries
2330         fi
2331     fi
2332 fi
2333
2334 dnl ------------------------------------------------------------------------
2335 dnl Check for libraries
2336 dnl ------------------------------------------------------------------------
2337
2338 dnl flush the cache because checking for libraries below might abort
2339 AC_CACHE_SAVE
2340
2341 dnl Only add the -lm library if floating point functions cannot be used
2342 dnl without it.  This check is important on cygwin because of the bizarre
2343 dnl way that they have organized functions into libraries.  On cygwin, both
2344 dnl libc.a and libm.a are symbolic links to a single lib libcygwin.a.  This
2345 dnl means that
2346 dnl   1) linking with -lm is not necessary, and
2347 dnl   2) linking with -lm is dangerous if the order of libraries is wrong
2348 dnl In particular, if you compile any program with -mno-cygwin and link with
2349 dnl -lm, it will crash instantly when it is run.  This happens because the
2350 dnl linker incorrectly links the Cygwin libm.a (==libcygwin.a), which replaces
2351 dnl the ___main function instead of allowing it to be defined by
2352 dnl /usr/lib/mingw/libmingw32.a as it should be.
2353 dnl
2354 dnl On MacOS X, this test will find that -lm is unnecessary and leave it out.
2355 dnl
2356 dnl Just check a few floating point functions. If they are all found without
2357 dnl -lm, then we must not need -lm.
2358 have_cos=0
2359 have_floor=0
2360 AC_CHECK_FUNCS(cos, have_cos=1)
2361 AC_CHECK_FUNCS(floor, have_floor=1)
2362 AC_MSG_CHECKING(if floating point functions link without -lm)
2363 if test "$have_cos" = 1 -a "$have_floor" = 1; then
2364     AC_MSG_RESULT(yes)
2365 else
2366     AC_MSG_RESULT(no)
2367     LIBS="$LIBS -lm"
2368     # use different functions to avoid configure caching
2369     have_sin=0
2370     have_ceil=0
2371     AC_CHECK_FUNCS(sin, have_sin=1)
2372     AC_CHECK_FUNCS(ceil, have_ceil=1)
2373     AC_MSG_CHECKING(if floating point functions link with -lm)
2374     if test "$have_sin" = 1 -a "$have_ceil" = 1; then
2375         AC_MSG_RESULT(yes)
2376     else
2377         AC_MSG_RESULT(no)
2378         # not sure we should warn the user, crash, etc.
2379     fi
2380 fi
2381
2382 dnl check for C99 string to long long conversion functions, assume that if we
2383 dnl have the unsigned variants, then we have the signed ones as well
2384 dnl
2385 dnl at least under SGI these functions are only available in C99 code and not
2386 dnl in C++ so do these tests using C++ compiler
2387 AC_LANG_PUSH(C++)
2388 if test "wxUSE_UNICODE" = "yes"; then
2389     WX_CHECK_FUNCS(wcstoull)
2390 else
2391     WX_CHECK_FUNCS(strtoull)
2392 fi
2393 AC_LANG_POP()
2394
2395 dnl ---------------------------------------------------------------------------
2396 dnl Optional libraries
2397 dnl
2398 dnl   --with-<lib>=sys
2399 dnl       looks for system library and fails if not found
2400 dnl
2401 dnl   --with-<lib>
2402 dnl   --with-<lib>=yes
2403 dnl       looks for system library and, if not found, prints a warning,
2404 dnl       falls back to the builtin wx version, and continues configuration
2405 dnl
2406 dnl   --with-<lib>=builtin
2407 dnl       uses builtin wx version without searching for system library
2408 dnl
2409 dnl   --with-<lib>=no
2410 dnl   --without-<lib>
2411 dnl       do not use library (neither system nor builtin wx version)
2412 dnl
2413 dnl ---------------------------------------------------------------------------
2414
2415 dnl ------------------------------------------------------------------------
2416 dnl Check for regex libraries
2417 dnl ------------------------------------------------------------------------
2418
2419 if test "$wxUSE_REGEX" != "no"; then
2420     AC_DEFINE(wxUSE_REGEX)
2421
2422     if test "$wxUSE_UNICODE" = "yes" -a "$wxUSE_REGEX" = "yes"; then
2423         AC_MSG_WARN([Defaulting to the builtin regex library for Unicode build.])
2424         wxUSE_REGEX=builtin
2425     fi
2426
2427     if test "$wxUSE_REGEX" = "sys" -o "$wxUSE_REGEX" = "yes" ; then
2428         dnl according to Unix 98 specs, regcomp() is in libc but I believe that
2429         dnl on some old systems it may be in libregex - check for it too?
2430         AC_CHECK_HEADER(regex.h, [AC_CHECK_FUNCS(regcomp re_search)],, [ ])
2431
2432         if test "x$ac_cv_func_regcomp" != "xyes"; then
2433             if test "$wxUSE_REGEX" = "sys" ; then
2434                 AC_MSG_ERROR([system regex library not found! Use --with-regex to use built-in version])
2435             else
2436                 AC_MSG_WARN([system regex library not found, will use built-in instead])
2437                 wxUSE_REGEX=builtin
2438             fi
2439         else
2440             dnl we are using the system library
2441             wxUSE_REGEX=sys
2442             dnl only the built-in supports advanced REs
2443             AC_DEFINE(WX_NO_REGEX_ADVANCED)
2444         fi
2445     fi
2446 fi
2447
2448 dnl ------------------------------------------------------------------------
2449 dnl Check for zlib compression library
2450 dnl ------------------------------------------------------------------------
2451
2452 ZLIB_LINK=
2453 if test "$wxUSE_ZLIB" != "no" ; then
2454     AC_DEFINE(wxUSE_ZLIB)
2455
2456     if test "$wxUSE_ZLIB" = "sys" -o "$wxUSE_ZLIB" = "yes" ; then
2457         dnl don't test for zlib under Mac -- its verson there is 1.1.3 but we
2458         dnl should still use it because hopefully (can someone confirm this?)
2459         dnl Apple did fix the security problem in it and not using the system
2460         dnl library results in a whole bunch of warnings when linking with
2461         dnl Carbon framework
2462         if test "$USE_DARWIN" = 1; then
2463             system_zlib_h_ok="yes"
2464         else
2465             dnl we have troubles with ancient zlib versions (e.g. 1.0.4 is
2466             dnl known to not work) and although I don't know which is
2467             dnl the minimal required version it's safer to test for 1.1.4 as
2468             dnl it fixes a security problem in 1.1.3 -- and hopefully nobody
2469             dnl has anything more ancient (1.1.3 was released in July 1998)
2470             dnl anyhow
2471             AC_CACHE_CHECK([for zlib.h >= 1.1.4], ac_cv_header_zlib_h,
2472                 [AC_TRY_RUN(
2473                     dnl zlib.h defines ZLIB_VERSION="x.y.z"
2474                     [
2475                         #include <zlib.h>
2476                         #include <stdio.h>
2477
2478                         int main()
2479                         {
2480                             FILE *f=fopen("conftestval", "w");
2481                             if (!f) exit(1);
2482                             fprintf(f, "%s",
2483                                     ZLIB_VERSION[0] == '1' &&
2484                                     (ZLIB_VERSION[2] > '1' ||
2485                                     (ZLIB_VERSION[2] == '1' &&
2486                                      ZLIB_VERSION[4] >= '4')) ? "yes" : "no");
2487                             exit(0);
2488                         }
2489                     ],
2490                     ac_cv_header_zlib_h=`cat conftestval`,
2491                     ac_cv_header_zlib_h=no,
2492                     dnl cross-compiling: don't have an answer, try later
2493                     unset ac_cv_header_zlib_h
2494                 )]
2495             )
2496             dnl If the test above did not come up with a value (e.g. cross
2497             dnl compiling) then this should give a definitive answer
2498             AC_CHECK_HEADER(zlib.h,,, [ ])
2499
2500             system_zlib_h_ok=$ac_cv_header_zlib_h
2501         fi
2502
2503         if test "$system_zlib_h_ok" = "yes"; then
2504             AC_CHECK_LIB(z, deflate, ZLIB_LINK=" -lz")
2505         fi
2506
2507         if test "x$ZLIB_LINK" = "x" ; then
2508             if test "$wxUSE_ZLIB" = "sys" ; then
2509                 AC_MSG_ERROR([zlib library not found or too old! Use --with-zlib=builtin to use built-in version])
2510             else
2511                 AC_MSG_WARN([zlib library not found or too old, will use built-in instead])
2512                 wxUSE_ZLIB=builtin
2513             fi
2514         else
2515             dnl we are using the system library
2516             wxUSE_ZLIB=sys
2517         fi
2518     fi
2519 fi
2520
2521 dnl ------------------------------------------------------------------------
2522 dnl Check for png library
2523 dnl ------------------------------------------------------------------------
2524
2525 PNG_LINK=
2526 if test "$wxUSE_LIBPNG" != "no" ; then
2527     AC_DEFINE(wxUSE_LIBPNG)
2528
2529     dnl for the check below to have a chance to succeed, we must already have
2530     dnl libz somewhere
2531     if test "$wxUSE_LIBPNG" = "sys" -a "$wxUSE_ZLIB" != "sys" ; then
2532         AC_MSG_WARN([system png library doesn't work without system zlib, will use built-in instead])
2533         wxUSE_LIBPNG=builtin
2534     fi
2535
2536     if test "$wxUSE_LIBPNG" = "sys" -o "$wxUSE_LIBPNG" = "yes" ; then
2537         dnl libpng version 0.9 is known to not work, if an even newer
2538         dnl version is required, just bump it up in the test below
2539         AC_CACHE_CHECK([for png.h > 0.90], ac_cv_header_png_h,
2540             [AC_TRY_RUN(
2541                 dnl png.h defines PNG_LIBPNG_VER=number
2542                 [
2543                     #include <png.h>
2544                     #include <stdio.h>
2545
2546                     int main()
2547                     {
2548                         FILE *f=fopen("conftestval", "w");
2549                         if (!f) exit(1);
2550                         fprintf(f, "%s",
2551                                  PNG_LIBPNG_VER > 90 ? "yes" : "no");
2552                         exit(0);
2553                     }
2554                 ],
2555                 ac_cv_header_png_h=`cat conftestval`,
2556                 ac_cv_header_png_h=no,
2557                 dnl cross-compiling: test (later) if we have any png.h
2558                 unset ac_cv_header_png_h
2559             )]
2560         )
2561         AC_CHECK_HEADER(png.h,,, [ ])
2562
2563         if test "$ac_cv_header_png_h" = "yes"; then
2564             AC_CHECK_LIB(png, png_sig_cmp, PNG_LINK=" -lpng -lz", , [-lz -lm])
2565         fi
2566
2567         if test "x$PNG_LINK" = "x" ; then
2568             if test "$wxUSE_LIBPNG" = "sys" ; then
2569                 AC_MSG_ERROR([system png library not found or too old! Use --with-libpng=builtin to use built-in version])
2570             else
2571                 AC_MSG_WARN([system png library not found or too old, will use built-in instead])
2572                 wxUSE_LIBPNG=builtin
2573             fi
2574         else
2575             dnl we are using the system library
2576             wxUSE_LIBPNG=sys
2577         fi
2578     fi
2579 fi
2580
2581 dnl ------------------------------------------------------------------------
2582 dnl Check for jpeg library
2583 dnl ------------------------------------------------------------------------
2584
2585 dnl this check must be done before the check for libtiff as libtiff uses
2586 dnl libjpeg itself
2587 JPEG_LINK=
2588 if test "$wxUSE_LIBJPEG" != "no" ; then
2589     AC_DEFINE(wxUSE_LIBJPEG)
2590
2591     if test "$wxUSE_LIBJPEG" = "sys" -o "$wxUSE_LIBJPEG" = "yes" ; then
2592         dnl can't use AC_CHECK_HEADER as jconfig.h defines things like
2593         dnl HAVE_STDLIB_H which are already defined and this provokes
2594         dnl a compiler warning which configure considers as an error...
2595         AC_MSG_CHECKING(for jpeglib.h)
2596         AC_CACHE_VAL(ac_cv_header_jpeglib_h,
2597             AC_TRY_COMPILE(
2598                 [
2599                     #undef HAVE_STDLIB_H
2600                     #include <stdio.h>
2601                     #include <jpeglib.h>
2602                 ],
2603                 [
2604                 ],
2605                 ac_cv_header_jpeglib_h=yes,
2606                 ac_cv_header_jpeglib_h=no
2607             )
2608         )
2609         AC_MSG_RESULT($ac_cv_header_jpeglib_h)
2610
2611         if test "$ac_cv_header_jpeglib_h" = "yes"; then
2612             AC_CHECK_LIB(jpeg, jpeg_read_header, JPEG_LINK=" -ljpeg")
2613         fi
2614
2615         if test "x$JPEG_LINK" = "x" ; then
2616             if test "$wxUSE_LIBJPEG" = "sys" ; then
2617                 AC_MSG_ERROR([system jpeg library not found! Use --with-libjpeg=builtin to use built-in version])
2618             else
2619                 AC_MSG_WARN([system jpeg library not found, will use built-in instead])
2620                 wxUSE_LIBJPEG=builtin
2621             fi
2622         else
2623             dnl we are using the system library
2624             wxUSE_LIBJPEG=sys
2625
2626             if test "$wxUSE_MSW" = 1; then
2627                 dnl boolean is defined by the jpeg headers and also by the
2628                 dnl Windows headers of some compilers. This type has been
2629                 dnl renamed in the builtin, so it is only an issue when
2630                 dnl using an external jpeg lib on Windows.
2631                 AC_CHECK_TYPES(
2632                     [boolean],
2633                     [
2634                         AC_CHECK_SIZEOF(
2635                             [boolean],
2636                             [],
2637                             [
2638                                 #undef HAVE_BOOLEAN
2639                                 #include <stdio.h>
2640                                 #include <jpeglib.h>
2641                             ])
2642                         AC_DEFINE_UNQUOTED(
2643                             [wxHACK_BOOLEAN],
2644                             [wxInt`expr 8 \* $ac_cv_sizeof_boolean`])
2645                     ],
2646                     [],
2647                     [#include <windows.h>])
2648             fi
2649         fi
2650     fi
2651 fi
2652
2653 dnl ------------------------------------------------------------------------
2654 dnl Check for tiff library
2655 dnl ------------------------------------------------------------------------
2656
2657 TIFF_LINK=
2658 TIFF_PREREQ_LINKS=-lm
2659 if test "$wxUSE_LIBTIFF" != "no" ; then
2660     AC_DEFINE(wxUSE_LIBTIFF)
2661
2662     if test "$wxUSE_LIBTIFF" = "sys" -o "$wxUSE_LIBTIFF" = "yes" ; then
2663         dnl libtiff may depend on libjpeg and libz so use them in the test
2664         dnl below or it would fail
2665         if test "$wxUSE_LIBJPEG" = "sys"; then
2666             TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $JPEG_LINK"
2667         fi
2668         if test "$wxUSE_ZLIB" = "sys"; then
2669             TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $ZLIB_LINK"
2670         fi
2671         AC_CHECK_HEADER(tiffio.h,
2672                         [
2673                             AC_CHECK_LIB(tiff, TIFFError,
2674                                          TIFF_LINK=" -ltiff",
2675                                          ,
2676                                          $TIFF_PREREQ_LINKS)
2677                         ],
2678                         [],
2679                         [ ]
2680                        )
2681
2682         if test "x$TIFF_LINK" = "x" ; then
2683             if test "$wxUSE_LIBTIFF" = "sys" ; then
2684                 AC_MSG_ERROR([system tiff library not found! Use --with-libtiff=builtin to use built-in version])
2685             else
2686                 AC_MSG_WARN([system tiff library not found, will use built-in instead])
2687                 wxUSE_LIBTIFF=builtin
2688             fi
2689         else
2690             dnl we are using the system library
2691             wxUSE_LIBTIFF=sys
2692         fi
2693     fi
2694     if test "$wxUSE_LIBTIFF" = "builtin" ; then
2695         if test "$wxUSE_LIBJPEG" = "no"; then
2696             dnl we have to prevent the builtin libtiff configure from building the
2697             dnl library with JPEG support as this was explicitly disabled by user,
2698             dnl but unfortunately it needs --disable-jpeg and not --without-libjpeg
2699             dnl (which will be passed to it anyhow as configure passes arguments to
2700             dnl the top-level script to all the other ones called recursively), so
2701             dnl we need to hack around this
2702             ac_configure_args="$ac_configure_args --disable-jpeg"
2703         fi
2704
2705         if test "$wxUSE_LIBLZMA" = "yes"; then
2706             dnl If libtiff configure detects lzma library, it enables support for
2707             dnl LZMA compression and using it requires linking with liblzma.
2708             AC_CHECK_LIB(lzma, lzma_code, [LIBS="$LIBS -llzma"])
2709         else
2710             dnl Prevent libtiff configure from looking for liblzma if it's
2711             dnl explicitly disabled.
2712             ac_configure_args="$ac_configure_args --disable-lzma"
2713         fi
2714
2715         dnl Similarly for jbig
2716         if test "$wxUSE_LIBJBIG" = "yes"; then
2717             AC_CHECK_LIB(jbig, jbg_dec_init, [LIBS="$LIBS -ljbig"])
2718         else
2719             ac_configure_args="$ac_configure_args --disable-jbig"
2720         fi
2721
2722         AC_CONFIG_SUBDIRS([src/tiff])
2723     fi
2724 fi
2725
2726 dnl ------------------------------------------------------------------------
2727 dnl Check for expat libraries
2728 dnl ------------------------------------------------------------------------
2729
2730 if test "$wxUSE_EXPAT" != "no"; then
2731     wxUSE_XML=yes
2732     AC_DEFINE(wxUSE_EXPAT)
2733     AC_DEFINE(wxUSE_XML)
2734
2735     if test "$wxUSE_EXPAT" = "sys" -o "$wxUSE_EXPAT" = "yes" ; then
2736         AC_CHECK_HEADER([expat.h], [found_expat_h=1],, [ ])
2737         if test "x$found_expat_h" = "x1"; then
2738             dnl Expat 1.95.6 comes with broken expat.h:
2739             AC_CACHE_CHECK([if expat.h is valid C++ header],
2740                 wx_cv_expat_is_not_broken,
2741                 [
2742                 AC_LANG_PUSH(C++)
2743                 AC_TRY_COMPILE([#include <expat.h>],[],
2744                     wx_cv_expat_is_not_broken=yes,
2745                     wx_cv_expat_is_not_broken=no
2746                 )
2747                 AC_LANG_POP()
2748                 ]
2749             )
2750             if test "$wx_cv_expat_is_not_broken" = "yes" ; then
2751                 AC_CHECK_LIB(expat, XML_ParserCreate, EXPAT_LINK=" -lexpat")
2752             fi
2753         fi
2754         if test "x$EXPAT_LINK" = "x" ; then
2755             if test "$wxUSE_EXPAT" = "sys" ; then
2756                 AC_MSG_ERROR([system expat library not found! Use --with-expat=builtin to use built-in version])
2757             else
2758                 AC_MSG_WARN([system expat library not found, will use built-in instead])
2759                 wxUSE_EXPAT=builtin
2760             fi
2761         else
2762             dnl we are using the system library
2763             wxUSE_EXPAT=sys
2764         fi
2765     fi
2766     if test "$wxUSE_EXPAT" = "builtin" ; then
2767         dnl Expat needs this:
2768         AC_CONFIG_SUBDIRS([src/expat])
2769     fi
2770 fi
2771
2772
2773 dnl ------------------------------------------------------------------------
2774 dnl Check for libmspack
2775 dnl ------------------------------------------------------------------------
2776
2777 if test "$wxUSE_LIBMSPACK" != "no"; then
2778     AC_CHECK_HEADER([mspack.h], [found_mspack_h=1],, [ ])
2779     if test "x$found_mspack_h" = "x1"; then
2780         AC_CHECK_LIB(mspack, mspack_create_chm_decompressor,
2781                      MSPACK_LINK=" -lmspack")
2782     fi
2783     if test "x$MSPACK_LINK" = "x" ; then
2784         wxUSE_LIBMSPACK=no
2785     fi
2786 fi
2787
2788 if test "$wxUSE_LIBMSPACK" != "no"; then
2789     AC_DEFINE(wxUSE_LIBMSPACK)
2790 fi
2791
2792
2793 dnl ----------------------------------------------------------------
2794 dnl search for toolkit (widget sets)
2795 dnl ----------------------------------------------------------------
2796
2797 TOOLKIT=
2798 TOOLKIT_INCLUDE=
2799 WIDGET_SET=
2800
2801 dnl are we building for a win32 target environment?
2802 dnl If so, setup common stuff needed for both GUI and Base libs.
2803 if test "$USE_WIN32" = 1 ; then
2804     AC_CHECK_HEADERS(w32api.h,,, [ ])
2805     AC_CHECK_HEADER(windows.h,,
2806     [
2807         AC_MSG_ERROR(please set CFLAGS to contain the location of windows.h)
2808     ],
2809     [ ])
2810
2811     LIBS="$LIBS -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32"
2812     case "${host}" in
2813         x86_64-*-mingw32* )
2814             dnl we need to define this to embed the manifest for correct
2815             dnl platform from wx/msw/wx.rc (this is not needed for x86 which is
2816             dnl the default in wx/msw/rcdefs.h)
2817             WINDRES_CPU_DEFINE="--define WX_CPU_AMD64"
2818         ;;
2819     esac
2820     if test "$wxUSE_ACCESSIBILITY" = "yes" ; then
2821         LIBS="$LIBS -loleacc"
2822     fi
2823
2824     case "${host}" in
2825         *-*-cygwin* )
2826             dnl Cygwin doesn't include these by default
2827             LIBS="$LIBS -lkernel32 -luser32"
2828     esac
2829
2830     dnl Flags to be passed to windres by the applications using wxWidgets.
2831     WXCONFIG_RESFLAGS="--define __WIN32__ --define __GNUWIN32__ $WINDRES_CPU_DEFINE"
2832 fi
2833
2834 if test "$wxUSE_GUI" = "yes"; then
2835     USE_GUI=1
2836
2837     GUI_TK_LIBRARY=
2838
2839     WXGTK1=
2840     WXGTK127=
2841     WXGTK2=
2842     WXGTK3=
2843     WXGPE=
2844
2845     if test "$wxUSE_OLD_COCOA" = 1 ; then
2846         if test "$wxUSE_PRINTING_ARCHITECTURE" = "yes"; then
2847             AC_MSG_WARN([Printing not supported under wxCocoa yet, disabled])
2848             wxUSE_PRINTING_ARCHITECTURE=no
2849         fi
2850         if test "$wxUSE_DRAG_AND_DROP" = "yes"; then
2851             AC_MSG_WARN([Drag and Drop not supported under wxCocoa yet, disabled])
2852             wxUSE_DRAG_AND_DROP=no
2853         fi
2854         if test "$wxUSE_DRAGIMAGE" = "yes"; then
2855             AC_MSG_WARN([wxDragImage not supported under wxCocoa yet, disabled])
2856             wxUSE_DRAGIMAGE=no
2857         fi
2858     fi
2859
2860     if test "$wxUSE_MSW" = 1 ; then
2861         TOOLKIT=MSW
2862         GUIDIST=MSW_DIST
2863
2864         dnl -mwindows causes a heap of other default gui libs to be linked in.
2865         case "${host}" in
2866             *-*-mingw32* )
2867                 WXCONFIG_LDFLAGS_GUI="$LDFLAGS -Wl,--subsystem,windows -mwindows"
2868         esac
2869     fi
2870
2871     if test "$wxUSE_GTK" = 1; then
2872         dnl GTK+ test program must be compiled with C compiler
2873         AC_MSG_CHECKING([for GTK+ version])
2874
2875         gtk_version_cached=1
2876         AC_CACHE_VAL(wx_cv_lib_gtk,
2877             [
2878                 dnl stupid GTK+ AM macros produce their own messages, so we
2879                 dnl have to pass to the next line
2880                 gtk_version_cached=0
2881                 AC_MSG_RESULT()
2882
2883                 dnl we must link against lgthread unless the user
2884                 dnl used --disable-threads
2885                 GTK_MODULES=
2886                 if test "$wxUSE_THREADS" = "yes"; then
2887                     GTK_MODULES=gthread
2888                 fi
2889
2890                 if test -z "$wxGTK_VERSION"; then
2891                     wxGTK_VERSION=any
2892                 fi
2893
2894                 dnl detect GTK2
2895                 wx_cv_lib_gtk=
2896                 if test "x$wxGTK_VERSION" != "x1"
2897                 then
2898                     dnl The gthread.pc that ships with Solaris returns '-mt',
2899                     dnl it's correct for Sun CC, but gcc requires '-pthreads'.
2900                     dnl So disable the compile check and remove the -mt below.
2901                     case "${host}" in
2902                         *-*-solaris2* )
2903                             if test "$wxUSE_THREADS" = "yes" -a "$GCC" = yes; then
2904                                 enable_gtktest=no
2905                             fi
2906                     esac
2907
2908                     if test "$wxGTK_VERSION" != 3; then
2909                         AM_PATH_GTK_2_0(2.6.0, wx_cv_lib_gtk=2.0, , $GTK_MODULES)
2910                     fi
2911                     if test -z "$wx_cv_lib_gtk"; then
2912                         if test "$wxGTK_VERSION" = 3 -o "$wxGTK_VERSION" = any; then
2913                             AM_PATH_GTK_3_0(, wx_cv_lib_gtk=3, , $GTK_MODULES)
2914                         fi
2915                     fi
2916                 fi
2917
2918                 dnl detect GTK1.x
2919                 if test -z "$wx_cv_lib_gtk"; then
2920                     if test "x$wxGTK_VERSION" = "x1" -o "x$wxGTK_VERSION" = "xany" ; then
2921                         AM_PATH_GTK(1.2.7, wx_cv_lib_gtk=1.2.7, , $GTK_MODULES)
2922
2923                         if test -z "$wx_cv_lib_gtk"; then
2924                             AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3, , $GTK_MODULES)
2925                         fi
2926                     fi
2927                 fi
2928
2929                 if test -z "$wx_cv_lib_gtk"; then
2930                     dnl looks better in AC_MSG_RESULT
2931                     wx_cv_lib_gtk=none
2932                 else
2933                     dnl we use symbols from X11 directly so we should link with it
2934                     GTK_LIBS="$GTK_LIBS -lX11"
2935
2936                     dnl we need to cache GTK_CFLAGS and GTK_LIBS for the
2937                     dnl subsequent runs
2938                     wx_cv_cflags_gtk=$GTK_CFLAGS
2939                     wx_cv_libs_gtk=$GTK_LIBS
2940                 fi
2941             ]
2942         )
2943
2944         dnl if it wasn't cached, the messages from AM_PATH_GTK() above are
2945         dnl enough
2946         if test "$gtk_version_cached" = 1; then
2947             AC_MSG_RESULT($wx_cv_lib_gtk)
2948         fi
2949
2950         case "$wx_cv_lib_gtk" in
2951             3)      WXGTK3=1
2952                     TOOLKIT_VERSION=3
2953                     ;;
2954             2.0)    WXGTK2=1
2955                     TOOLKIT_VERSION=2
2956                     ;;
2957             1.2.7)  WXGTK127=1
2958                     WXGTK1=1
2959                     ;;
2960             1.2*)   WXGTK1=1 ;;
2961             *)      AC_MSG_ERROR([
2962 The development files for GTK+ were not found. For GTK+ 2, please
2963 ensure that pkg-config is in the path and that gtk+-2.0.pc is
2964 installed. For GTK+ 1.2 please check that gtk-config is in the path,
2965 and that the version is 1.2.3 or above. Also check that the
2966 libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
2967 --libs' are in the LD_LIBRARY_PATH or equivalent.
2968                             ])
2969                     ;;
2970         esac
2971
2972         if test "$WXGTK3" = 1; then
2973             AC_DEFINE(__WXGTK218__)
2974             AC_DEFINE(__WXGTK210__)
2975         elif test "$WXGTK2" = 1; then
2976             save_CFLAGS="$CFLAGS"
2977             save_LIBS="$LIBS"
2978             CFLAGS="$wx_cv_cflags_gtk $CFLAGS"
2979             LIBS="$LIBS $wx_cv_libs_gtk"
2980
2981             dnl test if we have at least GTK+ 2.18:
2982             AC_MSG_CHECKING([if GTK+ is version >= 2.18])
2983             AC_TRY_COMPILE([
2984                             #include <gtk/gtk.h>
2985                            ],
2986                            [
2987                             #if !GTK_CHECK_VERSION(2,18,0)
2988                             Not GTK+ 2.18
2989                             #endif
2990                            ],
2991                            [
2992                             AC_DEFINE(__WXGTK218__)
2993                             AC_DEFINE(__WXGTK210__)
2994                             AC_MSG_RESULT([yes])
2995                             ac_wxgtk218=1
2996                            ],
2997                            [
2998                             AC_MSG_RESULT([no])
2999                             ac_wxgtk218=0
3000                            ])
3001
3002             if test "$ac_wxgtk218" = 0; then
3003                 dnl test if we have at least GTK+ 2.10:
3004                 AC_MSG_CHECKING([if GTK+ is version >= 2.10])
3005                 AC_TRY_COMPILE([
3006                                 #include <gtk/gtk.h>
3007                                ],
3008                                [
3009                                 #if !GTK_CHECK_VERSION(2,10,0)
3010                                 Not GTK+ 2.10
3011                                 #endif
3012                                ],
3013                                [
3014                                 AC_DEFINE(__WXGTK210__)
3015                                 AC_MSG_RESULT([yes])
3016                                 ac_wxgtk210=1
3017                                ],
3018                                [
3019                                 AC_MSG_RESULT([no])
3020                                 ac_wxgtk210=0
3021                                ])
3022             fi
3023
3024             CFLAGS="$save_CFLAGS"
3025             LIBS="$save_LIBS"
3026         else
3027             if test "$wxUSE_UNICODE" = "yes"; then
3028                 AC_MSG_WARN([Unicode configuration not supported with GTK+ 1.x])
3029                 wxUSE_UNICODE=no
3030             fi
3031
3032             dnl test for XIM support in libgdk
3033             AC_CHECK_LIB(gdk, gdk_im_open, AC_DEFINE(HAVE_XIM))
3034
3035             dnl we need poll() in src/gtk1/app.cpp (we know that Darwin doesn't
3036             dnl have it but we do the check for the others)
3037             if test "$USE_DARWIN" != 1; then
3038                 AC_CHECK_FUNCS(poll)
3039             fi
3040         fi
3041
3042         TOOLKIT_INCLUDE="$wx_cv_cflags_gtk"
3043         GUI_TK_LIBRARY="$wx_cv_libs_gtk $GUI_TK_LIBRARY"
3044         TOOLKIT=GTK
3045         GUIDIST=GTK_DIST
3046
3047         dnl test for external libxpm if we're configured to use it
3048         if test "$wxUSE_GPE" = "yes"; then
3049             AC_MSG_CHECKING(for gpewidget library)
3050             WX_PATH_FIND_LIBRARIES(gpewidget)
3051             if test "$ac_find_libraries" != "" ; then
3052                 WX_LINK_PATH_EXIST($ac_find_libraries,$GUI_TK_LIBRARY)
3053                 dnl -lgpewidget must be before all GTK libs and
3054                 dnl we guess its path from the prefix
3055                 GUI_TK_LIBRARY="-L${prefix}/lib -lgpewidget $GUI_TK_LIBRARY"
3056                 WXGPE=1
3057                 AC_MSG_RESULT([found in $ac_find_libraries])
3058             else
3059                 AC_MSG_RESULT(not found)
3060             fi
3061
3062             dnl AC_MSG_CHECKING(for gpe library)
3063             dnl WX_PATH_FIND_LIBRARIES(gpe)
3064             dnl if test "$ac_find_libraries" != "" ; then
3065             dnl     WX_LINK_PATH_EXIST($ac_find_libraries,$GUI_TK_LIBRARY)
3066             dnl     GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lgpe"
3067             dnl     AC_MSG_RESULT(found in $ac_find_libraries)
3068             dnl else
3069             dnl     AC_MSG_RESULT(not found)
3070             dnl fi
3071         fi
3072     fi
3073
3074     if test "$wxUSE_DFB" = 1; then
3075        PKG_PROG_PKG_CONFIG()
3076
3077        PKG_CHECK_MODULES(DIRECTFB,
3078                          [directfb >= 0.9.23],
3079                          [
3080                            wxUSE_UNIVERSAL="yes"
3081                            TOOLKIT_INCLUDE="$DIRECTFB_CFLAGS"
3082                            GUI_TK_LIBRARY="$DIRECTFB_LIBS"
3083                            TOOLKIT=DFB
3084                            GUIDIST=DFB_DIST
3085                          ],
3086                          [
3087                            AC_MSG_ERROR([DirectFB not found.])
3088                          ]
3089                          )
3090     fi
3091
3092     if test "$wxUSE_MICROWIN" = 1; then
3093         AC_MSG_CHECKING(for MicroWindows)
3094         if test "x$MICROWINDOWS" = x ; then
3095             AC_MSG_RESULT(not found)
3096             AC_MSG_ERROR([Cannot find MicroWindows library. Make sure MICROWINDOWS is set.])
3097         else
3098             AC_MSG_RESULT($MICROWINDOWS)
3099         fi
3100
3101         if test -f $MICROWINDOWS/lib/libmwin.a; then
3102             AC_MSG_RESULT(MicroWindows' libraries found.)
3103         else
3104             AC_MSG_ERROR([Cannot find MicroWindows libraries, make sure they are compiled.])
3105         fi
3106
3107         TOOLKIT_INCLUDE="-I$MICROWINDOWS/include"
3108         GUI_TK_LIBRARY="-L$MICROWINDOWS/lib -lmwin -lmwengine -mwfonts -mwdrivers -mwinlib"
3109
3110         wxUSE_UNIVERSAL="yes"
3111
3112         TOOLKIT=MICROWIN
3113         GUIDIST=MICROWIN_DIST
3114
3115         TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXMSW__ -D__WIN95__ -D__WIN32__ -DMWIN -DMICROWIN_NOCONTROLS -DMICROWIN_TODO=1"
3116     fi
3117
3118     dnl common part of X11 and Motif port checks
3119     if test "$wxUSE_X11" = 1 -o "$wxUSE_MOTIF" = 1; then
3120         dnl use standard macros to check for X headers/libs, this brings
3121         dnl support for the standard configure options --x-includes,
3122         dnl --x-libraries and --no-x
3123         AC_PATH_XTRA
3124
3125         if test "$no_x" = "yes"; then
3126           AC_MSG_ERROR([X11 not found, please use --x-includes and/or --x-libraries options (see config.log for details)])
3127         fi
3128
3129         dnl for some reason AC_PATH_XTRA seems to add -INONE and -LNONE (and
3130         dnl also sometimes -RNONE) to X_CFLAGS and X_LIBS respectively, filter
3131         dnl this junk out
3132         GUI_TK_LIBRARY=`echo $X_LIBS | sed 's/ -LNONE//' | sed 's/ -RNONE//'`
3133         TOOLKIT_INCLUDE=`echo $X_CFLAGS | sed 's/ -INONE//'`
3134         COMPILED_X_PROGRAM=0
3135
3136     fi
3137
3138     if test "$wxUSE_X11" = 1; then
3139         if test "$wxUSE_NANOX" = "yes"; then
3140             AC_MSG_CHECKING(for MicroWindows/NanoX distribution)
3141             if test "x$MICROWIN" = x ; then
3142                 AC_MSG_RESULT(not found)
3143                 AC_MSG_ERROR([Cannot find MicroWindows library. Make sure MICROWIN is set.])
3144             else
3145                 AC_MSG_RESULT($MICROWIN)
3146                 AC_DEFINE(wxUSE_NANOX)
3147             fi
3148         fi
3149
3150         if test "$wxUSE_UNICODE" = "yes"; then
3151             PKG_PROG_PKG_CONFIG()
3152
3153             PKG_CHECK_MODULES(PANGOX, pangox,
3154                 [
3155                     CFLAGS="$PANGOX_CFLAGS $CFLAGS"
3156                     CXXFLAGS="$PANGOX_CFLAGS $CXXFLAGS"
3157                     GUI_TK_LIBRARY="$GUI_TK_LIBRARY $PANGOX_LIBS"
3158                 ],
3159                 [
3160                     AC_MSG_ERROR([pangox library not found, library cannot be compiled in Unicode mode])
3161                 ]
3162             )
3163             PKG_CHECK_MODULES(PANGOFT2, pangoft2,
3164                 [
3165                     CFLAGS="$PANGOFT2_CFLAGS $CFLAGS"
3166                     CXXFLAGS="$PANGOFT2_CFLAGS $CXXFLAGS"
3167                     GUI_TK_LIBRARY="$GUI_TK_LIBRARY $PANGOFT2_LIBS"
3168                 ],
3169                 [
3170                     AC_MSG_WARN([pangoft2 library not found, library will be compiled without printing support])
3171                     wxUSE_PRINTING_ARCHITECTURE="no"
3172                 ]
3173             )
3174             PKG_CHECK_MODULES(PANGOXFT, pangoxft,
3175                 [
3176                     AC_DEFINE(HAVE_PANGO_XFT)
3177                     CFLAGS="$PANGOXFT_CFLAGS $CFLAGS"
3178                     CXXFLAGS="$PANGOXFT_CFLAGS $CXXFLAGS"
3179                     GUI_TK_LIBRARY="$GUI_TK_LIBRARY $PANGOXFT_LIBS"
3180                 ],
3181                 [
3182                     AC_MSG_WARN([pangoxft library not found, library will be compiled without anti-aliasing support])
3183                 ]
3184             )
3185             save_LIBS="$LIBS"
3186             LIBS="$LIBS $PANGOX_LIBS"
3187             AC_CHECK_FUNCS([pango_font_family_is_monospace])
3188             LIBS="$save_LIBS"
3189         fi
3190
3191         wxUSE_UNIVERSAL="yes"
3192
3193         if test "$wxUSE_NANOX" = "yes"; then
3194             TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE"
3195             TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__NANOX__ -DMWPIXEL_FORMAT=MWPF_TRUECOLOR0888 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_GIF_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DUNIX=1 -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1"
3196             GUI_TK_LIBRARY="$GUI_TK_LIBRARY \$(MICROWIN)/src/lib/libnano-X.a"
3197         else
3198             GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lX11"
3199         fi
3200
3201         TOOLKIT=X11
3202         GUIDIST=X11_DIST
3203     fi
3204
3205     if test "$wxUSE_MOTIF" = 1; then
3206         AC_MSG_CHECKING(for Motif/Lesstif headers)
3207         WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, Xm/Xm.h)
3208         if test "$ac_find_includes" != "" ; then
3209             AC_MSG_RESULT(found in $ac_find_includes)
3210             WX_INCLUDE_PATH_EXIST($ac_find_includes, $TOOLKIT_INCLUDE)
3211             TOOLKIT_INCLUDE="$TOOLKIT_INCLUDE$ac_path_to_include"
3212         else
3213             save_CFLAGS=$CFLAGS
3214             CFLAGS="$TOOLKIT_INCLUDE $CFLAGS"
3215
3216             AC_TRY_COMPILE(
3217                 [
3218                     #include <Xm/Xm.h>
3219                 ],
3220                 [
3221                     int version;
3222                     version = xmUseVersion;
3223                 ],
3224                 [
3225                     AC_MSG_RESULT(found in default search path)
3226                     COMPILED_X_PROGRAM=1
3227                 ],
3228                 [
3229                     AC_MSG_RESULT(no)
3230                     AC_MSG_ERROR(please set CPPFLAGS to contain the location of Xm/Xm.h)
3231                 ]
3232             )
3233
3234             CFLAGS=$save_CFLAGS
3235         fi
3236
3237
3238         AC_MSG_CHECKING(for Motif/Lesstif library)
3239         WX_PATH_FIND_LIBRARIES(Xm)
3240
3241         if test "x$ac_find_libraries" != "x" ; then
3242             AC_MSG_RESULT(found in $ac_find_libraries)
3243
3244             WX_LINK_PATH_EXIST($ac_find_libraries, $GUI_TK_LIBRARY)
3245             GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
3246         else
3247             dnl it might happen that we found headers in one of the standard
3248             dnl paths but the libs are elsewhere but still in default (linker)
3249             dnl path -- try to compile a test program to check for this
3250             save_CFLAGS=$CFLAGS
3251             CFLAGS="$TOOLKIT_INCLUDE $CFLAGS"
3252             save_LIBS="$LIBS"
3253             LIBS="$GUI_TK_LIBRARY -lXm -lXmu -lXext -lX11"
3254
3255             AC_TRY_LINK(
3256                 [
3257                     #include <Xm/Xm.h>
3258                 ],
3259                 [
3260                     int version;
3261                     version = xmUseVersion;
3262                 ],
3263                 [
3264                     AC_MSG_RESULT(found in default search path)
3265                     COMPILED_X_PROGRAM=1
3266                 ],
3267                 [
3268                     AC_MSG_RESULT(no)
3269                     AC_MSG_ERROR(please set LDFLAGS to contain the location of libXm)
3270                 ]
3271             )
3272
3273             CFLAGS=$save_CFLAGS
3274             LIBS="$save_LIBS"
3275         fi
3276
3277         AC_MSG_CHECKING([if we need -lXp and/or -lSM -lICE])
3278         libp_link=""
3279         libsm_ice_link=""
3280         libs_found=0
3281         for libp in "" " -lXp"; do
3282             if test "$libs_found" = 0; then
3283                 for libsm_ice in "" " -lSM -lICE"; do
3284                     if test "$libs_found" = 0; then
3285                         save_LIBS="$LIBS"
3286                         LIBS="$GUI_TK_LIBRARY -lXm ${libp} -lXmu -lXext -lXt${libsm_ice} -lX11"
3287                         save_CFLAGS=$CFLAGS
3288                         CFLAGS="$TOOLKIT_INCLUDE $CFLAGS"
3289
3290                         AC_TRY_LINK(
3291                             [
3292                                 #include <Xm/Xm.h>
3293                                 #include <Xm/List.h>
3294                             ],
3295                             [
3296                                 XmString string = NULL;
3297                                 Widget w = NULL;
3298                                 int position = 0;
3299                                 XmListAddItem(w, string, position);
3300                             ],
3301                             [
3302                                 libp_link="$libp"
3303                                 libsm_ice_link="$libsm_ice"
3304                                 AC_MSG_RESULT(
3305                                     [need${libp_link}${libsm_ice_link}])
3306                                 libs_found=1
3307                             ], []
3308                         )
3309
3310                         LIBS="$save_LIBS"
3311                         CFLAGS=$save_CFLAGS
3312                     fi
3313                 done
3314             fi
3315         done
3316
3317         if test "$libs_found" = 0; then
3318             AC_MSG_RESULT([can't find the right libraries])
3319             AC_MSG_ERROR([can't link a simple motif program])
3320         fi
3321
3322         dnl this seems to be needed under IRIX and shouldn't do any harm
3323         dnl elsewhere
3324         AC_CHECK_LIB(Sgm, [SgCreateList], [libsgm_link=" -lSgm"])
3325
3326         save_CFLAGS=$CFLAGS
3327         CFLAGS="$TOOLKIT_INCLUDE $CFLAGS"
3328
3329         AC_CACHE_CHECK([for Motif 2],
3330             wx_cv_lib_motif2,
3331             AC_TRY_COMPILE([
3332                             #include <Xm/Xm.h>
3333                            ],
3334                            [
3335                             #if XmVersion < 2000
3336                             Not Motif 2
3337                             #endif
3338                            ],
3339                            wx_cv_lib_motif2="yes",
3340                            wx_cv_lib_motif2="no"))
3341         if test "$wx_cv_lib_motif2" = "yes"; then
3342             AC_DEFINE(__WXMOTIF20__,1)
3343         else
3344             AC_DEFINE(__WXMOTIF20__,0)
3345         fi
3346
3347         AC_CACHE_CHECK([whether Motif is Lesstif],
3348             wx_cv_lib_lesstif,
3349             AC_TRY_COMPILE([
3350                             #include <Xm/Xm.h>
3351                            ],
3352                            [
3353                             #if !defined(LesstifVersion) || LesstifVersion <= 0
3354                             Not Lesstif
3355                             #endif
3356                            ],
3357                            wx_cv_lib_lesstif="yes",
3358                            wx_cv_lib_lesstif="no")
3359         )
3360         if test "$wx_cv_lib_lesstif" = "yes"; then
3361             AC_DEFINE(__WXLESSTIF__,1)
3362         else
3363             AC_DEFINE(__WXLESSTIF__,0)
3364         fi
3365
3366         CFLAGS=$save_CFLAGS
3367
3368         GUI_TK_LIBRARY="$GUI_TK_LIBRARY${libsgm_link} -lXm${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11"
3369         TOOLKIT=MOTIF
3370         GUIDIST=MOTIF_DIST
3371     fi
3372
3373     dnl more tests common to X11 and Motif:
3374     if test "$wxUSE_X11" = 1 -o "$wxUSE_MOTIF" = 1; then
3375         dnl test for external libxpm if we're configured to use it
3376         if test "$wxUSE_LIBXPM" = "sys"; then
3377             AC_MSG_CHECKING(for Xpm library)
3378             WX_PATH_FIND_LIBRARIES(Xpm)
3379             if test "$ac_find_libraries" != "" ; then
3380                 WX_LINK_PATH_EXIST($ac_find_libraries,$GUI_TK_LIBRARY)
3381                 GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
3382                 AC_MSG_RESULT(found in $ac_find_libraries)
3383
3384                 AC_CACHE_CHECK([for X11/xpm.h],
3385                     wx_cv_x11_xpm_h,
3386                     [
3387                         save_CFLAGS=$CFLAGS
3388                         CFLAGS="$TOOLKIT_INCLUDE $CFLAGS"
3389
3390                         AC_TRY_COMPILE(
3391                             [
3392                                 #include <X11/xpm.h>
3393                             ],
3394                             [
3395                                 int version;
3396                                 version = XpmLibraryVersion();
3397                             ],
3398                             wx_cv_x11_xpm_h=yes,
3399                             wx_cv_x11_xpm_h=no
3400                         )
3401
3402                         CFLAGS=$save_CFLAGS
3403                     ]
3404                 )
3405
3406                 if test $wx_cv_x11_xpm_h = "yes"; then
3407                     GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXpm"
3408                     AC_DEFINE(wxHAVE_LIB_XPM)
3409                 else
3410                     AC_MSG_WARN([built-in less efficient XPM decoder will be used])
3411                 fi
3412             fi
3413
3414         fi
3415
3416         dnl XShapeQueryExtension checks: first the library, then prototype
3417         AC_CHECK_LIB([Xext], [XShapeQueryExtension],
3418                      [
3419                       GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXext"
3420                       wxHAVE_XEXT_LIB=1
3421                      ],
3422                      [], [$GUI_TK_LIBRARY -lX11])
3423
3424         if test "$wxHAVE_XEXT_LIB" = 1; then
3425             save_CFLAGS="$CFLAGS"
3426             CFLAGS="$TOOLKIT_INCLUDE $CFLAGS"
3427
3428             AC_MSG_CHECKING([for X11/extensions/shape.h])
3429             AC_TRY_COMPILE([
3430                             #include <X11/Xlib.h>
3431                             #include <X11/extensions/shape.h>
3432                            ],
3433                            [
3434                             int dummy1, dummy2;
3435                             XShapeQueryExtension((Display*)NULL,
3436                                                  (int*)NULL, (int*)NULL);
3437                            ],
3438                            [
3439                             AC_DEFINE(HAVE_XSHAPE)
3440                             AC_MSG_RESULT([found])
3441                            ],
3442                            [
3443                             AC_MSG_RESULT([not found])
3444                            ])
3445             CFLAGS="$save_CFLAGS"
3446
3447         fi
3448     fi
3449
3450     if test "$wxUSE_OSX_CARBON" = 1; then
3451         AC_MSG_CHECKING([for compiler syntax to enable Pascal strings])
3452         if test "$GCC" = yes; then
3453             AC_MSG_RESULT([gcc])
3454             CPPFLAGS_PASCAL="-fpascal-strings"
3455         elif test "`echo $CXX | sed -e 's@.*/@@'`" = "xlC"; then
3456             AC_MSG_RESULT([xlc])
3457             CPPFLAGS_PASCAL="-qmacpstr"
3458         else
3459             AC_MSG_RESULT([none])
3460         fi
3461
3462         if test "x$wxUSE_UNIX" = "xyes"; then
3463             CPPFLAGS="$CPPFLAGS_PASCAL -I/Developer/Headers/FlatCarbon $CPPFLAGS"
3464         else
3465             dnl platform.h needs TARGET_CARBON before setup.h
3466             CPPFLAGS="$CPPFLAGS_PASCAL -DTARGET_CARBON $CPPFLAGS"
3467         fi
3468
3469         TOOLKIT=OSX_CARBON
3470         dnl we can't call this MAC_DIST or autoconf thinks its a macro
3471         GUIDIST=OSX_CARBON_DIST
3472         dnl wxMac version of wxBase and wxCocoa or wxBase-only built on Darwin
3473         dnl are different, so they need different names:
3474         WXBASEPORT="_carbon"
3475
3476         dnl in addition to defining __WXOSX_CARBON__ for this toolkit we want
3477         dnl to also define these extra symbols to make it possible to test for
3478         dnl any Mac port (__WXMAC__ is for backwards compatibility, __WXOSX__
3479         dnl is a new name)
3480         TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXMAC__ -D__WXOSX__"
3481     fi
3482
3483     if test "$wxUSE_OSX_COCOA" = 1; then
3484         TOOLKIT=OSX_COCOA
3485         GUIDIST=OSX_COCOA_DIST
3486
3487         dnl see the comment above in wxUSE_OSX_CARBON branch
3488         TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXMAC__ -D__WXOSX__"
3489     fi
3490
3491     if test "$wxUSE_OSX_IPHONE" = 1; then
3492         TOOLKIT=OSX_IPHONE
3493     fi
3494
3495     if test "$wxUSE_OLD_COCOA" = 1; then
3496         TOOLKIT=COCOA
3497         GUIDIST=COCOA_DIST
3498     fi
3499
3500     if test "$wxUSE_PM" = 1; then
3501         TOOLKIT=PM
3502         GUIDIST=PM_DIST
3503         AC_CACHE_CHECK([for type SPBCDATA],
3504             wx_cv_spbcdata,
3505             [
3506                 AC_TRY_COMPILE(
3507                     [
3508                         #define INCL_PM
3509                         #include <os2.h>
3510                     ],
3511                     [
3512                         SPBCDATA test;
3513                     ],
3514                     wx_cv_spbcdata=yes,
3515                     wx_cv_spbcdata=no
3516                 )
3517             ]
3518         )
3519
3520         if test $wx_cv_spbcdata = "yes"; then
3521             AC_DEFINE(HAVE_SPBCDATA)
3522         fi
3523     fi
3524
3525     dnl the name of the directory where the files for this toolkit live
3526     if test "$TOOLKIT" = "PM" ; then
3527         TOOLKIT_DIR="os2"
3528     else
3529         TOOLKIT_DIR=`echo ${TOOLKIT} | tr '[[A-Z]]' '[[a-z]]'`
3530     fi
3531
3532     if test "$wxUSE_UNIVERSAL" = "yes"; then
3533         TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXUNIVERSAL__"
3534         WIDGET_SET=univ
3535     fi
3536
3537     dnl distribute samples/demos/utils with GUI versions
3538     GUIDIST="${GUIDIST} SAMPLES_DIST DEMOS_DIST UTILS_DIST MISC_DIST"
3539     DISTDIR="wx\$(TOOLKIT)"
3540 else
3541     USE_GUI=0
3542
3543     dnl this doesn't quite work right for wxBase, but the places
3544     dnl where it is wrong aren't fatal (yet) though.
3545     TOOLKIT_DIR="base"
3546
3547     dnl the sources, their dependenices and the headers
3548     if test "$USE_WIN32" = 1 ; then
3549         dnl yes, the toolkit for wxBase on win32 is actually MSW
3550         dnl wxBase on unix does not need a 'TOOLKIT' defined.
3551         TOOLKIT="MSW"
3552     fi
3553
3554     dnl distribute only wxBase sources/headers
3555     GUIDIST="BASE_DIST"
3556     DISTDIR="wxBase"
3557 fi
3558
3559
3560 dnl ---------------------------------------------------------------------------
3561 dnl Optional libraries included when system library is not used
3562 dnl ---------------------------------------------------------------------------
3563
3564 dnl do this after test for X11 above so that we have a chance of finding Xlib.h
3565 if test "$wxUSE_GUI" = "yes"; then
3566     if test "$wxUSE_UNIX" = "yes" -a "$wxUSE_PM" != 1; then
3567         dnl defines HAVE_X11_XKBLIB_H
3568         AC_CHECK_HEADERS([X11/Xlib.h],,, [ ])
3569         AC_CHECK_HEADERS([X11/XKBlib.h],,,
3570                          [
3571                           #if HAVE_X11_XLIB_H
3572                             #include <X11/Xlib.h>
3573                           #endif
3574                          ])
3575     fi
3576 fi
3577
3578
3579 dnl ---------------------------------------------------------------------------
3580 dnl wxDisplay checks
3581 dnl ---------------------------------------------------------------------------
3582
3583 USE_XINERAMA=0
3584 if test "$wxUSE_DISPLAY" = "yes"; then
3585     dnl Xinerama is used for wxGTK1/wxX11/wxMotif only
3586     if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_X11" = 1 -o "$WXGTK1" = 1; then
3587         WX_FIND_LIB(Xinerama, XineramaQueryScreens)
3588         if test "$ac_find_libraries" != "" ; then
3589             if test "$ac_find_libraries" != "std" ; then
3590               WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS])
3591               if test "$ac_path_to_link" != " -L/usr/lib" ; then
3592                   LDFLAGS="$LDFLAGS $ac_path_to_link"
3593               fi
3594             fi
3595             USE_XINERAMA=1
3596             GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXinerama"
3597         else
3598             AC_MSG_WARN([Xinerama not found; disabling wxDisplay])
3599             wxUSE_DISPLAY="no"
3600         fi
3601     elif test "$wxUSE_MSW" = 1; then
3602         dnl DirectDraw for MSW - optionally used by WxDisplay.
3603         AC_CHECK_HEADER([ddraw.h], [], [], [#include <windows.h>])
3604     fi
3605 fi
3606
3607 if test "$wxUSE_DISPLAY" = "yes"; then
3608     dnl wxGTK2 needs Xxf86vm as well as Xinerama-using ports from above
3609     if test "$USE_XINERAMA" = 1 -o "$wxUSE_GTK" = 1; then
3610         WX_FIND_LIB(Xxf86vm, XF86VidModeQueryExtension)
3611         if test "$ac_find_libraries" != "" ; then
3612             AC_CHECK_HEADERS([X11/extensions/xf86vmode.h],
3613                              [
3614                               GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXxf86vm"
3615                              ],
3616                              [],
3617                              [
3618                                   #if HAVE_X11_XLIB_H
3619                                     #include <X11/Xlib.h>
3620                                   #endif
3621                              ])
3622         fi
3623     fi
3624 fi
3625
3626 dnl ---------------------------------------------------------------------------
3627 dnl X11 session management
3628 dnl ---------------------------------------------------------------------------
3629 if test "$wxUSE_DETECT_SM" = "yes"; then
3630     if test "$wxUSE_UNIX" = "yes" -a "$wxUSE_MAC" != 1 -a "$wxUSE_OLD_COCOA" != 1; then
3631         WX_FIND_LIB(SM, SmcOpenConnection)
3632         if test "$ac_find_libraries" != "" ; then
3633             if test "$ac_find_libraries" != "std" ; then
3634               WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS])
3635               if test "$ac_path_to_link" != " -L/usr/lib" ; then
3636                 LDFLAGS="$LDFLAGS $ac_path_to_link"
3637               fi
3638             fi
3639             GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lSM"
3640         else
3641             AC_MSG_WARN([libSM not found; disabling session management detection])
3642             wxUSE_DETECT_SM="no"
3643         fi
3644     else
3645         wxUSE_DETECT_SM="no"
3646     fi
3647 fi
3648
3649
3650 dnl ---------------------------------------------------------------------------
3651 dnl OpenGL libraries
3652 dnl ---------------------------------------------------------------------------
3653
3654 USE_OPENGL=0
3655 if test "$wxUSE_OPENGL" = "yes" -o "$wxUSE_OPENGL" = "auto"; then
3656
3657     dnl look in glcanvas.h for the list of platforms supported by wxGlCanvas:
3658
3659     if test "$wxUSE_OSX_CARBON" = 1 -o "$wxUSE_OSX_COCOA" = 1 -o "$wxUSE_OLD_COCOA" = 1; then
3660         OPENGL_LIBS="-framework OpenGL -framework AGL"
3661     elif test "$wxUSE_MSW" = 1; then
3662         OPENGL_LIBS="-lopengl32 -lglu32"
3663     elif test "$wxUSE_MOTIF" = 1 -o "$wxUSE_X11" = 1 -o "$wxUSE_GTK" = 1; then
3664
3665         dnl adjust CPPFLAGS to include GL/gl.h location if necessary
3666         dnl (/opt/graphics/OpenGL is for HP-UX systems, bug 925307)
3667         AC_MSG_CHECKING([for OpenGL headers])
3668         WX_PATH_FIND_INCLUDES([$SEARCH_INCLUDE /opt/graphics/OpenGL/include], GL/gl.h)
3669         if test "$ac_find_includes" != "" ; then
3670             AC_MSG_RESULT(found in $ac_find_includes)
3671             WX_INCLUDE_PATH_EXIST($ac_find_includes, $CPPFLAGS)
3672             CPPFLAGS="$ac_path_to_include $CPPFLAGS"
3673         else
3674             AC_MSG_RESULT([not found])
3675         fi
3676
3677         AC_CHECK_HEADER(GL/gl.h, [
3678             AC_CHECK_HEADER(GL/glu.h, [
3679                 found_gl=0
3680
3681                 WX_FIND_LIB(GL, glBegin, [/opt/graphics/OpenGL/lib])
3682                 if test "$ac_find_libraries" != "" ; then
3683                     if test "$ac_find_libraries" != "std" ; then
3684                       WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS])
3685                       if test "$ac_path_to_link" != " -L/usr/lib" ; then
3686                         LDFLAGS_GL="$ac_path_to_link"
3687                       fi
3688                     fi
3689
3690                     dnl don't suppose that libGL and libGLU are always in the
3691                     dnl same directory -- this is not true for some common
3692                     dnl distributions
3693                     WX_FIND_LIB(GLU, gluBeginCurve, [/opt/graphics/OpenGL/lib])
3694                     if test "$ac_find_libraries" != "" ; then
3695                       if test "$ac_find_libraries" != "std" ; then
3696                         WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS])
3697                         if test "$ac_path_to_link" != " -L/usr/lib" -a \
3698                                 "$ac_path_to_link" != "$LDFLAGS_GL" ; then
3699                           LDFLAGS_GL="$LDFLAGS_GL$ac_path_to_link"
3700                         fi
3701                       fi
3702
3703                         found_gl=1
3704                         OPENGL_LIBS="-lGL -lGLU"
3705                     fi
3706                 fi
3707
3708                 if test "$found_gl" != 1; then
3709                     WX_FIND_LIB(MesaGL, glEnable, [/opt/graphics/OpenGL/lib])
3710                     if test "$ac_find_libraries" != "" ; then
3711                       if test "$ac_find_libraries" != "std" ; then
3712                         WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS])
3713                         if test "$ac_path_to_link" != " -L/usr/lib" ; then
3714                           LDFLAGS_GL="$LDFLAGS_GL$ac_path_to_link"
3715                         fi
3716                       fi
3717                       OPENGL_LIBS="-lMesaGL -lMesaGLU"
3718                     fi
3719                 fi
3720             ],, [ ])
3721         ],
3722         [],
3723         [ ])
3724
3725         if test "x$OPENGL_LIBS" = "x"; then
3726             if test "$wxUSE_OPENGL" = "yes"; then
3727                 AC_MSG_ERROR([OpenGL libraries not available])
3728             else
3729                 dnl case wxUSE_OPENGL=auto
3730                 AC_MSG_WARN([OpenGL libraries not available, disabling support for OpenGL])
3731                 wxUSE_OPENGL=no
3732                 USE_OPENGL=0
3733             fi
3734         fi
3735     else
3736         AC_MSG_WARN([wxGLCanvas not implemented for this port, library will be compiled without it.])
3737         wxUSE_OPENGL="no"
3738     fi
3739
3740     if test "$wxUSE_OPENGL" = "auto"; then
3741         dnl if the OpenGL libraries were unavailable, this would have been
3742         dnl changed to "no" above, if it wasn't, change it to "yes" as we've
3743         dnl verified that we can indeed use OpenGL
3744         wxUSE_OPENGL=yes
3745     fi
3746
3747     if test "$wxUSE_OPENGL" = "yes"; then
3748         USE_OPENGL=1
3749         AC_DEFINE(wxUSE_OPENGL)
3750         AC_DEFINE(wxUSE_GLCANVAS)
3751         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS opengl opengl/cube opengl/penguin opengl/isosurf"
3752     fi
3753 fi
3754
3755
3756 dnl the symbol which allows conditional compilation for the given toolkit
3757 if test -n "$TOOLKIT" ; then
3758     TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WX${TOOLKIT}__"
3759 fi
3760
3761
3762 dnl --- the marker for quick search, leave it here: SHARED_LIB_SETUP ---
3763
3764 if test "$wxUSE_SHARED" = "yes"; then
3765     case "${host}" in
3766       *-pc-msdosdjgpp )
3767         dnl only static for now
3768         wxUSE_SHARED=no
3769         AC_MSG_WARN([Host system doesn't support shared libraries, disabling])
3770       ;;
3771     esac
3772 fi
3773
3774 if test "$wxUSE_SHARED" = "yes"; then
3775
3776     dnl use versioned symbols if available on the platform
3777     WX_VERSIONED_SYMBOLS([\$(wx_top_builddir)/version-script])
3778
3779     dnl test for GCC's visibility support (sets CFLAGS_VISIBILITY, which is
3780     dnl assigned to CFLAGS and CXXFLAGS below)
3781     if test "$wxUSE_VISIBILITY" != "no"; then
3782         WX_VISIBILITY
3783     fi
3784
3785     dnl test for Sun CC which can be used under both Solaris and Linux
3786     if test "x$SUNCXX" = xyes; then
3787         SAMPLES_RPATH_FLAG="-R\$(wx_top_builddir)/lib"
3788         WXCONFIG_RPATH="-R\$libdir"
3789     else
3790     case "${host}" in
3791       *-*-linux* | *-*-gnu* )
3792         SAMPLES_RPATH_FLAG="-Wl,-rpath,\$(wx_top_builddir)/lib"
3793         WXCONFIG_RPATH="-Wl,-rpath,\$libdir"
3794         ;;
3795
3796       *-*-solaris2* )
3797         dnl here we know that Sun CC is not used as we tested for it above,
3798         dnl hence we must be using gcc
3799
3800         dnl newer versions of gcc need -isystem to compile X headers on
3801         dnl Solaris (which use old style C syntax)
3802         CPPFLAGS="-isystem /usr/openwin/include $CPPFLAGS"
3803
3804         dnl gcc may use Sun's ld, in which case -rpath gives a confusing
3805         dnl error message. We have to try both -Wl,-rpath and -Wl,-R:
3806         saveLdflags="$LDFLAGS"
3807         LDFLAGS="$saveLdflags -Wl,-rpath,/"
3808         AC_MSG_CHECKING([if the linker accepts -rpath])
3809         AC_TRY_LINK(
3810             [],[],
3811             [
3812                 AC_MSG_RESULT([yes])
3813                 SAMPLES_RPATH_FLAG="-Wl,-rpath,\$(wx_top_builddir)/lib"
3814                 WXCONFIG_RPATH="-Wl,-rpath,\$libdir"
3815             ],[
3816                 AC_MSG_RESULT([no])
3817                 AC_MSG_CHECKING([if the linker accepts -R])
3818                 LDFLAGS="$saveLdflags -Wl,-R,/"
3819                 AC_TRY_LINK(
3820                     [],[],
3821                     [
3822                         AC_MSG_RESULT([yes])
3823                         SAMPLES_RPATH_FLAG="-Wl,-R,\$(wx_top_builddir)/lib"
3824                         WXCONFIG_RPATH="-Wl,-R,\$libdir"
3825                     ],[
3826                         AC_MSG_RESULT([no])
3827                     ])
3828             ])
3829         LDFLAGS="$saveLdflags"
3830       ;;
3831
3832       *-*-darwin* )
3833         install_name_tool=`which ${HOST_PREFIX}install_name_tool`
3834         if test "$install_name_tool" -a -x "$install_name_tool"; then
3835             DYLIB_RPATH_POSTLINK="${HOST_PREFIX}install_name_tool -id \$@ \$@"
3836             cat <<EOF >change-install-names
3837 #!/bin/sh
3838 libnames=\`cd \${2} ; ls -1 | grep '\.[[0-9]][[0-9]]*\.dylib\$'\`
3839 for i in \${libnames} ; do
3840     ${HOST_PREFIX}install_name_tool -id \${3}/\${i} \${1}/\${i}
3841     for dep in \${libnames} ; do
3842         ${HOST_PREFIX}install_name_tool -change \${2}/\${dep} \${3}/\${dep} \${1}/\${i}
3843     done
3844 done
3845 EOF
3846             chmod +x change-install-names
3847             DYLIB_RPATH_INSTALL="\$(wx_top_builddir)/change-install-names \${DESTDIR}\${libdir} \$(wx_top_builddir)/lib \${libdir}"
3848         fi
3849
3850         dnl the HEADER_PAD_OPTION is required by some wx samples to avoid the error:
3851         dnl "install_name_tool: changing install names can't be redone for: the_exe_name
3852         dnl (for architecture ppc) because larger updated load commands do not fit
3853         dnl (the program must be relinked)"
3854         HEADER_PAD_OPTION="-headerpad_max_install_names"
3855       ;;
3856
3857       *-*-cygwin* | *-*-mingw32* )
3858         ;;
3859
3860       *-*-hpux* )
3861         SAMPLES_RPATH_FLAG="-Wl,+b,\$(wx_top_builddir)/lib"
3862         WXCONFIG_RPATH="-Wl,+b,\$libdir"
3863         ;;
3864
3865     esac
3866     fi
3867
3868     dnl this one shouldn't be used for the library build so put it in a
3869     dnl separate variable from WXCONFIG_CPPFLAGS
3870     WXCONFIG_ONLY_CPPFLAGS="$WXCONFIG_ONLY_CPPFLAGS -DWXUSINGDLL"
3871
3872     if test $wxUSE_RPATH = "no"; then
3873         SAMPLES_RPATH_FLAG=''
3874         DYLIB_PATH_POSTLINK=''
3875         WXCONFIG_RPATH=''
3876     fi
3877
3878     SHARED=1
3879
3880 else
3881
3882     config_linkage_component="-static"
3883     SHARED=0
3884
3885 fi
3886
3887
3888 UNICODE=0
3889 lib_unicode_suffix=
3890 WX_CHARTYPE="ansi"
3891 if test "$wxUSE_UNICODE" = "yes"; then
3892     lib_unicode_suffix=u
3893     WX_CHARTYPE="unicode"
3894     UNICODE=1
3895 fi
3896
3897 WX_FLAVOUR=${WX_FLAVOUR:+-$WX_FLAVOUR}
3898 WX_LIB_FLAVOUR=`echo $WX_FLAVOUR | tr '-' '_'`
3899
3900 DEBUG_INFO=0
3901 if test "$wxUSE_DEBUG_INFO" = "yes"; then
3902     DEBUG_INFO=1
3903 fi
3904
3905 WX_VERSION_TAG=`echo WX${lib_unicode_suffix}${WX_LIB_FLAVOUR}_${WX_RELEASE} | tr '[[a-z]]' '[[A-Z]]'`
3906
3907 TOOLCHAIN_NAME="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${WX_LIB_FLAVOUR}-${WX_RELEASE}${HOST_SUFFIX}"
3908
3909 TOOLCHAIN_FULLNAME="${HOST_PREFIX}${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}-${WX_CHARTYPE}${config_linkage_component}-${WX_RELEASE}${WX_FLAVOUR}"
3910
3911 dnl library link name
3912 dnl These just save us from exporting lib_{unicode,flavour}_suffix.
3913 dnl If we ever need to do that, we won't need to keep these.
3914
3915 if test "$wxUSE_OSX_CARBON" = 1 -o "$wxUSE_OSX_COCOA" = 1 -o "$wxUSE_OLD_COCOA" = 1; then
3916     WX_LIBRARY_BASENAME_NOGUI="wx_base${lib_unicode_suffix}${WX_LIB_FLAVOUR}"
3917 else
3918     WX_LIBRARY_BASENAME_NOGUI="wx_base${WXBASEPORT}${lib_unicode_suffix}${WX_LIB_FLAVOUR}"
3919 fi
3920 if test "${TOOLKIT_DIR}" = "os2"; then
3921     WX_LIBRARY_BASENAME_GUI="wx_pm${WIDGET_SET}${lib_unicode_suffix}${WX_LIB_FLAVOUR}"
3922 else
3923     WX_LIBRARY_BASENAME_GUI="wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${WX_LIB_FLAVOUR}"
3924 fi
3925
3926
3927
3928 if test "$wxUSE_OLD_COCOA" = 1; then
3929     AC_LANG_SAVE
3930     AC_WX_LANG_OBJECTIVEC
3931 dnl Recent AppKit/NSEvent.h include parts of IOKit which eventually
3932 dnl gets IOKit/graphics/IOGraphicsTypes.h included which typedefs
3933 dnl Point but only if MacTypes.h was not included first.  Of course,
3934 dnl if MacTypes.h is included later then you're screwed when it
3935 dnl tries to typedef Point.  Defining __Point__ will cause IOGraphicsTypes.h
3936 dnl to not typedef Point and thus fix the problem.
3937     AC_MSG_CHECKING([if AppKit/NSEvent.h conflicts with CoreFoundation])
3938     AC_TRY_COMPILE([#include <AppKit/NSEvent.h>
3939 #include <CoreFoundation/CoreFoundation.h>
3940         ],[],
3941         [AC_MSG_RESULT([no])],
3942         [AC_MSG_RESULT([yes])
3943         AC_MSG_CHECKING([if defining __Point__ will fix it])
3944         AC_TRY_COMPILE([#define __Point__ 1
3945 #include <AppKit/NSEvent.h>
3946 #include <CoreFoundation/CoreFoundation.h>
3947             ],[],
3948             [AC_MSG_RESULT([yes])
3949             AC_DEFINE(__Point__)
3950             ],
3951             [AC_MSG_FAILURE([no])]
3952         )]
3953     )
3954     AC_LANG_RESTORE
3955 fi
3956
3957 dnl ---------------------------------------------------------------------------
3958 dnl Checks for typedefs
3959 dnl ---------------------------------------------------------------------------
3960
3961 dnl   defines mode_t if not already defined
3962 AC_TYPE_MODE_T
3963 dnl   defines off_t if not already defined
3964 AC_TYPE_OFF_T
3965 dnl   defines pid_t if not already defined
3966 AC_TYPE_PID_T
3967 dnl   defines size_t if not already defined
3968 AC_TYPE_SIZE_T
3969
3970 dnl sets HAVE_SSIZE_T if ssize_t is defined
3971 AC_CHECK_TYPES(ssize_t)
3972
3973 dnl check what exactly size_t is on this machine - this is necessary to avoid
3974 dnl ambiguous overloads in several places, notably wx/string.h and wx/array.h
3975 AC_LANG_PUSH(C++) dnl tests below use overloaded functions and so need C++
3976 AC_CACHE_CHECK([if size_t is unsigned int],
3977     wx_cv_size_t_is_uint,
3978     [
3979     dnl an obvious check like AC_TRY_COMPILE[struct Foo { ... };] doesn't work
3980     dnl with egcs (at least) up to 1.1.1 as it allows you to compile duplicate
3981     dnl methods in a local class (i.e. class inside a function) declaration
3982     dnl without any objections!!
3983     dnl
3984     dnl hence the hack below: we must have Foo at global scope!
3985     AC_TRY_COMPILE([#include <stddef.h>],
3986         [
3987             return 0; }
3988
3989             struct Foo { void foo(size_t); void foo(unsigned int); };
3990
3991             int bar() {
3992         ],
3993         wx_cv_size_t_is_uint=no,
3994         wx_cv_size_t_is_uint=yes
3995     )
3996     ]
3997 )
3998
3999 if test "$wx_cv_size_t_is_uint" = "yes"; then
4000     AC_DEFINE(wxSIZE_T_IS_UINT)
4001 else
4002     AC_CACHE_CHECK([if size_t is unsigned long],
4003         wx_cv_size_t_is_ulong,
4004         AC_TRY_COMPILE([#include <stddef.h>],
4005             [
4006                 return 0; }
4007
4008                 struct Foo { void foo(size_t); void foo(unsigned long); };
4009
4010                 int bar() {
4011             ],
4012             wx_cv_size_t_is_ulong=no,
4013             wx_cv_size_t_is_ulong=yes
4014         )
4015     )
4016
4017     if test "$wx_cv_size_t_is_ulong" = "yes"; then
4018         AC_DEFINE(wxSIZE_T_IS_ULONG)
4019     fi
4020 fi
4021
4022 AC_CACHE_CHECK([if wchar_t is separate type],
4023     wx_cv_wchar_t_is_separate_type,
4024     AC_TRY_COMPILE([#include <wchar.h>],
4025         [
4026             return 0; }
4027
4028             struct Foo { void foo(wchar_t);
4029                          void foo(unsigned short);
4030                          void foo(unsigned int);
4031                          void foo(unsigned long); };
4032
4033             int bar() {
4034         ],
4035         wx_cv_wchar_t_is_separate_type=yes,
4036         wx_cv_wchar_t_is_separate_type=no
4037     )
4038 )
4039
4040 if test "$wx_cv_wchar_t_is_separate_type" = "yes"; then
4041     AC_DEFINE(wxWCHAR_T_IS_REAL_TYPE, 1)
4042 else
4043     AC_DEFINE(wxWCHAR_T_IS_REAL_TYPE, 0)
4044 fi
4045
4046 AC_LANG_POP() dnl C++
4047
4048 dnl ---------------------------------------------------------------------------
4049 dnl Checks for structures
4050 dnl ---------------------------------------------------------------------------
4051
4052 dnl does passwd struct has the pw_gecos field?
4053 AC_CACHE_CHECK([for pw_gecos in struct passwd], wx_cv_struct_pw_gecos,
4054     [
4055         AC_TRY_COMPILE([#include <pwd.h>],
4056              [
4057                 char *p;
4058                 struct passwd *pw;
4059                 p = pw->pw_gecos;
4060              ],
4061              [
4062                 wx_cv_struct_pw_gecos=yes
4063              ],
4064              [
4065                 wx_cv_struct_pw_gecos=no
4066              ]
4067         )
4068     ]
4069 )
4070
4071 if test "$wx_cv_struct_pw_gecos" = "yes"; then
4072     AC_DEFINE(HAVE_PW_GECOS)
4073 fi
4074
4075 dnl ---------------------------------------------------------------------------
4076 dnl Check for functions
4077 dnl ---------------------------------------------------------------------------
4078
4079 dnl check for wcslen in all possible places
4080 WCSLEN_FOUND=0
4081 WCHAR_LINK=
4082 AC_CHECK_FUNCS(wcslen, WCSLEN_FOUND=1)
4083
4084 if test "$WCSLEN_FOUND" = 0; then
4085     if test "$TOOLKIT" = "MSW"; then
4086         AC_CHECK_LIB(msvcrt, wcslen, WCHAR_OK=1)
4087     else
4088         AC_CHECK_LIB(w, wcslen, [
4089                         WCHAR_LINK=" -lw"
4090                         WCSLEN_FOUND=1
4091                     ])
4092     fi
4093 fi
4094
4095 if test "$WCSLEN_FOUND" = 1; then
4096     AC_DEFINE(HAVE_WCSLEN)
4097 fi
4098
4099 AC_CHECK_FUNCS(strnlen)
4100
4101 dnl OS X provides the wide character functions starting from 10.7 so our tests
4102 dnl would succeed if we're configuring under 10.7 or later, yet the compiled
4103 dnl programs would fail if ran under 10.6 or earlier. To avoid this problem we
4104 dnl define the corresponding HAVE_XXX in wx/osx/config_xcode.h instead of
4105 dnl testing for them here.
4106 if test "$wxUSE_MAC" != 1; then
4107     AC_CHECK_FUNCS([wcsdup wcsftime wcsnlen wcscasecmp wcsncasecmp])
4108 fi
4109
4110 dnl On HP-UX aCC need this define to find mbstrtowcs() &c
4111 dnl Can't be used for g++ since the mbstate_t in wchar.h can conflict
4112 dnl with g++'s in <cwchar> (unless -D_INCLUDE__STDC_A1_SOURCE is in the
4113 dnl flags when g++ is configured, it will declare its own).
4114 if test "$USE_HPUX" = 1 -a "$GCC" != "yes"; then
4115     CPPFLAGS="-D_INCLUDE__STDC_A1_SOURCE $CPPFLAGS"
4116 fi
4117
4118 dnl Try to use wcsrtombs instead of wcstombs which is buggy in old GNU
4119 dnl libc versions if possible. AC_CHECK_FUNCS only checks it's in the
4120 dnl library, not the header, so do a header check for mbstate_t first.
4121 AC_CHECK_TYPES([mbstate_t],
4122                [AC_CHECK_FUNCS(wcsrtombs)],
4123                [],
4124                [#include <wchar.h>])
4125
4126 dnl check for vsnprintf() -- a safe version of vsprintf())
4127 dnl
4128 dnl the trouble here is that on some systems (e.g. HP-UX 10) this function is
4129 dnl present in libc but not in the system headers and so AC_CHECK_FUNCS (which,
4130 dnl stupidly, provides a dummy function declaration inside its extension)
4131 dnl succeeds, even with C++ compiler, but the compilation of wxWidgets fails
4132 dnl
4133 dnl so we first check if the function is in the library
4134 dnl
4135 dnl FIXME: replace this mess with WX_CHECK_FUNCS()
4136 AC_CHECK_FUNCS(snprintf vsnprintf vsscanf)
4137
4138 AC_LANG_PUSH(C++)
4139 if test "$ac_cv_func_vsnprintf" = "yes"; then
4140     dnl yes it is -- now check if it is in the headers
4141     AC_CACHE_CHECK([for vsnprintf declaration], wx_cv_func_vsnprintf_decl,
4142         [
4143             dnl our troubles are not over: HP-UX 11 prototypes vsnprintf() as
4144             dnl taking "char *" and not "const char *" so test for this too
4145             AC_TRY_COMPILE(
4146                 [
4147                     #include <stdio.h>
4148                     #include <stdarg.h>
4149                 ],
4150                 [
4151                     char *buf;
4152                     va_list ap;
4153                     vsnprintf(buf, 10u, "%s", ap);
4154                 ],
4155                 wx_cv_func_vsnprintf_decl=yes,
4156                 wx_cv_func_vsnprintf_decl=no
4157             )
4158         ]
4159     )
4160
4161     if test "$wx_cv_func_vsnprintf_decl" = "yes"; then
4162         AC_DEFINE(HAVE_VSNPRINTF_DECL)
4163
4164         dnl we know there is a vsnprintf declaration, but some old headers
4165         dnl may have one taking a "char *" format instead of "const char *"
4166         AC_CACHE_CHECK([if vsnprintf declaration is broken], wx_cv_func_broken_vsnprintf_decl,
4167             [
4168                 AC_TRY_COMPILE(
4169                     [
4170                         #include <stdio.h>
4171                         #include <stdarg.h>
4172                         #ifdef __MSL__
4173                         #if __MSL__ >= 0x6000
4174                         namespace std {}
4175                         using namespace std;
4176                         #endif
4177                         #endif
4178                     ],
4179                     [
4180                         char *buf;
4181                         va_list ap;
4182                         const char *fmt = "%s";
4183                         vsnprintf(buf, 10u, fmt, ap);
4184                     ],
4185                     wx_cv_func_broken_vsnprintf_decl=no,
4186                     wx_cv_func_broken_vsnprintf_decl=yes
4187                 )
4188             ]
4189         )
4190
4191         if test "$wx_cv_func_broken_vsnprintf_decl" = "yes"; then
4192             AC_DEFINE(HAVE_BROKEN_VSNPRINTF_DECL)
4193         fi
4194     fi
4195 fi
4196
4197 dnl the same as above but for snprintf() now: it's not present in at least AIX
4198 dnl 4.2 headers
4199 if test "$ac_cv_func_snprintf" = "yes"; then
4200     AC_CACHE_CHECK([for snprintf declaration], wx_cv_func_snprintf_decl,
4201         [
4202             AC_TRY_COMPILE(
4203                 [
4204                     #include <stdio.h>
4205                     #include <stdarg.h>
4206                     #ifdef __MSL__
4207                     #if __MSL__ >= 0x6000
4208                     namespace std {}
4209                     using namespace std;
4210                     #endif
4211                     #endif
4212                 ],
4213                 [
4214                     char *buf;
4215                     snprintf(buf, 10u, "%s", "wx");
4216                 ],
4217                 wx_cv_func_snprintf_decl=yes,
4218                 wx_cv_func_snprintf_decl=no
4219             )
4220         ]
4221     )
4222
4223     if test "$wx_cv_func_snprintf_decl" = "yes"; then
4224         AC_DEFINE(HAVE_SNPRINTF_DECL)
4225     fi
4226
4227     if test "$wxUSE_PRINTF_POS_PARAMS" = "yes"; then
4228
4229         dnl check if snprintf() has support for positional arguments
4230         dnl NB: if snprintf() has positional support we can safely suppose that also
4231         dnl     other *printf() functions support them as they all belong to the same
4232         dnl     family and they all fallback to the same implementation
4233         AC_CACHE_CHECK([if snprintf supports positional arguments], wx_cv_func_snprintf_pos_params,
4234             [
4235                 AC_TRY_RUN(
4236                     [
4237                         #include <stdio.h>
4238
4239                         int main (void)
4240                         {
4241                             char buffer[128];
4242                             snprintf (buffer, 128, "%2$d %3$d %1$d", 1, 2, 3);
4243                             if (strcmp ("2 3 1", buffer) == 0)
4244                                 exit (0);
4245                             exit (1);
4246                         }
4247                     ],
4248                     wx_cv_func_snprintf_pos_params=no,
4249                     wx_cv_func_snprintf_pos_params=yes,
4250                     dnl be pessimistic when cross-compiling
4251                     [
4252                         AC_MSG_WARN([Assuming Unix98 printf() is not available,
4253 define HAVE_UNIX98_PRINTF as 1 in setup.h if it is available.])
4254                         wx_cv_func_snprintf_pos_params=no
4255                     ]
4256                 )
4257             ]
4258         )
4259
4260         if test "$wx_cv_func_snprintf_pos_params" = "yes"; then
4261             AC_DEFINE(HAVE_UNIX98_PRINTF)
4262         fi
4263     fi
4264 fi
4265
4266 dnl the same as above but for vsscanf() now: it's not present in at least
4267 dnl Solaris 9 headers for gcc-3.4 (due to fixinclude's processing of stdio.h)
4268 if test "$ac_cv_func_vsscanf" = "yes"; then
4269     AC_CACHE_CHECK([for vsscanf declaration], wx_cv_func_vsscanf_decl,
4270         [
4271             AC_TRY_COMPILE(
4272                 [
4273                     #include <stdio.h>
4274                     #include <stdarg.h>
4275                     #ifdef __MSL__
4276                     #if __MSL__ >= 0x6000
4277                     namespace std {}
4278                     using namespace std;
4279                     #endif
4280                     #endif
4281                 ],
4282                 [
4283                     char *buf;
4284                     va_list args;
4285                     vsscanf(buf, "%s", args);
4286                 ],
4287                 wx_cv_func_vsscanf_decl=yes,
4288                 wx_cv_func_vsscanf_decl=no
4289             )
4290         ]
4291     )
4292
4293     if test "$wx_cv_func_vsscanf_decl" = "yes"; then
4294         AC_DEFINE(HAVE_VSSCANF_DECL)
4295     fi
4296 fi
4297 AC_LANG_POP()
4298
4299 if test "$wxUSE_UNICODE" = yes; then
4300
4301     dnl also look if we have wide char IO functions, notice that [f]putws are
4302     dnl declared in special widec.h under Solaris
4303     wchar_headers="#include <stdio.h>
4304 #include <wchar.h>"
4305     case "${host}" in
4306         *-*-solaris2* )
4307             AC_CHECK_HEADERS(widec.h,,, [AC_INCLUDES_DEFAULT()])
4308             if test "$ac_cv_header_widec_h" = "yes"; then
4309                 wchar_headers="$wchar_headers
4310 #include <widec.h>"
4311             fi
4312     esac
4313
4314     WX_CHECK_FUNCS(putws fputws wprintf vswprintf vswscanf,,,
4315                    [$wchar_headers])
4316
4317     dnl MinGW has a vswprintf with a different prototype, and
4318     dnl a _vsnwprintf with the correct prototype, but AC_CHECK_FUNCS
4319     dnl finds it even if it is not declared in some versions...
4320     AC_MSG_CHECKING([for _vsnwprintf])
4321     AC_TRY_COMPILE([#include <wchar.h>],
4322                    [&_vsnwprintf;],
4323                    [AC_MSG_RESULT([yes])
4324                     AC_DEFINE(HAVE__VSNWPRINTF)],
4325                    [AC_MSG_RESULT([no])]);
4326 fi
4327
4328 if test "$wxUSE_FILE" = "yes"; then
4329     WX_CHECK_FUNCS(fsync)
4330 fi
4331
4332 dnl at least under IRIX with mipsPro the C99 round() function is available when
4333 dnl building using the C compiler but not when using C++ one
4334 AC_LANG_PUSH(C++)
4335 WX_CHECK_FUNCS(round,,,[#include <math.h>])
4336 AC_LANG_POP()
4337
4338 dnl the following tests are for Unix(like) systems only
4339 if test "$TOOLKIT" != "MSW"; then
4340
4341 dnl check for available version of iconv()
4342 if test "$wxUSE_LIBICONV" != "no" ; then
4343     AM_ICONV
4344     LIBS="$LIBICONV $LIBS"
4345 fi
4346
4347 dnl check for POSIX signals if we need them
4348 if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes" -a "$wxUSE_UNIX" = "yes"; then
4349     AC_CHECK_FUNCS(sigaction)
4350
4351     if test "$ac_cv_func_sigaction" = "no"; then
4352         AC_MSG_WARN([No POSIX signal functions on this system, wxApp::OnFatalException will not be called])
4353         wxUSE_ON_FATAL_EXCEPTION=no
4354     fi
4355
4356     if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes"; then
4357       AC_CACHE_CHECK([for sa_handler type], wx_cv_type_sa_handler,
4358       [
4359         dnl C compiler happily compiles the code even if there is type mismatch
4360         AC_LANG_PUSH(C++)
4361         AC_TRY_COMPILE([#include <signal.h>],
4362                      [
4363                         extern void testSigHandler(int);
4364
4365                         struct sigaction sa;
4366                         sa.sa_handler = testSigHandler;
4367                      ], [
4368                         wx_cv_type_sa_handler=int
4369                      ], [
4370                         wx_cv_type_sa_handler=void
4371                      ])
4372         AC_LANG_POP()
4373       ])
4374
4375       AC_DEFINE_UNQUOTED(wxTYPE_SA_HANDLER, $wx_cv_type_sa_handler)
4376     fi
4377 fi
4378
4379 dnl backtrace() and backtrace_symbols() for wxStackWalker
4380 if test "$wxUSE_STACKWALKER" = "yes" -a "$wxUSE_UNIX" = "yes"; then
4381     AC_CACHE_CHECK([for backtrace() in <execinfo.h>], wx_cv_func_backtrace,
4382         [
4383             AC_SEARCH_LIBS(backtrace, execinfo,
4384                 [
4385                     AC_LANG_PUSH(C++)
4386                     AC_TRY_LINK([#include <execinfo.h>],
4387                         [
4388                             void *trace[1];
4389                             char **messages;
4390                             backtrace(trace, 1);
4391                             messages = backtrace_symbols(trace, 1);
4392                         ],
4393                         wx_cv_func_backtrace=yes,
4394                         wx_cv_func_backtrace=no
4395                     )
4396                     AC_LANG_POP()
4397                 ],
4398                 wx_cv_func_backtrace=no
4399             )
4400         ]
4401     )
4402
4403     if test "$wx_cv_func_backtrace" = "no"; then
4404         AC_MSG_WARN([backtrace() is not available, wxStackWalker will not be available])
4405         wxUSE_STACKWALKER=no
4406     else
4407         if test "$ac_cv_header_cxxabi_h" = "yes"; then
4408             AC_CACHE_CHECK([for __cxa_demangle() in <cxxabi.h>], wx_cv_func_cxa_demangle,
4409                 [
4410                     AC_LANG_PUSH(C++)
4411                     AC_TRY_LINK([#include <cxxabi.h>],
4412                         [
4413                             int rc;
4414                             __cxxabiv1::__cxa_demangle("foo", 0, 0, &rc);
4415                         ],
4416                         wx_cv_func_cxa_demangle=yes,
4417                         wx_cv_func_cxa_demangle=no
4418                     )
4419                     AC_LANG_POP()
4420                 ]
4421             )
4422         else
4423             wx_cv_func_cxa_demangle=no
4424         fi
4425
4426         if test "$wx_cv_func_cxa_demangle" = "yes"; then
4427             AC_DEFINE(HAVE_CXA_DEMANGLE)
4428         fi
4429     fi
4430 fi
4431
4432 if test "$wxUSE_STACKWALKER" = "yes" -a "$USE_WIN32" != 1 -a "$USE_UNIX" != 1; then
4433     AC_MSG_WARN([wxStackWalker is only available on Win32 and UNIX... disabled])
4434     wxUSE_STACKWALKER=no
4435 fi
4436
4437
4438 dnl check for the function for temp files creation
4439 AC_CHECK_FUNCS(mkstemp mktemp, break)
4440
4441 dnl get the library function to use for wxGetDiskSpace(): it is statfs() under
4442 dnl Linux and *BSD and statvfs() under Solaris
4443 AC_CACHE_CHECK(for statfs, wx_cv_func_statfs,
4444     AC_TRY_COMPILE(
4445         [
4446              #if defined(__BSD__)
4447              #include <sys/param.h>
4448              #include <sys/mount.h>
4449              #else
4450              #include <sys/vfs.h>
4451              #endif
4452         ],
4453         [
4454              long l;
4455              struct statfs fs;
4456              statfs("/", &fs);
4457              l = fs.f_bsize;
4458              l += fs.f_blocks;
4459              l += fs.f_bavail;
4460         ],
4461          wx_cv_func_statfs=yes,
4462          wx_cv_func_statfs=no
4463     )
4464 )
4465
4466 if test "$wx_cv_func_statfs" = "yes"; then
4467     dnl check whether we have its dcelaration too: some systems (AIX 4) lack it
4468     AC_CACHE_CHECK(for statfs declaration, wx_cv_func_statfs_decl,
4469         AC_LANG_PUSH(C++)
4470         AC_TRY_COMPILE(
4471             [
4472                  #if defined(__BSD__)
4473                  #include <sys/param.h>
4474                  #include <sys/mount.h>
4475                  #else
4476                  #include <sys/vfs.h>
4477                  #endif
4478             ],
4479             [
4480                 struct statfs fs;
4481                 statfs("", &fs);
4482             ],
4483             wx_cv_func_statfs_decl=yes,
4484             wx_cv_func_statfs_decl=no
4485         )
4486         AC_LANG_POP()
4487     )
4488
4489     if test "$wx_cv_func_statfs_decl" = "yes"; then
4490         AC_DEFINE(HAVE_STATFS_DECL)
4491     fi
4492
4493     wx_cv_type_statvfs_t="struct statfs"
4494     AC_DEFINE(HAVE_STATFS)
4495 else
4496     AC_CACHE_CHECK(for statvfs, wx_cv_func_statvfs,
4497         AC_TRY_COMPILE(
4498             [
4499                 #include <stddef.h>
4500                 #include <sys/statvfs.h>
4501             ],
4502             [
4503                 statvfs("/", NULL);
4504             ],
4505             wx_cv_func_statvfs=yes,
4506             wx_cv_func_statvfs=no
4507         )
4508     )
4509
4510     if test "$wx_cv_func_statvfs" = "yes"; then
4511         dnl we also have to check whether we should use statvfs_t (works under
4512         dnl Solaris 8, doesn't work under Solaris 7) or "struct statvfs" (vice
4513         dnl versa) as the argument for statvfs in 64 bit off_t mode (in 32 bit
4514         dnl mode both work fine)
4515         dnl
4516         dnl for this check C++ compiler has to be used as passing incompatible
4517         dnl pointers is just a warning and not an error in C
4518         AC_CACHE_CHECK(for statvfs argument type, wx_cv_type_statvfs_t,
4519             AC_LANG_PUSH(C++)
4520             AC_TRY_COMPILE(
4521                 [
4522                     #include <sys/statvfs.h>
4523                 ],
4524                 [
4525                     long l;
4526                     statvfs_t fs;
4527                     statvfs("/", &fs);
4528                     l = fs.f_bsize;
4529                     l += fs.f_blocks;
4530                     l += fs.f_bavail;
4531                 ],
4532                 wx_cv_type_statvfs_t=statvfs_t,
4533                 [
4534                     AC_TRY_COMPILE(
4535                         [
4536                             #include <sys/statvfs.h>
4537                         ],
4538                         [
4539                             long l;
4540                             struct statvfs fs;
4541                             statvfs("/", &fs);
4542                             l = fs.f_bsize;
4543                             l += fs.f_blocks;
4544                             l += fs.f_bavail;
4545                         ],
4546                         wx_cv_type_statvfs_t="struct statvfs",
4547                         wx_cv_type_statvfs_t="unknown"
4548                     )
4549                 ]
4550             )
4551             AC_LANG_POP()
4552         )
4553
4554         if test "$wx_cv_type_statvfs_t" != "unknown"; then
4555             AC_DEFINE(HAVE_STATVFS)
4556         fi
4557     else
4558         dnl set it for the test below
4559         wx_cv_type_statvfs_t="unknown"
4560     fi
4561 fi
4562
4563 if test "$wx_cv_type_statvfs_t" != "unknown"; then
4564     AC_DEFINE_UNQUOTED(WX_STATFS_T, $wx_cv_type_statvfs_t)
4565 else
4566     AC_MSG_WARN([wxGetDiskSpace() function won't work without statfs()])
4567 fi
4568
4569 dnl check for fcntl() or at least flock() needed by Unix implementation of
4570 dnl wxSingleInstanceChecker
4571 if test "$wxUSE_SNGLINST_CHECKER" = "yes"; then
4572     AC_CHECK_FUNCS(fcntl flock, break)
4573
4574     if test "$ac_cv_func_fcntl" != "yes" -a "$ac_cv_func_flock" != "yes"; then
4575         AC_MSG_WARN(wxSingleInstanceChecker not available)
4576         wxUSE_SNGLINST_CHECKER=no
4577     fi
4578 fi
4579
4580 dnl look for a function to modify the environment
4581 AC_CHECK_FUNCS(setenv putenv, break)
4582 if test "$ac_cv_func_setenv" = "yes"; then
4583     AC_CHECK_FUNCS(unsetenv)
4584 fi
4585
4586 HAVE_SOME_SLEEP_FUNC=0
4587 if test "$USE_BEOS" = 1; then
4588     dnl BeOS has its own (wonder where did they get it from) sleep() function
4589     dnl in unistd.h
4590     AC_DEFINE(HAVE_SLEEP)
4591     HAVE_SOME_SLEEP_FUNC=1
4592 fi
4593
4594 if test "$USE_DARWIN" = 1; then
4595     dnl Mac OS X/Darwin has both nanosleep and usleep
4596     dnl but only usleep is defined in unistd.h
4597     AC_DEFINE(HAVE_USLEEP)
4598     HAVE_SOME_SLEEP_FUNC=1
4599 fi
4600
4601 if test "$HAVE_SOME_SLEEP_FUNC" != 1; then
4602     dnl try nanosleep() in libc and libposix4, if this fails - usleep()
4603     POSIX4_LINK=
4604     AC_CHECK_FUNCS(nanosleep,
4605         AC_DEFINE(HAVE_NANOSLEEP),
4606         [
4607             AC_CHECK_LIB(posix4, nanosleep,
4608                 [
4609                     AC_DEFINE(HAVE_NANOSLEEP)
4610                     POSIX4_LINK=" -lposix4"
4611                 ],
4612                 [
4613                     WX_CHECK_FUNCS(usleep,,
4614                                     AC_MSG_WARN([wxSleep() function will not work])
4615                     )
4616                 ]
4617             )
4618         ]
4619     )
4620 fi
4621
4622 dnl check for uname (POSIX) and gethostname (BSD)
4623 WX_CHECK_FUNCS(uname,,,[#include <sys/utsname.h>])
4624 if test "$wx_cv_func_uname" != yes; then
4625     WX_CHECK_FUNCS(gethostname)
4626 fi
4627
4628 WX_CHECK_FUNCS(strtok_r, [], [], [#define _REENTRANT])
4629
4630 dnl check for inet_addr and inet_aton (these may live either in libc, or in
4631 dnl libnsl or libresolv or libsocket)
4632 INET_LINK=
4633 AC_CHECK_FUNCS(inet_addr,
4634     AC_DEFINE(HAVE_INET_ADDR),
4635     [
4636         AC_CHECK_LIB(nsl, inet_addr,
4637             INET_LINK="nsl",
4638             [
4639                 AC_CHECK_LIB(resolv, inet_addr,
4640                     INET_LINK="resolv",
4641                     [
4642                         AC_CHECK_LIB(socket, inet_addr,
4643                             INET_LINK="socket"
4644                         )
4645                     ]
4646                 )
4647             ]
4648         )
4649     ]
4650 )
4651
4652 AC_CHECK_FUNCS(inet_aton,
4653         AC_DEFINE(HAVE_INET_ATON),
4654         [
4655             dnl only check it in the same lib
4656             AC_CHECK_LIB($INET_LINK, inet_aton, AC_DEFINE(HAVE_INET_ATON))
4657         ])
4658
4659 if test "x$INET_LINK" != "x"; then
4660     AC_DEFINE(HAVE_INET_ADDR)
4661     INET_LINK=" -l$INET_LINK"
4662 fi
4663
4664 WX_CHECK_FUNCS(fdopen)
4665
4666 if test "$wxUSE_TARSTREAM" = "yes"; then
4667     WX_CHECK_FUNCS(sysconf)
4668
4669     WX_CHECK_FUNCS(getpwuid_r, [], [],
4670                    [
4671                     #define _REENTRANT
4672                     #include <pwd.h>
4673                    ],
4674                    [[
4675                     struct passwd pw, *ppw;
4676                     char buf[1024];
4677                     getpwuid_r(0, &pw, buf, sizeof(buf), &ppw)
4678                    ]])
4679
4680     WX_CHECK_FUNCS(getgrgid_r, [], [],
4681                    [
4682                     #define _REENTRANT
4683                     #include <grp.h>
4684                    ],
4685                    [[
4686                     struct group grp, *pgrp;
4687                     char buf[1024];
4688                     getgrgid_r(0, &grp, buf, sizeof(buf), &pgrp)
4689                    ]])
4690 fi
4691
4692 fi
4693
4694
4695 dnl ===========================================================================
4696 dnl Now we have all the info we need - use it!
4697 dnl ===========================================================================
4698
4699 dnl flush the cache
4700 AC_CACHE_SAVE
4701
4702 dnl ---------------------------------------------------------------------------
4703 dnl thread support for Unix (for Win32 and OS/2 see past
4704 dnl                          the next matching "else")
4705 dnl ---------------------------------------------------------------------------
4706
4707 dnl under MSW (except mingw32) we always have thread support
4708 if test "$TOOLKIT" != "MSW" -a "$USE_OS2" != 1; then
4709
4710     dnl the code below:
4711     dnl
4712     dnl   defines THREADS_LINK and THREADS_CFLAGS which are the options
4713     dnl   necessary to build the MT programs for the linker and compiler
4714     dnl   respectively
4715     dnl
4716     dnl   sets wxUSE_THREADS=1 if thread support is activated
4717
4718     THREADS_LINK=
4719     THREADS_CFLAGS=
4720
4721     if test "$wxUSE_THREADS" = "yes" ; then
4722         if test "$USE_BEOS" = 1; then
4723             AC_MSG_WARN([BeOS threads are not yet supported... disabled])
4724             wxUSE_THREADS="no"
4725         fi
4726     fi
4727
4728     if test "$wxUSE_THREADS" = "yes" ; then
4729         dnl find if POSIX threads are available
4730         dnl
4731         dnl the tests here are based on ACX_PTHREAD macro from autoconf macro
4732         dnl archive from http://ac-archive.sourceforge.net/
4733         dnl
4734         dnl thanks to Steven G. Johnson <stevenj@alum.mit.edu> and Alejandro
4735         dnl Forero Cuervo <bachue@bachue.com> for the original code
4736
4737         dnl TODO: cache the result
4738
4739         dnl define the list of the thread options to try in the loop below
4740         dnl with the convention that anything starting with '-' is a cpp flag
4741         dnl while anything else is a library (i.e. there is an implicit "-l")
4742         THREAD_OPTS="-pthread"
4743         if test "x$SUNCXX" = xyes; then
4744             THREAD_OPTS="-mt lthread $THREAD_OPTS"
4745         fi
4746
4747         case "${host}" in
4748           *-*-solaris2* | *-*-sunos4* )
4749                 if test "x$GCC" = "xyes"; then
4750                     dnl Solaris/gcc combination use this one for some reason
4751                     THREAD_OPTS="-pthreads $THREAD_OPTS"
4752                 fi
4753                 ;;
4754           *-*-freebsd*)
4755                 dnl look, in order, for the kernel threads, then Linux threads
4756                 dnl and finally the userland threads
4757                 THREAD_OPTS="-kthread lthread $THREAD_OPTS c_r"
4758                 ;;
4759           *-*-darwin* | *-*-cygwin* )
4760                 dnl Darwin / Mac OS X just uses -lpthread tested below
4761                 dnl and so does Cygwin
4762                 THREAD_OPTS=""
4763                 ;;
4764           *-*-aix*)
4765                 dnl AIX calls the library libpthreads - thanks IBM!
4766                 THREAD_OPTS="pthreads"
4767                 ;;
4768           *-hp-hpux* )
4769                 if test "x$GCC" = "xyes"; then
4770                     dnl g++ versions before 3.3.2 don't support -pthread.
4771                     $CXX -dumpspecs | grep 'pthread:' >/dev/null ||
4772                         THREAD_OPTS=""
4773                 else
4774                     dnl HP-UX aCC (tested with version B3910B A.06.05 [Jul 25
4775                     dnl 2005]) supports -mt
4776                     THREAD_OPTS="-mt"
4777                 fi
4778                 ;;
4779
4780           *-*-irix* )
4781                 dnl gcc under IRIX doesn't seem to like -pthread, but it
4782                 dnl doesn't give an error for it neither, just a warning
4783                 dnl message -- but this is still very annoying
4784                 if test "x$GCC" = "xyes"; then
4785                     THREAD_OPTS=""
4786                 fi
4787                 ;;
4788
4789           *-*-qnx*)
4790                 dnl under QNX thread functions are in libc so we don't need any
4791                 dnl special options to link with them
4792                 THREAD_OPTS=""
4793                 ;;
4794
4795           *-*-*UnixWare*)
4796                 dnl flying by man pages here: Caldera online docs use this
4797                 if test "x$GCC" != "xyes"; then
4798                     THREAD_OPTS="-Ethread"
4799                 fi
4800                 ;;
4801         esac
4802
4803         case "${host}" in
4804             *-*-qnx*)
4805                 dnl -lpthread works, i.e. AC_TRY_LINK() would pass, but results
4806                 dnl in warnings and is not needed under QNX so try without it
4807                 dnl first
4808                 THREAD_OPTS="none pthread"
4809                 ;;
4810
4811             *)
4812                 dnl simply linking with libpthread should make the test below
4813                 dnl work but it's far from certain that the threaded programs
4814                 dnl compiled without any special switches actually work, so try
4815                 dnl it after all the others
4816                 THREAD_OPTS="$THREAD_OPTS pthread none"
4817                 ;;
4818         esac
4819
4820         dnl now test for all possibilities
4821         THREADS_OK=no
4822         for flag in $THREAD_OPTS; do
4823             case $flag in
4824                 none)
4825                     AC_MSG_CHECKING([whether pthreads work without any flags])
4826                     ;;
4827
4828                 -*)
4829                     AC_MSG_CHECKING([whether pthreads work with $flag])
4830                     THREADS_CFLAGS="$flag"
4831                     ;;
4832
4833                 *)
4834                     AC_MSG_CHECKING([for the pthreads library -l$flag])
4835                     THREADS_LINK="-l$flag"
4836                     ;;
4837               esac
4838
4839               save_LIBS="$LIBS"
4840               save_CFLAGS="$CFLAGS"
4841               LIBS="$THREADS_LINK $LIBS"
4842               CFLAGS="$THREADS_CFLAGS $CFLAGS"
4843
4844               AC_TRY_LINK([#include <pthread.h>],
4845                           [pthread_create(0,0,0,0);],
4846                           THREADS_OK=yes)
4847
4848               LIBS="$save_LIBS"
4849               CFLAGS="$save_CFLAGS"
4850
4851               AC_MSG_RESULT($THREADS_OK)
4852               if test "x$THREADS_OK" = "xyes"; then
4853                       break;
4854               fi
4855
4856               THREADS_LINK=""
4857               THREADS_CFLAGS=""
4858       done
4859
4860       if test "x$THREADS_OK" != "xyes"; then
4861           wxUSE_THREADS=no
4862           AC_MSG_WARN([No thread support on this system... disabled])
4863       else
4864           dnl yes, these special compiler flags should be used with the
4865           dnl linker as well
4866           dnl
4867           dnl NB: add them to LDFLAGS immediately because we need them to be
4868           dnl     used for the subsequent tests some of which can fail without
4869           dnl     MT support, hence the reason for the duplication below:
4870           dnl     adding them just to WXCONFIG_LDFLAGS and adding the entire
4871           dnl     contents of the latter to LDFLAGS in the end is not enough.
4872           LDFLAGS="$THREADS_CFLAGS $LDFLAGS"
4873           WXCONFIG_LDFLAGS="$THREADS_CFLAGS $WXCONFIG_LDFLAGS"
4874           LIBS="$THREADS_LINK $LIBS"
4875
4876           AC_MSG_CHECKING([if more special flags are required for pthreads])
4877           flag=no
4878           case "${host}" in
4879             *-aix*)
4880                 dnl again quoting from
4881                 dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html:
4882                 dnl
4883                 dnl     When compiling and linking with -pthread, the library
4884                 dnl     search path should include -L/usr/lib/threads at the
4885                 dnl     beginning of the path.
4886                 LDFLAGS="-L/usr/lib/threads $LDFLAGS"
4887                 WXCONFIG_LDFLAGS="-L/usr/lib/threads $WXCONFIG_LDFLAGS"
4888                 flag="-D_THREAD_SAFE"
4889                 ;;
4890             *-freebsd*)
4891                 flag="-D_THREAD_SAFE"
4892                 ;;
4893             *-hp-hpux* )
4894                 flag="-D_REENTRANT"
4895                 if test "x$GCC" != "xyes"; then
4896                     dnl see http://docs.hp.com/hpux/onlinedocs/2213/threads.htm
4897                     flag="$flag -D_RWSTD_MULTI_THREAD"
4898                 fi
4899                 ;;
4900             *solaris* | alpha*-osf*)
4901                 flag="-D_REENTRANT"
4902                 ;;
4903           esac
4904           AC_MSG_RESULT(${flag})
4905           if test "x$flag" != xno; then
4906               THREADS_CFLAGS="$THREADS_CFLAGS $flag"
4907           fi
4908
4909           dnl don't add these options to CPPFLAGS as cpp might not know them
4910           WXCONFIG_CFLAGS="$WXCONFIG_CFLAGS $THREADS_CFLAGS"
4911       fi
4912     fi
4913
4914     dnl do other tests only if we are using threads
4915     if test "$wxUSE_THREADS" = "yes" ; then
4916         AC_CHECK_FUNCS(pthread_setconcurrency,
4917             AC_DEFINE(HAVE_PTHREAD_SET_CONCURRENCY),
4918             [
4919                 AC_CHECK_FUNCS(thr_setconcurrency,
4920                     AC_DEFINE(HAVE_THR_SETCONCURRENCY),
4921                     AC_MSG_WARN(Setting thread concurrency will not work properly))
4922             ])
4923
4924       dnl can't use AC_CHECK_FUNCS for this one as it's usually a macro and so
4925       dnl wouldn't be found by it
4926       AC_CACHE_CHECK([for pthread_cleanup_push/pop], wx_cv_func_pthread_cleanup,
4927       [
4928         dnl C compiler may treat pthread_cleanup_push() as an undeclared
4929         dnl function and not give a warning even if it's unavailable, so use
4930         dnl the C++ one for this test
4931         AC_LANG_PUSH(C++)
4932         AC_TRY_COMPILE([#include <pthread.h>
4933                void ThreadCleanupFunc(void *p);
4934             ],
4935             [
4936                 void *p;
4937                 pthread_cleanup_push(ThreadCleanupFunc, p);
4938                 pthread_cleanup_pop(0);
4939             ], [
4940                wx_cv_func_pthread_cleanup=yes
4941             ], [
4942                wx_cv_func_pthread_cleanup=no
4943             ]
4944         )
4945         AC_LANG_POP()
4946       ])
4947       if test "x$wx_cv_func_pthread_cleanup" = "xyes"; then
4948         AC_DEFINE(wxHAVE_PTHREAD_CLEANUP)
4949       fi
4950
4951       AC_CHECK_HEADERS(sched.h,,, [AC_INCLUDES_DEFAULT()])
4952       if test "$ac_cv_header_sched_h" = "yes"; then
4953           AC_CHECK_FUNC(sched_yield,
4954             AC_DEFINE(HAVE_SCHED_YIELD),
4955             [
4956                 AC_CHECK_LIB(posix4,
4957                     sched_yield,
4958                     [AC_DEFINE(HAVE_SCHED_YIELD) POSIX4_LINK=" -lposix4"],
4959                     AC_MSG_WARN(wxThread::Yield will not work properly)
4960                 )
4961             ]
4962           )
4963       fi
4964
4965       dnl to be able to set the thread priority, we need to have all of the
4966       dnl following functions:
4967       dnl   1. pthread_attr_getschedpolicy
4968       dnl   2. sched_get_priority_min and sched_get_priority_max
4969       dnl      (this one can be in either libpthread or libposix4 (under Solaris))
4970       dnl   3. pthread_attr_getschedparam and pthread_attr_setschedparam
4971       HAVE_PRIOR_FUNCS=0
4972       AC_CHECK_FUNC(pthread_attr_getschedpolicy,
4973                      [AC_CHECK_FUNC(pthread_attr_setschedparam,
4974                        [AC_CHECK_FUNC(sched_get_priority_max,
4975                            HAVE_PRIOR_FUNCS=1,
4976                            [AC_CHECK_LIB([posix4], sched_get_priority_max,
4977                              [
4978                                 HAVE_PRIOR_FUNCS=1
4979                                 POSIX4_LINK=" -lposix4"
4980                              ],
4981                            )]
4982                        )]
4983                      )]
4984                    )
4985
4986       if test "$HAVE_PRIOR_FUNCS" = 1; then
4987         AC_DEFINE(HAVE_THREAD_PRIORITY_FUNCTIONS)
4988       else
4989         AC_MSG_WARN(Setting thread priority will not work)
4990       fi
4991
4992       AC_CHECK_FUNC(pthread_cancel,
4993                     AC_DEFINE(HAVE_PTHREAD_CANCEL),
4994                     AC_MSG_WARN([wxThread::Kill() will not work properly]))
4995
4996       AC_CHECK_FUNC(pthread_mutex_timedlock,
4997                     AC_DEFINE(HAVE_PTHREAD_MUTEX_TIMEDLOCK),
4998                     AC_MSG_WARN([wxMutex::LockTimeout() will not work]))
4999
5000       AC_CHECK_FUNC(pthread_attr_setstacksize,
5001                     AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE))
5002
5003       dnl mutexattr_t initialization is done in quite different ways on different
5004       dnl platforms, so check for a few things:
5005       dnl
5006       dnl HAVE_MUTEX_RECURSIVE means that we can create recursive mutexes
5007       dnl HAVE_MUTEXATTR_SETTYPE means that we do it using
5008       dnl pthread_mutexattr_settype(PTHREAD_MUTEX_RECURSIVE) and if it is not
5009       dnl defined, we do it by directly assigned
5010       dnl PTHREAD_MUTEX_RECURSIVE_MUTEX_INITIALIZER_NP to attr
5011
5012       AC_CACHE_CHECK([for pthread_mutexattr_t], wx_cv_type_pthread_mutexattr_t,
5013       [
5014         AC_TRY_COMPILE([#include <pthread.h>],
5015             [
5016                pthread_mutexattr_t attr;
5017                pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
5018             ],
5019             wx_cv_type_pthread_mutexattr_t=yes,
5020             wx_cv_type_pthread_mutexattr_t=no
5021         )
5022       ])
5023
5024       if test "$wx_cv_type_pthread_mutexattr_t" = "yes"; then
5025         AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_T)
5026
5027         dnl check if we already have the declaration we need, it is not
5028         dnl present in some systems' headers
5029         AC_CACHE_CHECK([for pthread_mutexattr_settype declaration],
5030                        wx_cv_func_pthread_mutexattr_settype_decl, [
5031                        AC_TRY_COMPILE([#include <pthread.h>],
5032                            [
5033                                pthread_mutexattr_t attr;
5034                                pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
5035                            ],
5036                            wx_cv_func_pthread_mutexattr_settype_decl=yes,
5037                            wx_cv_func_pthread_mutexattr_settype_decl=no
5038                        )
5039         ])
5040         if test "$wx_cv_func_pthread_mutexattr_settype_decl" = "yes"; then
5041             AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL)
5042         fi
5043       else
5044         dnl don't despair, there may be another way to do it
5045         AC_CACHE_CHECK([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER],
5046                        wx_cv_type_pthread_rec_mutex_init,
5047         [
5048             AC_TRY_COMPILE([#include <pthread.h>],
5049                 [
5050                     pthread_mutex_t attr = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
5051                 ], [
5052                     wx_cv_type_pthread_rec_mutex_init=yes
5053                 ], [
5054                     wx_cv_type_pthread_rec_mutex_init=no
5055                 ]
5056             )
5057         ])
5058         if test "$wx_cv_type_pthread_rec_mutex_init" = "yes"; then
5059           AC_DEFINE(HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
5060         else
5061           dnl this may break code working elsewhere, so at least warn about it
5062           AC_MSG_WARN([wxMutex won't be recursive on this platform])
5063         fi
5064       fi
5065
5066       if test "$wxUSE_COMPILER_TLS" = "auto"; then
5067           if test "$USE_NETBSD" = 1; then
5068               AC_MSG_WARN([Disabling TLS under NetBSD, please contact wx-dev if it works now])
5069               wxUSE_COMPILER_TLS=no
5070           else
5071               wxUSE_COMPILER_TLS=yes
5072           fi
5073       fi
5074
5075       if test "$wxUSE_COMPILER_TLS" = "yes"; then
5076           dnl test for compiler thread-specific variables support
5077           AC_CACHE_CHECK([for __thread keyword],
5078                          wx_cv_cc___thread,
5079               [
5080                   AC_TRY_COMPILE([#include <pthread.h>],
5081                       [
5082                           static __thread int n = 0;
5083                           static __thread int *p = 0;
5084                       ],
5085                       wx_cv_cc___thread=yes,
5086                       wx_cv_cc___thread=no
5087                   )
5088               ]
5089           )
5090
5091           if test "$wx_cv_cc___thread" = "yes"; then
5092               AX_GXX_VERSION
5093               if test -n "$ax_cv_gxx_version"; then
5094                   dnl g++ supports __thread since at least version 3.3 but its support
5095                   dnl seems to be broken until 4.1, see
5096                   dnl   http://thread.gmane.org/gmane.comp.lib.wxwidgets.devel/108388
5097                   dnl
5098                   dnl NB: we still need to test __thread support with
5099                   dnl     AC_TRY_COMPILE above even for g++ 4 as it doesn't
5100                   dnl     support it for all architectures (e.g. it doesn't
5101                   dnl     work under OS X)
5102                   AC_MSG_CHECKING([whether __thread support in g++ is usable])
5103                   case "$ax_cv_gxx_version" in
5104                     1.* | 2.* | 3.* )
5105                         AC_MSG_RESULT([no, it's broken])
5106                         wx_cv_cc___thread=no
5107                         ;;
5108                     *)
5109                         AC_MSG_RESULT([yes, it works])
5110                         ;;
5111                   esac
5112               fi
5113           fi
5114
5115           if test "$wx_cv_cc___thread" = "yes"; then
5116             AC_DEFINE(HAVE___THREAD_KEYWORD)
5117           fi
5118         fi
5119
5120         if test "$ac_cv_header_cxxabi_h" = "yes"; then
5121             AC_CACHE_CHECK([for abi::__forced_unwind() in <cxxabi.h>],
5122                 wx_cv_type_abi_forced_unwind,
5123                 [
5124                     AC_LANG_PUSH(C++)
5125                     AC_TRY_COMPILE([#include <cxxabi.h>],
5126                         [
5127                             void foo(abi::__forced_unwind&);
5128                         ],
5129                         wx_cv_type_abi_forced_unwind=yes,
5130                         wx_cv_type_abi_forced_unwind=no
5131                     )
5132                     AC_LANG_POP()
5133                 ]
5134             )
5135         else
5136             wx_cv_type_abi_forced_unwind=no
5137         fi
5138
5139         if test "$wx_cv_type_abi_forced_unwind" = "yes"; then
5140             AC_DEFINE(HAVE_ABI_FORCEDUNWIND)
5141         fi
5142     fi
5143
5144 dnl from if !MSW
5145 else
5146     if test "$wxUSE_THREADS" = "yes" ; then
5147       case "${host}" in
5148         x86_64-*-mingw32* )
5149         ;;
5150         *-*-mingw32* )
5151             dnl check if the compiler accepts -mthreads
5152             AC_CACHE_CHECK([if compiler supports -mthreads],
5153                 wx_cv_cflags_mthread,
5154                 [
5155                     CFLAGS_OLD="$CFLAGS"
5156                     CFLAGS="-mthreads $CFLAGS"
5157                     AC_TRY_COMPILE([], [],
5158                         wx_cv_cflags_mthread=yes,
5159                         wx_cv_cflags_mthread=no
5160                     )
5161                 ]
5162             )
5163
5164             if test "$wx_cv_cflags_mthread" = "yes"; then
5165                 dnl it does, use it
5166                 WXCONFIG_CFLAGS="$WXCONFIG_CFLAGS -mthreads"
5167                 LDFLAGS="$LDFLAGS -mthreads"
5168             else
5169                 dnl it doesn't
5170                 CFLAGS="$CFLAGS_OLD"
5171             fi
5172         ;;
5173         *-pc-os2*emx )
5174             WXCONFIG_CFLAGS="$WXCONFIG_CFLAGS -Zmt -D__ST_MT_ERRNO__"
5175             LDFLAGS="$LDFLAGS -Zmt"
5176         ;;
5177       esac
5178     fi
5179 fi
5180
5181 AC_CHECK_FUNC(localtime_r, [ AC_DEFINE(HAVE_LOCALTIME_R) ])
5182 AC_CHECK_FUNC(gmtime_r, [ AC_DEFINE(HAVE_GMTIME_R) ])
5183 dnl By preference, we probably should use getaddrinfo which avoids thread
5184 dnl safety issues and supports IPv6, however there currently is no code
5185 dnl for it, so testing for it is temporarily disabled and we are restricted
5186 dnl to gethostbyname_r/gethostbyaddr_r  and getservbyname_r
5187
5188 dnl AC_CHECK_FUNC(getaddrinfo, AC_DEFINE(HAVE_GETADDRINFO), [
5189     dnl no getaddrinfo, so check for gethostbyname_r and
5190     dnl related functions (taken from python's configure.in)
5191     dnl sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments
5192       AX_FUNC_WHICH_GETHOSTBYNAME_R
5193       if test "x$ac_cv_func_which_gethostbyname_r" = "xno" -o \
5194               "x$ac_cv_func_which_gethostbyname_r" = "xunknown" ; then
5195           AC_CHECK_FUNC(gethostbyname, [ AC_DEFINE(HAVE_GETHOSTBYNAME) ])
5196       fi
5197       dnl A similar test for getservbyname_r
5198       dnl I'm tempted to just not do this test which is taking much time and
5199       dnl do something similar as for gethostbyaddr_r, but OTOH the macro
5200       dnl doing the test already exists, so using it is easy enough.     - SN
5201       AC_raf_FUNC_WHICH_GETSERVBYNAME_R
5202       if test "x$ac_cv_func_which_getservbyname_r" = "xno" -o \
5203               "x$ac_cv_func_which_getservbyname_r" = "xunknown" ; then
5204           AC_CHECK_FUNCS(getservbyname,[ AC_DEFINE(HAVE_GETSERVBYNAME) ])
5205       fi
5206       dnl For gethostbyaddr_r, we currently do no separate test, instead, we
5207       dnl silently assume it's available exactly if gethostbyname_r is
5208       dnl available and always requires two more arguments than
5209       dnl gethostbyname_r.
5210       dnl (also, I'm lazy and there no m4 file that's ready for use for this
5211       dnl  function, although it should be easy to rewrite the gethostbyname_r
5212       dnl  check to fit this case, if it's really needed.                - SN )
5213 dnl    ]
5214 dnl )
5215
5216 dnl This is currently always defined under Unix, there is no reason to ever
5217 dnl disable compiler TLS support there.
5218 AC_DEFINE(wxUSE_COMPILER_TLS)
5219
5220 if test "$wxUSE_THREADS" = "yes"; then
5221   AC_DEFINE(wxUSE_THREADS)
5222
5223   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS thread"
5224 else
5225   dnl on some systems, _REENTRANT should be defined if we want to use any _r()
5226   dnl functions - add tests for other functions here as well
5227   if test "$wx_cv_func_strtok_r" = "yes"; then
5228     AC_MSG_CHECKING(if -D_REENTRANT is needed)
5229     if test "$NEEDS_D_REENTRANT_FOR_R_FUNCS" = 1; then
5230         WXCONFIG_CPPFLAGS="$WXCONFIG_CPPFLAGS -D_REENTRANT"
5231         AC_MSG_RESULT(yes)
5232     else
5233         AC_MSG_RESULT(no)
5234     fi
5235   fi
5236 fi
5237
5238 if test "$WXGTK3" = 1 ; then
5239     AC_DEFINE_UNQUOTED(__WXGTK3__, 1)
5240     WXGTK2=1
5241 fi
5242 if test "$WXGTK2" = 1 ; then
5243   AC_DEFINE_UNQUOTED(__WXGTK20__,$WXGTK2)
5244 fi
5245
5246 if test "$WXGTK127" = 1 ; then
5247   AC_DEFINE_UNQUOTED(__WXGTK127__,$WXGTK127)
5248 fi
5249
5250 if test "$WXGPE" = 1 ; then
5251   AC_DEFINE_UNQUOTED(__WXGPE__,$WXGPE)
5252 fi
5253
5254 dnl DEBUG_CFLAGS contains debugging options (supposed to be the same for C and C++
5255 dnl compilers: we'd need a separate DEBUG_CXXFLAGS if this is ever not the case)
5256 DEBUG_CFLAGS=
5257 if `echo $CXXFLAGS $CFLAGS | grep " -g" >/dev/null`; then
5258     dnl the CXXFLAGS or the CFLAGS variable already contains the -g flag
5259     dnl (e.g. it was specified by the user before running configure); since
5260     dnl later they will be merged with DEBUG_CFLAGS, don't set the -g option
5261     dnl in DEBUG_CFLAGS to avoid (possibly different) flag duplicates
5262     AC_MSG_WARN([CXXFLAGS/CFLAGS already contains -g flag; ignoring the --enable-debug_info option])
5263 elif test "$wxUSE_DEBUG_INFO" = "yes" ; then
5264     DEBUG_CFLAGS="-g"
5265 fi
5266
5267 if test "$wxUSE_DEBUG_GDB" = "yes" ; then
5268     wxUSE_DEBUG_INFO=yes
5269     if test "$GCC" = yes; then
5270         DEBUG_CFLAGS="-ggdb"
5271     fi
5272 fi
5273
5274 if test "$wxUSE_DEBUG_FLAG" = "no" ; then
5275     WXCONFIG_CPPFLAGS="$WXCONFIG_CPPFLAGS -DwxDEBUG_LEVEL=0"
5276
5277     if test "$wxUSE_GTK" = 1 ; then
5278         if test "$WXGTK2" = 1 ; then
5279             CPPFLAGS="$CPPFLAGS -DG_DISABLE_CAST_CHECKS"
5280         else
5281             CPPFLAGS="-DGTK_NO_CHECK_CASTS $CPPFLAGS"
5282         fi
5283     fi
5284 fi
5285
5286 if test "$wxUSE_MEM_TRACING" = "yes" ; then
5287     AC_DEFINE(wxUSE_MEMORY_TRACING)
5288     AC_DEFINE(wxUSE_GLOBAL_MEMORY_OPERATORS)
5289     AC_DEFINE(wxUSE_DEBUG_NEW_ALWAYS)
5290     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS memcheck"
5291 fi
5292
5293 if test "$wxUSE_DMALLOC" = "yes" ; then
5294     DMALLOC_LIBS="-ldmallocthcxx"
5295 fi
5296
5297 dnl cc/cxx/ld option for profiling
5298 PROFILE_FLAGS=
5299 if test "$wxUSE_PROFILE" = "yes" ; then
5300     PROFILE_FLAGS=" -pg"
5301 fi
5302
5303 if test "$GCC" = "yes" ; then
5304     if test "$wxUSE_NO_RTTI" = "yes" ; then
5305         dnl Define wxNO_RTTI on the command line because only g++ 4.3 and later
5306         dnl define __GXX_RTTI which allows us to detect the use of -fno-rtti
5307         dnl switch but we need to do it manually for the older versions.
5308         WXCONFIG_CXXFLAGS="$WXCONFIG_CXXFLAGS -DwxNO_RTTI -fno-rtti"
5309     fi
5310     if test "$wxUSE_NO_EXCEPTIONS" = "yes" ; then
5311         WXCONFIG_CXXFLAGS="$WXCONFIG_CXXFLAGS -fno-exceptions"
5312     fi
5313     if test "$wxUSE_PERMISSIVE" = "yes" ; then
5314         WXCONFIG_CFLAGS="$WXCONFIG_CFLAGS -fpermissive"
5315     fi
5316
5317     dnl Ian Brown <ian.brown@printsoft.de> reports that versions of gcc before
5318     dnl 3.0 overflow the table of contents on rs6000 as they create an entry
5319     dnl for each subroutine by default -- using the switch below only creates
5320     dnl one entry per file instead at the price of minor performance penalty
5321     dnl
5322     dnl As of wx2.4 a bug in the hppa gcc compiler causes a similar problem
5323     dnl without -ffunction-sections.  No idea how long we'll need to maintain
5324     dnl this, or even the extent of gcc/wx version combinations affected, but
5325     dnl also as above, this 'fix' does not come without side effects.
5326     dnl
5327     dnl TODO: test for the gcc version here (how?)
5328     case "${host}" in
5329       powerpc*-*-aix* )
5330         WXCONFIG_CFLAGS="$WXCONFIG_CFLAGS -mminimal-toc"
5331         ;;
5332       *-hppa* )
5333         WXCONFIG_CFLAGS="$WXCONFIG_CFLAGS -ffunction-sections"
5334         ;;
5335     esac
5336 fi
5337
5338 dnl C/C++ compiler option for optimization (supposed to be the same for both)
5339 OPTIMISE_CFLAGS=
5340 if `echo $CXXFLAGS $CFLAGS | grep " -O" >/dev/null`; then
5341     dnl the CXXFLAGS or the CFLAGS variable already contains -O optimization flag
5342     dnl (e.g. it was specified by the user before running configure); since
5343     dnl later they will be merged with OPTIMISE_CFLAGS, don't set the -O option
5344     dnl in OPTIMISE_CFLAGS to avoid (possibly different) flag duplicates
5345     AC_MSG_WARN([CXXFLAGS/CFLAGS already contains -O flag; ignoring the --disable-optimise option])
5346 else
5347     if test "$wxUSE_OPTIMISE" = "no" ; then
5348         if test "$GCC" = yes ; then
5349             dnl use -O0 because compiling with it is faster than compiling with no
5350             dnl optimization options at all (at least with g++ 3.2)
5351             OPTIMISE_CFLAGS="-O0"
5352         fi
5353     else
5354         if test "$GCC" = yes ; then
5355             case "${host}" in
5356                 *-pc-os2_emx | *-pc-os2-emx )
5357                     dnl Not all of the supported gcc versions understand
5358                     dnl -fstrict-aliasing and none actually needs it (yet).
5359                     OPTIMISE_CFLAGS="-O2"
5360                 ;;
5361                 *)
5362                     dnl Switch on optimisation but keep strict-aliasing off for
5363                     dnl now (see -fstrict-aliasing in the gcc manual). When it is
5364                     dnl switched back on consider using -Wstrict-aliasing=2.
5365                     OPTIMISE_CFLAGS="-O2 -fno-strict-aliasing"
5366                 ;;
5367             esac
5368         else
5369             OPTIMISE_CFLAGS="-O"
5370         fi
5371     fi
5372 fi
5373
5374 dnl ---------------------------------------------------------------------------
5375 dnl compatibility level
5376 dnl ---------------------------------------------------------------------------
5377
5378 if test "x$WXWIN_COMPATIBILITY_2_6" = "xyes"; then
5379     AC_DEFINE(WXWIN_COMPATIBILITY_2_6)
5380
5381     WXWIN_COMPATIBILITY_2_8="yes"
5382 fi
5383
5384 if test "x$WXWIN_COMPATIBILITY_2_8" != "xno"; then
5385     AC_DEFINE(WXWIN_COMPATIBILITY_2_8)
5386 fi
5387
5388 dnl ---------------------------------------------------------------------------
5389 dnl the library may be built without GUI classes at all
5390 dnl ---------------------------------------------------------------------------
5391
5392 if test "$wxUSE_GUI" = "yes"; then
5393     AC_DEFINE(wxUSE_GUI)
5394
5395     dnl the things we always pull in the GUI version of the library:
5396     dnl 1. basic things like wxApp, wxWindow, wxControl, wxFrame, wxDialog (the
5397     dnl    library really can't be built without those)
5398     dnl 2. basic controls: wxButton, wxStaticText, wxTextCtrl (these are used in
5399     dnl    almost any program and the first 2 are needed to show a message box
5400     dnl    which want to be always able to do)
5401     dnl 3. GDI stuff: icon, cursors and all that. Although it would be very nice
5402     dnl    to compile without them (if the app doesn't do any drawing, it doesn't
5403     dnl    need the dcs, pens, brushes, ...), this just can't be done now
5404     dnl 4. menu stuff: wxMenu, wxMenuBar, wxMenuItem
5405     dnl 5. misc stuff: timers, settings, message box
5406 fi
5407
5408 dnl ---------------------------------------------------------------------------
5409 dnl Unix/Windows
5410 dnl ---------------------------------------------------------------------------
5411
5412 if test "$wxUSE_UNIX" = "yes"; then
5413   AC_DEFINE(wxUSE_UNIX)
5414 fi
5415
5416 dnl ------------------------------------------------------------------------
5417 dnl DLL support
5418 dnl ------------------------------------------------------------------------
5419
5420 dnl under MSW we always have LoadLibrary/GetProcAddress
5421 if test "$TOOLKIT" != "MSW" -a "$USE_OS2" != 1; then
5422
5423     HAVE_DL_FUNCS=0
5424     HAVE_SHL_FUNCS=0
5425     if test "$wxUSE_DYNAMIC_LOADER" = "yes" -o "$wxUSE_DYNLIB_CLASS" = "yes" ; then
5426         if test "$USE_DOS" = 1; then
5427             HAVE_DL_FUNCS=0
5428         else
5429             dnl the test is a bit complicated because we check for dlopen() both with
5430             dnl and without -ldl and we also try to find shl_load() if there is no
5431             dnl dlopen() on this system
5432             AC_CHECK_FUNCS(dlopen,
5433             [
5434                 AC_DEFINE(HAVE_DLOPEN)
5435                 HAVE_DL_FUNCS=1
5436             ],
5437             [
5438                 AC_CHECK_LIB(dl, dlopen,
5439                             [
5440                                 AC_DEFINE(HAVE_DLOPEN)
5441                                 HAVE_DL_FUNCS=1
5442                                 DL_LINK=" -ldl$DL_LINK"
5443                             ],
5444                             [
5445                                 AC_CHECK_FUNCS(shl_load,
5446                                               [
5447                                                 AC_DEFINE(HAVE_SHL_LOAD)
5448                                                 HAVE_SHL_FUNCS=1
5449                                               ],
5450                                               [
5451                                                 AC_CHECK_LIB(shl_load, dld,
5452                                                              [
5453                                                                 HAVE_SHL_FUNCS=1
5454                                                                 DL_LINK=" -ldld$DL_LINK"
5455                                                              ])
5456                                               ])
5457                             ])
5458             ])
5459
5460             dnl check also for dlerror()
5461             if test "$HAVE_DL_FUNCS" = 1; then
5462                 AC_CHECK_FUNCS(dlerror,
5463                     AC_DEFINE(HAVE_DLERROR),
5464                     [
5465                         AC_CHECK_LIB(dl, dlerror, AC_DEFINE(HAVE_DLERROR))
5466                     ]
5467                 )
5468             fi
5469         fi
5470
5471         dnl Force HAVE_DL_FUNCS on for Darwin, even if the tests failed (e.g. pre-10.3)
5472         if test "$USE_DARWIN" = 1; then
5473             dnl dlopen/dlerror is implemented in dynlib.cpp for Darwin/Mac OS X
5474             HAVE_DL_FUNCS=1
5475         fi
5476
5477         if test "$HAVE_DL_FUNCS" = 0; then
5478             if test "$HAVE_SHL_FUNCS" = 0; then
5479               if test "$USE_UNIX" = 1 -o "$USE_DOS" = 1; then
5480                   AC_MSG_WARN([Missing dynamic loading support, several features will be disabled])
5481                   wxUSE_DYNAMIC_LOADER=no
5482                   wxUSE_DYNLIB_CLASS=no
5483               else
5484                   AC_MSG_WARN([Assuming wxLibrary class works on this platform])
5485               fi
5486             fi
5487         fi
5488     fi
5489 fi
5490
5491 if test "$wxUSE_DYNAMIC_LOADER" = "yes" ; then
5492     AC_DEFINE(wxUSE_DYNAMIC_LOADER)
5493 fi
5494 if test "$wxUSE_DYNLIB_CLASS" = "yes" ; then
5495     AC_DEFINE(wxUSE_DYNLIB_CLASS)
5496 fi
5497
5498
5499 dnl ---------------------------------------------------------------------------
5500 dnl Verify consistency of plugins/monolithic/shared settings:
5501 dnl ---------------------------------------------------------------------------
5502
5503 if test "$wxUSE_PLUGINS" = "yes" ; then
5504     if test "$wxUSE_SHARED" = "no" ; then
5505         AC_MSG_WARN([plugins supported only in shared build, disabling])
5506         wxUSE_PLUGINS=no
5507     fi
5508     if test "$wxUSE_MONOLITHIC" = "yes" ; then
5509         AC_MSG_WARN([plugins not supported monolithic build, disabling])
5510         wxUSE_PLUGINS=no
5511     fi
5512     if test "$wxUSE_DYNLIB_CLASS" = "no" ; then
5513         AC_MSG_WARN([plugins require wxDynamicLibrary, disabling])
5514         wxUSE_PLUGINS=no
5515     fi
5516     if test "$wxUSE_PLUGINS" = "yes" ; then
5517         AC_DEFINE(wxUSE_PLUGINS)
5518     fi
5519 fi
5520
5521 dnl ---------------------------------------------------------------------------
5522 dnl File system watcher checks
5523 dnl ---------------------------------------------------------------------------
5524
5525 if test "$wxUSE_FSWATCHER" = "yes"; then
5526     dnl wxFileSystemWatcher is always available under MSW but we need either
5527     dnl inotify or kqueue support in the system for it under Unix (this
5528     dnl includes OS X which does have kqueue but no other platforms)
5529     if test "$wxUSE_MSW" != "1"; then
5530         if test "$wxUSE_UNIX" = "yes"; then
5531             AC_CHECK_HEADERS(sys/inotify.h,,, [AC_INCLUDES_DEFAULT()])
5532             if test "$ac_cv_header_sys_inotify_h" = "yes"; then
5533                 AC_DEFINE(wxHAS_INOTIFY)
5534             else
5535                 AC_CHECK_HEADERS(sys/event.h,,, [AC_INCLUDES_DEFAULT()])
5536                 if test "$ac_cv_header_sys_event_h" = "yes"; then
5537                     AC_DEFINE(wxHAS_KQUEUE)
5538                 else
5539                     wxUSE_FSWATCHER=no
5540                 fi
5541             fi
5542         else
5543             wxUSE_FSWATCHER=no
5544         fi
5545     else
5546         if test "$wxUSE_THREADS" != "yes"; then
5547             AC_MSG_WARN([wxFileSystemWatcher disabled due to --disable-threads])
5548             wxUSE_FSWATCHER=no
5549         fi
5550     fi
5551
5552     if test "$wxUSE_FSWATCHER" = "yes"; then
5553         AC_DEFINE(wxUSE_FSWATCHER)
5554         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS fswatcher"
5555     else
5556         AC_MSG_WARN([wxFileSystemWatcher won't be available on this platform])
5557     fi
5558 fi
5559
5560 dnl ---------------------------------------------------------------------------
5561 dnl Register non-GUI class options for makefiles and setup.h
5562 dnl ---------------------------------------------------------------------------
5563
5564 if test "$wxUSE_STL" = "yes"; then
5565   AC_DEFINE(wxUSE_STL)
5566 fi
5567
5568 if test "$wxUSE_EXTENDED_RTTI" = "yes"; then
5569   AC_DEFINE(wxUSE_EXTENDED_RTTI)
5570 fi
5571
5572 if test "$wxUSE_ANY" = "yes"; then
5573     AC_DEFINE(wxUSE_ANY)
5574 fi
5575
5576 if test "$wxUSE_APPLE_IEEE" = "yes"; then
5577   AC_DEFINE(wxUSE_APPLE_IEEE)
5578 fi
5579
5580 if test "$wxUSE_TIMER" = "yes"; then
5581   AC_DEFINE(wxUSE_TIMER)
5582 fi
5583
5584 dnl Unix implementation needs additional checks because audio support
5585 dnl comes in many favours:
5586 if test "$USE_UNIX" = 1 ; then
5587     dnl it's not enough to check for just the header because OSS under NetBSD
5588     dnl redefines ioctl as oss_ioctrl inside it and so we also need to test
5589     dnl whether we need -lossaudio at link-time
5590     AC_CACHE_CHECK([for SNDCTL_DSP_SPEED in sys/soundcard.h], ac_cv_header_sys_soundcard, [
5591         AC_TRY_LINK([
5592                 #include <sys/ioctl.h>
5593                 #include <sys/soundcard.h>
5594             ],
5595             [
5596                 ioctl(0, SNDCTL_DSP_SPEED, 0);
5597             ],
5598             ac_cv_header_sys_soundcard=yes,
5599             [
5600                 saveLibs="$LIBS"
5601                 LIBS="$saveLibs -lossaudio"
5602                 AC_TRY_LINK([
5603                         #include <sys/ioctl.h>
5604                         #include <sys/soundcard.h>
5605                     ],
5606                     [
5607                         ioctl(0, SNDCTL_DSP_SPEED, 0);
5608                     ],
5609                     ac_cv_header_sys_soundcard=yes,
5610                     [
5611                         LIBS="$saveLibs"
5612                         ac_cv_header_sys_soundcard=no
5613                     ]
5614                 )
5615             ]
5616         )
5617     ])
5618
5619     if test "$ac_cv_header_sys_soundcard" = "yes"; then
5620         AC_DEFINE(HAVE_SYS_SOUNDCARD_H)
5621     fi
5622 fi
5623
5624 WITH_PLUGIN_SDL=0
5625 if test "$wxUSE_SOUND" = "yes"; then
5626   if test "$USE_UNIX" = 1 ; then
5627     if test "$wxUSE_LIBSDL" != "no"; then
5628       AM_PATH_SDL([1.2.0],
5629                   [
5630                     EXTRALIBS_SDL="$SDL_LIBS"
5631                     CFLAGS="$SDL_CFLAGS $CFLAGS"
5632                     CXXFLAGS="$SDL_CFLAGS $CXXFLAGS"
5633                     AC_DEFINE(wxUSE_LIBSDL)
5634                   ],
5635                   [wxUSE_LIBSDL="no"])
5636       if test "$wxUSE_LIBSDL" = "yes" -a "$wxUSE_PLUGINS" = "yes" ; then
5637         WITH_PLUGIN_SDL=1
5638       fi
5639     fi
5640   fi
5641 fi
5642
5643 if test "$wxUSE_SOUND" = "yes"; then
5644   AC_DEFINE(wxUSE_SOUND)
5645   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS sound"
5646 fi
5647
5648 if test "$WXGTK2" = 1; then
5649     PKG_PROG_PKG_CONFIG()
5650
5651     if test "$wxUSE_PRINTING_ARCHITECTURE" = "yes" ; then
5652
5653         if test "$wxUSE_GTKPRINT" = "yes" ; then
5654             if test "$WXGTK3" = 1; then
5655                 gtk_unix_print="gtk+-unix-print-3.0"
5656             else
5657                 gtk_unix_print="gtk+-unix-print-2.0 >= 2.10"
5658             fi
5659                 PKG_CHECK_MODULES(GTKPRINT,
5660                                   [$gtk_unix_print],
5661                     [
5662                         GUI_TK_LIBRARY="$GUI_TK_LIBRARY $GTKPRINT_LIBS"
5663                         CFLAGS="$GTKPRINT_CFLAGS $CFLAGS"
5664                         CXXFLAGS="$GTKPRINT_CFLAGS $CXXFLAGS"
5665                         AC_DEFINE(wxUSE_GTKPRINT)
5666                     ],
5667                     [
5668                         AC_MSG_WARN([GTK printing support not found (GTK+ >= 2.10), library will use GNOME printing support or standard PostScript printing])
5669                         wxUSE_GTKPRINT="no"
5670                     ]
5671                 )
5672         fi
5673
5674         if test "$WXGTK3" = 1; then
5675             wxUSE_LIBGNOMEPRINT=no
5676         fi
5677
5678         if test "$wxUSE_LIBGNOMEPRINT" = "yes" ; then
5679
5680                 PKG_CHECK_MODULES(LIBGNOMEPRINTUI,
5681                                   [libgnomeprintui-2.2 >= 2.8],
5682                     [
5683                         GUI_TK_LIBRARY="$GUI_TK_LIBRARY $LIBGNOMEPRINTUI_LIBS"
5684                         CFLAGS="$LIBGNOMEPRINTUI_CFLAGS $CFLAGS"
5685                         CXXFLAGS="$LIBGNOMEPRINTUI_CFLAGS $CXXFLAGS"
5686                         AC_DEFINE(wxUSE_LIBGNOMEPRINT)
5687                     ],
5688                     [
5689                         if test "$wxUSE_GTKPRINT" = yes; then
5690                             AC_MSG_RESULT(no)
5691                         else
5692                             AC_MSG_WARN([libgnomeprintui not found, library will use standard PostScript printing])
5693                         fi
5694                         wxUSE_LIBGNOMEPRINT="no"
5695                     ]
5696                 )
5697         fi
5698     fi
5699
5700     if test "$wxUSE_MIMETYPE" = "yes" ; then
5701         if test "$wxUSE_LIBGNOMEVFS" = "yes" ; then
5702
5703                 PKG_CHECK_MODULES(GNOMEVFS,
5704                                   [gnome-vfs-2.0 >= 2.0],
5705                     [
5706                         GUI_TK_LIBRARY="$GUI_TK_LIBRARY $GNOMEVFS_LIBS"
5707                         CFLAGS="$GNOMEVFS_CFLAGS $CFLAGS"
5708                         CXXFLAGS="$GNOMEVFS_CFLAGS $CXXFLAGS"
5709                         AC_DEFINE(wxUSE_LIBGNOMEVFS)
5710                     ],
5711                     [
5712                         AC_MSG_WARN([libgnomevfs not found, library won't be able to associate MIME type])
5713                         wxUSE_LIBGNOMEVFS="no"
5714                     ]
5715                 )
5716         fi
5717     fi
5718
5719     if test "$wxUSE_NOTIFICATION_MESSAGE" = "yes" ; then
5720         if test "$wxUSE_LIBNOTIFY" = "yes" ; then
5721             HAVE_LIBNOTIFY=0
5722             PKG_CHECK_MODULES(LIBNOTIFY, [libnotify >= 0.7],
5723                 [
5724                     HAVE_LIBNOTIFY=1
5725                     AC_DEFINE(wxUSE_LIBNOTIFY_0_7)
5726                 ],
5727                 [
5728                     PKG_CHECK_MODULES(LIBNOTIFY, [libnotify >= 0.4],
5729                         [HAVE_LIBNOTIFY=1],
5730                         [AC_MSG_WARN([libnotify not found, wxNotificationMessage will use generic implementation.])]
5731                     )
5732                 ]
5733             )
5734
5735             if test "$HAVE_LIBNOTIFY" = "1" ; then
5736                 GUI_TK_LIBRARY="$GUI_TK_LIBRARY $LIBNOTIFY_LIBS"
5737                 CFLAGS="$LIBNOTIFY_CFLAGS $CFLAGS"
5738                 CXXFLAGS="$LIBNOTIFY_CFLAGS $CXXFLAGS"
5739                 AC_DEFINE(wxUSE_LIBNOTIFY)
5740             fi
5741         fi
5742     fi
5743
5744     if test "$wxUSE_LIBHILDON" = "yes" ; then
5745         PKG_CHECK_MODULES(HILDON,
5746                           [hildon-lgpl >= 0.9],
5747             [
5748                 GUI_TK_LIBRARY="$GUI_TK_LIBRARY $HILDON_LIBS"
5749                 CFLAGS="$CFLAGS $HILDON_CFLAGS"
5750                 CXXFLAGS="$CXXFLAGS $HILDON_CFLAGS"
5751                 AC_DEFINE(wxUSE_LIBHILDON)
5752                 ac_hildon_lgpl=1
5753             ],
5754             [
5755                 AC_MSG_WARN([libhildon_lgpl not found])
5756                         wxUSE_LIBHILDON="no"
5757                         ac_hildon_lgpl=0
5758             ]
5759         )
5760
5761         if test "$ac_hildon_lgpl" = 0 ; then
5762             PKG_CHECK_MODULES(HILDON2,
5763                               [hildon-1 >= 1.99],
5764                 [
5765                     GUI_TK_LIBRARY="$GUI_TK_LIBRARY $HILDON2_LIBS"
5766                     CFLAGS="$CFLAGS $HILDON2_CFLAGS"
5767                     CXXFLAGS="$CXXFLAGS $HILDON2_CFLAGS"
5768                     AC_DEFINE(wxUSE_LIBHILDON2)
5769                 ],
5770                 [
5771                     AC_MSG_WARN([libhildon_1 not found])
5772                             wxUSE_LIBHILDON2="no"
5773                 ]
5774             )
5775         fi
5776     fi
5777 fi
5778
5779 if test "$wxUSE_CMDLINE_PARSER" = "yes"; then
5780   AC_DEFINE(wxUSE_CMDLINE_PARSER)
5781 fi
5782
5783 if test "$wxUSE_STOPWATCH" = "yes"; then
5784   AC_DEFINE(wxUSE_STOPWATCH)
5785 fi
5786
5787 if test "$wxUSE_DATETIME" = "yes"; then
5788   AC_DEFINE(wxUSE_DATETIME)
5789 fi
5790
5791 if test "$wxUSE_FILE" = "yes"; then
5792   AC_DEFINE(wxUSE_FILE)
5793 fi
5794
5795 if test "$wxUSE_FFILE" = "yes"; then
5796   AC_DEFINE(wxUSE_FFILE)
5797 fi
5798
5799 if test "$wxUSE_ARCHIVE_STREAMS" = "yes"; then
5800   if test "$wxUSE_STREAMS" != yes; then
5801     AC_MSG_WARN(wxArchive requires wxStreams... disabled)
5802     wxUSE_ARCHIVE_STREAMS=no
5803   else
5804     AC_DEFINE(wxUSE_ARCHIVE_STREAMS)
5805   fi
5806 fi
5807
5808 if test "$wxUSE_ZIPSTREAM" = "yes"; then
5809   if test "$wxUSE_ARCHIVE_STREAMS" != "yes"; then
5810     AC_MSG_WARN(wxZip requires wxArchive... disabled)
5811   elif test "$wxUSE_ZLIB" = "no"; then
5812     AC_MSG_WARN(wxZip requires wxZlib... disabled)
5813   else
5814     AC_DEFINE(wxUSE_ZIPSTREAM)
5815   fi
5816 fi
5817
5818 if test "$wxUSE_TARSTREAM" = "yes"; then
5819   if test "$wxUSE_ARCHIVE_STREAMS" != "yes"; then
5820     AC_MSG_WARN(wxTar requires wxArchive... disabled)
5821   else
5822     AC_DEFINE(wxUSE_TARSTREAM)
5823   fi
5824 fi
5825
5826 if test "$wxUSE_FILE_HISTORY" = "yes"; then
5827   AC_DEFINE(wxUSE_FILE_HISTORY)
5828 fi
5829
5830 if test "$wxUSE_FILESYSTEM" = "yes"; then
5831   if test "$wxUSE_STREAMS" != yes -o \( "$wxUSE_FILE" != yes -a "$wxUSE_FFILE" != yes \); then
5832     AC_MSG_WARN(wxFileSystem requires wxStreams and wxFile or wxFFile... disabled)
5833     wxUSE_FILESYSTEM=no
5834   else
5835     AC_DEFINE(wxUSE_FILESYSTEM)
5836   fi
5837 fi
5838
5839 if test "$wxUSE_FS_ARCHIVE" = "yes"; then
5840   if test "$wxUSE_FILESYSTEM" != yes -o "$wxUSE_ARCHIVE_STREAMS" != yes; then
5841     AC_MSG_WARN(wxArchiveFSHandler requires wxArchive and wxFileSystem... disabled)
5842   else
5843     AC_DEFINE(wxUSE_FS_ARCHIVE)
5844   fi
5845 fi
5846
5847 if test "$wxUSE_FS_ZIP" = "yes"; then
5848   if test "$wxUSE_FS_ARCHIVE" != yes; then
5849     AC_MSG_WARN(wxZipFSHandler requires wxArchiveFSHandler... disabled)
5850   else
5851     AC_DEFINE(wxUSE_FS_ZIP)
5852   fi
5853 fi
5854
5855 if test "$wxUSE_FSVOLUME" = "yes"; then
5856   AC_DEFINE(wxUSE_FSVOLUME)
5857 fi
5858
5859 if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes"; then
5860   if test "$USE_UNIX" != 1; then
5861     AC_MSG_WARN([Catching fatal exceptions not currently supported on this system, wxApp::OnFatalException will not be called])
5862     wxUSE_ON_FATAL_EXCEPTION=no
5863   else
5864     AC_DEFINE(wxUSE_ON_FATAL_EXCEPTION)
5865   fi
5866 fi
5867
5868 if test "$wxUSE_STACKWALKER" = "yes"; then
5869     AC_DEFINE(wxUSE_STACKWALKER)
5870 fi
5871
5872 if test "$wxUSE_DEBUGREPORT" = "yes"; then
5873     if test "$USE_UNIX" != 1 -a "$USE_WIN32" != 1; then
5874         AC_MSG_WARN([Creating debug reports not currently supported on this system, disabled])
5875         wxUSE_DEBUGREPORT=no
5876     else
5877         AC_DEFINE(wxUSE_DEBUGREPORT)
5878         if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes"; then
5879             SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS debugrpt"
5880         fi
5881     fi
5882 fi
5883
5884 if test "$wxUSE_SNGLINST_CHECKER" = "yes"; then
5885   AC_DEFINE(wxUSE_SNGLINST_CHECKER)
5886 fi
5887
5888 if test "$wxUSE_BUSYINFO" = "yes"; then
5889   AC_DEFINE(wxUSE_BUSYINFO)
5890 fi
5891
5892 if test "$wxUSE_HOTKEY" = "yes"; then
5893   if test "$wxUSE_MSW" != 1 -a "$wxUSE_OSX_COCOA" != 1 -a "$wxUSE_OSX_CARBON" != 1; then
5894     AC_MSG_WARN([Hot keys not supported by the current toolkit, disabled])
5895     wxUSE_HOTKEY=no
5896   fi
5897 elif test "$wxUSE_HOTKEY" = "auto"; then
5898   if test "$wxUSE_MSW" = 1 -o "$wxUSE_OSX_COCOA" = 1 -o "$wxUSE_OSX_CARBON" = 1; then
5899     wxUSE_HOTKEY=yes
5900   fi
5901 fi
5902 if test "$wxUSE_HOTKEY" = "yes"; then
5903   AC_DEFINE(wxUSE_HOTKEY)
5904 fi
5905
5906 if test "$wxUSE_STD_CONTAINERS" = "yes"; then
5907   AC_DEFINE(wxUSE_STD_CONTAINERS)
5908 fi
5909
5910 if test "$wxUSE_STD_IOSTREAM" = "yes"; then
5911   AC_DEFINE(wxUSE_STD_IOSTREAM)
5912 fi
5913
5914 if test "$wxUSE_STD_STRING" = "yes"; then
5915   AC_DEFINE(wxUSE_STD_STRING)
5916 fi
5917
5918 if test "$wxUSE_STD_STRING_CONV_IN_WXSTRING" = "yes"; then
5919   AC_DEFINE(wxUSE_STD_STRING_CONV_IN_WXSTRING)
5920 fi
5921
5922 if test "$wxUSE_STDPATHS" = "yes"; then
5923   AC_DEFINE(wxUSE_STDPATHS)
5924 fi
5925
5926 if test "$wxUSE_TEXTBUFFER" = "yes"; then
5927     AC_DEFINE(wxUSE_TEXTBUFFER)
5928 fi
5929
5930 if test "$wxUSE_TEXTFILE" = "yes"; then
5931   if test "$wxUSE_FILE" != "yes" -o "$wxUSE_TEXTBUFFER" != "yes" ; then
5932     AC_MSG_WARN(wxTextFile requires wxFile and wxTextBuffer... disabled)
5933   else
5934     AC_DEFINE(wxUSE_TEXTFILE)
5935   fi
5936 fi
5937
5938 if test "$wxUSE_CONFIG" = "yes" ; then
5939   if test "$wxUSE_TEXTFILE" != "yes"; then
5940     AC_MSG_WARN(wxConfig requires wxTextFile... disabled)
5941   else
5942     AC_DEFINE(wxUSE_CONFIG)
5943     AC_DEFINE(wxUSE_CONFIG_NATIVE)
5944     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS config"
5945   fi
5946 fi
5947
5948 if test "$wxUSE_INTL" = "yes" ; then
5949   if test "$wxUSE_FILE" != "yes"; then
5950     AC_MSG_WARN(I18n code requires wxFile... disabled)
5951   else
5952     AC_DEFINE(wxUSE_INTL)
5953     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS internat"
5954     GUIDIST="$GUIDIST INTL_DIST"
5955   fi
5956 fi
5957
5958 if test "$wxUSE_XLOCALE" = "yes" ; then
5959     AC_DEFINE(wxUSE_XLOCALE)
5960     AC_CHECK_TYPES(locale_t,,,
5961                    [#include <xlocale.h>
5962                     #include <locale.h>])
5963 fi
5964
5965 if test "$wxUSE_LOG" = "yes"; then
5966   AC_DEFINE(wxUSE_LOG)
5967
5968     if test "$wxUSE_LOGGUI" = "yes"; then
5969       AC_DEFINE(wxUSE_LOGGUI)
5970     fi
5971
5972     if test "$wxUSE_LOGWINDOW" = "yes"; then
5973       AC_DEFINE(wxUSE_LOGWINDOW)
5974     fi
5975
5976     if test "$wxUSE_LOGDIALOG" = "yes"; then
5977       AC_DEFINE(wxUSE_LOG_DIALOG)
5978     fi
5979
5980     dnl the keyboard sample requires wxUSE_LOG
5981     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS keyboard"
5982 fi
5983
5984 if test "$wxUSE_LONGLONG" = "yes"; then
5985   AC_DEFINE(wxUSE_LONGLONG)
5986 fi
5987
5988 if test "$wxUSE_GEOMETRY" = "yes"; then
5989   AC_DEFINE(wxUSE_GEOMETRY)
5990 fi
5991
5992 if test "$wxUSE_BASE64" = "yes"; then
5993   AC_DEFINE(wxUSE_BASE64)
5994 fi
5995
5996 if test "$wxUSE_STREAMS" = "yes" ; then
5997   AC_DEFINE(wxUSE_STREAMS)
5998 fi
5999
6000 if test "$wxUSE_PRINTF_POS_PARAMS" = "yes"; then
6001   AC_DEFINE(wxUSE_PRINTF_POS_PARAMS)
6002 fi
6003
6004 if test "$wxUSE_OBJC_UNIQUIFYING" = "yes"; then
6005   AC_DEFINE(wxUSE_OBJC_UNIQUIFYING)
6006 fi
6007
6008 dnl ---------------------------------------------------------------------------
6009 dnl console event loop stuff
6010 dnl ---------------------------------------------------------------------------
6011
6012 if test "$wxUSE_CONSOLE_EVENTLOOP" = "yes"; then
6013     AC_DEFINE(wxUSE_CONSOLE_EVENTLOOP)
6014
6015     if test "$wxUSE_UNIX" = "yes"; then
6016         if test "$wxUSE_SELECT_DISPATCHER" = "yes"; then
6017             AC_DEFINE(wxUSE_SELECT_DISPATCHER)
6018         fi
6019
6020         if test "$wxUSE_EPOLL_DISPATCHER" = "yes"; then
6021             AC_CHECK_HEADERS(sys/epoll.h,,, [AC_INCLUDES_DEFAULT()])
6022             if test "$ac_cv_header_sys_epoll_h" = "yes"; then
6023                 AC_DEFINE(wxUSE_EPOLL_DISPATCHER)
6024             else
6025                 AC_MSG_WARN([sys/epoll.h not available, wxEpollDispatcher disabled])
6026             fi
6027         fi
6028     fi
6029 fi
6030
6031 dnl ---------------------------------------------------------------------------
6032 dnl time/date functions
6033 dnl ---------------------------------------------------------------------------
6034
6035 dnl check for gettimeofday (SVr4, BSD 4.3) and ftime (V7, BSD 4.3) for the
6036 dnl function to be used for high resolution timers
6037 AC_CHECK_FUNCS(gettimeofday ftime, break)
6038
6039 if test "$ac_cv_func_gettimeofday" = "yes"; then
6040     AC_CACHE_CHECK([whether gettimeofday takes two arguments],
6041                    wx_cv_func_gettimeofday_has_2_args,
6042     [
6043         dnl on some _really_ old systems it takes only 1 argument
6044         AC_TRY_COMPILE(
6045             [
6046                 #include <sys/time.h>
6047                 #include <unistd.h>
6048             ],
6049             [
6050                 struct timeval tv;
6051                 gettimeofday(&tv, NULL);
6052             ],
6053             wx_cv_func_gettimeofday_has_2_args=yes,
6054             AC_TRY_COMPILE(
6055                 [
6056                     #include <sys/time.h>
6057                     #include <unistd.h>
6058                 ],
6059                 [
6060                     struct timeval tv;
6061                     gettimeofday(&tv);
6062                 ],
6063                 wx_cv_func_gettimeofday_has_2_args=no,
6064                 [
6065                     AC_MSG_WARN([failed to determine number of gettimeofday() arguments])
6066                     wx_cv_func_gettimeofday_has_2_args=unknown
6067                 ]
6068             )
6069         )
6070     ])
6071
6072     if test "$wx_cv_func_gettimeofday_has_2_args" != "yes"; then
6073         AC_DEFINE(WX_GETTIMEOFDAY_NO_TZ)
6074     fi
6075 fi
6076
6077 if test "$wxUSE_DATETIME" = "yes"; then
6078     dnl check for timezone variable
6079     dnl   doesn't exist under Darwin / Mac OS X which uses tm_gmtoff instead
6080     AC_CACHE_CHECK(for timezone variable in <time.h>,
6081                    wx_cv_var_timezone,
6082                    [
6083                         AC_LANG_PUSH(C++)
6084                         AC_TRY_COMPILE(
6085                             [
6086                                 #include <time.h>
6087                             ],
6088                             [
6089                                 int tz;
6090                                 tz = timezone;
6091                             ],
6092                             [
6093                                 wx_cv_var_timezone=timezone
6094                             ],
6095                             [
6096                                 AC_TRY_COMPILE(
6097                                     [
6098                                         #include <time.h>
6099                                     ],
6100                                     [
6101                                         int tz;
6102                                         tz = _timezone;
6103                                     ],
6104                                     [
6105                                         wx_cv_var_timezone=_timezone
6106                                     ],
6107                                     [
6108                                         AC_TRY_COMPILE(
6109                                             [
6110                                                 #include <time.h>
6111                                             ],
6112                                             [
6113                                                 int tz;
6114                                                 tz = __timezone;
6115                                             ],
6116                                             [
6117                                                 wx_cv_var_timezone=__timezone
6118                                             ],
6119                                             [
6120                                                 if test "$USE_DOS" = 0 ; then
6121                                                     AC_MSG_WARN(no timezone variable, will use tm_gmtoff instead)
6122                                                 fi
6123                                             ]
6124                                         )
6125                                     ]
6126                                 )
6127                             ]
6128                         )
6129                         AC_LANG_POP()
6130                    ]
6131     )
6132
6133     dnl as we want $wx_cv_var_timezone to be expanded, use AC_DEFINE_UNQUOTED
6134     if test "x$wx_cv_var_timezone" != x ; then
6135         AC_DEFINE_UNQUOTED(WX_TIMEZONE, $wx_cv_var_timezone)
6136     fi
6137
6138     dnl check for localtime (it's POSIX, but the check can do no harm...)
6139     AC_CHECK_FUNCS(localtime)
6140
6141     if test "$ac_cv_func_localtime" = "yes"; then
6142         AC_CACHE_CHECK(for tm_gmtoff in struct tm,
6143                        wx_cv_struct_tm_has_gmtoff,
6144         [
6145             AC_TRY_COMPILE(
6146                 [
6147                     #include <time.h>
6148                 ],
6149                 [
6150                     struct tm tm;
6151                     tm.tm_gmtoff++;
6152                 ],
6153                 [
6154                     wx_cv_struct_tm_has_gmtoff=yes
6155                 ],
6156                 wx_cv_struct_tm_has_gmtoff=no
6157             )
6158         ])
6159     fi
6160
6161     if test "$wx_cv_struct_tm_has_gmtoff" = "yes"; then
6162         AC_DEFINE(WX_GMTOFF_IN_TM)
6163     fi
6164
6165     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS typetest"
6166 fi
6167
6168 dnl ------------------------------------------------------------------------
6169 dnl wxProcess
6170 dnl ------------------------------------------------------------------------
6171
6172 AC_CHECK_FUNCS(setpriority)
6173
6174 dnl ------------------------------------------------------------------------
6175 dnl wxSocket
6176 dnl ------------------------------------------------------------------------
6177
6178 if test "$wxUSE_SOCKETS" = "yes"; then
6179     dnl under MSW we always have sockets
6180     if test "$TOOLKIT" != "MSW"; then
6181         dnl under Solaris and OS/2, socket functions live in -lsocket
6182         AC_CHECK_FUNC(socket,,
6183             [
6184                 AC_CHECK_LIB(socket, socket,
6185                     if test "$INET_LINK" != " -lsocket"; then
6186                         INET_LINK="$INET_LINK -lsocket"
6187                     fi,
6188                     [
6189                         AC_MSG_WARN([socket library not found - sockets will be disabled])
6190                         wxUSE_SOCKETS=no
6191                     ]
6192                 )
6193             ]
6194         )
6195     fi
6196 fi
6197
6198 if test "$wxUSE_SOCKETS" = "yes" ; then
6199     dnl this test may be appropriate if building under cygwin
6200     dnl right now I'm assuming it also uses the winsock stuff
6201     dnl like mingw does..  -- RL
6202     if test "$TOOLKIT" != "MSW"; then
6203         dnl determine the type of third argument for getsockname
6204         dnl This test needs to be done in C++ mode since gsocket.cpp now
6205         dnl is C++ code and pointer cast that are possible even without
6206         dnl warning in C still fail in C++.
6207         AC_CACHE_CHECK([what is the type of the third argument of getsockname],
6208                        wx_cv_type_getsockname3,
6209             [
6210                 AC_LANG_PUSH(C++)
6211                 AC_TRY_COMPILE(
6212                     [
6213                         #include <sys/types.h>
6214                         #include <sys/socket.h>
6215                     ],
6216                     [
6217                         socklen_t len;
6218                         getsockname(0, 0, &len);
6219                     ],
6220                     wx_cv_type_getsockname3=socklen_t,
6221                     [
6222                         dnl the compiler will compile the version with size_t
6223                         dnl even if the real type of the last parameter is int
6224                         dnl but it should give at least a warning about
6225                         dnl converting between incompatible pointer types, so
6226                         dnl try to use it to get the correct behaviour at
6227                         dnl least with gcc (otherwise we'd always use size_t)
6228                         CFLAGS_OLD="$CFLAGS"
6229                         if test "$GCC" = yes ; then
6230                             CFLAGS="-Werror $CFLAGS"
6231                         fi
6232
6233                         AC_TRY_COMPILE(
6234                             [
6235                                 #include <sys/types.h>
6236                                 #include <sys/socket.h>
6237                             ],
6238                             [
6239                                 size_t len;
6240                                 getsockname(0, 0, &len);
6241                             ],
6242                             wx_cv_type_getsockname3=size_t,
6243                             AC_TRY_COMPILE(
6244                                 [
6245                                     #include <sys/types.h>
6246                                     #include <sys/socket.h>
6247                                 ],
6248                                 [
6249                                     int len;
6250                                     getsockname(0, 0, &len);
6251                                 ],
6252                                 wx_cv_type_getsockname3=int,
6253                                 wx_cv_type_getsockname3=unknown
6254                             )
6255                         )
6256
6257                         CFLAGS="$CFLAGS_OLD"
6258                     ]
6259                 )
6260                 AC_LANG_POP()
6261             ])
6262
6263         if test "$wx_cv_type_getsockname3" = "unknown"; then
6264             wxUSE_SOCKETS=no
6265             AC_MSG_WARN([Couldn't find socklen_t synonym for this system])
6266         else
6267             AC_DEFINE_UNQUOTED(WX_SOCKLEN_T, $wx_cv_type_getsockname3)
6268         fi
6269         dnl Do this again for getsockopt as it may be different
6270         AC_CACHE_CHECK([what is the type of the fifth argument of getsockopt],
6271                        wx_cv_type_getsockopt5,
6272             [
6273                 dnl Note that the rules for compatibility of pointers
6274                 dnl are somewhat different between C and C++, so code
6275                 dnl that fails in C++ may not even give a warning about
6276                 dnl converting between incompatible pointer types in C.
6277                 dnl So this test needs to be done in C++ mode.
6278                 AC_LANG_PUSH(C++)
6279                 AC_TRY_COMPILE(
6280                     [
6281                         #include <sys/types.h>
6282                         #include <sys/socket.h>
6283                     ],
6284                     [
6285                         socklen_t len;
6286                         getsockopt(0, 0, 0, 0, &len);
6287                     ],
6288                     wx_cv_type_getsockopt5=socklen_t,
6289                     [
6290                         AC_TRY_COMPILE(
6291                             [
6292                                 #include <sys/types.h>
6293                                 #include <sys/socket.h>
6294                             ],
6295                             [
6296                                 size_t len;
6297                                 getsockopt(0, 0, 0, 0, &len);
6298                             ],
6299                             wx_cv_type_getsockopt5=size_t,
6300                             AC_TRY_COMPILE(
6301                                 [
6302                                     #include <sys/types.h>
6303                                     #include <sys/socket.h>
6304                                 ],
6305                                 [
6306                                     int len;
6307                                     getsockopt(0, 0, 0, 0, &len);
6308                                 ],
6309                                 wx_cv_type_getsockopt5=int,
6310                                 wx_cv_type_getsockopt5=unknown
6311                             )
6312                         )
6313                     ]
6314                 )
6315                 AC_LANG_POP()
6316             ])
6317
6318         if test "$wx_cv_type_getsockopt5" = "unknown"; then
6319             wxUSE_SOCKETS=no
6320             AC_MSG_WARN([Couldn't find socklen_t synonym for this system])
6321         else
6322             AC_DEFINE_UNQUOTED(SOCKOPTLEN_T, $wx_cv_type_getsockopt5)
6323         fi
6324     fi
6325 fi
6326
6327 if test "$wxUSE_SOCKETS" = "yes" ; then
6328     if test "$wxUSE_IPV6" = "yes"; then
6329         AC_CACHE_CHECK(
6330             [whether we have sockaddr_in6],
6331             [wx_cv_type_sockaddr_in6],
6332             [
6333                 AC_TRY_COMPILE(
6334                     [
6335                         #include <sys/types.h>
6336                         #include <sys/socket.h>
6337                         #include <netinet/in.h>
6338                     ],
6339                     [
6340                         struct sockaddr_in6 sa6;
6341                     ],
6342                     wx_cv_type_sockaddr_in6=yes,
6343                     wx_cv_type_sockaddr_in6=no
6344                 )
6345             ]
6346         )
6347
6348         if test "$wx_cv_type_sockaddr_in6"="yes"; then
6349             AC_DEFINE(wxUSE_IPV6)
6350         else
6351             AC_MSG_WARN([IPv6 support not available... disabled])
6352         fi
6353     fi
6354
6355     AC_DEFINE(wxUSE_SOCKETS)
6356     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS sockets"
6357 fi
6358
6359 if test "$wxUSE_PROTOCOL" = "yes"; then
6360     if test "$wxUSE_SOCKETS" != "yes"; then
6361         AC_MSG_WARN(Protocol classes require sockets... disabled)
6362         wxUSE_PROTOCOL=no
6363     fi
6364 fi
6365
6366 if test "$wxUSE_PROTOCOL" = "yes"; then
6367     AC_DEFINE(wxUSE_PROTOCOL)
6368
6369     if test "$wxUSE_PROTOCOL_HTTP" = "yes"; then
6370         AC_DEFINE(wxUSE_PROTOCOL_HTTP)
6371     fi
6372     if test "$wxUSE_PROTOCOL_FTP" = "yes"; then
6373         AC_DEFINE(wxUSE_PROTOCOL_FTP)
6374     fi
6375     if test "$wxUSE_PROTOCOL_FILE" = "yes"; then
6376         AC_DEFINE(wxUSE_PROTOCOL_FILE)
6377     fi
6378 else
6379     if test "$wxUSE_FS_INET" = "yes"; then
6380         AC_MSG_WARN([HTTP filesystem require protocol classes... disabled])
6381         wxUSE_FS_INET="no"
6382     fi
6383 fi
6384
6385 if test "$wxUSE_URL" = "yes"; then
6386     if test "$wxUSE_PROTOCOL" != "yes"; then
6387         AC_MSG_WARN(wxURL class requires wxProtocol... disabled)
6388         wxUSE_URL=no
6389     fi
6390     if test "$wxUSE_URL" = "yes"; then
6391         AC_DEFINE(wxUSE_URL)
6392     fi
6393 fi
6394
6395 if test "$wxUSE_VARIANT" = "yes"; then
6396     AC_DEFINE(wxUSE_VARIANT)
6397 fi
6398
6399 if test "$wxUSE_FS_INET" = "yes"; then
6400   AC_DEFINE(wxUSE_FS_INET)
6401 fi
6402
6403 dnl ---------------------------------------------------------------------------
6404 dnl Joystick support
6405 dnl ---------------------------------------------------------------------------
6406
6407 if test "$wxUSE_GUI" = "yes" -a "$wxUSE_JOYSTICK" = "yes"; then
6408     wxUSE_JOYSTICK=no
6409
6410     dnl under MSW we always have joystick support
6411     if test "$TOOLKIT" = "MSW"; then
6412         wxUSE_JOYSTICK=yes
6413
6414     dnl mac only available on darwin
6415     elif test "$TOOLKIT" = "OSX" -o "$TOOLKIT" = "COCOA"; then
6416         if test "$USE_DARWIN" = 1; then
6417             dnl check for a bug in the headers, some have bad setEventCallout
6418             AC_MSG_CHECKING([headers have declarations needed for joystick support])
6419             AC_LANG_PUSH(C++)
6420             AC_TRY_COMPILE( [ #include <IOKit/hid/IOHIDLib.h> ],
6421                             [ IOHIDQueueInterface *qi = NULL;
6422                               IOHIDCallbackFunction cb = NULL;
6423                               qi->setEventCallout(NULL, cb, NULL, NULL); ],
6424                             [ wxUSE_JOYSTICK=yes ]
6425                           )
6426             AC_LANG_POP()
6427             AC_MSG_RESULT($wxUSE_JOYSTICK)
6428         fi
6429
6430     dnl joystick support is only for Linux 2.1.x or greater
6431     else
6432         dnl notice the dummy includes argument: without it, AC_CHECK_HEADER
6433         dnl checks only whether the header can be preprocessed, not that it
6434         dnl can be compiled and in Linux 2.6.16 joystick.h is present but
6435         dnl can't be compiled because of an error and with the default
6436         dnl AC_CHECK_HEADER semantics we'd still detect it in this case and
6437         dnl build would fail later
6438         AC_CHECK_HEADERS([linux/joystick.h], [wxUSE_JOYSTICK=yes],, [AC_INCLUDES_DEFAULT()])
6439     fi
6440
6441     if test "$wxUSE_JOYSTICK" = "yes"; then
6442         AC_DEFINE(wxUSE_JOYSTICK)
6443         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS joytest"
6444     else
6445         AC_MSG_WARN(Joystick not supported by this system... disabled)
6446     fi
6447 fi
6448
6449
6450 dnl ---------------------------------------------------------------------------
6451 dnl String stuff
6452 dnl ---------------------------------------------------------------------------
6453
6454 if test "$wxUSE_FONTENUM" = "yes" ; then
6455   AC_DEFINE(wxUSE_FONTENUM)
6456 fi
6457
6458 if test "$wxUSE_FONTMAP" = "yes" ; then
6459   AC_DEFINE(wxUSE_FONTMAP)
6460 fi
6461
6462 if test "$wxUSE_UNICODE" = "yes" ; then
6463   AC_DEFINE(wxUSE_UNICODE)
6464
6465   if test "$USE_WIN32" != 1; then
6466       wxUSE_UNICODE_MSLU=no
6467   fi
6468
6469   if test "$USE_WIN32" = 1 -a "$wxUSE_UNICODE_MSLU" = "yes"; then
6470         AC_CHECK_LIB(unicows,main,
6471             [
6472                 AC_DEFINE(wxUSE_UNICODE_MSLU)
6473             ],
6474             [
6475                 AC_MSG_WARN([Compiler doesn't support MSLU (libunicows.a), disabled.
6476                              Applications will only run on Windows NT/2000/XP!])
6477                 wxUSE_UNICODE_MSLU=no
6478             ])
6479     fi
6480 fi
6481
6482 if test "$wxUSE_UNICODE" = "yes" -a "$wxUSE_UNICODE_UTF8" = "yes"; then
6483     AC_DEFINE(wxUSE_UNICODE_UTF8)
6484
6485     if test "$wxUSE_UNICODE_UTF8_LOCALE" = "yes"; then
6486         AC_DEFINE(wxUSE_UTF8_LOCALE_ONLY)
6487     fi
6488 fi
6489
6490 dnl ---------------------------------------------------------------------------
6491 dnl big GUI components: MDI, doc/view, printing, help, ...
6492 dnl ---------------------------------------------------------------------------
6493
6494 if test "$wxUSE_CONSTRAINTS" = "yes"; then
6495     AC_DEFINE(wxUSE_CONSTRAINTS)
6496     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS layout"
6497 fi
6498
6499 if test "$wxUSE_MDI" = "yes"; then
6500     AC_DEFINE(wxUSE_MDI)
6501
6502     if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
6503         AC_DEFINE(wxUSE_MDI_ARCHITECTURE)
6504         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS mdi"
6505     fi
6506 fi
6507
6508 if test "$wxUSE_DOC_VIEW_ARCHITECTURE" = "yes" ; then
6509     AC_DEFINE(wxUSE_DOC_VIEW_ARCHITECTURE)
6510     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS docview"
6511 fi
6512
6513 if test "$wxUSE_HELP" = "yes"; then
6514     AC_DEFINE(wxUSE_HELP)
6515     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS help"
6516
6517     if test "$wxUSE_MSW" = 1; then
6518       if test "$wxUSE_MS_HTML_HELP" = "yes"; then
6519         AC_DEFINE(wxUSE_MS_HTML_HELP)
6520       fi
6521     fi
6522
6523     if test "$wxUSE_WXHTML_HELP" = "yes"; then
6524       if test "$wxUSE_HTML" = "yes"; then
6525         AC_DEFINE(wxUSE_WXHTML_HELP)
6526       else
6527         AC_MSG_WARN(Cannot use wxHTML-based help without wxHTML so it won't be compiled)
6528         wxUSE_WXHTML_HELP=no
6529       fi
6530     fi
6531 fi
6532
6533 if test "$wxUSE_PRINTING_ARCHITECTURE" = "yes" ; then
6534     AC_DEFINE(wxUSE_PRINTING_ARCHITECTURE)
6535     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS printing"
6536 fi
6537
6538 if test "$wxUSE_POSTSCRIPT" = "yes" ; then
6539   AC_DEFINE(wxUSE_POSTSCRIPT)
6540 fi
6541
6542 AC_DEFINE(wxUSE_AFM_FOR_POSTSCRIPT)
6543
6544 if test "$wxUSE_SVG" = "yes"; then
6545     AC_DEFINE(wxUSE_SVG)
6546 fi
6547
6548 dnl ---------------------------------------------------------------------------
6549 dnl wxMetafile
6550 dnl ---------------------------------------------------------------------------
6551
6552 if test "$wxUSE_METAFILE" = "yes"; then
6553     if test "$wxUSE_MSW" != 1 -a "$wxUSE_MAC" != 1 -a "$wxUSE_PM" != 1; then
6554         AC_MSG_WARN([wxMetafile is not available on this system... disabled])
6555         wxUSE_METAFILE=no
6556     fi
6557 elif test "$wxUSE_METAFILE" = "auto"; then
6558     if test "$wxUSE_MSW" = 1 -o "$wxUSE_MAC" = 1 -o "$wxUSE_PM" = 1; then
6559         wxUSE_METAFILE=yes
6560     fi
6561 fi
6562
6563 if test "$wxUSE_METAFILE" = "yes"; then
6564     AC_DEFINE(wxUSE_METAFILE)
6565     if test "$wxUSE_MSW" = 1; then
6566         dnl this one should probably be made separately configurable
6567         AC_DEFINE(wxUSE_ENH_METAFILE)
6568     fi
6569 fi
6570
6571 dnl ---------------------------------------------------------------------------
6572 dnl IPC: IPC, Drag'n'Drop, Clipboard, ...
6573 dnl ---------------------------------------------------------------------------
6574
6575 dnl check for ole headers and disable a few features requiring it if not
6576 dnl present (earlier versions of mingw32 don't have ole2.h)
6577 if test "$USE_WIN32" = 1 -a \( "$wxUSE_DATAOBJ"       = "yes" \
6578                           -o "$wxUSE_CLIPBOARD"     = "yes" \
6579                           -o "$wxUSE_OLE"     = "yes" \
6580                           -o "$wxUSE_DRAG_AND_DROP" = "yes" \) ; then
6581     AC_CHECK_HEADER(ole2.h,,, [ ])
6582
6583     if test "$ac_cv_header_ole2_h" = "yes" ; then
6584         if test "$GCC" = yes ; then
6585             AC_MSG_CHECKING([if g++ requires -fvtable-thunks])
6586             AC_TRY_COMPILE([#include <windows.h>
6587                             #include <ole2.h>],
6588                            [],
6589                            [AC_MSG_RESULT(no)],
6590                            [AC_MSG_RESULT(yes)
6591                             WXCONFIG_CXXFLAGS="$WXCONFIG_CXXFLAGS -fvtable-thunks"])
6592             LIBS=" -lrpcrt4 -loleaut32 -lole32 -luuid$LIBS"
6593             if test "$wxUSE_OLE" = "yes" ; then
6594                 AC_DEFINE(wxUSE_OLE)
6595                 AC_DEFINE(wxUSE_OLE_AUTOMATION)
6596                 AC_DEFINE(wxUSE_ACTIVEX)
6597                 SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS oleauto"
6598             fi
6599         fi
6600
6601         dnl for OLE clipboard and dnd
6602         if test "$wxUSE_DATAOBJ" = "yes" ; then
6603             AC_DEFINE(wxUSE_DATAOBJ)
6604         fi
6605     else
6606         AC_MSG_WARN([Some features disabled because OLE headers not found])
6607
6608         wxUSE_CLIPBOARD=no
6609         wxUSE_DRAG_AND_DROP=no
6610         wxUSE_DATAOBJ=no
6611         wxUSE_OLE=no
6612     fi
6613 fi
6614
6615 if test "$wxUSE_IPC" = "yes"; then
6616     if test "$wxUSE_SOCKETS" != "yes" -a "$USE_WIN32" != 1; then
6617         AC_MSG_WARN(wxWidgets IPC classes require sockets... disabled)
6618         wxUSE_IPC=no
6619     fi
6620
6621     if test "$wxUSE_IPC" = "yes"; then
6622         AC_DEFINE(wxUSE_IPC)
6623         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS ipc"
6624     fi
6625 fi
6626
6627 if test "$wxUSE_DATAOBJ" = "yes"; then
6628     AC_DEFINE(wxUSE_DATAOBJ)
6629 else
6630     AC_MSG_WARN([Clipboard and drag-and-drop require wxDataObject -- disabled])
6631     wxUSE_CLIPBOARD=no
6632     wxUSE_DRAG_AND_DROP=no
6633 fi
6634
6635 if test "$wxUSE_CLIPBOARD" = "yes"; then
6636     if test "$wxUSE_DFB" = 1; then
6637         AC_MSG_WARN([Clipboard not yet supported under $TOOLKIT... disabled])
6638         wxUSE_CLIPBOARD=no
6639     fi
6640
6641     if test "$wxUSE_CLIPBOARD" = "yes"; then
6642         AC_DEFINE(wxUSE_CLIPBOARD)
6643     fi
6644 fi
6645
6646 if test "$wxUSE_DRAG_AND_DROP" = "yes" ; then
6647     if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_X11" = 1 -o "$wxUSE_DFB" = 1; then
6648         AC_MSG_WARN([Drag and drop not yet supported under $TOOLKIT... disabled])
6649         wxUSE_DRAG_AND_DROP=no
6650     fi
6651
6652     if test "$wxUSE_DRAG_AND_DROP" = "yes"; then
6653         AC_DEFINE(wxUSE_DRAG_AND_DROP)
6654     fi
6655
6656 fi
6657
6658 if test "$wxUSE_DRAG_AND_DROP" = "yes" -o "$wxUSE_CLIPBOARD" = "yes"; then
6659     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dnd"
6660 fi
6661
6662 if test "$wxUSE_CLIPBOARD" = "yes"; then
6663     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS clipboard"
6664 fi
6665
6666 if test "$wxUSE_SPLINES" = "yes" ; then
6667   AC_DEFINE(wxUSE_SPLINES)
6668 fi
6669
6670 if test "$wxUSE_MOUSEWHEEL" = "yes" ; then
6671   AC_DEFINE(wxUSE_MOUSEWHEEL)
6672 fi
6673
6674 if test "$wxUSE_UIACTIONSIMULATOR" = "yes" ; then
6675     AC_DEFINE(wxUSE_UIACTIONSIMULATOR)
6676     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS uiaction"
6677 fi
6678
6679 if test "$wxUSE_DC_TRANSFORM_MATRIX" = "yes" ; then
6680     AC_DEFINE(wxUSE_DC_TRANSFORM_MATRIX)
6681 fi
6682
6683 dnl ---------------------------------------------------------------------------
6684 dnl GUI controls
6685 dnl ---------------------------------------------------------------------------
6686
6687 USES_CONTROLS=0
6688 if test "$wxUSE_CONTROLS" = "yes"; then
6689   USES_CONTROLS=1
6690 fi
6691
6692 if test "$wxUSE_MARKUP" = "yes"; then
6693   AC_DEFINE(wxUSE_MARKUP)
6694 fi
6695
6696 if test "$wxUSE_ACCEL" = "yes"; then
6697   AC_DEFINE(wxUSE_ACCEL)
6698   USES_CONTROLS=1
6699 fi
6700
6701 if test "$wxUSE_ANIMATIONCTRL" = "yes"; then
6702   AC_DEFINE(wxUSE_ANIMATIONCTRL)
6703   USES_CONTROLS=1
6704   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS animate"
6705 fi
6706
6707 if test "$wxUSE_BANNERWINDOW" = "yes"; then
6708   AC_DEFINE(wxUSE_BANNERWINDOW)
6709 fi
6710
6711 if test "$wxUSE_BUTTON" = "yes"; then
6712   AC_DEFINE(wxUSE_BUTTON)
6713   USES_CONTROLS=1
6714 fi
6715
6716 if test "$wxUSE_BMPBUTTON" = "yes"; then
6717   AC_DEFINE(wxUSE_BMPBUTTON)
6718   USES_CONTROLS=1
6719 fi
6720
6721 if test "$wxUSE_CALCTRL" = "yes"; then
6722   AC_DEFINE(wxUSE_CALENDARCTRL)
6723   USES_CONTROLS=1
6724   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS calendar"
6725 fi
6726
6727 if test "$wxUSE_CARET" = "yes"; then
6728   AC_DEFINE(wxUSE_CARET)
6729   USES_CONTROLS=1
6730   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS caret"
6731 fi
6732
6733 if test "$wxUSE_COLLPANE" = "yes"; then
6734     AC_DEFINE(wxUSE_COLLPANE)
6735     USES_CONTROLS=1
6736     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS collpane"
6737 fi
6738
6739 if test "$wxUSE_COMBOBOX" = "yes"; then
6740   AC_DEFINE(wxUSE_COMBOBOX)
6741   USES_CONTROLS=1
6742 fi
6743
6744 if test "$wxUSE_COMBOCTRL" = "yes"; then
6745   AC_DEFINE(wxUSE_COMBOCTRL)
6746   USES_CONTROLS=1
6747 fi
6748
6749 if test "$wxUSE_COMMANDLINKBUTTON" = "yes"; then
6750   AC_DEFINE(wxUSE_COMMANDLINKBUTTON)
6751   USES_CONTROLS=1
6752 fi
6753
6754 if test "$wxUSE_CHOICE" = "yes"; then
6755   AC_DEFINE(wxUSE_CHOICE)
6756   USES_CONTROLS=1
6757 fi
6758
6759 if test "$wxUSE_CHOICEBOOK" = "yes"; then
6760     AC_DEFINE(wxUSE_CHOICEBOOK)
6761     USES_CONTROLS=1
6762 fi
6763
6764 if test "$wxUSE_CHECKBOX" = "yes"; then
6765   AC_DEFINE(wxUSE_CHECKBOX)
6766   USES_CONTROLS=1
6767 fi
6768
6769 if test "$wxUSE_CHECKLST" = "yes"; then
6770   AC_DEFINE(wxUSE_CHECKLISTBOX)
6771   USES_CONTROLS=1
6772 fi
6773
6774 if test "$wxUSE_COLOURPICKERCTRL" = "yes"; then
6775   AC_DEFINE(wxUSE_COLOURPICKERCTRL)
6776   USES_CONTROLS=1
6777 fi
6778
6779 if test "$wxUSE_DATEPICKCTRL" = "yes"; then
6780   AC_DEFINE(wxUSE_DATEPICKCTRL)
6781   USES_CONTROLS=1
6782 fi
6783
6784 if test "$wxUSE_DIRPICKERCTRL" = "yes"; then
6785   AC_DEFINE(wxUSE_DIRPICKERCTRL)
6786   USES_CONTROLS=1
6787 fi
6788
6789 if test "$wxUSE_FILECTRL" = "yes"; then
6790   AC_DEFINE(wxUSE_FILECTRL)
6791   USES_CONTROLS=1
6792 fi
6793
6794 if test "$wxUSE_FILEPICKERCTRL" = "yes"; then
6795   AC_DEFINE(wxUSE_FILEPICKERCTRL)
6796   USES_CONTROLS=1
6797 fi
6798
6799 if test "$wxUSE_FONTPICKERCTRL" = "yes"; then
6800   AC_DEFINE(wxUSE_FONTPICKERCTRL)
6801   USES_CONTROLS=1
6802 fi
6803
6804 if test "$wxUSE_DISPLAY" = "yes"; then
6805     if test "$wxUSE_DFB" = 1; then
6806         AC_MSG_WARN([wxDisplay not yet supported under $TOOLKIT... disabled])
6807         wxUSE_DISPLAY=no
6808     else
6809         AC_DEFINE(wxUSE_DISPLAY)
6810         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS display"
6811     fi
6812 fi
6813
6814 if test "$wxUSE_DETECT_SM" = "yes"; then
6815     AC_DEFINE(wxUSE_DETECT_SM)
6816 fi
6817
6818 if test "$wxUSE_GAUGE" = "yes"; then
6819   AC_DEFINE(wxUSE_GAUGE)
6820   USES_CONTROLS=1
6821 fi
6822
6823 if test "$wxUSE_GRID" = "yes"; then
6824   AC_DEFINE(wxUSE_GRID)
6825   USES_CONTROLS=1
6826   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS grid"
6827 fi
6828
6829 if test "$wxUSE_HEADERCTRL" = "yes"; then
6830   AC_DEFINE(wxUSE_HEADERCTRL)
6831   USES_CONTROLS=1
6832 fi
6833
6834 if test "$wxUSE_HYPERLINKCTRL" = "yes"; then
6835   AC_DEFINE(wxUSE_HYPERLINKCTRL)
6836   USES_CONTROLS=1
6837 fi
6838
6839 if test "$wxUSE_BITMAPCOMBOBOX" = "yes"; then
6840   AC_DEFINE(wxUSE_BITMAPCOMBOBOX)
6841   USES_CONTROLS=1
6842 fi
6843
6844 if test "$wxUSE_DATAVIEWCTRL" = "yes"; then
6845   AC_DEFINE(wxUSE_DATAVIEWCTRL)
6846   USES_CONTROLS=1
6847   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dataview"
6848 fi
6849
6850 if test "$wxUSE_IMAGLIST" = "yes"; then
6851     AC_DEFINE(wxUSE_IMAGLIST)
6852 fi
6853
6854 if test "$wxUSE_INFOBAR" = "yes"; then
6855     AC_DEFINE(wxUSE_INFOBAR)
6856 fi
6857
6858 if test "$wxUSE_LISTBOOK" = "yes"; then
6859     AC_DEFINE(wxUSE_LISTBOOK)
6860     USES_CONTROLS=1
6861 fi
6862
6863 if test "$wxUSE_LISTBOX" = "yes"; then
6864     AC_DEFINE(wxUSE_LISTBOX)
6865     USES_CONTROLS=1
6866 fi
6867
6868 if test "$wxUSE_LISTCTRL" = "yes"; then
6869     if test "$wxUSE_IMAGLIST" = "yes"; then
6870         AC_DEFINE(wxUSE_LISTCTRL)
6871         USES_CONTROLS=1
6872         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS listctrl"
6873     else
6874         AC_MSG_WARN([wxListCtrl requires wxImageList and won't be compiled without it])
6875     fi
6876 fi
6877
6878 if test "$wxUSE_EDITABLELISTBOX" = "yes"; then
6879     AC_DEFINE(wxUSE_EDITABLELISTBOX)
6880     USES_CONTROLS=1
6881 fi
6882
6883 if test "$wxUSE_NOTEBOOK" = "yes"; then
6884     AC_DEFINE(wxUSE_NOTEBOOK)
6885     USES_CONTROLS=1
6886     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS notebook"
6887 fi
6888
6889 if test "$wxUSE_NOTIFICATION_MESSAGE" = "yes"; then
6890     AC_DEFINE(wxUSE_NOTIFICATION_MESSAGE)
6891 fi
6892
6893 if test "$wxUSE_ODCOMBOBOX" = "yes"; then
6894   AC_DEFINE(wxUSE_ODCOMBOBOX)
6895   USES_CONTROLS=1
6896   SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS combo"
6897 fi
6898
6899 if test "$wxUSE_RADIOBOX" = "yes"; then
6900     AC_DEFINE(wxUSE_RADIOBOX)
6901     USES_CONTROLS=1
6902 fi
6903
6904 if test "$wxUSE_RADIOBTN" = "yes"; then
6905     AC_DEFINE(wxUSE_RADIOBTN)
6906     USES_CONTROLS=1
6907 fi
6908
6909 if test "$wxUSE_REARRANGECTRL" = "yes"; then
6910     AC_DEFINE(wxUSE_REARRANGECTRL)
6911 fi
6912
6913 if test "$wxUSE_RICHMSGDLG" = "yes"; then
6914     AC_DEFINE(wxUSE_RICHMSGDLG)
6915 fi
6916
6917 if test "$wxUSE_RICHTOOLTIP" = "yes"; then
6918     AC_DEFINE(wxUSE_RICHTOOLTIP)
6919 fi
6920
6921 if test "$wxUSE_SASH" = "yes"; then
6922     AC_DEFINE(wxUSE_SASH)
6923     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS sashtest"
6924 fi
6925
6926 if test "$wxUSE_SCROLLBAR" = "yes"; then
6927     AC_DEFINE(wxUSE_SCROLLBAR)
6928     USES_CONTROLS=1
6929     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS scroll"
6930 fi
6931
6932 if test "$wxUSE_SEARCHCTRL" = "yes"; then
6933     AC_DEFINE(wxUSE_SEARCHCTRL)
6934     USES_CONTROLS=1
6935 fi
6936
6937 if test "$wxUSE_SLIDER" = "yes"; then
6938     AC_DEFINE(wxUSE_SLIDER)
6939     USES_CONTROLS=1
6940 fi
6941
6942 if test "$wxUSE_SPINBTN" = "yes"; then
6943     AC_DEFINE(wxUSE_SPINBTN)
6944     USES_CONTROLS=1
6945 fi
6946
6947 if test "$wxUSE_SPINCTRL" = "yes"; then
6948     AC_DEFINE(wxUSE_SPINCTRL)
6949     USES_CONTROLS=1
6950 fi
6951
6952 if test "$wxUSE_SPLITTER" = "yes"; then
6953     AC_DEFINE(wxUSE_SPLITTER)
6954     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS splitter"
6955 fi
6956
6957 if test "$wxUSE_STATBMP" = "yes"; then
6958     AC_DEFINE(wxUSE_STATBMP)
6959     USES_CONTROLS=1
6960 fi
6961
6962 if test "$wxUSE_STATBOX" = "yes"; then
6963     AC_DEFINE(wxUSE_STATBOX)
6964     USES_CONTROLS=1
6965 fi
6966
6967 if test "$wxUSE_STATTEXT" = "yes"; then
6968     AC_DEFINE(wxUSE_STATTEXT)
6969     USES_CONTROLS=1
6970 fi
6971
6972 if test "$wxUSE_STATLINE" = "yes"; then
6973     AC_DEFINE(wxUSE_STATLINE)
6974     USES_CONTROLS=1
6975 fi
6976
6977 if test "$wxUSE_STATUSBAR" = "yes"; then
6978     dnl this will get undefined in wx/chkconf.h if it's not supported
6979     AC_DEFINE(wxUSE_NATIVE_STATUSBAR)
6980     AC_DEFINE(wxUSE_STATUSBAR)
6981     USES_CONTROLS=1
6982
6983     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS statbar"
6984 fi
6985
6986 if test "$wxUSE_TEXTCTRL" = "yes"; then
6987     AC_DEFINE(wxUSE_TEXTCTRL)
6988     USES_CONTROLS=1
6989     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS text"
6990
6991     dnl we don't have special switches to disable wxUSE_RICHEDIT[2], it doesn't
6992     dnl seem useful to allow disabling them
6993     AC_DEFINE(wxUSE_RICHEDIT)
6994     AC_DEFINE(wxUSE_RICHEDIT2)
6995 fi
6996
6997 if test "$wxUSE_TIMEPICKCTRL" = "yes"; then
6998   AC_DEFINE(wxUSE_TIMEPICKCTRL)
6999   USES_CONTROLS=1
7000 fi
7001
7002 if test "$wxUSE_TOGGLEBTN" = "yes"; then
7003     if test "$wxUSE_OLD_COCOA" = 1 ; then
7004         AC_MSG_WARN([Toggle button not yet supported under Mac OS X... disabled])
7005         wxUSE_TOGGLEBTN=no
7006     fi
7007
7008     if test "$wxUSE_TOGGLEBTN" = "yes"; then
7009         AC_DEFINE(wxUSE_TOGGLEBTN)
7010         USES_CONTROLS=1
7011     fi
7012 fi
7013
7014 if test "$wxUSE_TOOLBAR" = "yes"; then
7015     AC_DEFINE(wxUSE_TOOLBAR)
7016     USES_CONTROLS=1
7017
7018     if test "$wxUSE_UNIVERSAL" = "yes"; then
7019         wxUSE_TOOLBAR_NATIVE="no"
7020     else
7021         wxUSE_TOOLBAR_NATIVE="yes"
7022         AC_DEFINE(wxUSE_TOOLBAR_NATIVE)
7023     fi
7024
7025     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS toolbar"
7026 fi
7027
7028 if test "$wxUSE_TOOLTIPS" = "yes"; then
7029     if test "$wxUSE_MOTIF" = 1; then
7030         AC_MSG_WARN([wxTooltip not supported yet under Motif... disabled])
7031     else
7032         if test "$wxUSE_UNIVERSAL" = "yes"; then
7033             AC_MSG_WARN([wxTooltip not supported yet in wxUniversal... disabled])
7034         else
7035             AC_DEFINE(wxUSE_TOOLTIPS)
7036         fi
7037     fi
7038 fi
7039
7040 if test "$wxUSE_TREEBOOK" = "yes"; then
7041     AC_DEFINE(wxUSE_TREEBOOK)
7042     USES_CONTROLS=1
7043 fi
7044
7045 if test "$wxUSE_TOOLBOOK" = "yes"; then
7046     AC_DEFINE(wxUSE_TOOLBOOK)
7047     USES_CONTROLS=1
7048 fi
7049
7050 if test "$wxUSE_TREECTRL" = "yes"; then
7051     if test "$wxUSE_IMAGLIST" = "yes"; then
7052         AC_DEFINE(wxUSE_TREECTRL)
7053         USES_CONTROLS=1
7054         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS treectrl"
7055     else
7056         AC_MSG_WARN([wxTreeCtrl requires wxImageList and won't be compiled without it])
7057     fi
7058 fi
7059
7060 if test "$wxUSE_TREELISTCTRL" = "yes"; then
7061     AC_DEFINE(wxUSE_TREELISTCTRL)
7062     USES_CONTROLS=1
7063     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS treelist"
7064 fi
7065
7066 if test "$wxUSE_POPUPWIN" = "yes"; then
7067     if test "$wxUSE_OLD_COCOA" = 1 ; then
7068         AC_MSG_WARN([Popup window not yet supported under Mac OS X... disabled])
7069     else
7070         if test "$wxUSE_PM" = 1; then
7071             AC_MSG_WARN([wxPopupWindow not yet supported under PM... disabled])
7072         else
7073             AC_DEFINE(wxUSE_POPUPWIN)
7074             SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS popup"
7075
7076             USES_CONTROLS=1
7077         fi
7078     fi
7079 fi
7080
7081 if test "$wxUSE_PREFERENCES_EDITOR" = "yes"; then
7082     AC_DEFINE(wxUSE_PREFERENCES_EDITOR)
7083     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS prefseditor"
7084 fi
7085
7086 if test "$wxUSE_DIALUP_MANAGER" = "yes"; then
7087     if test "$wxUSE_MAC" = 1 -o "$wxUSE_OLD_COCOA" = 1; then
7088         AC_MSG_WARN([Dialup manager not supported on this platform... disabled])
7089     else
7090         AC_DEFINE(wxUSE_DIALUP_MANAGER)
7091         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dialup"
7092     fi
7093 fi
7094
7095 if test "$wxUSE_TIPWINDOW" = "yes"; then
7096     if test "$wxUSE_PM" = 1; then
7097         AC_MSG_WARN([wxTipWindow not yet supported under PM... disabled])
7098     else
7099         AC_DEFINE(wxUSE_TIPWINDOW)
7100     fi
7101 fi
7102
7103 if test "$USES_CONTROLS" = 1; then
7104     AC_DEFINE(wxUSE_CONTROLS)
7105 fi
7106
7107 dnl ---------------------------------------------------------------------------
7108 dnl misc options
7109 dnl ---------------------------------------------------------------------------
7110
7111 dnl please keep the settings below in alphabetical order
7112 if test "$wxUSE_ACCESSIBILITY" = "yes"; then
7113     AC_DEFINE(wxUSE_ACCESSIBILITY)
7114     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS access"
7115 fi
7116
7117 if test "$wxUSE_ARTPROVIDER_STD" = "yes"; then
7118     AC_DEFINE(wxUSE_ARTPROVIDER_STD)
7119 fi
7120
7121 if test "$wxUSE_ARTPROVIDER_TANGO" = "auto"; then
7122     dnl Tango-based art provider is not needed in GTK-based ports as the
7123     dnl native art provider completely replaces it.
7124     if test "$wxUSE_GTK" != 1; then
7125         dnl It also requires support for memory-mapped PNG images.
7126         if test "$wxUSE_LIBPNG" != no -a \
7127                 "$wxUSE_IMAGE" = yes -a \
7128                 "$wxUSE_STREAMS" = yes; then
7129             wxUSE_ARTPROVIDER_TANGO="yes"
7130         fi
7131     fi
7132 fi
7133
7134 if test "$wxUSE_ARTPROVIDER_TANGO" = "yes"; then
7135     AC_DEFINE(wxUSE_ARTPROVIDER_TANGO)
7136 fi
7137
7138 if test "$wxUSE_DRAGIMAGE" = "yes"; then
7139     AC_DEFINE(wxUSE_DRAGIMAGE)
7140     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dragimag"
7141 fi
7142
7143 if test "$wxUSE_EXCEPTIONS" = "yes"; then
7144     if test "$wxUSE_NO_EXCEPTIONS" = "yes" ; then
7145         AC_MSG_WARN([--enable-exceptions can't be used with --enable-no_exceptions])
7146     else
7147         AC_DEFINE(wxUSE_EXCEPTIONS)
7148         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS except"
7149     fi
7150 fi
7151
7152 USE_HTML=0
7153 if test "$wxUSE_HTML" = "yes"; then
7154     AC_DEFINE(wxUSE_HTML)
7155     USE_HTML=1
7156     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS html html/about html/help html/helpview html/printing html/test html/virtual html/widget html/zip htlbox"
7157 fi
7158 if test "$wxUSE_WEBKIT" = "yes"; then
7159     if test "$wxUSE_MAC" = 1 -a "$USE_DARWIN" = 1; then
7160         old_CPPFLAGS="$CPPFLAGS"
7161         CPPFLAGS="-x objective-c++ $CPPFLAGS"
7162         AC_CHECK_HEADER([WebKit/HIWebView.h],
7163                         [
7164                            AC_DEFINE(wxUSE_WEBKIT)
7165                            WEBKIT_LINK="-framework WebKit"
7166                         ],
7167                         [
7168                            AC_MSG_WARN([WebKit headers not found; disabling wxWebKit])
7169                            wxUSE_WEBKIT=no
7170                         ],
7171                         [
7172                            #include <Carbon/Carbon.h>
7173                            #include <WebKit/WebKit.h>
7174                         ])
7175         CPPFLAGS="$old_CPPFLAGS"
7176     elif test "$wxUSE_OLD_COCOA" = 1; then
7177         AC_DEFINE(wxUSE_WEBKIT)
7178     else
7179         wxUSE_WEBKIT=no
7180     fi
7181     if test "$wxUSE_WEBKIT" = "yes"; then
7182         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS html/htmlctrl"
7183     fi
7184 fi
7185
7186 USE_XRC=0
7187 if test "$wxUSE_XRC" = "yes"; then
7188     if test "$wxUSE_XML" != "yes"; then
7189         AC_MSG_WARN([XML library not built, XRC resources disabled])
7190         wxUSE_XRC=no
7191     else
7192         AC_DEFINE(wxUSE_XRC)
7193         USE_XRC=1
7194         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS xrc"
7195     fi
7196 fi
7197
7198 USE_AUI=0
7199 if test "$wxUSE_AUI" = "yes"; then
7200    AC_DEFINE(wxUSE_AUI)
7201    USE_AUI=1
7202    SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS aui"
7203 fi
7204
7205 USE_PROPGRID=0
7206 if test "$wxUSE_PROPGRID" = "yes"; then
7207    AC_DEFINE(wxUSE_PROPGRID)
7208    USE_PROPGRID=1
7209    SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS propgrid"
7210 fi
7211
7212 USE_RIBBON=0
7213 if test "$wxUSE_RIBBON" = "yes"; then
7214    AC_DEFINE(wxUSE_RIBBON)
7215    USE_RIBBON=1
7216    SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS ribbon"
7217 fi
7218
7219 USE_STC=0
7220 if test "$wxUSE_STC" = "yes"; then
7221    AC_DEFINE(wxUSE_STC)
7222    USE_STC=1
7223    SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS stc"
7224
7225    dnl python is used to update src/stc.h (see build/bakefiles/scintilla.bkl)
7226    AC_PATH_PROG(PYTHON, python)
7227    if test "x$PYTHON" = "x"; then
7228      COND_PYTHON="#"
7229    fi
7230    AC_SUBST(COND_PYTHON)
7231 fi
7232
7233 if test "$wxUSE_MENUS" = "yes"; then
7234     AC_DEFINE(wxUSE_MENUS)
7235     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS menu"
7236 fi
7237
7238 if test "$wxUSE_MIMETYPE" = "yes"; then
7239     AC_DEFINE(wxUSE_MIMETYPE)
7240 fi
7241
7242 if test "$wxUSE_MINIFRAME" = "yes"; then
7243     AC_DEFINE(wxUSE_MINIFRAME)
7244 fi
7245
7246 if test "$wxUSE_SYSTEM_OPTIONS" = "yes"; then
7247     AC_DEFINE(wxUSE_SYSTEM_OPTIONS)
7248 fi
7249
7250 if test "$wxUSE_TASKBARICON" = "yes"; then
7251     AC_DEFINE(wxUSE_TASKBARICON)
7252     dnl This is used under MSW, just enable it always without testing for the
7253     dnl toolkit nor providing a separate option for it because it's totally
7254     dnl harmless to have it defined even if it's unnecessary.
7255     AC_DEFINE(wxUSE_TASKBARICON_BALLOONS)
7256     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS taskbar"
7257 fi
7258
7259
7260 if test "$wxUSE_VALIDATORS" = "yes"; then
7261     AC_DEFINE(wxUSE_VALIDATORS)
7262     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS validate"
7263 fi
7264
7265 if test "$wxUSE_PALETTE" = "yes" ; then
7266     if test "$wxUSE_DFB" = 1; then
7267         AC_MSG_WARN([wxPalette not yet supported under DFB... disabled])
7268         wxUSE_PALETTE=no
7269     else
7270         AC_DEFINE(wxUSE_PALETTE)
7271     fi
7272 fi
7273
7274 if test "$wxUSE_UNICODE" = "yes" -a "$wxUSE_UNICODE_MSLU" = "yes" ; then
7275   dnl Must be done this late because -lunicows must be before all the other libs
7276   LIBS=" -lunicows $LIBS"
7277 fi
7278
7279 USE_RICHTEXT=0
7280 if test "$wxUSE_RICHTEXT" = "yes"; then
7281     AC_DEFINE(wxUSE_RICHTEXT)
7282     USE_RICHTEXT=1
7283     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS richtext"
7284 fi
7285
7286 if test "$wxUSE_WEBVIEW" = "yes"; then
7287     USE_WEBVIEW_WEBKIT=0
7288     if test "$wxUSE_WEBVIEW_WEBKIT" = "yes"; then
7289         if test "$wxUSE_GTK" = 1; then
7290             webkitgtk=webkit-1.0
7291             if test "$WXGTK3" = 1; then
7292                 webkitgtk=webkitgtk-3.0
7293             fi
7294             PKG_CHECK_MODULES([WEBKIT],
7295                               [$webkitgtk >= 1.3.1],
7296                               [
7297                                 USE_WEBVIEW_WEBKIT=1
7298                                 CPPFLAGS="$CPPFLAGS $WEBKIT_CFLAGS"
7299                                 GUI_TK_LIBRARY="$GUI_TK_LIBRARY $WEBKIT_LIBS"
7300                               ],
7301                               [
7302                                 AC_MSG_WARN([webkitgtk not found.])
7303                               ])
7304         elif test "$wxUSE_MAC" = 1 -a "$USE_DARWIN" = 1; then
7305             dnl Under Mac we always have the libraries but check for the
7306             dnl headers
7307             old_CPPFLAGS="$CPPFLAGS"
7308             CPPFLAGS="-x objective-c++ $CPPFLAGS"
7309             AC_CHECK_HEADER([WebKit/HIWebView.h],
7310                             [
7311                                 USE_WEBVIEW_WEBKIT=1
7312                                 WEBKIT_LINK="-framework WebKit"
7313                             ],
7314                             [
7315                                 AC_MSG_WARN([WebKit headers not found])
7316                             ],
7317                             [
7318                                 #include <Carbon/Carbon.h>
7319                                 #include <WebKit/WebKit.h>
7320                             ])
7321             CPPFLAGS="$old_CPPFLAGS"
7322         fi
7323     fi
7324
7325     wxUSE_WEBVIEW="no"
7326     if test "$wxUSE_GTK" = 1 -o "$wxUSE_MAC" = 1; then
7327         if test "$USE_WEBVIEW_WEBKIT" = 1; then
7328             wxUSE_WEBVIEW="yes"
7329             AC_DEFINE(wxUSE_WEBVIEW_WEBKIT)
7330         else
7331             AC_MSG_WARN([WebKit not available, disabling wxWebView])
7332         fi
7333     elif test "$wxUSE_MSW" = 1; then
7334         if test "$wxUSE_WEBVIEW_IE" = "yes"; then
7335             dnl TODO: Check for the required headers/libraries under Windows
7336             dnl       too and do the right thing automatically there too.
7337             wxUSE_WEBVIEW="yes"
7338             AC_DEFINE(wxUSE_WEBVIEW_IE)
7339         fi
7340     fi
7341 fi
7342
7343 if test "$wxUSE_WEBVIEW" = "yes"; then
7344     USE_WEBVIEW=1
7345     AC_DEFINE(wxUSE_WEBVIEW)
7346     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS webview"
7347 else
7348     USE_WEBVIEW=0
7349 fi
7350
7351 dnl ---------------------------------------------------------------------------
7352 dnl wxImage options
7353 dnl ---------------------------------------------------------------------------
7354
7355 if test "$wxUSE_IMAGE" = "yes" ; then
7356     AC_DEFINE(wxUSE_IMAGE)
7357
7358     if test "$wxUSE_GIF" = "yes" ; then
7359       AC_DEFINE(wxUSE_GIF)
7360     fi
7361
7362     if test "$wxUSE_PCX" = "yes" ; then
7363       AC_DEFINE(wxUSE_PCX)
7364     fi
7365
7366     if test "$wxUSE_TGA" = "yes" ; then
7367       AC_DEFINE(wxUSE_TGA)
7368     fi
7369
7370     if test "$wxUSE_IFF" = "yes" ; then
7371       AC_DEFINE(wxUSE_IFF)
7372     fi
7373
7374     if test "$wxUSE_PNM" = "yes" ; then
7375       AC_DEFINE(wxUSE_PNM)
7376     fi
7377
7378     if test "$wxUSE_XPM" = "yes" ; then
7379       AC_DEFINE(wxUSE_XPM)
7380     fi
7381
7382     if test "$wxUSE_ICO_CUR" = "yes" ; then
7383       AC_DEFINE(wxUSE_ICO_CUR)
7384     fi
7385 fi
7386
7387 dnl ---------------------------------------------------------------------------
7388 dnl common dialogs
7389 dnl ---------------------------------------------------------------------------
7390
7391 if test "$wxUSE_ABOUTDLG" = "yes"; then
7392     AC_DEFINE(wxUSE_ABOUTDLG)
7393 fi
7394
7395 if test "$wxUSE_CHOICEDLG" = "yes"; then
7396     AC_DEFINE(wxUSE_CHOICEDLG)
7397 fi
7398
7399 if test "$wxUSE_COLOURDLG" = "yes"; then
7400     AC_DEFINE(wxUSE_COLOURDLG)
7401 fi
7402
7403 if test "$wxUSE_FILEDLG" = "yes"; then
7404     AC_DEFINE(wxUSE_FILEDLG)
7405 fi
7406
7407 if test "$wxUSE_FINDREPLDLG" = "yes"; then
7408     AC_DEFINE(wxUSE_FINDREPLDLG)
7409 fi
7410
7411 if test "$wxUSE_FONTDLG" = "yes"; then
7412     AC_DEFINE(wxUSE_FONTDLG)
7413 fi
7414
7415 if test "$wxUSE_DIRDLG" = "yes"; then
7416     if test "$wxUSE_TREECTRL" != "yes"; then
7417         AC_MSG_WARN(wxDirDialog requires wxTreeCtrl so it won't be compiled without it)
7418     else
7419         AC_DEFINE(wxUSE_DIRDLG)
7420     fi
7421 fi
7422
7423 if test "$wxUSE_MSGDLG" = "yes"; then
7424     AC_DEFINE(wxUSE_MSGDLG)
7425 fi
7426
7427 if test "$wxUSE_NUMBERDLG" = "yes"; then
7428     AC_DEFINE(wxUSE_NUMBERDLG)
7429 fi
7430
7431 if test "$wxUSE_PROGRESSDLG" = "yes"; then
7432     AC_DEFINE(wxUSE_PROGRESSDLG)
7433 fi
7434
7435 if test "$wxUSE_SPLASH" = "yes"; then
7436     AC_DEFINE(wxUSE_SPLASH)
7437     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS splash"
7438 fi
7439
7440 if test "$wxUSE_STARTUP_TIPS" = "yes"; then
7441     AC_DEFINE(wxUSE_STARTUP_TIPS)
7442 fi
7443
7444 if test "$wxUSE_TEXTDLG" = "yes"; then
7445     AC_DEFINE(wxUSE_TEXTDLG)
7446 fi
7447
7448 if test "$wxUSE_WIZARDDLG" = "yes"; then
7449     AC_DEFINE(wxUSE_WIZARDDLG)
7450     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS wizard"
7451 fi
7452
7453 dnl ---------------------------------------------------------------------------
7454 dnl options used under wxMSW and wxPM
7455 dnl ---------------------------------------------------------------------------
7456
7457 if test "$wxUSE_MSW" = 1 -o "$wxUSE_PM" = 1; then
7458     if test "$wxUSE_OWNER_DRAWN" = "yes"; then
7459         AC_DEFINE(wxUSE_OWNER_DRAWN)
7460     fi
7461 fi
7462
7463 dnl ---------------------------------------------------------------------------
7464 dnl wxMSW-only options
7465 dnl ---------------------------------------------------------------------------
7466
7467 if test "$wxUSE_MSW" = 1 ; then
7468
7469     if test "$wxUSE_DC_CACHEING" = "yes"; then
7470         AC_DEFINE(wxUSE_DC_CACHEING)
7471     fi
7472
7473     if test "$wxUSE_DIB" = "yes"; then
7474         AC_DEFINE(wxUSE_WXDIB)
7475     fi
7476
7477     if test "$wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW" = "yes"; then
7478         AC_DEFINE(wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW)
7479     fi
7480
7481     if test "$wxUSE_UXTHEME" = "yes"; then
7482         AC_DEFINE(wxUSE_UXTHEME)
7483     fi
7484
7485 fi
7486 dnl wxUSE_MSW = 1
7487
7488 dnl not quite MSW-only although mostly useful to disable this under MSW
7489 if test "$wxUSE_AUTOID_MANAGEMENT" = "yes"; then
7490     AC_DEFINE(wxUSE_AUTOID_MANAGEMENT)
7491 fi
7492
7493 if test "$USE_WIN32" = 1 ; then
7494     if test "$wxUSE_INICONF" = "yes"; then
7495         AC_DEFINE(wxUSE_INICONF)
7496     fi
7497
7498     if test "$wxUSE_REGKEY" = "yes"; then
7499         AC_DEFINE(wxUSE_REGKEY)
7500     fi
7501 fi
7502 dnl USE_WIN32 = 1
7503
7504 dnl ---------------------------------------------------------------------------
7505 dnl wxGraphicsContext
7506 dnl ---------------------------------------------------------------------------
7507
7508 dnl Under Mac we don't even provide --enable-graphics_ctx switch as we always
7509 dnl need it -- but because we don't have the option, wxUSE_GRAPHICS_CONTEXT is
7510 dnl not defined automatically and we need to do it ourselves
7511 if test "$wxUSE_MAC" = 1; then
7512     wxUSE_GRAPHICS_CONTEXT="yes"
7513 fi
7514
7515 if test "$wxUSE_GRAPHICS_CONTEXT" = "yes"; then
7516     wx_has_graphics=0
7517     if test "$wxUSE_MSW" = 1; then
7518         AC_CACHE_CHECK([if GDI+ is available], wx_cv_lib_gdiplus,
7519             [
7520                 dnl we need just the header, not the library, as we load the
7521                 dnl GDI+ DLL dynamically anyhow during run-time
7522                 AC_LANG_PUSH(C++)
7523                 AC_TRY_COMPILE(
7524                     [#include <windows.h>
7525                      #include <gdiplus.h>],
7526                     [
7527                         using namespace Gdiplus;
7528                     ],
7529                     wx_cv_lib_gdiplus=yes,
7530                     wx_cv_lib_gdiplus=no
7531                 )
7532                 AC_LANG_POP()
7533             ]
7534         )
7535         if test "$wx_cv_lib_gdiplus" = "yes"; then
7536             wx_has_graphics=1
7537         fi
7538     elif test "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then
7539         PKG_CHECK_MODULES(CAIRO, cairo,
7540             [wx_has_graphics=1],
7541             [AC_MSG_WARN([Cairo library not found])]
7542         )
7543         if test "$wx_has_graphics" = 1; then
7544             dnl Check that Cairo library is new enough: wxGraphicsContext
7545             dnl won't compile without cairo_push_group() and
7546             dnl cairo_pop_group_to_source() which are new in 1.2.
7547             save_LIBS="$LIBS"
7548             LIBS="$LIBS $CAIRO_LIBS"
7549             AC_CHECK_FUNCS([cairo_push_group])
7550             LIBS="$save_LIBS"
7551             if test "$ac_cv_func_cairo_push_group" = "no"; then
7552                 wx_has_graphics=0
7553                 AC_MSG_WARN([Cairo library is too old and misses cairo_push_group()])
7554             else
7555                 AC_DEFINE(wxUSE_CAIRO)
7556
7557                 dnl We don't need to do this for wxGTK as we already get Cairo
7558                 dnl flags as part of GTK+ ones.
7559                 if test "$wxUSE_GTK" != 1; then
7560                     CPPFLAGS="$CAIRO_CFLAGS $CPPFLAGS"
7561                     GUI_TK_LIBRARY="$GUI_TK_LIBRARY $CAIRO_LIBS"
7562                 fi
7563             fi
7564         fi
7565     else
7566         dnl assume it's ok, add more checks here if needed
7567         wx_has_graphics=1
7568     fi
7569
7570     if test "$wx_has_graphics" = 1; then
7571         AC_DEFINE(wxUSE_GRAPHICS_CONTEXT)
7572     else
7573         AC_MSG_WARN([wxGraphicsContext won't be available])
7574     fi
7575 fi
7576
7577 dnl ---------------------------------------------------------------------------
7578 dnl wxMediaCtrl
7579 dnl ---------------------------------------------------------------------------
7580
7581 USE_MEDIA=0
7582
7583 if test "$wxUSE_MEDIACTRL" = "yes" -o "$wxUSE_MEDIACTRL" = "auto"; then
7584     USE_MEDIA=1
7585
7586     dnl -----------------------------------------------------------------------
7587     dnl GStreamer
7588     dnl -----------------------------------------------------------------------
7589     if test "$wxUSE_GTK" = 1; then
7590         wxUSE_GSTREAMER="no"
7591
7592         dnl -------------------------------------------------------------------
7593         dnl Test for at least 0.8 gstreamer module from pkg-config
7594         dnl Even totem doesn't accept 0.9 evidently.
7595         dnl
7596         dnl So, we first check to see if 0.10 if available - if not we
7597         dnl try the older 0.8 version
7598         dnl -------------------------------------------------------------------
7599         GST_VERSION_MAJOR=0
7600         GST_VERSION_MINOR=10
7601         GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
7602
7603         if test "$wxUSE_GSTREAMER8" = "no"; then
7604             PKG_CHECK_MODULES(GST,
7605                 [gstreamer-$GST_VERSION gstreamer-plugins-base-$GST_VERSION],
7606                 [
7607                     wxUSE_GSTREAMER="yes"
7608                     GST_LIBS="$GST_LIBS -lgstinterfaces-$GST_VERSION"
7609                 ],
7610                 [
7611                     AC_MSG_WARN([GStreamer 0.10 not available, falling back to 0.8])
7612                     GST_VERSION_MINOR=8
7613                 ]
7614             )
7615         else
7616             dnl check only for 0.8
7617             GST_VERSION_MINOR=8
7618         fi
7619
7620         if test $GST_VERSION_MINOR = "8"; then
7621             GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
7622             PKG_CHECK_MODULES(GST,
7623                 [gstreamer-$GST_VERSION gstreamer-interfaces-$GST_VERSION gstreamer-gconf-$GST_VERSION],
7624                 wxUSE_GSTREAMER="yes",
7625                 [
7626                     AC_MSG_WARN([GStreamer 0.8/0.10 not available.])
7627                 ])
7628         fi
7629
7630
7631         if test "$wxUSE_GSTREAMER" = "yes"; then
7632             CPPFLAGS="$GST_CFLAGS $CPPFLAGS"
7633             EXTRALIBS_MEDIA="$GST_LIBS"
7634
7635             AC_DEFINE(wxUSE_GSTREAMER)
7636         else
7637             USE_MEDIA=0
7638         fi
7639
7640     elif test "$wxUSE_MAC" = 1; then 
7641          dnl We always have the necessary libraries under Mac 
7642          dnl but we need to link with it explicitly.
7643          GST_LIBS="-framework QTKit"
7644     fi
7645
7646     if test $USE_MEDIA = 1; then
7647         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS mediaplayer"
7648         AC_DEFINE(wxUSE_MEDIACTRL)
7649     else
7650         if test "$wxUSE_MEDIACTRL" = "yes"; then
7651             AC_MSG_ERROR([GStreamer not available])
7652         else
7653             dnl was set to 'auto'
7654             AC_MSG_WARN([GStreamer not available... disabling wxMediaCtrl])
7655         fi
7656     fi
7657 fi
7658
7659 dnl ---------------------------------------------------------------------------
7660 dnl get the string with OS info - used by wxGetOsDescription() on MacOS X
7661 dnl ---------------------------------------------------------------------------
7662
7663 if test "$cross_compiling" != "no"; then
7664     dnl Use best guess from host as we can't use uname when cross compiling
7665     OSINFO="\"$host\""
7666 else
7667     dnl attualy work out OS version
7668     OSINFO=`uname -s -r -m`
7669     OSINFO="\"$OSINFO\""
7670 fi
7671
7672 AC_DEFINE_UNQUOTED(WXWIN_OS_DESCRIPTION, $OSINFO)
7673
7674 dnl ---------------------------------------------------------------------------
7675 dnl define the variable containing the installation prefix (used in dcpsg.cpp)
7676 dnl ---------------------------------------------------------------------------
7677
7678 if test "x$prefix" != "xNONE"; then
7679     wxPREFIX=$prefix
7680 else
7681     wxPREFIX=$ac_default_prefix
7682 fi
7683
7684 AC_DEFINE_UNQUOTED(wxINSTALL_PREFIX, "$wxPREFIX")
7685
7686
7687 dnl ---------------------------------------------------------------------------
7688 dnl define variables with all built libraries for wx-config
7689 dnl ---------------------------------------------------------------------------
7690
7691 STD_BASE_LIBS="base"
7692 STD_GUI_LIBS=""
7693 BUILT_WX_LIBS="base"
7694 ALL_WX_LIBS="xrc stc gl media qa html adv core xml net base"
7695
7696 if test "$wxUSE_SOCKETS" = "yes" ; then
7697     STD_BASE_LIBS="net $STD_BASE_LIBS"
7698     BUILT_WX_LIBS="net $BUILT_WX_LIBS"
7699 fi
7700 if test "$wxUSE_XML" = "yes" ; then
7701     STD_BASE_LIBS="xml $STD_BASE_LIBS"
7702     BUILT_WX_LIBS="xml $BUILT_WX_LIBS"
7703 fi
7704
7705 if test "$wxUSE_GUI" = "yes"; then
7706     STD_GUI_LIBS="adv core"
7707     BUILT_WX_LIBS="$STD_GUI_LIBS $BUILT_WX_LIBS"
7708
7709     if test "$wxUSE_DEBUGREPORT" = "yes" ; then
7710         STD_GUI_LIBS="qa $STD_GUI_LIBS"
7711         BUILT_WX_LIBS="qa $BUILT_WX_LIBS"
7712     fi
7713     if test "$wxUSE_HTML" = "yes" ; then
7714         STD_GUI_LIBS="html $STD_GUI_LIBS"
7715         BUILT_WX_LIBS="html $BUILT_WX_LIBS"
7716     fi
7717     if test "$wxUSE_MEDIACTRL" = "yes" ; then
7718         BUILT_WX_LIBS="media $BUILT_WX_LIBS"
7719     fi
7720     if test "$wxUSE_OPENGL" = "yes" ; then
7721         BUILT_WX_LIBS="gl $BUILT_WX_LIBS"
7722     fi
7723     if test "$wxUSE_AUI" = "yes" ; then
7724         BUILT_WX_LIBS="aui $BUILT_WX_LIBS"
7725     fi
7726     if test "$wxUSE_PROPGRID" = "yes" ; then
7727         BUILT_WX_LIBS="propgrid $BUILT_WX_LIBS"
7728     fi
7729     if test "$wxUSE_RIBBON" = "yes" ; then
7730         BUILT_WX_LIBS="ribbon $BUILT_WX_LIBS"
7731     fi
7732     if test "$wxUSE_RICHTEXT" = "yes" ; then
7733         BUILT_WX_LIBS="richtext $BUILT_WX_LIBS"
7734     fi
7735     if test "$wxUSE_STC" = "yes" ; then
7736         BUILT_WX_LIBS="stc $BUILT_WX_LIBS"
7737     fi
7738     if test "$wxUSE_WEBVIEW" = "yes" ; then
7739         STD_GUI_LIBS="webview $STD_GUI_LIBS"
7740         BUILT_WX_LIBS="webview $BUILT_WX_LIBS"
7741     fi
7742     if test "$wxUSE_XRC" = "yes" ; then
7743         STD_GUI_LIBS="xrc $STD_GUI_LIBS"
7744         BUILT_WX_LIBS="xrc $BUILT_WX_LIBS"
7745     fi
7746 fi
7747
7748 AC_SUBST(ALL_WX_LIBS)
7749 AC_SUBST(BUILT_WX_LIBS)
7750 AC_SUBST(STD_BASE_LIBS)
7751 AC_SUBST(STD_GUI_LIBS)
7752
7753 dnl ---------------------------------------------------------------------------
7754 dnl Output the makefiles and such from the results found above
7755 dnl ---------------------------------------------------------------------------
7756
7757 dnl all additional libraries (except wxWidgets itself) we link with
7758 EXTRA_FRAMEWORKS=
7759 if test "$wxUSE_MAC" = 1 ; then
7760     if test "$USE_DARWIN" = 1; then
7761         if test "$wxUSE_OSX_IPHONE" = 1; then
7762             EXTRA_FRAMEWORKS="-framework IOKit -framework UIKit -framework CFNetwork -framework AudioToolbox -framework CoreFoundation -framework CoreGraphics -framework OpenGLES -framework Foundation -framework QuartzCore"
7763         else
7764             EXTRA_FRAMEWORKS="-framework IOKit -framework Carbon -framework Cocoa -framework AudioToolbox -framework System -framework OpenGL"
7765
7766             dnl The case of QuickTime framework is special: we only need it in
7767             dnl 32 bit builds and not in 64 bit and, moreover, linking with it
7768             dnl in 64 bit builds results in a warning because the framework is
7769             dnl not available in 64 bits itself. So make an effort to avoid it
7770             dnl when building for 64 bits only (i.e. not universal build).
7771
7772             if test "$cross_compiling" != "no"; then
7773                 dnl The check below doesn't work well when cross-compiling
7774                 dnl ("file" under non-OS X systems might not recognize
7775                 dnl universal binaries) so assume we do build for 32 bits as
7776                 dnl it's safer: at worst we'll get a warning when building in
7777                 dnl 64 bits only, but at least the build will still work.
7778                 wx_cv_target_x86_64=no
7779             else
7780                 AC_CACHE_CHECK(
7781                     [if we target only x86_64],
7782                     wx_cv_target_x86_64,
7783                     AC_LINK_IFELSE(
7784                         [AC_LANG_SOURCE([int main() { return 0; }])],
7785                         if file conftest$ac_exeext|grep -q 'i386\|ppc'; then
7786                             wx_cv_target_x86_64=no
7787                         else
7788                             wx_cv_target_x86_64=yes
7789                         fi
7790                     )
7791                 )
7792             fi
7793
7794             if test "$wx_cv_target_x86_64" != "yes"; then
7795                 EXTRA_FRAMEWORKS="$EXTRA_FRAMEWORKS -framework QuickTime"
7796             fi
7797         fi
7798     fi
7799 fi
7800 if test "$wxUSE_OLD_COCOA" = 1 ; then
7801     EXTRA_FRAMEWORKS="-framework IOKit -framework Cocoa"
7802     if test "$wxUSE_MEDIACTRL" = "yes"; then
7803         EXTRA_FRAMEWORKS="$EXTRA_FRAMEWORKS -framework QuickTime"
7804     fi
7805 fi
7806 if test "$USE_DARWIN" = 1 -a "$wxUSE_MAC" != 1 -a "$wxUSE_OLD_COCOA" != 1 ; then
7807     EXTRA_FRAMEWORKS="$EXTRA_FRAMEWORKS -framework IOKit -framework CoreServices -framework System -framework ApplicationServices"
7808 fi
7809
7810 LDFLAGS="$LDFLAGS $EXTRA_FRAMEWORKS"
7811 WXCONFIG_LDFLAGS="$WXCONFIG_LDFLAGS $EXTRA_FRAMEWORKS"
7812
7813 LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK $LIBS"
7814
7815 if test "$wxUSE_GUI" = "yes"; then
7816
7817     dnl TODO add checks that these samples will really compile (i.e. all the
7818     dnl      library features they need are present)
7819
7820     dnl TODO some samples are never built so far: mfc (requires VC++)
7821     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS artprov controls dialogs drawing \
7822                      erase event exec font image minimal render \
7823                      shaped svg taborder vscroll widgets wrapsizer"
7824
7825     if test "$wxUSE_MONOLITHIC" != "yes"; then
7826         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS console"
7827     fi
7828     if test "$TOOLKIT" = "MSW"; then
7829         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS regtest"
7830         if test "$wxUSE_UNIVERSAL" != "yes"; then
7831             SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS ownerdrw nativdlg dll"
7832         fi
7833     fi
7834     if test "$TOOLKIT" = "PM" -a "$wxUSE_UNIVERSAL" != "yes"; then
7835         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS ownerdrw"
7836     fi
7837 else
7838     SAMPLES_SUBDIRS="console"
7839     if test "$wxUSE_SOCKETS" = "yes" ; then
7840         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS sockets"
7841     fi
7842     if test "$wxUSE_IPC" = "yes" ; then
7843         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS ipc"
7844     fi
7845 fi
7846
7847
7848 dnl C/C++ compiler options used to compile wxWidgets
7849 dnl
7850 dnl check for icc before gcc as icc is also recognized as gcc
7851 if test "x$INTELCC" = "xyes" ; then
7852     dnl Warnings which can't be easily suppressed in C code are disabled:
7853     dnl
7854     dnl     #810: conversion from "x" to "y" may lose significant bits
7855     dnl     #869: parameter "foo" was never referenced
7856     dnl     #1572: floating-point equality and inequality comparisons
7857     dnl            are unreliable
7858     dnl     #1684: conversion from pointer to same-sized integral type
7859     dnl     #2259: non-pointer conversion from "x" to "y" may lose significant
7860     dnl            bits
7861     CWARNINGS="-Wall -wd810,869,981,1418,1572,1684,2259"
7862 elif test "$GCC" = yes ; then
7863     CWARNINGS="-Wall -Wundef"
7864 fi
7865
7866 if test "x$INTELCXX" = "xyes" ; then
7867     dnl Intel compiler gives some warnings which simply can't be worked
7868     dnl around or of which we have too many (810, 869) so it's impractical to
7869     dnl keep them enabled even if in theory it would be nice and some others
7870     dnl (279) are generated for standard macros and so there is nothing we can
7871     dnl do about them
7872     dnl
7873     dnl     #279: controlling expression is constant
7874     dnl     #383: value copied to temporary, reference to temporary used
7875     dnl     #444: destructor for base class "xxx" is not virtual
7876     dnl     #981: operands are evaluated in unspecified order
7877     dnl     #1418: external definition with no prior declaration
7878     dnl     #1419: external declaration in primary source file
7879     dnl     #1881: argument must be a constant null pointer value
7880     dnl
7881     dnl (for others see CWARNINGS above)
7882     CXXWARNINGS="-Wall -wd279,383,444,810,869,981,1418,1419,1881,2259"
7883 elif test "$GXX" = yes ; then
7884     CXXWARNINGS="-Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy"
7885     AX_CXXFLAGS_GCC_OPTION(-Woverloaded-virtual, CXXWARNINGS)
7886
7887     dnl when building under Mac we currently get hundreds of deprecation
7888     dnl warnings for Carbon symbols from the standard headers -- disable them
7889     dnl as we already know that they're deprecated and nothing else can be seen
7890     dnl with these warnings on
7891     if test "$wxUSE_MAC" = 1 ; then
7892         CXXWARNINGS="$CXXWARNINGS -Wno-deprecated-declarations"
7893     fi
7894 fi
7895
7896
7897 dnl combine everything together and remove the extra white space while doing it
7898 WXCONFIG_CFLAGS=`echo $WXCONFIG_CFLAGS`
7899 WXCONFIG_CXXFLAGS=`echo $WXCONFIG_CFLAGS $WXCONFIG_CXXFLAGS`
7900
7901
7902 dnl add -I options we use during library compilation
7903 dnl
7904 dnl note that the order is somewhat important: wxWidgets headers should
7905 dnl come first and the one with setup.h should be before $(top_srcdir)/include
7906 dnl in case the latter contains setup.h used by non-autoconf makefiles
7907 CPPFLAGS=`echo $WXCONFIG_CPPFLAGS \
7908  -I\\${wx_top_builddir}/lib/wx/include/${TOOLCHAIN_FULLNAME} \
7909  -I\\${top_srcdir}/include $TOOLKIT_INCLUDE \
7910  $CPPFLAGS `
7911
7912 C_AND_CXX_FLAGS="$DEBUG_CFLAGS $PROFILE_FLAGS $OPTIMISE_CFLAGS"
7913 CFLAGS=`echo $WXCONFIG_CFLAGS $CWARNINGS $C_AND_CXX_FLAGS $CFLAGS `
7914 CXXFLAGS=`echo $WXCONFIG_CXXFLAGS $C_AND_CXX_FLAGS $CXXFLAGS `
7915 OBJCFLAGS=`echo $WXCONFIG_CFLAGS $CWARNINGS $C_AND_CXX_FLAGS $OBJCFLAGS `
7916 OBJCXXFLAGS=`echo $WXCONFIG_CXXFLAGS $C_AND_CXX_FLAGS $OBJCXXFLAGS `
7917
7918 dnl now that we added WXCONFIG_CPPFLAGS to CPPFLAGS we can add the wx-config
7919 dnl only stuff to it
7920 WXCONFIG_CPPFLAGS=`echo $WXCONFIG_CPPFLAGS $WXCONFIG_ONLY_CPPFLAGS`
7921
7922
7923 if test "x$MWCC" = "xyes"; then
7924     dnl Correct MW 8.3 to be more similar to GCC.  In particular we
7925     dnl must use <regex.h> from system not our local copy on OS X,
7926     dnl but must use local not system on OS 9.
7927     dnl The following should make all -I paths usable for <> includes
7928     dnl while first checking in real system paths.  With 8.3 using
7929     dnl -gccincludes it will actually check local paths before system
7930     dnl even for <> which is totally wrong.
7931
7932     dnl Note that because this absolutely needs to be before any -I
7933     dnl that we have to tack it on to the end of the compiler commandline.
7934     CC="$CC -cwd source -I-"
7935     CXX="$CXX -cwd source -I-"
7936 fi
7937
7938
7939 LIBS=`echo $LIBS`
7940 EXTRALIBS="$LDFLAGS $LDFLAGS_VERSIONING $LIBS $DMALLOC_LIBS"
7941 EXTRALIBS_XML="$EXPAT_LINK"
7942 EXTRALIBS_HTML="$MSPACK_LINK"
7943 EXTRALIBS_MEDIA="$GST_LIBS"
7944 EXTRALIBS_STC="-lwxscintilla${WX_LIB_FLAVOUR}-${WX_RELEASE}${HOST_SUFFIX}"
7945 if test "$wxUSE_GUI" = "yes"; then
7946     EXTRALIBS_GUI=`echo $GUI_TK_LIBRARY $PNG_LINK $JPEG_LINK $TIFF_LINK $WEBKIT_LINK`
7947 fi
7948 if test "$wxUSE_OPENGL" = "yes"; then
7949     EXTRALIBS_OPENGL="$LDFLAGS_GL $OPENGL_LIBS"
7950 fi
7951
7952 LDFLAGS="$LDFLAGS $PROFILE_FLAGS"
7953
7954 WXCONFIG_LIBS="$LIBS"
7955
7956 dnl wx-config must output builtin 3rd party libs in --libs in static build:
7957 if test "$wxUSE_REGEX" = "builtin" ; then
7958     wxconfig_3rdparty="regex${lib_unicode_suffix} $wxconfig_3rdparty"
7959 fi
7960 if test "$wxUSE_EXPAT" = "builtin" ; then
7961     wxconfig_3rdparty="expat $wxconfig_3rdparty"
7962 fi
7963 if test "$wxUSE_LIBTIFF" = "builtin" ; then
7964     wxconfig_3rdparty="tiff $wxconfig_3rdparty"
7965 fi
7966 if test "$wxUSE_LIBJPEG" = "builtin" ; then
7967     wxconfig_3rdparty="jpeg $wxconfig_3rdparty"
7968 fi
7969 if test "$wxUSE_LIBPNG" = "builtin" ; then
7970     wxconfig_3rdparty="png $wxconfig_3rdparty"
7971 fi
7972 if test "$wxUSE_ZLIB" = "builtin" ; then
7973     wxconfig_3rdparty="zlib $wxconfig_3rdparty"
7974 fi
7975
7976 for i in $wxconfig_3rdparty ; do
7977     WXCONFIG_LIBS="-lwx${i}${WX_LIB_FLAVOUR}-${WX_RELEASE}${HOST_SUFFIX} $WXCONFIG_LIBS"
7978 done
7979
7980
7981 if test "x$wxUSE_UNIVERSAL" = "xyes" ; then
7982     WXUNIV=1
7983
7984     case "$wxUNIV_THEMES" in
7985         ''|all)
7986             AC_DEFINE(wxUSE_ALL_THEMES)
7987             ;;
7988
7989         *)
7990             for t in `echo $wxUNIV_THEMES | tr , ' ' | tr '[[a-z]]' '[[A-Z]]'`; do
7991                 AC_DEFINE_UNQUOTED(wxUSE_THEME_$t)
7992             done
7993     esac
7994 else
7995     WXUNIV=0
7996 fi
7997
7998 AC_SUBST(wxUSE_ZLIB)
7999 AC_SUBST(wxUSE_REGEX)
8000 AC_SUBST(wxUSE_EXPAT)
8001 AC_SUBST(wxUSE_LIBJPEG)
8002 AC_SUBST(wxUSE_LIBPNG)
8003 AC_SUBST(wxUSE_LIBTIFF)
8004
8005 if test $wxUSE_MONOLITHIC = "yes" ; then
8006     MONOLITHIC=1
8007 else
8008     MONOLITHIC=0
8009 fi
8010
8011 if test $wxUSE_PLUGINS = "yes" ; then
8012     USE_PLUGINS=1
8013 else
8014     USE_PLUGINS=0
8015 fi
8016
8017 if test "$wxUSE_DEBUGREPORT" = "yes" ; then
8018     USE_QA=1
8019 else
8020     USE_QA=0
8021 fi
8022
8023 if test $wxUSE_OFFICIAL_BUILD = "yes" ; then
8024     OFFICIAL_BUILD=1
8025 else
8026     OFFICIAL_BUILD=0
8027 fi
8028
8029 AC_SUBST(VENDOR)
8030 AC_SUBST(OFFICIAL_BUILD)
8031 AC_SUBST(WX_FLAVOUR)
8032 AC_SUBST(WX_LIB_FLAVOUR)
8033
8034 AC_SUBST(WXUNIV)
8035 AC_SUBST(MONOLITHIC)
8036 AC_SUBST(USE_PLUGINS)
8037 AC_SUBST(LIBS)
8038 AC_SUBST(CXXWARNINGS)
8039 AC_SUBST(EXTRALIBS)
8040 AC_SUBST(EXTRALIBS_XML)
8041 AC_SUBST(EXTRALIBS_HTML)
8042 AC_SUBST(EXTRALIBS_MEDIA)
8043 AC_SUBST(EXTRALIBS_GUI)
8044 AC_SUBST(EXTRALIBS_OPENGL)
8045 AC_SUBST(EXTRALIBS_SDL)
8046 AC_SUBST(EXTRALIBS_STC)
8047 AC_SUBST(WITH_PLUGIN_SDL)
8048 AC_SUBST(UNICODE)
8049 AC_SUBST(DEBUG_INFO)
8050 AC_SUBST(DEBUG_FLAG)
8051 TOOLKIT_LOWERCASE=`echo $TOOLKIT | tr '[[A-Z]]' '[[a-z]]'`
8052 AC_SUBST(TOOLKIT_LOWERCASE)
8053 AC_SUBST(TOOLKIT_VERSION)
8054 AC_SUBST(DYLIB_RPATH_INSTALL)
8055 AC_SUBST(DYLIB_RPATH_POSTLINK)
8056 AC_SUBST(SAMPLES_RPATH_FLAG)
8057 AC_SUBST(HEADER_PAD_OPTION)
8058 AC_SUBST(HOST_SUFFIX)
8059 AC_SUBST(CPPUNIT_CFLAGS)
8060 AC_SUBST(CPPUNIT_LIBS)
8061
8062 case "$TOOLKIT" in
8063     GTK)
8064         TOOLKIT_DESC="GTK+"
8065         if test "$WXGTK2" = 1; then
8066             if test "$WXGTK3" = 1; then
8067                 TOOLKIT_DESC="$TOOLKIT_DESC 3"
8068             else
8069                 TOOLKIT_DESC="$TOOLKIT_DESC 2"
8070             fi
8071             if test "$wxUSE_GTKPRINT" = "yes" ; then
8072                 TOOLKIT_EXTRA="$TOOLKIT_EXTRA GTK+ printing";
8073             fi
8074             if test "$wxUSE_LIBGNOMEPRINT" = "yes" ; then
8075                 TOOLKIT_EXTRA="$TOOLKIT_EXTRA gnomeprint";
8076             fi
8077             if test "$wxUSE_LIBGNOMEVFS" = "yes" ; then
8078                 TOOLKIT_EXTRA="$TOOLKIT_EXTRA gnomevfs"
8079             fi
8080             if test "$wxUSE_LIBNOTIFY" = "yes" ; then
8081                 TOOLKIT_EXTRA="$TOOLKIT_EXTRA libnotify"
8082             fi
8083             if test "$wxUSE_LIBHILDON" = "yes"; then
8084                 TOOLKIT_EXTRA="$TOOLKIT_EXTRA hildon"
8085             fi
8086             if test "$wxUSE_LIBHILDON2" = "yes"; then
8087                 TOOLKIT_EXTRA="$TOOLKIT_EXTRA hildon"
8088             fi
8089
8090             if test "$TOOLKIT_EXTRA" != ""; then
8091                 TOOLKIT_DESC="$TOOLKIT_DESC with support for `echo $TOOLKIT_EXTRA | tr -s ' '`"
8092             fi
8093         fi
8094         ;;
8095
8096     ?*)
8097         TOOLKIT_DESC=$TOOLKIT_LOWERCASE
8098         ;;
8099
8100     *)
8101         TOOLKIT_DESC="base only"
8102         ;;
8103 esac
8104
8105 if test "$wxUSE_WINE" = "yes"; then
8106     BAKEFILE_FORCE_PLATFORM=win32
8107 fi
8108
8109 dnl gcc 3.4 has a pch bug which truncates wide character constants in headers.
8110 dnl Hopefully for a non-unicode build there aren't any wide constants in
8111 dnl headers, but for a unicode build it's best to disable pch.
8112 if test "$wxUSE_UNICODE" = yes -a "$GCC" = yes -a "$bk_use_pch" != no
8113 then
8114     AC_CACHE_CHECK(
8115         [for gcc precompiled header bug],
8116         [wx_cv_gcc_pch_bug],
8117         [[
8118             echo '#include <stdio.h>
8119                   const wchar_t test_var[] = L"awidetest";' > conftest.h
8120
8121             echo '#include "conftest.h"
8122                   int main()
8123                   {
8124                      printf("%ls", test_var);
8125                      return 0;
8126                   }' > conftest.cpp
8127
8128             wx_cv_gcc_pch_bug="pch not supported"
8129
8130             if $CXX conftest.h >/dev/null 2>&1
8131             then
8132                 wx_cv_gcc_pch_bug=
8133
8134                 if $CXX -o conftest$PROGRAM_EXT conftest.cpp >/dev/null 2>&1
8135                 then
8136                     if tr -dc '[a-z]' < conftest$PROGRAM_EXT |
8137                         grep awidetest >/dev/null
8138                     then
8139                         wx_cv_gcc_pch_bug=no
8140                     else
8141                         wx_cv_gcc_pch_bug=yes
8142                     fi
8143                 fi
8144             fi
8145
8146             rm -f conftest.h conftest.gch conftest.cpp conftest$PROGRAM_EXT
8147         ]])
8148
8149     if test "$wx_cv_gcc_pch_bug" = yes; then
8150         dnl make the default for pch 'no'
8151         dnl further below check whether the user overrode and warn them
8152         bk_use_pch=no
8153     fi
8154 fi
8155
8156 AC_BAKEFILE([m4_include(autoconf_inc.m4)])
8157
8158 dnl make install path absolute (if not already);
8159 dnl will fail with (some) MSDOS paths
8160 case ${INSTALL} in
8161   /* ) # Absolute
8162      ;;
8163   ?:* ) # Drive letter, considered as absolute.
8164      ;;
8165   *)
8166      INSTALL=`pwd`/${INSTALL} ;;
8167 esac
8168
8169 if test "$wxUSE_GUI" = "yes"; then
8170
8171 if test "$wxUSE_MSW" = 1 ; then
8172     if test "x$WINDRES" = "x"; then
8173         AC_MSG_ERROR([Required windres program not found])
8174     fi
8175
8176     RESCOMP="$WINDRES"
8177 fi
8178
8179 if test "$wxUSE_MAC" = 1 -o "$wxUSE_OLD_COCOA" = 1; then
8180     dnl base name of the resource file for wxMac must be the same
8181     dnl as library installation base name (-install_name)
8182     WX_RESOURCES_MACOSX_ASCII="libwx_${TOOLCHAIN_NAME}.${wx_release_number}.r"
8183     WX_RESOURCES_MACOSX_DATA="libwx_${TOOLCHAIN_NAME}.${wx_release_number}.rsrc"
8184
8185     dnl add the resources target for wxMac
8186     LIBWXMACRES="\$(wx_top_builddir)/lib/${WX_RESOURCES_MACOSX_ASCII}"
8187
8188     AC_CHECK_PROG(DEREZ, DeRez, DeRez, /Developer/Tools/DeRez)
8189
8190     MACSETFILE="\$(SETFILE)"
8191
8192     dnl resources are bundled both with shared library and applications
8193     dnl since the carb resource *must* be included in the application
8194     if test "$wxUSE_OSX_CARBON" = 1; then
8195         POSTLINK_COMMAND="\$(REZ) -d __DARWIN__ -t APPL Carbon.r -o"
8196         RESCOMP="$REZ"
8197         WXCONFIG_RESFLAGS="-d __DARWIN__ -t APPL Carbon.r -o"
8198     else
8199         POSTLINK_COMMAND="cat /dev/null | \$(REZ) -d __DARWIN__ -t APPL ${LIBWXMACRES}"
8200         RESCOMP="cat /dev/null \| $REZ"
8201         WXCONFIG_RESFLAGS="-d __DARWIN__ -t APPL \$libdir/$WX_RESOURCES_MACOSX_ASCII"
8202     fi
8203
8204 else
8205     dnl default value is to (silently) do nothing in the makefile
8206     MACSETFILE="@true"
8207
8208     if test "$wxUSE_PM" = 1; then
8209         RESCOMP="emxbind"
8210         WXCONFIG_RESFLAGS="-ep"
8211
8212         dnl Is this one really used anywhere for pm?
8213         POSTLINK_COMMAND="$RESCOMP $WXCONFIG_RESFLAGS"
8214     else
8215         POSTLINK_COMMAND="@true"
8216     fi
8217 fi
8218
8219 fi
8220 dnl wxUSE_GUI = 1
8221
8222
8223 dnl find out if the compiler supports PCH
8224 dnl
8225 dnl TODO: this should be in bakefile
8226 if test $GCC_PCH = 1
8227 then
8228     if test "$wx_cv_gcc_pch_bug" = yes; then
8229         AC_MSG_WARN([*** Precompiled header support is broken on this compiler])
8230         AC_MSG_WARN([*** --enable-precomp-headers is not recommended])
8231         AC_MSG_WARN([*** see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13361])
8232     fi
8233
8234     # Our WX_PRECOMP flag does not make sense for any language except C++ because
8235     # the headers that benefit from precompilation are mostly C++ headers.
8236     CXXFLAGS="-DWX_PRECOMP $CXXFLAGS"
8237     # When Bakefile can do multi-language PCH (e.g. C++ and Objective-C++) enable this:
8238     #OBJCXXFLAGS="-DWX_PRECOMP $CXXFLAGS"
8239 fi
8240
8241 dnl HACK ALERT!!
8242 dnl For now, we need to alter bk-deps not to generate deps
8243 dnl when we've configured a Universal binary build.
8244 dnl The next version of Bakefile will have the correct fix for this
8245 dnl at which time, this hack can be removed.
8246
8247 if test "$wxUSE_MAC" = 1 ; then
8248     if test "x$wxUSE_UNIVERSAL_BINARY" != "xno" ; then
8249         if test "x$disable_macosx_deps" = "xyes"; then
8250             sed "s/DEPSMODE=gcc/DEPSMODE=none/" < bk-deps > temp
8251                 mv temp bk-deps
8252             chmod +x bk-deps
8253         fi
8254     fi
8255 fi
8256
8257 if test "$wxUSE_SHARED" = "yes"; then
8258     dnl Need addtional flag on OS/2, so override bakefiles value
8259     dnl (there currently is no suitable variable to which the
8260     dnl  missing flags could be added, AFAICS. SN, 18.12.2004. )
8261     case "${host}" in
8262       *-pc-os2_emx | *-pc-os2-emx )
8263         SHARED_LD_CC="`pwd`/dllar.sh -name-mangler-script ./dllnames.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
8264         SHARED_LD_CXX="`pwd`/dllar.sh -name-mangler-script ./dllnames.sh -libf INITINSTANCE -libf TERMINSTANCE -o"
8265         cp -p ${srcdir}/src/os2/dllnames.sh .
8266         cp -p ${srcdir}/src/os2/dllar.sh .
8267       ;;
8268     esac
8269 fi
8270 if test "$wxUSE_OMF" = "yes"; then
8271     case "${host}" in
8272       *-pc-os2_emx | *-pc-os2-emx )
8273         LDFLAGS="$LDFLAGS -Zlinker /EXEPACK"
8274         LDFLAGS_GUI="-Zlinker /PMTYPE:PM"
8275         WXCONFIG_LDFLAGS_GUI="-Zlinker /PMTYPE:PM"
8276       ;;
8277     esac
8278 fi
8279
8280 dnl TOOLCHAIN_DEFS should be used for both wx and client code
8281 WXCONFIG_CPPFLAGS="$WXCONFIG_CPPFLAGS $TOOLCHAIN_DEFS"
8282
8283
8284 dnl Sun cc is compatible with gcc and so either of them can use the C
8285 dnl libraries built with the other, i.e. gcc can be used to build wxGTK under
8286 dnl Solaris where GTK+ is compiled using cc and cc can be used under Linux
8287 dnl where GTK+ is built with gcc
8288 dnl
8289 dnl However the compiler options are not compatible at all and in particular
8290 dnl gcc doesn't like cc -mt option and cc doesn't like -pthread. We simply
8291 dnl filter them out as we already have the correct options for multithreaded
8292 dnl programs if we're using threads (and if we don't, it shouldn't matter)
8293 case "${host}" in
8294     *-*-solaris2* )
8295         dnl system packages are compiled with Sun CC and so pkg-config outputs
8296         dnl CC-specific "-mt" flag, remove it when using gcc
8297         if test "$GCC" = yes; then
8298             CPPFLAGS=`echo $CPPFLAGS | sed 's/-mt//g'`
8299             LIBS=`echo $LIBS | sed 's/-mt//g'`
8300             EXTRALIBS_GUI=`echo $EXTRALIBS_GUI | sed 's/-mt//g'`
8301         fi
8302         ;;
8303
8304     *-*-linux* )
8305         dnl OTOH when using Sun CC under Linux, the flags contain gcc-specific
8306         dnl -pthreads which Sun CC doesn't know about
8307         if test "x$SUNCXX" = xyes; then
8308             CPPFLAGS=`echo $CPPFLAGS | sed 's/-pthread//g'`
8309             LIBS=`echo $LIBS | sed 's/-pthread//g'`
8310             EXTRALIBS_GUI=`echo $EXTRALIBS_GUI | sed 's/-pthread//g'`
8311         fi
8312         ;;
8313 esac
8314
8315 dnl Add visibility support flags to CFLAGS/CXXFLAGS - do it this late so that
8316 dnl it doesn't affect compilation checks above
8317 CFLAGS="$CFLAGS $CFLAGS_VISIBILITY"
8318 CXXFLAGS="$CXXFLAGS $CXXFLAGS_VISIBILITY"
8319 OBJCFLAGS="$OBJCFLAGS $CFLAGS_VISIBILITY"
8320 OBJCXXFLAGS="$OBJCXXFLAGS $CXXFLAGS_VISIBILITY"
8321
8322 dnl for convenience, sort the samples in alphabetical order
8323 dnl
8324 dnl FIXME For some mysterious reasons, sometimes the directories are duplicated
8325 dnl       in this list - hence uniq. But normally, this shouldn't be needed!
8326 dnl
8327 dnl       Unfortunately, there is a bug in OS/2's tr, such that
8328 dnl       tr ' ' '\n' introduces DOS-like line breaks, whereas tr '\n' ' '
8329 dnl       only removes the Unix-like part of the introduced line break.
8330 SAMPLES_SUBDIRS="`echo $SAMPLES_SUBDIRS | tr -s ' ' | tr ' ' '\n' | sort | uniq | tr '\n' ' '| tr -d '\r'`"
8331
8332 dnl subtle bakefile goop.
8333 dnl Used in wx-config now too, as its STATIC_FLAG with different makeup.
8334 dnl I wish we would have called it something less likely to clash with
8335 dnl things though.
8336 AC_SUBST(SHARED)
8337
8338 dnl global options
8339 AC_SUBST(WX_LIBRARY_BASENAME_NOGUI)
8340 AC_SUBST(WX_LIBRARY_BASENAME_GUI)
8341
8342 dnl toolkit options
8343 AC_SUBST(USE_GUI)
8344 AC_SUBST(TOOLKIT)
8345 AC_SUBST(TOOLKIT_DIR)
8346 AC_SUBST(TOOLCHAIN_NAME)
8347 AC_SUBST(TOOLCHAIN_FULLNAME)
8348
8349 dnl wx-config options
8350 AC_SUBST(host_alias)
8351 AC_SUBST(cross_compiling)
8352 AC_SUBST(WIDGET_SET)
8353 AC_SUBST(WX_RELEASE)
8354 AC_SUBST(WX_VERSION)
8355 AC_SUBST(WX_SUBVERSION)
8356 AC_SUBST(WX_CHARTYPE)
8357
8358 dnl note that in addition to the usual CPP/C/CXXFLAGS which are used for
8359 dnl building the library itself, we also have WXCONFIG_-prefixed variants which
8360 dnl are used when building the libraries using the library
8361 dnl
8362 dnl so put anything which should be used only during the library build in, e.g.
8363 dnl CXXFLAGS, but put everything else (by default) into WXCONFIG_CXXFLAGS
8364 dnl
8365 dnl and, finally, for some things which should be only used by wx-config but
8366 dnl not during the library compilation, use WXCONFIG_ONLY_CPPFLAGS which is
8367 dnl added to WXCONFIG_CPPFLAGS after adding the latter to CPPFLAGS
8368 AC_SUBST(WXCONFIG_CPPFLAGS)
8369 AC_SUBST(WXCONFIG_CFLAGS)
8370 AC_SUBST(WXCONFIG_CXXFLAGS)
8371
8372 AC_SUBST(WXCONFIG_LIBS)
8373 AC_SUBST(WXCONFIG_RPATH)
8374 AC_SUBST(WXCONFIG_LDFLAGS)
8375 AC_SUBST(WXCONFIG_LDFLAGS_GUI)
8376 AC_SUBST(WXCONFIG_RESFLAGS)
8377
8378 dnl distribution vars
8379 AC_SUBST(GUIDIST)
8380 AC_SUBST(DISTDIR)
8381
8382 dnl additional subdirectories where we will build
8383 AC_SUBST(SAMPLES_SUBDIRS)
8384
8385 dnl additional libraries and linker settings
8386 AC_SUBST(LDFLAGS)
8387 AC_SUBST(LDFLAGS_GL)
8388 AC_SUBST(OPENGL_LIBS)
8389 AC_SUBST(DMALLOC_LIBS)
8390 AC_SUBST(WX_VERSION_TAG)
8391
8392 dnl additional resurces settings
8393 AC_SUBST(RESCOMP)
8394 AC_SUBST(WINDRES)
8395 AC_SUBST(REZ)
8396 AC_SUBST(WX_RESOURCES_MACOSX_ASCII)
8397 AC_SUBST(WX_RESOURCES_MACOSX_DATA)
8398
8399 dnl additional for Mac OS X
8400 AC_SUBST(DEREZ)
8401 AC_SUBST(LIBWXMACRES)
8402 AC_SUBST(POSTLINK_COMMAND)
8403 AC_SUBST(MACSETFILE)
8404
8405 dnl other tools
8406 AC_SUBST(GCC)
8407 AC_SUBST(DLLTOOL)
8408
8409
8410 dnl MAKE_SET will be replaced with "MAKE=..." or nothing if make sets MAKE
8411 dnl itself (this macro is required if SUBDIRS variable is used in Makefile.am
8412 dnl - and we do use it)
8413 AC_PROG_MAKE_SET
8414
8415
8416 AC_CONFIG_HEADERS([lib/wx/include/${TOOLCHAIN_FULLNAME}/wx/setup.h:setup.h.in])
8417
8418 if test "$USE_WIN32" = 1; then
8419     AC_CONFIG_COMMANDS([rcdefs.h],
8420         [
8421             mkdir -p $outdir &&
8422             $CPP $infile | sed 's/^# *[1-9].*//;s/^ *//;/./,/^$/!d' > $outdir/rcdefs.h
8423         ],
8424         [
8425             CPP="$CPP"
8426             infile="$srcdir/include/wx/msw/genrcdefs.h"
8427             outdir="lib/wx/include/$TOOLCHAIN_FULLNAME/wx/msw"
8428         ]
8429     )
8430 fi
8431
8432 AC_CONFIG_FILES([ lib/wx/config/${TOOLCHAIN_FULLNAME}:wx-config.in ],
8433                 [ chmod +x lib/wx/config/${TOOLCHAIN_FULLNAME} ],
8434                 [ TOOLCHAIN_FULLNAME="${TOOLCHAIN_FULLNAME}" ])
8435
8436 AC_CONFIG_FILES([ lib/wx/config/inplace-${TOOLCHAIN_FULLNAME}:wx-config-inplace.in ],
8437                 [ chmod +x lib/wx/config/inplace-${TOOLCHAIN_FULLNAME} ],
8438                 [ TOOLCHAIN_FULLNAME="${TOOLCHAIN_FULLNAME}" ])
8439
8440 dnl this is used to run ifacecheck with the same flags used by the compiler
8441 dnl for the real compilation:
8442 AC_CONFIG_FILES([ utils/ifacecheck/rungccxml.sh ],
8443                 [ chmod +x utils/ifacecheck/rungccxml.sh ])
8444
8445 if test "$wx_cv_version_script" = "yes"; then
8446     AC_CONFIG_FILES(version-script)
8447 fi
8448 AC_CONFIG_FILES(Makefile)
8449
8450 AC_CONFIG_COMMANDS([wx-config],
8451                    [ rm -f wx-config
8452                      ${LN_S} lib/wx/config/inplace-${TOOLCHAIN_FULLNAME} wx-config
8453                    ],
8454                    [ TOOLCHAIN_FULLNAME="${TOOLCHAIN_FULLNAME}"
8455                      LN_S="${LN_S}"
8456                    ])
8457
8458 dnl This would give us us build dir that in every significant way
8459 dnl resembles an installed wx in prefix=$builddir.  It is troublesome
8460 dnl though in this form because AC_CONFIG_LINKS will fail for directories
8461 dnl on platforms that do not have symlinks.
8462 dnl AC_CONFIG_LINKS([ include/wx-$WX_RELEASE$WX_FLAVOUR:include ])
8463
8464 if test "$wxWITH_SUBDIRS" != "no"; then
8465 dnl Configure samples, demos etc. directories, but only if they are present:
8466 if test "$wxUSE_GUI" = "yes"; then
8467     SUBDIRS="samples demos utils"
8468 else
8469     dnl we build wxBase only
8470     dnl there are no wxBase programs in demos
8471     SUBDIRS="samples utils"
8472 fi
8473 dnl Add tests to the list of subdirs if cppunit 1.8.0+ is detected
8474 AM_PATH_CPPUNIT(1.8.0, [SUBDIRS="$SUBDIRS tests"])
8475
8476 for subdir in $SUBDIRS; do
8477     if test -d ${srcdir}/${subdir} ; then
8478         if test "$wxUSE_GUI" = "yes"; then
8479             if test ${subdir} = "samples"; then
8480                 dnl only take those samples which compile in the current
8481                 dnl configuration and which exist
8482                 makefiles="samples/Makefile.in $makefiles"
8483                 for sample in $SAMPLES_SUBDIRS; do
8484                     if test -d $srcdir/samples/$sample; then
8485                         makefiles="samples/$sample/Makefile.in $makefiles"
8486                     fi
8487                 done
8488             else
8489                 dnl assume that everything compiles for utils &c
8490                 dnl any that shouldn't be built can be added to
8491                 dnl DISABLED_UTILS, DISABLED_DEMOS
8492                 disabled_var=DISABLED_`echo $subdir | tr '[[a-z]]' '[[A-Z]]'`
8493                 eval "disabled=\$$disabled_var"
8494                 disabled=/`echo X $disabled | sed 's@ @/|/@g'`/
8495                 makefiles=`(cd $srcdir ; find $subdir -name Makefile.in) | $EGREP -v "$disabled"`
8496             fi
8497         else
8498             dnl we build wxBase only
8499             dnl don't take all samples/utils, just those which build with wxBase
8500             if test ${subdir} = "samples"; then
8501                 dnl only take those samples which compile in the current
8502                 dnl configuration and which exist
8503                 makefiles="samples/Makefile.in $makefiles"
8504                 for sample in `echo $SAMPLES_SUBDIRS`; do
8505                     if test -d $srcdir/samples/$sample; then
8506                         makefiles="samples/$sample/Makefile.in $makefiles"
8507                     fi
8508                 done
8509             elif test ${subdir} = "utils"; then
8510                 makefiles=""
8511                 for util in ifacecheck ; do
8512                     if test -d $srcdir/utils/$util ; then
8513                         makefiles="utils/$util/src/Makefile.in \
8514                                    $makefiles"
8515                     fi
8516                 done
8517             else
8518                 dnl assume that everything compiles for tests
8519                 makefiles=`(cd $srcdir ; find $subdir -name Makefile.in)`
8520             fi
8521         fi
8522
8523         for mkin in $makefiles ; do
8524             mk=`echo $mkin | sed 's/Makefile\.in/Makefile/g'`
8525             AC_CONFIG_FILES([$mk])
8526         done
8527     fi
8528 done
8529 fi dnl wxWITH_SUBDIRS
8530
8531 AC_OUTPUT
8532
8533 dnl report how we have been configured
8534 echo
8535 echo "Configured wxWidgets ${WX_VERSION} for \`${host}'"
8536 echo ""
8537 echo "  Which GUI toolkit should wxWidgets use?                 ${TOOLKIT_DESC}"
8538 echo "  Should wxWidgets be compiled into single library?       ${wxUSE_MONOLITHIC:-yes}"
8539 echo "  Should wxWidgets be linked as a shared library?         ${wxUSE_SHARED:-no}"
8540 echo $ECHO_N "  Should wxWidgets support Unicode?                       ${wxUSE_UNICODE:-no}$ECHO_C"
8541 if test "$wxUSE_UNICODE" = "yes"; then
8542     if test "$wxUSE_UNICODE_UTF8" = "yes"; then
8543         echo " (using UTF-8)"
8544     else
8545         echo " (using wchar_t)"
8546     fi
8547 else
8548     echo
8549 fi
8550
8551 echo "  What level of wxWidgets compatibility should be enabled?"
8552 echo "                                       wxWidgets 2.6      ${WXWIN_COMPATIBILITY_2_6:-no}"
8553 echo "                                       wxWidgets 2.8      ${WXWIN_COMPATIBILITY_2_8:-yes}"
8554
8555 echo "  Which libraries should wxWidgets use?"
8556 echo "                                       STL                ${wxUSE_STL}"
8557 echo "                                       jpeg               ${wxUSE_LIBJPEG-none}"
8558 echo "                                       png                ${wxUSE_LIBPNG-none}"
8559 echo "                                       regex              ${wxUSE_REGEX}"
8560 echo "                                       tiff               ${wxUSE_LIBTIFF-none}"
8561 if test "$wxUSE_X11" = 1 -o "$wxUSE_MOTIF" = 1; then
8562 echo "                                       xpm                ${wxUSE_LIBXPM-none}"
8563 fi
8564 echo "                                       zlib               ${wxUSE_ZLIB}"
8565 echo "                                       expat              ${wxUSE_EXPAT}"
8566 echo "                                       libmspack          ${wxUSE_LIBMSPACK}"
8567 echo "                                       sdl                ${wxUSE_LIBSDL}"
8568
8569 echo ""
8570
8571 dnl vi: set et sts=4 sw=4 com=\:dnl: