]> git.saurik.com Git - wxWidgets.git/blobdiff - configure.in
Weekly catch-up
[wxWidgets.git] / configure.in
index 40ce4d86419dda1b50336a63321be1ccd1c8a511..c2d697351fbef0187decd83d06f5b47415755015 100644 (file)
@@ -224,6 +224,9 @@ case "${host}" in
     USE_AIX=1
     USE_SYSV=1
     USE_SVR4=1
+    dnl Irvin Probst <irvin.probst@fr.thalesgroup.com> reports that the shared
+    dnl libraries under AIX have the same suffix as the normal ones
+    SO_SUFFIX=a
     AC_DEFINE(__AIX__)
     AC_DEFINE(__SYSV__)
     AC_DEFINE(__SVR4__)
@@ -231,15 +234,10 @@ case "${host}" in
   ;;
 
   *-*-cygwin* | *-*-mingw32* )
-    USE_UNIX=0
-    USE_WIN32=1
+    dnl MBN: some of the defines have been moved after toolkit detection
+    dnl      because for wxMotif/wxGTK/wxX11 to build on Cygwin
+    dnl      USE_UNIX  must be set and not USE_WIN32
     SO_SUFFIX=dll
-    AC_DEFINE(__WIN32__)
-    AC_DEFINE(__WIN95__)
-    AC_DEFINE(__WINDOWS__)
-    AC_DEFINE(__GNUWIN32__)
-    AC_DEFINE(STRICT)
-    AC_DEFINE(WINVER, 0x0400)
     PROGRAM_EXT=".exe"
     RESCOMP=windres
     DEFAULT_DEFAULT_wxUSE_MSW=1
@@ -251,13 +249,14 @@ case "${host}" in
     AC_DEFINE(__DOS__)
     PROGRAM_EXT=".exe"
     DEFAULT_DEFAULT_wxUSE_MGL=1
+    dnl DJGPP needs explicit -lstdc++ for some reason (VS: mayb some versions only?)
+    LIBS="$LIBS -lstdc++"
   ;;
 
   *-pc-os2_emx | *-pc-os2-emx )
     AC_DEFINE(__EMX__)
     PROGRAM_EXT=".exe"
     DEFAULT_DEFAULT_wxUSE_PM=1
-    LIBS="$LIBS -lstdcpp"
   ;;
 
   powerpc-*-darwin* )
@@ -281,11 +280,6 @@ case "${host}" in
     AC_MSG_ERROR(unknown system type ${host}.)
 esac
 
-if test "$USE_UNIX" = 1 ; then
-    wxUSE_UNIX=yes
-    AC_DEFINE(__UNIX__)
-fi
-
 dnl ---------------------------------------------------------------------------
 dnl command line options for configure
 dnl ---------------------------------------------------------------------------
@@ -359,6 +353,8 @@ if test $DEBUG_CONFIGURE = 1; then
   DEFAULT_wxUSE_FONTMAP=no
   DEFAULT_wxUSE_STREAMS=no
   DEFAULT_wxUSE_SOCKETS=no
+  DEFAULT_wxUSE_OLE=no
+  DEFAULT_wxUSE_DATAOBJ=no
   DEFAULT_wxUSE_DIALUP_MANAGER=no
   DEFAULT_wxUSE_JOYSTICK=no
   DEFAULT_wxUSE_DYNLIB_CLASS=no
@@ -397,7 +393,7 @@ if test $DEBUG_CONFIGURE = 1; then
   DEFAULT_wxUSE_PROTOCOL_FTP=no
   DEFAULT_wxUSE_PROTOCOL_FILE=no
   DEFAULT_wxUSE_URL=no
-  
+
   DEFAULT_wxUSE_COMMONDLGS=no
   DEFAULT_wxUSE_CHOICEDLG=no
   DEFAULT_wxUSE_COLOURDLG=no
@@ -532,6 +528,8 @@ else
   DEFAULT_wxUSE_FONTMAP=yes
   DEFAULT_wxUSE_STREAMS=yes
   DEFAULT_wxUSE_SOCKETS=yes
+  DEFAULT_wxUSE_OLE=yes
+  DEFAULT_wxUSE_DATAOBJ=yes
   DEFAULT_wxUSE_DIALUP_MANAGER=yes
   DEFAULT_wxUSE_JOYSTICK=yes
   DEFAULT_wxUSE_DYNLIB_CLASS=yes
@@ -661,8 +659,8 @@ dnl ============================
 dnl these options use AC_ARG_WITH and not WX_ARG_WITH on purpose - we cache
 dnl these values manually
 for toolkit in `echo $ALL_TOOLKITS`; do
-  LINE=`grep "wxUSE_$toolkit" ${wx_arg_cache_file}`
-  if test "x$LINE" != x ; then
+  LINE=`grep "wxUSE_$toolkit=" ${wx_arg_cache_file}`
+  if test "x$LINE" != "x" ; then
     has_toolkit_in_cache=1
     eval "DEFAULT_$LINE"
     eval "CACHE_$toolkit=1"
@@ -688,12 +686,12 @@ AC_ARG_WITH(mac,           [  --with-mac              use Mac OS X], [wxUSE_MAC=
 AC_ARG_WITH(wine,          [  --with-wine             use WINE], [wxUSE_WINE="$withval" CACHE_WINE=1 TOOLKIT_GIVEN=1])
 AC_ARG_WITH(msw,           [  --with-msw              use MS-Windows], [wxUSE_MSW="$withval" CACHE_MSW=1 TOOLKIT_GIVEN=1])
 AC_ARG_WITH(pm,            [  --with-pm               use OS/2 Presentation Manager], [wxUSE_PM="$withval" CACHE_PM=1 TOOLKIT_GIVEN=1])
-AC_ARG_WITH(mgl,           [  --with-mgl              use SciTech MGL], [wxUSE_MGL="$withval" CACHE_MGL=1 TOOLKIT_GIVEN=1])
+AC_ARG_WITH(mgl,           [  --with-mgl              use SciTech MGL], [wxUSE_MGL="$withval" wxUSE_UNIVERSAL="yes" CACHE_MGL=1 TOOLKIT_GIVEN=1])
 AC_ARG_WITH(microwin,      [  --with-microwin         use MicroWindows], [wxUSE_MICROWIN="$withval" CACHE_MICROWIN=1 TOOLKIT_GIVEN=1])
 AC_ARG_WITH(x11,           [  --with-x11              use X11], [wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1])
 WX_ARG_ENABLE(nanox,       [  --enable-nanox          use NanoX], wxUSE_NANOX)
 
-AC_ARG_ENABLE(gtk2,        [  --enable-gtk2           use GTK+ 2.0 if available (EXPERIMENTAL)],wxUSE_GTK2="yes",wxUSE_GTK2="no")
+WX_ARG_ENABLE(gtk2,        [  --enable-gtk2           use GTK+ 2.0 if available (EXPERIMENTAL)], wxUSE_GTK2)
 
 WX_ARG_SYS_WITH(libpng,    [  --with-libpng           use libpng (PNG image format)], wxUSE_LIBPNG)
 WX_ARG_SYS_WITH(libjpeg,   [  --with-libjpeg          use libjpeg (JPEG file format)], wxUSE_LIBJPEG)
@@ -717,8 +715,8 @@ WX_ARG_ENABLE(soname,      [  --enable-soname         set the DT_SONAME field in
 WX_ARG_ENABLE(optimise,    [  --enable-optimise       create optimised code], wxUSE_OPTIMISE)
 WX_ARG_ENABLE(debug,       [  --enable-debug          same as debug_flag and debug_info], wxUSE_DEBUG)
 
-dnl allow the precompiled header option to be disabled under Mac OS X
-WX_ARG_ENABLE(precomp,     [  --enable-precomp        enable use of precompiled headers (Mac OS X)], wxUSE_PRECOMP)
+dnl allow the precompiled header option to be disabled under Mac OS X/Darwin
+WX_ARG_ENABLE(precomp,     [  --enable-precomp        enable use of precompiled headers (Mac OS X/Darwin)], wxUSE_PRECOMP)
 
 if test "$wxUSE_DEBUG" = "yes"; then
   DEFAULT_wxUSE_DEBUG_FLAG=yes
@@ -740,7 +738,14 @@ WX_ARG_ENABLE(permissive,    [  --enable-permissive     compile code disregardin
 WX_ARG_ENABLE(no_deps,       [  --enable-no_deps        create code without dependency information], wxUSE_NO_DEPS)
 
 WX_ARG_ENABLE(compat20,      [  --enable-compat20       enable wxWindows 2.0 compatibility], WXWIN_COMPATIBILITY_2)
-WX_ARG_ENABLE(compat22,      [  --disable-compat22      disable wxWindows 2.2 compatibility], WXWIN_COMPATIBILITY_2_2)
+WX_ARG_ENABLE(compat22,      [  --disable-compat22      disable wxWindows 2.2 compatibility], WXWIN_COMPATIBILITY_2_2, disable)
+
+AC_ARG_ENABLE(rpath,         [  --enable-rpath=DIR      output the rpath flag from wx-config], [wxRPATH_DIR="$enableval"])
+
+if test "$wxRPATH_DIR" != "" -a "$wxRPATH_DIR" != "disable"; then
+   WXCONFIG_RPATH="-Wl,-rpath -Wl,$wxRPATH_DIR"
+fi
+
 
 dnl ---------------------------------------------------------------------------
 dnl (small) optional non GUI classes
@@ -754,6 +759,8 @@ WX_ARG_ENABLE(ftp,           [  --enable-ftp            use wxFTP (requires wxPr
 WX_ARG_ENABLE(http,          [  --enable-http           use wxHTTP (requires wxProtocol], wxUSE_PROTOCOL_HTTP)
 WX_ARG_ENABLE(fileproto,     [  --enable-fileproto      use wxFileProto class (requires wxProtocol], wxUSE_PROTOCOL_FILE)
 WX_ARG_ENABLE(sockets,       [  --enable-sockets        use socket/network classes], wxUSE_SOCKETS)
+WX_ARG_ENABLE(ole,           [  --enable-ole            use OLE classes], wxUSE_OLE)
+WX_ARG_ENABLE(dataobj,       [  --enable-dataobj        use data object classes], wxUSE_DATAOBJ)
 
 WX_ARG_ENABLE(ipc,           [  --enable-ipc            use interprocess communication (wxSocket etc.)], wxUSE_IPC)
 
@@ -1033,7 +1040,9 @@ dnl Path separator; ':' for unix, ';' for OS/2
 dnl Stem for flex output; lexyy for OS/2, lex.yy otherwise
 case "${host}" in
   *-pc-os2_emx | *-pc-os2-emx )
-    dnl PATH_IFS is autodetected by OS/2's configure (usually ';')
+    PATH_IFS=';'
+dnl Really ought to text for this as meanwhile there are flex versions using
+dnl lex.yy as well due to FAT support being more and more dropped...
     LEX_STEM="lexyy"
   ;;
   *)
@@ -1092,10 +1101,10 @@ if test "$wxUSE_GUI" = "yes"; then
       1)
       ;;
       0)
-        AC_MSG_ERROR(Please specify a toolkit - cannot determine the default for ${host})
+        AC_MSG_ERROR(Please specify a toolkit -- cannot determine the default for ${host})
       ;;
       *)
-        AC_MSG_ERROR(Please specify at most one toolkit (may be some are cached?))
+        AC_MSG_ERROR(Please specify at most one toolkit (maybe some are cached in configarg.cache?))
     esac
 
     dnl cache the wxUSE_<TOOLKIT> values too
@@ -1118,6 +1127,70 @@ else
     AC_MSG_RESULT(base ($host_alias hosted) only)
 fi
 
+dnl ---------------------------------------------------------------------------
+dnl When we are using gcc on OS/2, we want to be either using resources (PM)
+dnl or a more complete POSIX emulation for Motif/GTK+/X11
+dnl ---------------------------------------------------------------------------
+dnl (OS/2-only piece)
+case "${host}" in
+  *-pc-os2_emx | *-pc-os2-emx )
+      dnl Explicitly link -lstdcpp, since we are using "gcc" not "g++"/"c++".
+      LIBS="$LIBS -lstdcpp"
+      if test "$wxUSE_MOTIF" = 1 -o "$wxUSE_GTK" = 1 -o "$wxUSE_X11" = 1; then
+          dnl More complete Unix emulation for unix-like ports
+         dnl by linking in POSIX/2's cExt (if available).
+          AC_CHECK_LIB(cExt, drand48, LIBS="$LIBS -lcExt")
+      else
+         dnl Include resources for the "native" port (wxPM).
+          RESPROGRAMOBJ="\${top_srcdir}/include/wx/os2/wx.res"
+      fi
+  ;;
+esac
+dnl (end of OS/2-only piece)
+
+dnl ---------------------------------------------------------------------------
+dnl When we are using Cygwin with Motif/GTK+, we want it to appear like
+dnl 'just' a POSIX platform, so the Win32 API must not be available
+dnl ---------------------------------------------------------------------------
+dnl (Windows-only piece)
+wants_win32=0
+doesnt_want_win32=0
+case "${host}" in
+  *-*-cygwin*)
+      if test "$wxUSE_MSW" = 1 ; then
+        wants_win32=1
+      else
+        doesnt_want_win32=1
+      fi
+  ;;
+  *-*-mingw*)
+      wants_win32=1
+  ;;
+esac
+
+dnl NB: The two tests bellow are *NOT* mutually exclusive! They should only
+dnl     take effect on Cygwin/Mingw and not other platforms.
+if test "$wants_win32" = 1 ; then
+    USE_UNIX=0
+    USE_WIN32=1
+    AC_DEFINE(__WIN32__)
+    AC_DEFINE(__WIN95__)
+    AC_DEFINE(__WINDOWS__)
+    AC_DEFINE(__GNUWIN32__)
+    AC_DEFINE(STRICT)
+    AC_DEFINE(WINVER, 0x0400)
+fi
+if test "$doesnt_want_win32" = 1 ; then
+    USE_UNIX=1
+    USE_WIN32=0
+fi
+dnl (end of Windows-only piece)
+
+if test "$USE_UNIX" = 1 ; then
+    wxUSE_UNIX=yes
+    AC_DEFINE(__UNIX__)
+fi
+
 dnl ---------------------------------------------------------------------------
 dnl Checks for programs
 dnl ---------------------------------------------------------------------------
@@ -1185,6 +1258,16 @@ AC_CHECK_PROG(AR, ar, ar, ar)
 dnl install checks
 dnl   defines INSTALL with the appropriate command
 AC_PROG_INSTALL
+
+dnl   make install path absolute (if not already); will fail with MSDOS paths
+case ${INSTALL} in
+  /* ) # Absolute
+     ;;
+  *)
+     INSTALL=`pwd`/${INSTALL} ;;
+esac
+
+
 case "${host}" in
 
     dnl The other BSD's should probably go in here too, since this is
@@ -1274,6 +1357,145 @@ AC_PROG_LEX
 dnl needed for making link to setup.h
 AC_PROG_LN_S
 
+dnl ------------------------------------------------------------------------
+dnl Check for headers
+dnl ------------------------------------------------------------------------
+
+dnl test for strings.h needed under AIX, but do not check for it wxMac as
+dnl it exists but is only a simple redirection to string.h and it is in
+dnl conflict with Strings.h in FlatCarbon headers
+if test "$wxUSE_MAC" != 1; then
+  dnl defines HAVE_STRINGS_H
+  AC_CHECK_HEADERS(strings.h)
+fi
+
+dnl defines HAVE_STDLIB_H
+AC_CHECK_HEADERS(stdlib.h)
+dnl defines HAVE_MALLOC_H
+AC_CHECK_HEADERS(malloc.h)
+dnl defines HAVE_UNISTD_H
+AC_CHECK_HEADERS(unistd.h)
+dnl defines HAVE_WCHAR_H
+AC_CHECK_HEADERS(wchar.h)
+
+dnl maybe wchar_t is in wcstr.h if we don't have wchar.h?
+if test "$ac_cv_header_wchar_h" != "yes"; then
+    dnl defines HAVE_WCSTR_H
+    AC_CHECK_HEADERS(wcstr.h)
+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)
+
+if test "$wxUSE_GUI" = "yes"; then
+    if test "$wxUSE_UNIX" = "yes"; then
+        dnl defines HAVE_X11_XKBLIB_H
+        AC_CHECK_HEADERS(X11/XKBlib.h)
+    fi
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl Checks for compiler characteristics
+dnl ---------------------------------------------------------------------------
+
+dnl defines const to be empty if c-compiler does not support const fully
+AC_C_CONST
+dnl defines inline to a sensible value for the c-compiler
+AC_C_INLINE
+
+dnl check the sizes of integral types (give some reasonable default values for
+dnl cross-compiling)
+dnl   defines the size of certain types of variables in SIZEOF_<TYPE>
+AC_CHECK_SIZEOF(char, 1)
+AC_CHECK_SIZEOF(short, 2)
+AC_CHECK_SIZEOF(void *, 4)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long, 4)
+
+case "${host}" in
+    arm-*-linux* )
+        AC_CHECK_SIZEOF(long long, 8)
+    ;;
+    *-hp-hpux* )
+        AC_CHECK_SIZEOF(long long, 0)
+        if test "$ac_cv_sizeof_long_long" != "0"; then
+            dnl HPUX 10.20 headers need this define in order to use long long definitions
+            CPPFLAGS="$CPPFLAGS -D_INCLUDE_LONGLONG"
+        fi
+    ;;
+    * )
+        AC_CHECK_SIZEOF(long long, 0)
+esac
+
+dnl we have to do it ourselves because SGI/Irix's stdio.h does not include
+dnl wchar_t and AC_CHECK_SIZEOF only includes stdio.h
+dnl Mac OS X does not provide wchar.h and wchar_t is defined by stdlib.h (GD)
+AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t,
+[
+    AC_TRY_RUN(
+        [
+            #ifdef HAVE_WCHAR_H
+            #  ifdef __CYGWIN__
+            #    include <stddef.h>
+            #  endif
+            #  include <wchar.h>
+            #endif
+            #ifdef HAVE_STDLIB_H
+            #  include <stdlib.h>
+            #endif
+            #include <stdio.h>
+            int main()
+            {
+                FILE *f=fopen("conftestval", "w");
+                if (!f) exit(1);
+                fprintf(f, "%i", sizeof(wchar_t));
+                exit(0);
+            }
+        ],
+        wx_cv_sizeof_wchar_t=`cat conftestval`,
+        wx_cv_sizeof_wchar_t=0,
+        wx_cv_sizeof_wchar_t=4
+    )
+])
+
+AC_DEFINE_UNQUOTED(SIZEOF_WCHAR_T, $wx_cv_sizeof_wchar_t)
+
+dnl check for large file support
+AC_SYS_LARGEFILE
+
+dnl we need to define _FILE_OFFSET_BITS or _LARGE_FILES on the compiler command
+dnl line because otherwise the system headers risk being included before
+dnl wx/defs.h which defines these constants leading to inconsistent
+dnl sizeof(off_t) in different source files of the same program and linking
+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"
+    else
+        WX_LARGEFILE_FLAGS="-D_LARGE_FILES"
+    fi
+    CPPFLAGS="$CPPFLAGS $WX_LARGEFILE_FLAGS"
+fi
+
+dnl check for bytesex stuff (don't use AC_C_BIGENDIAN to allow cross-compiling)
+WX_C_BIGENDIAN
+
+dnl check for iostream (as opposed to iostream.h) standard header
+WX_CPP_NEW_HEADERS(, AC_DEFINE(wxUSE_IOSTREAMH))
+
+dnl check whether C++ compiler supports bool built-in type
+WX_CPP_BOOL
+
+dnl check whether C++ compiler supports explicit keyword
+WX_CPP_EXPLICIT
+
 dnl ---------------------------------------------------------------------------
 dnl Define search path for includes and libraries: all headers and libs will be
 dnl looked for in all directories of this path
@@ -1281,8 +1503,11 @@ dnl ---------------------------------------------------------------------------
 
 dnl notice that /usr/include should not be in this list, otherwise it breaks
 dnl compilation on Solaris/gcc because standard headers are included instead
-dnl of the gcc ones (correction: it *is* needed for broken AIX compiler - but
-dnl do put it last!)
+dnl of the gcc ones.  (recorrection.. sadly much depends on this since it was
+dnl first created and then 'corrected'..  removing /usr/include means system
+dnl GL and Xpm libs will dnl not be found on linux and probably other platforms
+dnl now.  We need to correct that first before removing /usr/include again.
+dnl see the various (ab)uses of WX_PATH_FIND_LIBRARIES below )
 dnl
 dnl Also try to put all directories which may contain X11R6 before those which
 dnl may contain X11R5/4 - we want to use R6 on machines which have both!
@@ -1350,7 +1575,6 @@ SEARCH_INCLUDE="\
     /usr/lpp/Xamples/include  \
                               \
     /usr/openwin/share/include \
-                               \
     /usr/include"
 
 SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` "
@@ -1365,7 +1589,7 @@ AC_CACHE_SAVE
 dnl check for glibc version
 dnl
 dnl VZ: I have no idea why had this check been there originally, but now
-dnl     it is only used to get the recursive mutexes under Linux
+dnl     we could probably do without it by just always adding _GNU_SOURCE
 if test "$USE_LINUX" = 1; then
     AC_CACHE_CHECK([for glibc 2.1 or later], wx_cv_lib_glibc21,[
         AC_TRY_COMPILE([#include <features.h>],
@@ -1387,6 +1611,20 @@ if test "$USE_LINUX" = 1; then
     fi
 fi
 
+dnl we may need _GNU_SOURCE for 2 things:
+dnl
+dnl  1. to get PTHREAD_MUTEX_RECURSIVE with glibc 2.1+ (strictly speaking we
+dnl  only need _XOPEN_SOURCE=500 but just defining this disables _BSD_SOURCE
+dnl  which breaks libtiff compilation, so it is simpler to just define
+dnl  _GNU_SOURCE to get everything)
+dnl
+dnl  2. for Unicode functions
+if test "x$wx_cv_lib_glibc21" = "xyes"; then
+    if test "$wxUSE_UNICODE" = "yes" -o "$wxUSE_THREADS" = "yes"; then
+        AC_DEFINE(_GNU_SOURCE)
+    fi
+fi
+
 dnl ---------------------------------------------------------------------------
 dnl Optional libraries
 dnl
@@ -1476,7 +1714,7 @@ PNG_INCLUDE=
 PNG_LINK=
 if test "$wxUSE_LIBPNG" != "no" ; then
     AC_DEFINE(wxUSE_LIBPNG)
-    
+
     if test "$wxUSE_MGL" = 1 -a "$wxUSE_LIBPNG" = "builtin" ; then
         AC_MSG_WARN([wxMGL doesn't work with builtin png library, will use MGL one instead])
         wxUSE_LIBPNG=sys
@@ -1677,6 +1915,16 @@ if test "$USE_WIN32" = 1 ; then
     RESPROGRAMOBJ="\$(PROGRAM)_resources.o"
 fi
 
+if test "$USE_DARWIN" = 1; then
+    dnl Mac OS X/Darwin GCC uses precompiled headers by default
+    dnl this can cause problems both when compiling wxMac and wxBase
+    if test "$wxUSE_PRECOMP" = "yes"; then
+        CPPFLAGS="$CPPFLAGS -cpp-precomp"
+    else
+        CPPFLAGS="$CPPFLAGS -no-cpp-precomp"
+    fi
+fi
+
 if test "$wxUSE_GUI" = "yes"; then
     USE_GUI=1
 
@@ -1765,6 +2013,21 @@ equivalent variable and GTK+ is version 1.2.3 or above.
                     ;;
         esac
 
+        if test "$WXGTK20" = 1; then
+            if test "$wxUSE_PRINTING_ARCHITECTURE" = "yes" ; then
+                PKG_CHECK_MODULES(PANGOFT2, pangoft2,
+                    [
+                        CXXFLAGS="$CXXFLAGS $PANGOFT2_CFLAGS"
+                        LIBS="$LIBS $PANGOFT2_LIBS"
+                    ],
+                    [
+                        AC_MSG_WARN([pangoft2 library not found, library will be compiled without printing support])
+                        wxUSE_PRINTING_ARCHITECTURE="no"
+                    ]
+                )
+            fi
+        fi
+
         TOOLKIT_INCLUDE="$wx_cv_cflags_gtk"
         GUI_TK_LIBRARY="$wx_cv_libs_gtk"
 
@@ -1815,6 +2078,8 @@ equivalent variable and GTK+ is version 1.2.3 or above.
             fi
         fi
 
+        wxUSE_UNIVERSAL="yes"
+
         TOOLKIT_INCLUDE="-I$MGL_ROOT/include"
         GUI_TK_LIBRARY="-L$MGL_ROOT/lib/$mgl_lib_type/$mgl_os -lmgl -lmglcpp -lpm"
 
@@ -1841,11 +2106,13 @@ equivalent variable and GTK+ is version 1.2.3 or above.
         TOOLKIT_INCLUDE="-I$MICROWINDOWS/include"
         GUI_TK_LIBRARY="-L$MICROWINDOWS/lib -lmwin -lmwengine -mwfonts -mwdrivers -mwinlib"
 
+        wxUSE_UNIVERSAL="yes"
+
         AFMINSTALL=afminstall
         TOOLKIT=MICROWIN
         GUIDIST=MICROWIN_DIST
-        
-        TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXUNIVERSAL__ -D__WXMSW__ -D__WIN95__ -D__WIN32__ -DMWIN -DMICROWIN_NOCONTROLS -DMICROWIN_TODO=1"
+
+        TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXMSW__ -D__WIN95__ -D__WIN32__ -DMWIN -DMICROWIN_NOCONTROLS -DMICROWIN_TODO=1"
     fi
 
     if test "$wxUSE_X11" = 1; then
@@ -1904,6 +2171,8 @@ equivalent variable and GTK+ is version 1.2.3 or above.
             )
         fi
 
+        wxUSE_UNIVERSAL="yes"
+
         if test "$wxUSE_NANOX" = "yes"; then
             TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE"
             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 -DLINUX=1 -DUNIX=1 -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1"
@@ -1944,7 +2213,9 @@ equivalent variable and GTK+ is version 1.2.3 or above.
             mesa_link=" -lMesaGL"
             AC_MSG_RESULT(found at $ac_find_libraries)
         else
-            AC_MSG_ERROR(no)
+            mesa_link=""
+            AC_MSG_RESULT(no)
+            AC_MSG_WARN(library will be compiled without Mesa support)
         fi
 
         GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lwine$mesa_link$xpm_link -lXxf86dga -lXxf86vm -lSM -lICE -lXext -lXmu -lX11 -lncurses"
@@ -1970,7 +2241,9 @@ equivalent variable and GTK+ is version 1.2.3 or above.
         AC_MSG_CHECKING(for Motif/Lesstif headers)
         WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, Xm/Xm.h)
         if test "$ac_find_includes" != "" ; then
-            AC_MSG_RESULT(found $ac_find_includes)
+            AC_MSG_RESULT(found in $ac_find_includes)
+            WX_INCLUDE_PATH_EXIST($ac_find_includes, $TOOLKIT_INCLUDE)
+            TOOLKIT_INCLUDE="$TOOLKIT_INCLUDE$ac_path_to_include"
         else
             AC_TRY_COMPILE(
                 [
@@ -1995,16 +2268,17 @@ equivalent variable and GTK+ is version 1.2.3 or above.
             AC_MSG_CHECKING(for Motif/Lesstif library)
             WX_PATH_FIND_LIBRARIES($SEARCH_LIB, Xm)
             if test "$ac_find_libraries" != "" ; then
-                WX_INCLUDE_PATH_EXIST($ac_find_includes, $TOOLKIT_INCLUDE)
-                WX_LINK_PATH_EXIST($ac_find_libraries, $GUI_TK_LIBRARY)
+                AC_MSG_RESULT(found at $ac_find_libraries)
 
+                WX_LINK_PATH_EXIST($ac_find_libraries, $GUI_TK_LIBRARY)
                 GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
-                TOOLKIT_INCLUDE="$TOOLKIT_INCLUDE$ac_path_to_include"
-                AC_MSG_RESULT(found at $ac_find_libraries)
             else
-                dnl it might happen that we found headers in one of the standard
-                dnl paths but the libs are elsewhere - we do need to try to
-                dnl compile a sample program then here
+                dnl it might happen that we found headers in one of the
+                dnl standard paths but the libs are elsewhere - we do need to
+                dnl try to compile a sample program then here
+                save_CFLAGS=$CFLAGS
+                CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
+
                 AC_TRY_COMPILE(
                     [
                         #include <Xm/Xm.h>
@@ -2022,6 +2296,8 @@ equivalent variable and GTK+ is version 1.2.3 or above.
                         AC_MSG_ERROR(please set LDFLAGS to contain the location of libXm)
                     ]
                 )
+
+                CFLAGS=$save_CFLAGS
             fi
         fi
 
@@ -2031,10 +2307,14 @@ equivalent variable and GTK+ is version 1.2.3 or above.
         if test "$ac_find_libraries" != "" ; then
             WX_LINK_PATH_EXIST($ac_find_libraries,$GUI_TK_LIBRARY)
             GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
+
             xpm_link=" -lXpm"
             AC_DEFINE(wxHAVE_LIB_XPM)
             AC_MSG_RESULT(found at $ac_find_libraries)
         else
+            save_CFLAGS=$CFLAGS
+            CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
+
             AC_TRY_COMPILE(
                 [
                     #include <X11/xpm.h>
@@ -2054,23 +2334,63 @@ equivalent variable and GTK+ is version 1.2.3 or above.
                     AC_MSG_WARN(library will be compiled without support for images in XPM format)
                 ]
             )
+
+            CFLAGS=$save_CFLAGS
         fi
 
-        GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm$xpm_link -lXmu -lXext -lXt -lX11"
+        AC_MSG_CHECKING([if we need -lXp and/or -lSM -lICE])
+        libp_link=""
+        libsm_ice_link=""
+        libs_found=0
+        for libp in "" " -lXp"; do
+            if test "$libs_found" = "0"; then
+                for libsm_ice in " -lSM -lICE"; do
+                    if test "$libs_found" = "0"; then
+                        save_LIBS="$LIBS"
+                        LIBS="$GUI_TK_LIBRARY -lXm${xpm_link} ${libp} -lXmu -lXext -lXt${libsm_ice} -lX11"
+                        save_CFLAGS=$CFLAGS
+                        CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
+
+                        AC_TRY_LINK(
+                            [
+                                #include <Xm/Xm.h>
+                                #include <Xm/List.h>
+                            ],
+                            [
+                                XmString string = NULL;
+                                Widget w = NULL;
+                                int position = 0;
+                                XmListAddItem(w, string, position);
+                            ],
+                            [
+                                libp_link="$libp"
+                                libsm_ice_link="$libsm_ice"
+                                AC_MSG_RESULT(
+                                    [need${libp_link}${libsm_ice_link}])
+                                libs_found=1
+                            ], []
+                        )
+
+                        LIBS="$save_LIBS"
+                        CFLAGS=$save_CFLAGS
+                    fi
+                done
+            fi
+        done
+
+        if test "$libs_found" = "0"; then
+            AC_MSG_RESULT([can't find the right libraries])
+            AC_MSG_ERROR([can't link a simple motif program])
+        fi
+
+        GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm$xpm_link${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11"
         TOOLKIT_VPATH="\${top_srcdir}/src/motif${PATH_IFS}\${top_srcdir}/src/motif/xmcombo"
         TOOLKIT=MOTIF
         GUIDIST=MOTIF_DIST
     fi
 
     if test "$wxUSE_MAC" = 1; then
-        if test "$wxUSE_PRECOMP" = "yes"; then
-            CPPFLAGS="$CPPFLAGS -cpp-precomp"
-        else
-            CPPFLAGS="$CPPFLAGS -no-cpp-precomp"
-        fi
-        CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon -I\${top_srcdir}/src/mac/morefile"
-        CFLAGS="$CFLAGS -fpascal-strings"
-        CXXFLAGS="$CXXFLAGS -fpascal-strings"
+        CPPFLAGS="$CPPFLAGS -fpascal-strings -I\${top_srcdir}/src/mac/morefile -I/Developer/Headers/FlatCarbon"
 
         TOOLKIT_VPATH="\${top_srcdir}/src/mac${PATH_IFS}\${top_srcdir}/src/mac/morefile"
         TOOLKIT=MAC
@@ -2288,7 +2608,7 @@ case "${host}" in
 
         dnl FIXME: is this GL stuff actually even used for wxMSW?  should it be??
 
-        if test "$cross_compiling" != "yes"; then
+        if test "$cross_compiling" != "yes" -a "$TOOLKIT_DIR" = "msw"; then
             WX_LIBRARY="wxmsw${WX_MSW_VERSION}${lib_unicode_suffix}${lib_debug_suffix}"
             WX_LIBRARY_GL="wxmsw_gl${WX_MSW_VERSION}${lib_unicode_suffix}${lib_debug_suffix}"
             WX_LIBRARY_NAME_SHARED="${WX_LIBRARY}.${SO_SUFFIX}"
@@ -2304,7 +2624,7 @@ case "${host}" in
         dnl dynamic shared libraries (in order to embed the resources)
         if test "$wxUSE_MAC" = 1; then
             dnl the name of the resources file for wxMac
-            WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.r" 
+            WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.r"
             WX_RESOURCES_MACOSX_DATA="lib${WX_LIBRARY}.rsrc"
         fi
         ;;
@@ -2360,8 +2680,9 @@ if test "$wxUSE_SHARED" = "yes"; then
     case "${host}" in
       *-hp-hpux* )
         dnl default settings are good for gcc but not for the native HP-UX
-        if test "$GCC" == "yes"; then
-            SHARED_LD="${SHARED_LD} ${PIC_FLAG}"
+        if test "$GCC" = "yes"; then
+            dnl -o flag must be after PIC flag
+            SHARED_LD="${CXX} -shared ${PIC_FLAG} -o"
         else
             dnl no idea why it wants it, but it does
             LDFLAGS="$LDFLAGS -L/usr/lib"
@@ -2422,8 +2743,9 @@ if test "$wxUSE_SHARED" = "yes"; then
       *-*-darwin* )
         dnl For Unix to MacOS X porting instructions, see:
         dnl http://fink.sourceforge.net/doc/porting/porting.html
-        CFLAGS="$CFLAGS -fno-common -DWXMAKINGDLL"
-        CXXFLAGS="$CXXFLAGS -fno-common -DWXMAKINGDLL"
+        TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -DWXMAKINGDLL"
+        CFLAGS="$CFLAGS -fno-common"
+        CXXFLAGS="$CXXFLAGS -fno-common"
         dnl wxWindows must be fully binded (lazy binding breaks RTTI classinfo)
         dnl this can be done either with the exe linker flag -Wl,-bind_at_load
         dnl or with a double stage link in order to create a single module
@@ -2435,7 +2757,12 @@ if test "$wxUSE_SHARED" = "yes"; then
       ;;
 
       *-*-aix* )
-        SHARED_LD="/usr/lpp/xlC/bin/makeC++SharedLib -p 0 -o"
+        dnl the abs path below used to be hardcoded here so I guess it must
+        dnl be some sort of standard location under AIX?
+        AC_CHECK_PROG(AIX_CXX_LD, makeC++SharedLib,
+                      makeC++SharedLib, /usr/lpp/xlC/bin/makeC++SharedLib)
+
+        SHARED_LD="$(AIX_CXX_LD) -p 0 -o"
       ;;
 
       *-*-cygwin* | *-*-mingw32* )
@@ -2511,6 +2838,12 @@ if test "$wxUSE_SHARED" = "no"; then
 
     WX_TARGET_LIBRARY_TYPE="a"
     INSTALL_LIBRARY='$(INSTALL_DATA)'
+
+    dnl wx-config should assume the --static flag by default if we don't have
+    dnl any shared libs anyhow
+    STATIC_FLAG="yes"
+else
+    STATIC_FLAG="no"
 fi
 
 if test "$wxUSE_MAC" = 1; then
@@ -2536,54 +2869,6 @@ else
     fi
 fi
 
-dnl ------------------------------------------------------------------------
-dnl Check for headers
-dnl ------------------------------------------------------------------------
-
-dnl test for strings.h needed under AIX, but do not check for it wxMac as
-dnl it exists but is only a simple redirection to string.h and it is in
-dnl conflict with Strings.h in FlatCarbon headers
-if test "$wxUSE_MAC" != 1; then
-  dnl defines HAVE_STRINGS_H
-  AC_CHECK_HEADERS(strings.h)
-fi
-
-dnl defines HAVE_STDLIB_H
-AC_CHECK_HEADERS(stdlib.h)
-dnl defines HAVE_MALLOC_H
-AC_CHECK_HEADERS(malloc.h)
-dnl defines HAVE_UNISTD_H
-AC_CHECK_HEADERS(unistd.h)
-dnl defines HAVE_WCHAR_H
-AC_CHECK_HEADERS(wchar.h)
-
-dnl maybe wchar_t is in wcstr.h if we don't have wchar.h?
-if test "$ac_cv_header_wchar_h" != "yes"; then
-    dnl defines HAVE_WCSTR_H
-    AC_CHECK_HEADERS(wcstr.h)
-fi
-
-dnl checking for wctype.h is useless as we need wcslen(), not just wchar_t and
-dnl this function is never provided by it
-dnl AC_CHECK_HEADERS(wctype.h)
-
-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)
-
-if test "$wxUSE_GUI" = "yes"; then
-    if test "$wxUSE_UNIX" = "yes"; then
-        dnl defines HAVE_X11_XKBLIB_H
-        AC_CHECK_HEADERS(X11/XKBlib.h)
-    fi
-fi
-
 dnl ---------------------------------------------------------------------------
 dnl Checks for typedefs
 dnl ---------------------------------------------------------------------------
@@ -2676,231 +2961,67 @@ if test "$wx_cv_struct_pw_gecos" = "yes"; then
     AC_DEFINE(HAVE_PW_GECOS)
 fi
 
-dnl ---------------------------------------------------------------------------
-dnl Checks for compiler characteristics
-dnl ---------------------------------------------------------------------------
-
-dnl defines const to be empty if c-compiler does not support const fully
-AC_C_CONST
-dnl defines inline to a sensible value for the c-compiler
-AC_C_INLINE
-
-dnl check the sizes of integral types (give some reasonable default values for
-dnl cross-compiling)
-dnl   defines the size of certain types of variables in SIZEOF_<TYPE>
-AC_CHECK_SIZEOF(char, 1)
-AC_CHECK_SIZEOF(short, 2)
-AC_CHECK_SIZEOF(void *, 4)
-AC_CHECK_SIZEOF(int, 4)
-AC_CHECK_SIZEOF(long, 4)
-
-case "${host}" in
-    arm-*-linux* )
-        AC_CHECK_SIZEOF(long long, 8)
-    ;;
-    * )
-        AC_CHECK_SIZEOF(long long, 0)
-esac
-
-
-dnl we have to do it ourselves because SGI/Irix's stdio.h does not include
-dnl wchar_t and AC_CHECK_SIZEOF only includes stdio.h
-dnl Mac OS X does not provide wchar.h and wchar_t is defined by stdlib.h (GD)
-AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t,
-[
-    AC_TRY_RUN(
-        [
-            #ifdef HAVE_WCHAR_H
-            #  ifdef __CYGWIN__
-            #    include <stddef.h>
-            #  endif
-            #  include <wchar.h>
-            #endif
-            #ifdef HAVE_STDLIB_H
-            #  include <stdlib.h>
-            #endif
-            #include <stdio.h>
-            int main()
-            {
-                FILE *f=fopen("conftestval", "w");
-                if (!f) exit(1);
-                fprintf(f, "%i", sizeof(wchar_t));
-                exit(0);
-            }
-        ],
-        wx_cv_sizeof_wchar_t=`cat conftestval`,
-        wx_cv_sizeof_wchar_t=0,
-        wx_cv_sizeof_wchar_t=4
-    )
-])
-
-AC_DEFINE_UNQUOTED(SIZEOF_WCHAR_T, $wx_cv_sizeof_wchar_t)
-
-dnl for bytesex stuff (don't use AC_C_BIGENDIAN to allow cross-compiling)
-WX_C_BIGENDIAN
-
-dnl check for iostream (as opposed to iostream.h) standard header
-WX_CPP_NEW_HEADERS(, AC_DEFINE(wxUSE_IOSTREAMH))
-
-dnl check whether C++ compiler supports bool built-in type
-WX_CPP_BOOL
-
 dnl ---------------------------------------------------------------------------
 dnl Check for functions
 dnl ---------------------------------------------------------------------------
 
 dnl don't check for wchar_t functions if we haven't got wchar_t itself
-WCHAR_OK=0
 if test "$wx_cv_sizeof_wchar_t" != "0"; then
-    dnl check for wcslen
+    AC_DEFINE(wxUSE_WCHAR_T)
+
+    dnl check for wcslen in all possible places
+    WCSLEN_FOUND=0
     WCHAR_LINK=
-    AC_CHECK_FUNCS(wcslen, [
-                    AC_DEFINE(HAVE_WCSLEN)
-                    WCHAR_OK=1
-                  ])
+    AC_CHECK_FUNCS(wcslen, WCSLEN_FOUND=1)
 
-    if test "$WCHAR_OK" = 0; then
+    if test "$WCSLEN_FOUND" = 0; then
         if test "$TOOLKIT" = "MSW"; then
-            AC_CHECK_LIB(msvcrt, wcslen, [
-                AC_DEFINE(HAVE_WCSLEN)
-                WCHAR_OK=1
-            ])
+            AC_CHECK_LIB(msvcrt, wcslen, WCHAR_OK=1)
         else
             AC_CHECK_LIB(w, wcslen, [
-                            AC_DEFINE(HAVE_WCSLEN)
                             WCHAR_LINK=" -lw"
-                            WCHAR_OK=1
+                            WCSLEN_FOUND=1
                         ])
         fi
     fi
-fi
 
-dnl we need at least the definition of wchar_t itself and wcslen() to compile
-dnl with wchar_t support -- turn it off if we don't have this
-if test "$WCHAR_OK" = 1; then
-    AC_DEFINE(wxUSE_WCHAR_T)
+    if test "$WCSLEN_FOUND" = 1; then
+        AC_DEFINE(HAVE_WCSLEN)
+    fi
 
-    dnl also try to use wcsrtombs instead of wcstombs which is buggy in old GNU
+    dnl try to use wcsrtombs instead of wcstombs which is buggy in old GNU
     dnl libc versions if possible
     AC_CHECK_FUNCS(wcsrtombs)
 else
-    dnl use built-in wcslen for Darwin (what about other BSD based systems?)
-    if test "$USE_DARWIN" = 1; then
-        AC_DEFINE(wxUSE_WCHAR_T)
-    else
-        AC_MSG_WARN([Wide character support is unavailable])
-    fi
+    AC_MSG_WARN([Wide character support is unavailable])
 fi
 
-dnl check for vprintf/vsprintf() which are GNU extensions
-AC_FUNC_VPRINTF
-
-dnl check for vsscanf() and vsnprintf() - on some platforms (Linux, glibc
-dnl 2.1.1 for the first one, HP-UX for the second) it's available in the
-dnl library but the prototype is missing, so we can't use AC_CHECK_FUNCS() here,
-dnl do it manually. We can't use AC_TRY_COMPILE(), either, because it doesn't
-dnl check if the symbol is available at linking time
-
-dnl we use AC_TRY_LINK() here instead of AC_TRY_RUN() to make the checks
-dnl work for cross-compilation, but AC_TRY_LINK() normally only compiles
-dnl one function while we need at least 2 - hence the ugly hack below. To
-dnl understand why it works, remember that AC_TRY_LINK() just prepends
-dnl "int main() {" in the beginning of the code and "; return 0; }" at the
-dnl end...
-
-dnl if we fail to find vsnprintf, also try for _vsnprintf as that is what
-dnl we'll find under MSW if it exists.
-
-dnl final note: AC_TRY_LINK will only be executed if there is nothing in
-dnl the cache so we have to do AC_DEFINE(HAVE_VSNPRINTF) below and not inside
-dnl it or the symbol wouldn't be defined for the 2nd and subsequent configure
-dnl runs
+dnl *printf() functions sometimes are available in the library but not
+dnl prototyped -- if this is the case, we can't use them from C++ code, but to
+dnl detect this we have to use C++ compiler for testing
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
 
-dnl check for vsnprintf() - a safe version of vsprintf()
-AC_CACHE_CHECK([for vsnprintf], wx_cv_func_vsnprintf,
-[
-  AC_TRY_LINK([
-                    #include <stdio.h>
-                    #include <stdarg.h>
-                 ], [
-                    int wx_test_vsnprintf(const char *, ...);
-
-                    wx_test_vsnprintf("%s");
-                    return 0;
-                 }
-
-                 int wx_test_vsnprintf(const char *fmt, ...)
-                 {
-                    char *s;
-
-                    va_list argp;
-                    va_start(argp, fmt);
-                    vsnprintf(s, 42, fmt, argp);
-                    va_end(argp);
-                 ], [
-                    wx_cv_func_vsnprintf=yes
-                 ], [
-                    AC_TRY_LINK([
-                                      #include <stdio.h>
-                                      #include <stdarg.h>
-                                   ], [
-                                      int wx_test_vsnprintf(const char *, ...);
-
-                                      wx_test_vsnprintf("%s");
-                                      return 0;
-                                   }
-
-                                   int wx_test_vsnprintf(const char *fmt, ...)
-                                   {
-                                      char *s;
-
-                                      va_list argp;
-                                      va_start(argp, fmt);
-                                      _vsnprintf(s, 42, fmt, argp);
-                                      va_end(argp);
-                                   ], [
-                                      wx_cv_func_vsnprintf=yes
-                                   ], [
-                                      wx_cv_func_vsnprintf=no
-                                   ])
-                 ])
-])
+dnl check for vsnprintf() -- a safe version of vsprintf())
+AC_CHECK_FUNCS(vsnprintf)
 
-if test "$wx_cv_func_vsnprintf" = yes; then
-    AC_DEFINE(HAVE_VSNPRINTF)
-else
-    AC_MSG_WARN(unsafe function vsprintf will be used instead of vsnprintf)
+if test "$wxUSE_UNICODE" = yes; then
+    dnl also look if we have wide char IO functions
+    AC_CHECK_FUNCS(fputwc wprintf vswprintf)
+    dnl MinGW has a vswprintf with a different prototype, and
+    dnl a _vsnwprintf with the correct prototype, but AC_CHECK_FUNCS
+    dnl finds it even if it is not declared in some versions...
+    AC_MSG_CHECKING([for _vsnwprintf])
+    AC_TRY_COMPILE([#include <wchar.h>],
+                   [&_vsnwprintf;],
+                   [AC_MSG_RESULT([yes])
+                    AC_DEFINE(HAVE__VSNWPRINTF)],
+                   [AC_MSG_RESULT([no])]);
 fi
 
-dnl check for vsscanf()
-AC_CACHE_CHECK([for vsscanf], wx_cv_func_vsscanf,
-[
-  AC_TRY_COMPILE([
-                    #include <stdio.h>
-                    #include <stdarg.h>
-                ], [
-                    int wx_test_vsscanf(const char *, ...);
-
-                    wx_test_vsscanf("%d");
-                    return 0;
-                }
-
-                int wx_test_vsscanf(const char *fmt, ...)
-                {
-                    va_list argp;
-                    va_start(argp, fmt);
-                    vsscanf("42", fmt, argp);
-                    va_end(argp);
-                ], [
-                    wx_cv_func_vsscanf=yes
-                ], [
-                    wx_cv_func_vsscanf=no
-                ])
-])
+AC_LANG_RESTORE
+
 
-if test "$wx_cv_func_vsscanf" = yes; then
-    AC_DEFINE(HAVE_VSSCANF)
-fi
 
 dnl the following tests are for Unix(like) systems only
 if test "$TOOLKIT" != "MSW"; then
@@ -2947,9 +3068,6 @@ if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes" -a "$wxUSE_UNIX" = "yes"; then
     fi
 fi
 
-dnl check for vfork() (even if it's the same as fork() in modern Unices)
-AC_CHECK_FUNCS(vfork)
-
 dnl check for the function for temp files creation
 AC_CHECK_FUNCS(mkstemp mktemp, break)
 
@@ -3040,7 +3158,7 @@ if test "$USE_BEOS" = 1; then
 fi
 
 if test "$USE_DARWIN" = 1; then
-    dnl Mac OS X has both nanosleep and usleep
+    dnl Mac OS X/Darwin has both nanosleep and usleep
     dnl but only usleep is defined in unistd.h
     AC_DEFINE(HAVE_USLEEP)
     HAVE_SOME_SLEEP_FUNC=1
@@ -3121,10 +3239,10 @@ dnl flush the cache
 AC_CACHE_SAVE
 
 dnl ---------------------------------------------------------------------------
-dnl thread support for Unix (always available under Win32)
+dnl thread support for Unix (for Win32 see past the next matching "else")
 dnl ---------------------------------------------------------------------------
 
-dnl under MSW we always have thread support
+dnl under MSW (except mingw32) we always have thread support
 CPP_MT_FLAG=
 if test "$TOOLKIT" != "MSW"; then
 
@@ -3178,8 +3296,9 @@ if test "$TOOLKIT" != "MSW"; then
                 dnl and finally the userland threads
                 THREAD_OPTS="-kthread lthread $THREAD_OPTS c_r"
                 ;;
-          *-*-darwin*)
+          *-*-darwin* | *-*-cygwin* )
                 dnl Darwin / Mac OS X just uses -lpthread tested below
+                dnl and so does Cygwin
                 THREAD_OPTS=""
                 ;;
           *-*-aix*)
@@ -3247,6 +3366,9 @@ if test "$TOOLKIT" != "MSW"; then
             *-aix* | *-freebsd*)
                 flag="-D_THREAD_SAFE"
                 ;;
+            *-hp-hpux* )
+                flag="-D_REENTRANT"
+                ;;
             *solaris* | alpha*-osf*)
                 flag="-D_REENTRANT"
                 ;;
@@ -3339,14 +3461,6 @@ if test "$TOOLKIT" != "MSW"; then
       dnl defined, we do it by directly assigned
       dnl PTHREAD_MUTEX_RECURSIVE_MUTEX_INITIALIZER_NP to attr
 
-      dnl we need _GNU_SOURCE to get PTHREAD_MUTEX_RECURSIVE with glibc 2.1+
-      dnl (strictly speaking we only need _XOPEN_SOURCE=500 but just defining
-      dnl this disables _BSD_SOURCE which breaks libtiff compilation, so it is
-      dnl simpler to just define _GNU_SOURCE to get everything)
-      if test "x$wx_cv_lib_glibc21" = "xyes"; then
-          CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-      fi
-
       AC_CACHE_CHECK([for pthread_mutexattr_t], wx_cv_type_pthread_mutexattr_t,
       [
         AC_TRY_COMPILE([#include <pthread.h>],
@@ -3388,6 +3502,35 @@ if test "$TOOLKIT" != "MSW"; then
     fi
 
 dnl from if !MSW
+else
+    if test "$wxUSE_THREADS" = "yes" ; then
+      case "${host}" in
+        *-*-mingw32* )
+            dnl check if the compiler accepts -mthreads
+            AC_CACHE_CHECK([if compiler supports -mthreads],
+                wx_cv_cflags_mthread,
+                [
+                    CFLAGS_OLD="$CFLAGS"
+                    CFLAGS="$CFLAGS -mthreads"
+                    AC_TRY_COMPILE([], [],
+                        wx_cv_cflags_mthread=yes,
+                        wx_cv_cflags_mthread=no
+                    )
+                ]
+            )
+
+            if test "$wx_cv_cflags_mthread" = "yes"; then
+                dnl it does, use it
+                CXXFLAGS="$CXXFLAGS -mthreads"
+                TOOLCHAIN_DEFS="$TOOLCHAIN_DEFS -mthreads"
+                LDFLAGS="$LDFLAGS -mthreads"
+            else
+                dnl it doesn't
+                CFLAGS="$CFLAGS_OLD"
+            fi
+        ;;
+      esac
+    fi
 fi
 
 if test "$wxUSE_THREADS" = "yes"; then
@@ -3476,6 +3619,18 @@ if test "$GCC" = "yes" ; then
         # they had a reason, right??
         CODE_GEN_FLAGS="$CODE_GEN_FLAGS -fno-pcc-struct-return"
     fi
+
+    dnl Ian Brown <ian.brown@printsoft.de> reports that versions of gcc before
+    dnl 3.0 overflow the table of contents on rs6000 as they create an entry
+    dnl for each subroutine by default -- using the switch below only creates
+    dnl one entry per file instead at the price of minor performance penalty
+    dnl
+    dnl TODO: test for the gcc version here (how?)
+    case "${host}" in
+      powerpc*-*-aix* )
+        CODE_GEN_FLAGS="$CODE_GEN_FLAGS -mminimal-toc"
+        ;;
+    esac
 fi
 
 if test "$wxUSE_OPTIMISE" = "no" ; then
@@ -3816,10 +3971,10 @@ dnl ------------------------------------------------------------------------
 dnl wxSocket
 dnl ------------------------------------------------------------------------
 
-dnl VZ: the GUI hooks wxSocket needs are not implemented yet in wxX11
+dnl VZ: the GUI hooks wxSocket needs are not implemented yet in wxMGL
 if test "$wxUSE_SOCKETS" = "yes"; then
-    if test "$TOOLKIT" = "X11"; then
-        AC_MSG_WARN([wxSocket not yet supported under X11... disabled])
+    if test "$wxUSE_MGL" = "1"; then
+        AC_MSG_WARN([wxSocket not yet supported under MGL... disabled])
         wxUSE_SOCKETS="no"
     fi
 fi
@@ -4026,7 +4181,7 @@ fi
 
 if test "$wxUSE_UNICODE" = "yes" ; then
   AC_DEFINE(wxUSE_UNICODE)
-  
+
   if test "$wxUSE_MSW" != 1; then
       wxUSE_UNICODE_MSLU=no
   fi
@@ -4082,15 +4237,17 @@ if test "$wxUSE_CONSTRAINTS" = "yes"; then
 fi
 
 if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
-    if test "$wxUSE_UNIVERSAL" = "yes"; then
-        AC_MSG_WARN(MDI not yet supported for wxUniversal... disabled)
-        wxUSE_MDI_ARCHITECTURE=no
-    fi
 
-    if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
-        AC_DEFINE(wxUSE_MDI_ARCHITECTURE)
-        SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS mdi"
-    fi
+dnl     There is now experimental generic MDI support
+dnl     if test "$wxUSE_UNIVERSAL" = "yes"; then
+dnl         AC_MSG_WARN(MDI not yet supported for wxUniversal... disabled)
+dnl         wxUSE_MDI_ARCHITECTURE=no
+dnl     fi
+
+   if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then
+       AC_DEFINE(wxUSE_MDI_ARCHITECTURE)
+       SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS mdi"
+   fi
 fi
 
 if test "$wxUSE_DOC_VIEW_ARCHITECTURE" = "yes" ; then
@@ -4155,13 +4312,24 @@ dnl check for ole headers and disable a few features requiring it if not
 dnl present (earlier versions of mingw32 don't have ole2.h)
 if test "$wxUSE_MSW" = 1 -a \( "$wxUSE_DATAOBJ"       = "yes" \
                           -o "$wxUSE_CLIPBOARD"     = "yes" \
+                          -o "$wxUSE_OLE"     = "yes" \
                           -o "$wxUSE_DRAG_AND_DROP" = "yes" \) ; then
     AC_CHECK_HEADERS(ole2.h)
 
     if test "$ac_cv_header_ole2_h" = "yes" ; then
         if test "$GCC" = yes ; then
+            AC_LANG_SAVE
+            AC_LANG_CPLUSPLUS
+
+            AC_MSG_CHECKING([if g++ requires -fvtable-thunks])
+            AC_TRY_COMPILE([#include <windows.h>
+                            #include <ole2.h>],
+                           [],
+                           [AC_MSG_RESULT(no)],
+                           [AC_MSG_RESULT(yes)
+                            CODE_GEN_FLAGS_CXX="$CODE_GEN_FLAGS_CXX -fvtable-thunks"])
+            AC_LANG_RESTORE
             ALL_OBJECTS="$ALL_OBJECTS \$(OLEOBJS)"
-            CODE_GEN_FLAGS_CXX="$CODE_GEN_FLAGS_CXX -fvtable-thunks"
             LIBS=" -lrpcrt4 -loleaut32 -lole32 -luuid$LIBS"
             AC_DEFINE(wxUSE_OLE)
 
@@ -4175,6 +4343,51 @@ if test "$wxUSE_MSW" = 1 -a \( "$wxUSE_DATAOBJ"       = "yes" \
         wxUSE_CLIPBOARD=no
         wxUSE_DRAG_AND_DROP=no
         wxUSE_DATAOBJ=no
+        wxUSE_OLE=no
+    fi
+
+    if test "$wxUSE_METAFILE" = "yes"; then
+        AC_DEFINE(wxUSE_METAFILE)
+
+        dnl this one should probably be made separately configurable
+        AC_DEFINE(wxUSE_ENH_METAFILE)
+    fi
+fi
+
+if test "$wxUSE_WINE" = 1 -a \( "$wxUSE_DATAOBJ"       = "yes" \
+                          -o "$wxUSE_CLIPBOARD"     = "yes" \
+                          -o "$wxUSE_OLE"     = "yes" \
+                          -o "$wxUSE_DRAG_AND_DROP" = "yes" \) ; then
+    AC_CHECK_HEADERS(ole2.h)
+
+    if test "$ac_cv_header_ole2_h" = "yes" ; then
+        if test "$GCC" = yes ; then
+            AC_LANG_SAVE
+            AC_LANG_CPLUSPLUS
+
+            AC_MSG_CHECKING([if g++ requires -fvtable-thunks])
+            AC_TRY_COMPILE([#include <windows.h>
+                            #include <ole2.h>],
+                           [],
+                           [AC_MSG_RESULT(no)],
+                           [AC_MSG_RESULT(yes)
+                            CODE_GEN_FLAGS_CXX="$CODE_GEN_FLAGS_CXX -fvtable-thunks"])
+            AC_LANG_RESTORE
+            ALL_OBJECTS="$ALL_OBJECTS \$(OLEOBJS)"
+            LIBS=" -lwine_uuid$LIBS"
+            AC_DEFINE(wxUSE_OLE)
+
+        fi
+
+        dnl for OLE clipboard and dnd
+        AC_DEFINE(wxUSE_DATAOBJ)
+    else
+        AC_MSG_WARN([Some features disabled because OLE headers not found])
+
+        wxUSE_CLIPBOARD=no
+        wxUSE_DRAG_AND_DROP=no
+        wxUSE_DATAOBJ=no
+        wxUSE_OLE=no
     fi
 
     if test "$wxUSE_METAFILE" = "yes"; then
@@ -4194,10 +4407,17 @@ if test "$wxUSE_IPC" = "yes"; then
 fi
 
 if test "$wxUSE_CLIPBOARD" = "yes"; then
-    AC_DEFINE(wxUSE_CLIPBOARD)
+    if test "$wxUSE_MGL" = 1; then
+        AC_MSG_WARN([Clipboard not yet supported under MGL... disabled])
+        wxUSE_CLIPBOARD=no
+    fi
+
+    if test "$wxUSE_CLIPBOARD" = "yes"; then
+        AC_DEFINE(wxUSE_CLIPBOARD)
 
-    dnl required by clipboard code in configuration check
-    AC_DEFINE(wxUSE_DATAOBJ)
+        dnl required by clipboard code in configuration check
+        AC_DEFINE(wxUSE_DATAOBJ)
+    fi
 fi
 
 if test "$wxUSE_DRAG_AND_DROP" = "yes" ; then
@@ -4218,6 +4438,11 @@ if test "$wxUSE_DRAG_AND_DROP" = "yes" ; then
         wxUSE_DRAG_AND_DROP=no
     fi
 
+    if test "$wxUSE_MGL" = 1; then
+        AC_MSG_WARN([Drag and drop not yet supported under MGL... disabled])
+        wxUSE_DRAG_AND_DROP=no
+    fi
+
     if test "$wxUSE_DRAG_AND_DROP" = "yes"; then
         AC_DEFINE(wxUSE_DRAG_AND_DROP)
         SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dnd"
@@ -4492,7 +4717,7 @@ if test "$wxUSE_POPUPWIN" = "yes"; then
         else
             if test "$wxUSE_PM" = 1; then
                 AC_MSG_WARN([wxPopupWindow not yet supported under PM... disabled])
-            else 
+            else
                 AC_DEFINE(wxUSE_POPUPWIN)
 
                 USES_CONTROLS=1
@@ -4504,7 +4729,7 @@ fi
 if test "$wxUSE_TIPWINDOW" = "yes"; then
     if test "$wxUSE_PM" = 1; then
         AC_MSG_WARN([wxTipWindow not yet supported under PM... disabled])
-    else 
+    else
         AC_DEFINE(wxUSE_TIPWINDOW)
     fi
 fi
@@ -4542,6 +4767,10 @@ fi
 
 if test "$wxUSE_SYSTEM_OPTIONS" = "yes"; then
     AC_DEFINE(wxUSE_SYSTEM_OPTIONS)
+if test "$TOOLKIT" = "MSW"; then
+    SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS taskbar"
+fi
+
 fi
 
 if test "$wxUSE_PROTOCOL" = "yes"; then
@@ -4753,7 +4982,7 @@ if test "$wxUSE_GUI" = "yes"; then
     dnl      ipc, mfc, nativdlg, oleauto, ownerdrw
     SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS artprov controls dialogs \
                      drawing dynamic erase event exec font image \
-                     minimal richedit rotate widgets"
+                     minimal propsize rotate widgets"
 
     dnl this is needed to be able to find AFM files
     CPPFLAGS="$CPPFLAGS \$(EXTRADEFS) \$(APPEXTRADEFS)"
@@ -4796,11 +5025,12 @@ if test "$GXX" = yes ; then
     fi
 fi
 
-EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE $INCLUDES"
+EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE"
 
 dnl remove the extra white space from the cc/c++/ld options
-CFLAGS=`echo $CFLAGS $EXTRA_CFLAGS $CXXWARNINGS | sed 's/ \\+/ /g'`
-CXXFLAGS=`echo $CXXFLAGS $EXTRA_CFLAGS $CXXWARNINGS | sed 's/ \+/ /g'`
+CPPFLAGS=`echo $INCLUDES $CPPFLAGS | sed 's/ \\+/ /g'`
+CFLAGS=`echo $EXTRA_CFLAGS $CFLAGS $CXXWARNINGS | sed 's/ \\+/ /g'`
+CXXFLAGS=`echo $EXTRA_CFLAGS $CXXFLAGS $CXXWARNINGS | sed 's/ \+/ /g'`
 LIBS=`echo $LIBS | sed 's/ \+/ /g'`
 
 LDFLAGS="$LDFLAGS $PROFILE"
@@ -4852,6 +5082,8 @@ AC_SUBST(SONAME_FLAGS_GL)
 AC_SUBST(WX_TARGET_LIBRARY_SONAME)
 AC_SUBST(WX_TARGET_LIBRARY_TYPE)
 
+AC_SUBST(STATIC_FLAG)
+
 dnl debugging options
 AC_SUBST(WXDEBUG_DEFINE)
 
@@ -4873,6 +5105,8 @@ AC_SUBST(WXCONFIG_LIBS_GL)
 AC_SUBST(WXCONFIG_LIBS_STATIC)
 AC_SUBST(WXCONFIG_LIBS_STATIC_GL)
 AC_SUBST(WXCONFIG_INCLUDE)
+AC_SUBST(WXCONFIG_RPATH)
+AC_SUBST(WX_LARGEFILE_FLAGS)
 
 dnl the list of files to compile/install
 AC_SUBST(ALL_OBJECTS)