]> git.saurik.com Git - wxWidgets.git/blobdiff - configure.in
added wxChoice:: and wxCombobox::GetCurrentSelection()
[wxWidgets.git] / configure.in
index be93c20cabc5be50916ebf89cfd9314d1dce048f..48e3f3edac7b0d00c60f78fa887713ca5b3ed300 100644 (file)
@@ -17,7 +17,7 @@ dnl ---------------------------------------------------------------------------
 dnl initialization
 dnl ---------------------------------------------------------------------------
 
-AC_INIT([wxWidgets], [2.6.1], [wx-dev@lists.wxwidgets.org])
+AC_INIT([wxWidgets], [2.6.2], [wx-dev@lists.wxwidgets.org])
 
 dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package
 AC_CONFIG_SRCDIR([wx-config.in])
@@ -31,32 +31,10 @@ AC_CANONICAL_TARGET
 dnl When making releases do:
 dnl
 dnl wx_release_number += 1
-dnl
-dnl ..and update WX_CURRENT, WX_REVISION and WX_AGE according to the
-dnl following rules:
-dnl
-dnl    If any changes have been made to the public interface, that is if any
-dnl    exported class, method, global or global type has been added, removed
-dnl    or changed in any way, then do:  WX_CURRENT += 1
-dnl
-dnl    If source changes have been made that *do not* alter the public
-dnl    interface then do:  WX_REVISION += 1
-dnl    If WX_CURRENT was incremented (as above) instead do:  WX_REVISION = 0
-dnl
-dnl    If any public interface was added, do:  WX_AGE += 1
-dnl    If any public interface was removed (or altered in a way effectively
-dnl    removing the previous definition), instead do:  WX_AGE = 0
-dnl
-dnl When the major or minor version numbers are incremented, all the above
-dnl variables should be reset to 0. wx_subrelease_number should be set to zero
-dnl when major, minor or release numbers change.
-dnl
-dnl The resulting library name will be of the form:
-dnl   libwx_$(TOOLKIT)-$(WX_RELEASE).so.$(WX_CURRENT).$(WX_REVISION).$(WX_AGE)
 
 wx_major_version_number=2
 wx_minor_version_number=6
-wx_release_number=1
+wx_release_number=2
 wx_subrelease_number=1
 
 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number
@@ -65,9 +43,6 @@ WX_SUBVERSION=$WX_VERSION.$wx_subrelease_number
 
 WX_MSW_VERSION=$wx_major_version_number$wx_minor_version_number$wx_release_number
 
-WX_CURRENT=0
-WX_REVISION=1
-WX_AGE=0
 
 
 dnl ------------------------------------------------------------------------
@@ -324,8 +299,8 @@ case "${host}" in
     DEFAULT_STD_FLAG=no
   ;;
 
-  powerpc-*-darwin* )
-    dnl PowerPC Darwin based distributions (including Mac OS X)
+  *-*-darwin* )
+    dnl Darwin based distributions (including Mac OS X)
     USE_BSD=1
     USE_DARWIN=1
     SO_SUFFIX=dylib
@@ -1164,10 +1139,14 @@ WX_ARG_ENABLE(mousewheel,  [  --enable-mousewheel     use mousewheel], wxUSE_MOU
 WX_ARG_ENABLE(validators,  [  --enable-validators     use wxValidator and derived classes], wxUSE_VALIDATORS)
 WX_ARG_ENABLE(busyinfo,    [  --enable-busyinfo       use wxBusyInfo], wxUSE_BUSYINFO)
 WX_ARG_ENABLE(joystick,    [  --enable-joystick       use wxJoystick], wxUSE_JOYSTICK)
-WX_ARG_ENABLE(metafile,    [  --enable-metafiles      use wxMetaFile (Windows only)], wxUSE_METAFILE)
+WX_ARG_ENABLE(metafile,    [  --enable-metafiles      use wxMetaFile (Win32 only)], wxUSE_METAFILE)
 WX_ARG_ENABLE(dragimage,   [  --enable-dragimage      use wxDragImage], wxUSE_DRAGIMAGE)
 WX_ARG_ENABLE(accessibility,[  --enable-accessibility  enable accessibility support], wxUSE_ACCESSIBILITY)
 
+if test "$wxUSE_MSW" = "1"; then
+    WX_ARG_ENABLE(dccache, [  --enable-dccache        cache temporary wxDC objects (Win32 only)], wxUSE_DC_CACHEING)
+fi
+
 dnl ---------------------------------------------------------------------------
 dnl support for image formats that do not rely on external library
 dnl ---------------------------------------------------------------------------
@@ -1328,6 +1307,7 @@ case "${host}" in
   *-*-cygwin*)
       if test "$wxUSE_MSW" = 1 ; then
         wants_win32=1
+        BAKEFILE_FORCE_PLATFORM=win32
       else
         doesnt_want_win32=1
       fi
@@ -1460,7 +1440,7 @@ case "${host}" in
     dnl The other BSD's should probably go in here too, since this is
     dnl to workaround a strange static lib BSDism.
     dnl Mac OS X install seems to ignore -p option...
-    powerpc-*-darwin* )
+    *-*-darwin* )
         INSTALL_PROGRAM="cp -fp"
         INSTALL_DATA="cp -fp"
         ;;
@@ -1539,14 +1519,14 @@ dnl ------------------------------------------------------------------------
 dnl Platform specific tests
 dnl ------------------------------------------------------------------------
 
-dnl xlC needs -qunique (at least on AIX) so that one source file can be
+dnl xlC needs -qunique under AIX so that one source file can be
 dnl compiled to multiple object files and safely linked together.
-if test "x$XLCXX" = "xyes"; then
+if test "x$XLCXX" = "xyes" -a "x$USE_AIX" = "x1"; then
     CXXFLAGS="$CXXFLAGS -qunique"
 fi
 
 
-dnl This case is for OS X vs. everything else
+dnl This case is for PowerPC OS X vs. everything else
 case "${host}" in
   powerpc-*-darwin* )
     AC_MSG_CHECKING([if __POWERPC__ is already defined])
@@ -1558,6 +1538,12 @@ case "${host}" in
         [AC_MSG_RESULT([no])
         AC_DEFINE(__POWERPC__)
     ])
+  ;;
+esac
+
+dnl This case is for OS X vs. everything else
+case "${host}" in
+  *-*-darwin* )
     AC_MSG_CHECKING([if CoreFoundation/CFBase.h is usable])
     AC_TRY_COMPILE([#include <CoreFoundation/CFBase.h>
 ],[],
@@ -1637,7 +1623,7 @@ case "${host}" in
           LDFLAGS="$LDFLAGS -Zsysv-signals"
       else
           if test "$wx_cv_gccversion" = "EMX3"; then
-              LIBS="$LIBS -lstdcxx"
+              LIBS="$LIBS -lstdcxx -lgcc"
               LDFLAGS="$LDFLAGS -Zsysv-signals"
           else
               LIBS="$LIBS -lstdc++"
@@ -1722,10 +1708,6 @@ fi
 dnl defines HAVE_FNMATCH_H
 AC_CHECK_HEADERS(fnmatch.h)
 
-if test "x$ac_cv_header_fnmatch_h" = "xyes"; then
-    AC_CHECK_FUNCS(fnmatch)
-fi
-
 dnl defines HAVE_LANGINFO_H (GNU libc locale parameters)
 AC_CHECK_HEADERS(langinfo.h)
 
@@ -1890,6 +1872,37 @@ dnl problems
 if test "x$wx_largefile" = "xyes"; then
     if test "x$ac_cv_sys_file_offset_bits" = "x64"; then
         WX_LARGEFILE_FLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES"
+
+        dnl We get "Large Files (ILP32) not supported in strict ANSI mode."
+        dnl #error from HP standard headers unless __STDC_EXT__ is defined.
+        dnl The compiler should define it automatically, but some old g++
+        dnl versions don't define it, so test and add it if necessary. AFAIK
+        dnl the problem only affects the C++ compiler so it is added to
+        dnl CXXFLAGS only.
+        if test "$USE_HPUX" = 1 -a "$GXX" = "yes"; then
+            AC_CACHE_CHECK(
+                [if -D__STDC_EXT__ is required],
+                wx_cv_STDC_EXT_required,
+                [
+                    AC_LANG_SAVE
+                    AC_LANG_CPLUSPLUS
+                    AC_TRY_COMPILE(
+                        [],
+                        [
+                            #ifndef __STDC_EXT__
+                                choke me
+                            #endif
+                        ],
+                        wx_cv_STDC_EXT_required=no,
+                        wx_cv_STDC_EXT_required=yes
+                    )
+                    AC_LANG_RESTORE
+                ]
+            )
+            if test "x$wx_cv_STDC_EXT_required" = "xyes"; then
+                CXXFLAGS="$CXXFLAGS -D__STDC_EXT__"
+            fi
+        fi
     else
         WX_LARGEFILE_FLAGS="-D_LARGE_FILES"
     fi
@@ -1920,6 +1933,12 @@ AC_CXX_STATIC_CAST
 dnl we don't use HAVE_DYNAMIC_CAST anywhere right now...
 dnl AC_CXX_DYNAMIC_CAST
 
+dnl With Sun CC, temporaries have block scope by default. This flag is needed
+dnl to get the expression scope behaviour that conforms to the standard.
+if test "x$SUNCXX" = xyes; then
+    CXXFLAGS="$CXXFLAGS -features=tmplife"
+fi
+
 dnl check for std::string or std::wstring
 if test "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes"; then
     AC_LANG_PUSH(C++)
@@ -2139,6 +2158,41 @@ dnl also put 64 bit versions for Linux on AMD, they must come before the usual
 dnl locations or 64 bit compilation failed
 SEARCH_LIB="/usr/lib /usr/lib32 /usr/lib64 /usr/X11R6/lib64 `echo "$SEARCH_INCLUDE" | sed s/include/lib/g`"
 
+dnl Cross compiling with gcc?
+if test "$build" != "$host" -a "$GCC" = yes; then
+    dnl for gcc cross-compilers "$CC -print-prog-name=ld" prints the path to
+    dnl the linker. Stripping off the trailing '/bin/ld' gives us a candiate
+    dnl for a 'root' below which libraries and headers for the target system
+    dnl might be installed.
+    if cross_root=`$CC -print-prog-name=ld 2>/dev/null`; then
+        cross_root=`dirname $cross_root`
+        cross_root=`dirname $cross_root`
+
+        dnl substitute this candiate root for '^/usr' in the search lists,
+        dnl strip out any that don't start '^/usr'.
+        SEARCH_LIB=`for x in $SEARCH_LIB; do echo $x; done | sed -ne "s|^/usr|$cross_root|p"`
+        SEARCH_INCLUDE=`for x in $SEARCH_INCLUDE; do echo $x; done | sed -ne "s|^/usr|$cross_root|p"`
+
+        dnl also have pkg-config search for *.pc files under this 'root'
+        if test -z "$PKG_CONFIG_PATH"; then
+            PKG_CONFIG_PATH="$cross_root/local/lib/pkgconfig:$cross_root/lib/pkgconfig"
+            export PKG_CONFIG_PATH
+        fi
+
+        dnl AC_PATH_XTRA doesn't work currently unless -x-includes and
+        dnl -x-libraries are given on the command line. So if they are not
+        dnl set then set them here to plausible defaults.
+        if test -z "$x_includes" -o "$x_includes" = NONE; then
+            WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, X11/Intrinsic.h)
+            x_includes=$ac_find_includes
+        fi
+        if test -z "$x_libraries" -o "$x_libraries" = NONE; then
+            WX_PATH_FIND_LIBRARIES($SEARCH_LIB, Xt)
+            x_libraries=$ac_find_libraries
+        fi
+    fi
+fi
+
 dnl ------------------------------------------------------------------------
 dnl Check for libraries
 dnl ------------------------------------------------------------------------
@@ -2155,7 +2209,7 @@ if test "$USE_LINUX" = 1 -o "$USE_GNU" = 1; then
         AC_TRY_COMPILE([#include <features.h>],
             [
                 #if (__GLIBC__ < 2) || (__GLIBC_MINOR__ < 1)
-                    #error not glibc2.1
+                not glibc 2.1
                 #endif
             ],
             [
@@ -2721,10 +2775,29 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
             save_CFLAGS="$CFLAGS"
             save_LIBS="$LIBS"
             CFLAGS="$CFLAGS $wx_cv_cflags_gtk"
-            LIBS="$LIBS $wx_cv_lib_gtk"
-            
+            LIBS="$LIBS $wx_cv_libs_gtk"
+
             AC_CHECK_FUNCS([pango_font_family_is_monospace])
-            
+
+            dnl gtk_icon_size_lookup is not available in the GTK+ headers
+            dnl that have shipped with some versions of Sun's JDS. Not using
+            dnl AC_CHECK_FUNCS here since it only checks the function exists
+            dnl in the lib (not the header).
+            AC_MSG_CHECKING([if gtk_icon_size_lookup is missing])
+            AC_TRY_COMPILE([
+                            #include <gtk/gtk.h>
+                           ],
+                           [
+                            void *f = gtk_icon_size_lookup;
+                           ],
+                           [
+                            AC_MSG_RESULT([no])
+                           ],
+                           [
+                            AC_DEFINE(NEED_GTK_ICON_SIZE_LOOKUP)
+                            AC_MSG_RESULT([yes])
+                           ])
+
             dnl test if we have at least GTK+ 2.4:
             AC_MSG_CHECKING([if GTK+ is version >= 2.4])
             AC_TRY_COMPILE([
@@ -2732,7 +2805,7 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
                            ],
                            [
                             #if !GTK_CHECK_VERSION(2,4,0)
-                            #error "Not GTK+ 2.4"
+                            Not GTK+ 2.4
                             #endif
                            ],
                            [
@@ -2742,7 +2815,7 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
                            [
                             AC_MSG_RESULT([no])
                            ])
-            
+
             CFLAGS="$save_CFLAGS"
             LIBS="$save_LIBS"
         else
@@ -3098,7 +3171,7 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
                        ],
                        [
                         #if XmVersion < 2000
-                        #error "Not Motif 2"
+                        Not Motif 2
                         #endif
                        ],
                        [
@@ -3109,6 +3182,24 @@ libraries returned by 'pkg-config gtk+-2.0 --libs' or 'gtk-config
                         AC_DEFINE(__WXMOTIF20__,0)
                         AC_MSG_RESULT([not found])
                        ])
+
+        AC_MSG_CHECKING([whether Motif is Lesstif])
+        AC_TRY_COMPILE([
+                        #include <Xm/Xm.h>
+                       ],
+                       [
+                        #if !defined(LesstifVersion) || LesstifVersion <= 0
+                        Not Lesstif
+                        #endif
+                       ],
+                       [
+                        AC_DEFINE(__WXLESSTIF__,1)
+                        AC_MSG_RESULT([yes])
+                       ],
+                       [
+                        AC_DEFINE(__WXLESSTIF__,0)
+                        AC_MSG_RESULT([no])
+                       ])
         CFLAGS=$save_CFLAGS
 
         GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11"
@@ -3510,7 +3601,7 @@ if test "$wxUSE_SHARED" = "yes"; then
       *-*-linux* | *-*-gnu* )
         SAMPLES_RPATH_FLAG="-Wl,-rpath,\$(top_builddir)lib"
         WXCONFIG_RPATH="-Wl,-rpath,\$libdir"
-       ;;
+        ;;
 
       *-*-solaris2* )
         if test "$GCC" = yes ; then
@@ -3550,7 +3641,7 @@ if test "$wxUSE_SHARED" = "yes"; then
         fi
       ;;
       
-      powerpc-*-darwin* )
+      *-*-darwin* )
         install_name_tool=`which install_name_tool`
         if test "$install_name_tool" -a -x "$install_name_tool"; then
             SAMPLES_RPATH_POSTLINK="\$(top_builddir)change-install-names \$(LIBDIRNAME) \$(prefix) \$@"
@@ -3636,7 +3727,11 @@ dnl library link name
 dnl These just save us from exporting lib_{unicode,debug,flavour}_suffix.
 dnl If we ever need to do that, we won't need to keep these.
 WX_LIBRARY_BASENAME_NOGUI="wx_base${WXBASEPORT}${lib_unicode_suffix}${lib_debug_suffix}${WX_LIB_FLAVOUR}"
-WX_LIBRARY_BASENAME_GUI="wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}${WX_LIB_FLAVOUR}"
+if test "${TOOLKIT_DIR}" = "os2"; then
+    WX_LIBRARY_BASENAME_GUI="wx_pm${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}${WX_LIB_FLAVOUR}"
+else
+    WX_LIBRARY_BASENAME_GUI="wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}${WX_LIB_FLAVOUR}"
+fi
 
 
 
@@ -3835,14 +3930,21 @@ if test "$wxUSE_WCHAR_T" = "yes"; then
         AC_DEFINE(HAVE_WCSLEN)
     fi
 
-    dnl on HP-UX aCC and g++ need this define to find mbstrtowcs() &c
-    if test "$USE_HPUX" = 1; then
+    dnl On HP-UX aCC need this define to find mbstrtowcs() &c
+    dnl Can't be used for g++ since the mbstate_t in wchar.h can conflict
+    dnl with g++'s in <cwchar> (unless -D_INCLUDE__STDC_A1_SOURCE is in the
+    dnl flags when g++ is configured, it will declare it's own).
+    if test "$USE_HPUX" = 1 -a "$GCC" != "yes"; then
         CPPFLAGS="$CPPFLAGS -D_INCLUDE__STDC_A1_SOURCE "
     fi
 
-    dnl try to use wcsrtombs instead of wcstombs which is buggy in old GNU
-    dnl libc versions if possible
-    AC_CHECK_FUNCS(wcsrtombs)
+    dnl Try to use wcsrtombs instead of wcstombs which is buggy in old GNU
+    dnl libc versions if possible. AC_CHECK_FUNCS only checks it's in the
+    dnl library, not the header, so do a header check for mbstate_t first.
+    AC_CHECK_TYPES([mbstate_t],
+                   [AC_CHECK_FUNCS(wcsrtombs)],
+                   [],
+                   [#include <wchar.h>])
 else
     AC_MSG_WARN([Wide character support is unavailable])
 fi
@@ -3855,50 +3957,41 @@ AC_LANG_CPLUSPLUS
 
 dnl check for vsnprintf() -- a safe version of vsprintf())
 dnl
-dnl the trouble here is that on some systems (notable HP-UX) this function is
+dnl the trouble here is that on some systems (e.g HP-UX 10) this function is
 dnl present in libc but not in the system headers and so AC_CHECK_FUNCS (which,
 dnl stupidly, provides a dummy function declaration inside its extension)
 dnl succeeds, even with C++ compiler, but the compilation of wxWidgets fails
 dnl
 dnl so we first check if the function is in the library
-AC_CHECK_FUNCS(vsnprintf)
+AC_CHECK_FUNCS(snprintf vsnprintf)
 
 if test "$ac_cv_func_vsnprintf" = "yes"; then
     dnl yes it is -- now check if it is in the headers
     AC_CACHE_CHECK([for vsnprintf declaration], wx_cv_func_vsnprintf_decl,
         [
+            dnl our troubles are not over: HP-UX 11 prototypes vsnprintf() as
+            dnl taking "char *" and not "const char *" while Metrowerks does
+            dnl provide a correct vsnprintf declaration but in C++ mode it's
+            dnl always in std namespace and so we have to bring it in scope
             AC_TRY_COMPILE(
                 [
                     #include <stdio.h>
                     #include <stdarg.h>
+                    #ifdef __MSL__
+                    #if __MSL__ >= 0x6000
+                    namespace std {}
+                    using namespace std;
+                    #endif
+                    #endif
                 ],
                 [
                     char *buf;
                     va_list ap;
-                    vsnprintf(buf, 10u, "%s", ap);
+                    const char *fmt = "%s";
+                    vsnprintf(buf, 10u, fmt, ap);
                 ],
                 wx_cv_func_vsnprintf_decl=yes,
-                [
-                    dnl Metrowerks does provide a vsnprintf declaration
-                    dnl but in C++ mode it's always in std namespace.
-                    dnl FIXME: Do we have any UNIX C++ compilers that would
-                    dnl fail this test if using namespace std; was
-                    dnl simply always included?
-                    AC_TRY_COMPILE(
-                        [
-                            #include <stdio.h>
-                            #include <stdarg.h>
-                            using namespace std;
-                        ],
-                        [
-                            char *buf;
-                            va_list ap;
-                            vsnprintf(buf, 10u, "%s", ap);
-                        ],
-                        wx_cv_func_vsnprintf_decl=yes,
-                        wx_cv_func_vsnprintf_decl=no
-                    )
-                ]
+                wx_cv_func_vsnprintf_decl=no
             )
         ]
     )
@@ -3908,6 +4001,38 @@ if test "$ac_cv_func_vsnprintf" = "yes"; then
     fi
 fi
 
+dnl the same as above but for snprintf() now: it's not present in at least AIX
+dnl 4.2 headers
+if test "$ac_cv_func_snprintf" = "yes"; then
+    AC_CACHE_CHECK([for snprintf declaration], wx_cv_func_snprintf_decl,
+        [
+            AC_TRY_COMPILE(
+                [
+                    #include <stdio.h>
+                    #include <stdarg.h>
+                    #ifdef __MSL__
+                    #if __MSL__ >= 0x6000
+                    namespace std {}
+                    using namespace std;
+                    #endif
+                    #endif
+                ],
+                [
+                    char *buf;
+                    const char *fmt = "%s";
+                    snprintf(buf, 10u, fmt, "wx");
+                ],
+                wx_cv_func_snprintf_decl=yes,
+                wx_cv_func_snprintf_decl=no
+            )
+        ]
+    )
+
+    if test "$wx_cv_func_snprintf_decl" = "yes"; then
+        AC_DEFINE(HAVE_SNPRINTF_DECL)
+    fi
+fi
+
 if test "$wxUSE_UNICODE" = yes; then
     dnl also look if we have wide char IO functions
     AC_CHECK_FUNCS(wputc wputchar putws fputws wprintf vswprintf)
@@ -3925,6 +4050,13 @@ fi
 
 AC_LANG_RESTORE
 
+if test "x$ac_cv_header_fnmatch_h" = "xyes"; then
+    AC_CHECK_FUNCS(fnmatch)
+fi
+
+if test "$wxUSE_FILE" = "yes"; then
+    AC_CHECK_FUNCS(fsync)
+fi
 
 
 dnl the following tests are for Unix(like) systems only
@@ -4034,10 +4166,10 @@ AC_CACHE_CHECK(for statfs, wx_cv_func_statfs,
     AC_TRY_COMPILE(
         [
              #if defined(__BSD__)
-               #include <sys/param.h>
-               #include <sys/mount.h>
+             #include <sys/param.h>
+             #include <sys/mount.h>
              #else
-               #include <sys/vfs.h>
+             #include <sys/vfs.h>
              #endif
         ],
         [
@@ -4048,16 +4180,39 @@ AC_CACHE_CHECK(for statfs, wx_cv_func_statfs,
              l += fs.f_blocks;
              l += fs.f_bavail;
         ],
-        [
-             wx_cv_func_statfs=yes
-        ],
-        [
-             wx_cv_func_statfs=no
-        ]
+         wx_cv_func_statfs=yes,
+         wx_cv_func_statfs=no
     )
 )
 
 if test "$wx_cv_func_statfs" = "yes"; then
+    dnl check whether we have its dcelaration too: some systems (AIX 4) lack it
+    AC_LANG_SAVE
+    AC_LANG_CPLUSPLUS
+    AC_CACHE_CHECK(for statfs declaration, wx_cv_func_statfs_decl,
+        AC_TRY_COMPILE(
+            [
+                 #if defined(__BSD__)
+                 #include <sys/param.h>
+                 #include <sys/mount.h>
+                 #else
+                 #include <sys/vfs.h>
+                 #endif
+            ],
+            [
+                struct statfs fs;
+                statfs("", &fs);
+            ],
+            wx_cv_func_statfs_decl=yes,
+            wx_cv_func_statfs_decl=no
+        )
+    )
+    AC_LANG_RESTORE
+
+    if test "$wx_cv_func_statfs_decl" = "yes"; then
+        AC_DEFINE(HAVE_STATFS_DECL)
+    fi
+
     wx_cv_type_statvfs_t="struct statfs"
     AC_DEFINE(HAVE_STATFS)
 else
@@ -4341,10 +4496,14 @@ if test "$TOOLKIT" != "MSW" -a "$USE_OS2" != 1; then
                 THREAD_OPTS="pthreads"
                 ;;
           *-hp-hpux* )
-                dnl HP-UX aCC only gives a warning, not an error about
-                dnl -pthread but it doesn't work and we have to use -lpthread
-                dnl there
-                if test "x$GCC" != "xyes"; then
+                if test "x$GCC" = "xyes"; then
+                    dnl g++ versions before 3.3.2 don't support -pthread.
+                    $CXX -dumpspecs | grep 'pthread:' >/dev/null ||
+                        THREAD_OPTS="" 
+                else
+                    dnl HP-UX aCC only gives a warning, not an error about
+                    dnl -pthread but it doesn't work and we have to use
+                    dnl -lpthread there
                     THREAD_OPTS=""
                 fi
                 ;;
@@ -4464,6 +4623,28 @@ if test "$TOOLKIT" != "MSW" -a "$USE_OS2" != 1; then
     if test "$wxUSE_THREADS" = "yes" ; then
       AC_CHECK_FUNCS(thr_setconcurrency)
 
+      dnl can't use AC_CHECK_FUNCS for this one as it's usually a macro and so
+      dnl wouldn't be found by it
+      AC_CACHE_CHECK([for pthread_cleanup_push/pop], wx_cv_func_pthread_cleanup,
+      [
+        AC_TRY_COMPILE([#include <pthread.h>
+               void ThreadCleanupFunc(void *p);
+            ],
+            [
+                void *p;
+                pthread_cleanup_push(ThreadCleanupFunc, p);
+                pthread_cleanup_pop(0);
+            ], [
+               wx_cv_func_pthread_cleanup=yes
+            ], [
+               wx_cv_func_pthread_cleanup=no
+            ]
+        )
+      ])
+      if test "x$wx_cv_func_pthread_cleanup" = "xyes"; then
+        AC_DEFINE(wxHAVE_PTHREAD_CLEANUP)
+      fi
+
       AC_CHECK_HEADERS(sched.h)
       if test "$ac_cv_header_sched_h" = "yes"; then
           AC_CHECK_FUNC(sched_yield,
@@ -4509,26 +4690,8 @@ if test "$TOOLKIT" != "MSW" -a "$USE_OS2" != 1; then
                     AC_DEFINE(HAVE_PTHREAD_CANCEL),
                     AC_MSG_WARN([wxThread::Kill() will not work properly]))
 
-      dnl we don't use pthread_cleanup_push/pop() any more in the code, but I
-      dnl the code here for now in case we need it again soon; otherwise it
-      dnl should be removed in a couple of months (VZ in Sep 2003)
-      dnl
-      dnl AC_CACHE_CHECK([for pthread_cleanup_push/pop], wx_cv_func_pthread_cleanup_push,
-      dnl [
-      dnl   AC_TRY_COMPILE([#include <pthread.h>],
-      dnl                [
-      dnl                   pthread_cleanup_push(NULL, NULL);
-      dnl                   pthread_cleanup_pop(0);
-      dnl                ], [
-      dnl                   wx_cv_func_pthread_cleanup_push=yes
-      dnl                ], [
-      dnl                   wx_cv_func_pthread_cleanup_push=no
-      dnl                ])
-      dnl ])
-      dnl 
-      dnl if test "$wx_cv_func_pthread_cleanup_push" = "yes"; then
-      dnl     AC_DEFINE(HAVE_THREAD_CLEANUP_FUNCTIONS)
-      dnl fi
+      AC_CHECK_FUNC(pthread_attr_setstacksize,
+                    AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE))
 
       dnl mutexattr_t initialization is done in quite different ways on different
       dnl platforms, so check for a few things:
@@ -5602,6 +5765,17 @@ if test "$wxUSE_PROLOGIO" = "yes" -o  "$wxUSE_RESOURCES" = "yes"; then
     AC_MSG_ERROR([wxExpr and old-style resources are now available in contrib only])
 fi
 
+dnl ---------------------------------------------------------------------------
+dnl wxMetafile availability
+dnl ---------------------------------------------------------------------------
+
+if test "$wxUSE_METAFILE" = "yes"; then
+    if test "$wxUSE_MSW" != 1 -a "$wxUSE_MAC" != 1 -a "$wxUSE_PM" != 1; then
+        AC_MSG_WARN([wxMetafile is not available on this system... disabled])
+        wxUSE_METAFILE=no
+    fi
+fi
+
 dnl ---------------------------------------------------------------------------
 dnl IPC: IPC, Drag'n'Drop, Clipboard, ...
 dnl ---------------------------------------------------------------------------
@@ -5667,6 +5841,19 @@ if test "$wxUSE_IPC" = "yes"; then
     fi
 fi
 
+if test "$wxUSE_DATAOBJ" = "yes"; then
+    if test "$wxUSE_MGL" = 1; then
+        AC_MSG_WARN([wxDataObject not yet supported under MGL... disabled])
+        wxUSE_DATAOBJ=no
+    else
+        AC_DEFINE(wxUSE_DATAOBJ)
+    fi
+else
+    AC_MSG_WARN([Clipboard and drag-and-drop require wxDataObject -- disabled])
+    wxUSE_CLIPBOARD=no
+    wxUSE_DRAG_AND_DROP=no
+fi
+
 if test "$wxUSE_CLIPBOARD" = "yes"; then
     if test "$wxUSE_MGL" = 1; then
         AC_MSG_WARN([Clipboard not yet supported under MGL... disabled])
@@ -5675,9 +5862,6 @@ if test "$wxUSE_CLIPBOARD" = "yes"; then
 
     if test "$wxUSE_CLIPBOARD" = "yes"; then
         AC_DEFINE(wxUSE_CLIPBOARD)
-
-        dnl required by clipboard code in configuration check
-        AC_DEFINE(wxUSE_DATAOBJ)
     fi
 fi
 
@@ -6029,6 +6213,10 @@ if test "$wxUSE_ACCESSIBILITY" = "yes"; then
     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS access"
 fi
 
+if test "$wxUSE_DC_CACHEING" = "yes"; then
+    AC_DEFINE(wxUSE_DC_CACHEING)
+fi
+
 if test "$wxUSE_DRAGIMAGE" = "yes"; then
     AC_DEFINE(wxUSE_DRAGIMAGE)
     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dragimag"
@@ -6496,10 +6684,8 @@ INCLUDES="-I\${top_builddir}lib/wx/include/${TOOLCHAIN_FULLNAME} \
 dnl C/C++ compiler options used to compile wxWidgets
 if test "$GXX" = yes ; then
     dnl CXXWARNINGS="-Wall -W -Wcast-qual -Werror"
-    CWARNINGS="-Wall
+    CWARNINGS="-Wall -Wundef"
     CXXWARNINGS="$CWARNINGS -Wno-ctor-dtor-privacy" 
-    dnl should enable this one day...
-    dnl CXXWARNINGS="-Wall -Werror"
 fi
 
 EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE"
@@ -6508,7 +6694,7 @@ dnl remove the extra white space from the cc/c++/ld options
 CPPFLAGS=`echo $WXDEBUG_DEFINE $INCLUDES $CPPFLAGS`
 CFLAGS=`echo $CODE_GEN_FLAGS $EXTRA_CFLAGS $CFLAGS $CWARNINGS`
 CXXFLAGS=`echo $CODE_GEN_FLAGS $CODE_GEN_FLAGS_CXX $EXTRA_CFLAGS $CXXFLAGS $CXXWARNINGS`
-    
+
 if test "x$MWCC" = "xyes"; then
     dnl Correct MW 8.3 to be more similar to GCC.  In particular we
     dnl must use <regex.h> from system not our local copy on OS X,
@@ -6716,55 +6902,70 @@ dnl According to Vaclav, if NO_GCC_PRAGMA is used for any reason it needs to
 dnl be in wx-config output.  Not doing so could result in link problems.
 GCC_PRAGMA_FLAGS=""
 PCH_FLAGS=""
-dnl Find out if we have to define NO_GCC_PRAGMA and WX_PRECOMP:
+
+dnl Find out if we have to define WX_PRECOMP (and thus NO_GCC_PRAGMA)
 if test $GCC_PCH = 1 ; then
-    GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
     PCH_FLAGS="-DWX_PRECOMP"
+    GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
 else
-    case "${host}" in
-        powerpc-*-darwin* )
-            dnl Some Apple's GCC version are broken and can't handle the
-            dnl pragmas:
-            GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
-            ;;
-        *-*-mingw32* )
-            dnl MinGW GCC versions >= 3.2 have problems with
-            dnl static member of classes derived from templates
-            dnl in combination with #pragma interface/implementation
-            dnl (the test case uses 4 files)
-            dnl ... and with exceptions handling (undefined symbols needed
-            dnl to correctly calls dtors when unwinding) as well
-            if test "$wxUSE_STL" = "yes" -o \
+    dnl Find out if we have to define NO_GCC_PRAGMA
+    if test "$GCC" = yes; then
+        AC_MSG_CHECKING([if this GCC version is >= 4.0 and needs -DNO_GCC_PRAGMA])
+        AC_TRY_COMPILE([],
+            [#if (__GNUC__ < 4)
+             Not GCC 4.0 or greater
+             #endif
+            ],
+            [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
+             AC_MSG_RESULT([yes])],
+            [AC_MSG_RESULT([no])
+            case "${host}" in
+                *-*-darwin* )
+                    dnl Some Apple's GCC version are broken and can't handle the
+                    dnl pragmas:
+                    GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
+                ;;
+                *-*-mingw32* )
+                    dnl MinGW GCC versions > 3.2 have problems with
+                    dnl static member of classes derived from templates
+                    dnl in combination with #pragma interface/implementation
+                    dnl (the test case uses 4 files)
+                    dnl ... and with exceptions handling (undefined symbols needed
+                    dnl to correctly calls dtors when unwinding) as well
+                    if test "$wxUSE_STL" = "yes" -o \
                     "$wxUSE_NO_EXCEPTIONS" != "yes" -o \
                     "$wxUSE_NO_RTTI" != "yes"; then
-               AC_MSG_CHECKING([if this MinGW version needs -DNO_GCC_PRAGMA])
-               AC_TRY_COMPILE([],
-                              [#if !(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
-                               #error "Not GCC 3.2 or greater"
-                               #endif
-                               ],
-                              [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
-                               AC_MSG_RESULT([yes])],
-                              [AC_MSG_RESULT([no])])
-            fi
-            ;;
-       *-pc-os2_emx | *-pc-os2-emx )
-            dnl GCC versions ported to OS/2 have similar problems with
-            dnl static member of classes in combination with STL and
-            dnl pragma interface/implementation
-            if test "$wxUSE_STL" = "yes"; then
-               AC_MSG_CHECKING([if this gcc version needs -DNO_GCC_PRAGMA])
-               AC_TRY_COMPILE([],
-                              [#if !(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
-                               #error "Not GCC 3.2 or greater"
-                               #endif
-                               ],
-                              [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
-                               AC_MSG_RESULT([yes])],
-                              [AC_MSG_RESULT([no])])
-            fi
-            ;;
-    esac
+                        AC_MSG_CHECKING([if this MinGW version needs -DNO_GCC_PRAGMA])
+                        AC_TRY_COMPILE([],
+                            [#if !(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
+                             Not GCC 3.2 or greater
+                             #endif
+                            ],
+                            [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
+                             AC_MSG_RESULT([yes])],
+                            [AC_MSG_RESULT([no])])
+                    fi
+                    ;;
+                *-pc-os2_emx | *-pc-os2-emx )
+                    dnl GCC versions ported to OS/2 have similar problems with
+                    dnl static member of classes in combination with STL and
+                    dnl pragma interface/implementation
+                    if test "$wxUSE_STL" = "yes"; then
+                        AC_MSG_CHECKING([if this gcc version needs -DNO_GCC_PRAGMA])
+                        AC_TRY_COMPILE([],
+                            [#if !(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
+                             Not GCC 3.2 or greater
+                             #endif
+                            ],
+                            [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
+                             AC_MSG_RESULT([yes])],
+                            [AC_MSG_RESULT([no])])
+                    fi
+                    ;;
+            esac
+dnl  closing bracket of if GCC < 4.0
+        ] ) 
+    fi
 fi
 CPPFLAGS="$PCH_FLAGS $GCC_PRAGMA_FLAGS $CPPFLAGS"