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