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