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