X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5c6fa7d283a8ab09f63e96a61b9ff7a57e24f6f1..c718e0b31c8a8294219bd1b54f179fbbfd86558b:/configure.in diff --git a/configure.in b/configure.in index de07ccc322..270a8582b4 100644 --- a/configure.in +++ b/configure.in @@ -47,15 +47,15 @@ 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=3 -WX_RELEASE_NUMBER=3 +WX_MINOR_VERSION_NUMBER=5 +WX_RELEASE_NUMBER=0 WX_VERSION=$WX_MAJOR_VERSION_NUMBER.$WX_MINOR_VERSION_NUMBER.$WX_RELEASE_NUMBER WX_RELEASE=$WX_MAJOR_VERSION_NUMBER.$WX_MINOR_VERSION_NUMBER WX_MSW_VERSION=$WX_MAJOR_VERSION_NUMBER$WX_MINOR_VERSION_NUMBER$WX_RELEASE_NUMBER -WX_CURRENT=2 +WX_CURRENT=0 WX_REVISION=0 WX_AGE=0 @@ -99,7 +99,7 @@ NEEDS_D_REENTRANT_FOR_R_FUNCS=0 dnl the list of all available toolkits dnl dnl update NUM_TOOLKITS calculation below when adding a new toolkit here! -ALL_TOOLKITS="GTK MAC MGL MICROWIN MOTIF MSW PM WINE X11" +ALL_TOOLKITS="GTK MAC MGL MICROWIN MOTIF MSW PM X11" dnl NB: these wxUSE_XXX constants have value of 0 or 1 unlike all the other ones dnl which are either yes or no @@ -110,7 +110,6 @@ DEFAULT_wxUSE_MICROWIN=0 DEFAULT_wxUSE_MOTIF=0 DEFAULT_wxUSE_MSW=0 DEFAULT_wxUSE_PM=0 -DEFAULT_wxUSE_WINE=0 DEFAULT_wxUSE_X11=0 dnl these are the values which are really default for the given platform - @@ -123,7 +122,6 @@ DEFAULT_DEFAULT_wxUSE_MICROWIN=0 DEFAULT_DEFAULT_wxUSE_MOTIF=0 DEFAULT_DEFAULT_wxUSE_MSW=0 DEFAULT_DEFAULT_wxUSE_PM=0 -DEFAULT_DEFAULT_wxUSE_WINE=0 DEFAULT_DEFAULT_wxUSE_X11=0 PROGRAM_EXT= @@ -187,15 +185,15 @@ case "${host}" in *-*-openbsd*) USE_BSD=1 USE_OPENBSD=1 - AC_DEFINE(__FREEBSD__) AC_DEFINE(__OPENBSD__) + AC_DEFINE(__BSD__) DEFAULT_DEFAULT_wxUSE_GTK=1 ;; *-*-netbsd*) USE_BSD=1 USE_NETBSD=1 - AC_DEFINE(__FREEBSD__) AC_DEFINE(__NETBSD__) + AC_DEFINE(__BSD__) DEFAULT_DEFAULT_wxUSE_GTK=1 ;; *-*-osf* ) @@ -224,8 +222,11 @@ case "${host}" in USE_AIX=1 USE_SYSV=1 USE_SVR4=1 - dnl Irvin Probst reports that the shared - dnl libraries under AIX have the same suffix as the normal ones + dnl quoting from http://www-1.ibm.com/servers/esdd/articles/gnu.html: + dnl + dnl Both archive libraries and shared libraries on AIX have an .a + dnl extension. This will explain why you can't link with an .so and + dnl why it works with the name changed to .a. SO_SUFFIX=a AC_DEFINE(__AIX__) AC_DEFINE(__SYSV__) @@ -257,7 +258,6 @@ case "${host}" in AC_DEFINE(__EMX__) PROGRAM_EXT=".exe" DEFAULT_DEFAULT_wxUSE_PM=1 - LIBS="$LIBS -lstdcpp" ;; powerpc-*-darwin* ) @@ -354,6 +354,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 @@ -527,6 +529,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 @@ -549,8 +553,8 @@ else DEFAULT_wxUSE_DOC_VIEW_ARCHITECTURE=yes DEFAULT_wxUSE_PRINTING_ARCHITECTURE=yes - DEFAULT_wxUSE_PROLOGIO=yes - DEFAULT_wxUSE_RESOURCES=yes + DEFAULT_wxUSE_PROLOGIO=no + DEFAULT_wxUSE_RESOURCES=no DEFAULT_wxUSE_CONSTRAINTS=yes DEFAULT_wxUSE_IPC=yes DEFAULT_wxUSE_HELP=yes @@ -680,7 +684,7 @@ WX_ARG_ENABLE(universal, [ --enable-universal use wxWindows GUI controls AC_ARG_WITH(gtk, [ --with-gtk use GTK+], [wxUSE_GTK="$withval" CACHE_GTK=1 TOOLKIT_GIVEN=1]) AC_ARG_WITH(motif, [ --with-motif use Motif/Lesstif], [wxUSE_MOTIF="$withval" CACHE_MOTIF=1 TOOLKIT_GIVEN=1]) AC_ARG_WITH(mac, [ --with-mac use Mac OS X], [wxUSE_MAC="$withval" TOOLKIT_GIVEN=1]) -AC_ARG_WITH(wine, [ --with-wine use WINE], [wxUSE_WINE="$withval" CACHE_WINE=1 TOOLKIT_GIVEN=1]) +AC_ARG_WITH(wine, [ --with-wine use Wine], [wxUSE_WINE="$withval" CACHE_WINE=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" wxUSE_UNIVERSAL="yes" CACHE_MGL=1 TOOLKIT_GIVEN=1]) @@ -712,8 +716,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 @@ -735,7 +739,7 @@ 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"]) @@ -756,6 +760,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) @@ -1035,7 +1041,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" ;; *) @@ -1054,6 +1062,13 @@ dnl we have a default one AC_MSG_CHECKING(for toolkit) +# In Wine, we need to default to MSW, not GTK or MOTIF +if test "$wxUSE_WINE" = "yes"; then + DEFAULT_DEFAULT_wxUSE_GTK=0 + DEFAULT_DEFAULT_wxUSE_MOTIF=0 + DEFAULT_DEFAULT_wxUSE_MSW=1 +fi + if test "$wxUSE_GUI" = "yes"; then if test "$USE_BEOS" = 1; then @@ -1082,7 +1097,7 @@ if test "$wxUSE_GUI" = "yes"; then dnl we suppose that expr is available (maybe there is a better way to do dnl this? what about using ALL_TOOLKITS? TODO) NUM_TOOLKITS=`expr ${wxUSE_GTK:-0} + ${wxUSE_MOTIF:-0} + ${wxUSE_MAC:-0} \ - + ${wxUSE_WINE:-0} + ${wxUSE_MSW:-0} + ${wxUSE_MGL:-0} + ${wxUSE_MICROWIN:-0} + ${wxUSE_X11:-0}` + + ${wxUSE_MSW:-0} + ${wxUSE_MGL:-0} + ${wxUSE_MICROWIN:-0} + ${wxUSE_X11:-0}` dnl Allow wxUSE_PM only for OS/2 with EMX. case "${host}" in @@ -1124,7 +1139,6 @@ 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 @@ -1141,6 +1155,17 @@ case "${host}" in ;; esac +dnl --------------------------------------------------------------------------- +dnl Wine is a virtual platform, we need to patch things up a bit +dnl --------------------------------------------------------------------------- +if test "$wxUSE_WINE" = "yes"; then + wants_win32=1 + dnl FIXME: we should do a better job of testing for these + CC=winegcc + CXX=wineg++ + RESCOMP=wrc +fi + 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 @@ -1196,7 +1221,7 @@ dnl defines GCC empty if not using gcc dnl defines CFLAGS dnl dnl this magic incantation is needed to prevent AC_PROG_CC from setting the -dnl default CFLAGS (something like "-g -O2") - we don't need this as add +dnl default CFLAGS (something like "-g -O2") -- we don't need this as we add dnl -g and -O flags ourselves below CFLAGS=${CFLAGS:=} AC_PROG_CC @@ -1330,6 +1355,27 @@ AC_PROG_LEX dnl needed for making link to setup.h AC_PROG_LN_S +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 Check for headers dnl ------------------------------------------------------------------------ @@ -1396,6 +1442,13 @@ 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 @@ -1407,6 +1460,10 @@ AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t, [ AC_TRY_RUN( [ + /* DJGPP only has fake wchar_t: */ + #ifdef __DJGPP__ + # error "fake wchar_t" + #endif #ifdef HAVE_WCHAR_H # ifdef __CYGWIN__ # include @@ -1427,7 +1484,16 @@ AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t, ], wx_cv_sizeof_wchar_t=`cat conftestval`, wx_cv_sizeof_wchar_t=0, - wx_cv_sizeof_wchar_t=4 + [ + case "${host}" in + *-pc-msdosdjgpp ) + wx_cv_sizeof_wchar_t=0 + ;; + * ) + wx_cv_sizeof_wchar_t=4 + ;; + esac + ] ) ]) @@ -1436,6 +1502,20 @@ 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 @@ -1453,10 +1533,9 @@ dnl Define search path for includes and libraries: all headers and libs will be dnl looked for in all directories of this path 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 Notice that /usr/include should *not* be in this list, otherwise it breaks +dnl compilation on Solaris/AIX/... with gcc because standard (non ANSI C) +dnl headers are included instead of the "fixed" (ANSI-fied) gcc ones. 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! @@ -1523,9 +1602,7 @@ SEARCH_INCLUDE="\ /usr/local/x11r5/include \ /usr/lpp/Xamples/include \ \ - /usr/openwin/share/include \ - \ - /usr/include" + /usr/openwin/share/include" SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` " @@ -1636,13 +1713,64 @@ if test "$wxUSE_ZLIB" != "no" ; then AC_DEFINE(wxUSE_ZLIB) if test "$wxUSE_ZLIB" = "sys" -o "$wxUSE_ZLIB" = "yes" ; then - AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, deflate, ZLIB_LINK=" -lz")) + dnl don't test for zlib under Mac -- its verson there is 1.1.3 but we + dnl should still use it because hopefully (can someone confirm this?) + dnl Apple did fix the security problem in it and not using the system + dnl library results in a whole bunch of warnings when linking with + dnl Carbon framework + if test "$USE_DARWIN" = 1; then + system_zlib_h_ok="yes" + else + dnl we have troubles with ancient zlib versions (e.g. 1.0.4 is + dnl known to not work) and although I don't know which is + dnl the minimal required version it's safer to test for 1.1.4 as + dnl it fixes a security problem in 1.1.3 -- and hopefully nobody + dnl has anything more ancient (1.1.3 was released in July 1998) + dnl anyhow + AC_CACHE_CHECK([for zlib.h >= 1.1.4], ac_cv_header_zlib_h, + AC_TRY_RUN( + [ + dnl zlib.h defines ZLIB_VERSION="x.y.z" + #include + #include + + dnl don't use the brackets as quotes, we need them + changequote(,) + int main() + { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%s", + ZLIB_VERSION[0] == '1' && + (ZLIB_VERSION[2] > '1' || + (ZLIB_VERSION[2] == '1' && + ZLIB_VERSION[4] >= '4')) ? "yes" : "no"); + exit(0); + } + changequote([,]) + ], + ac_cv_header_zlib_h=`cat conftestval`, + ac_cv_header_zlib_h=no, + dnl cross-compiling: don't have an answer, try later + unset ac_cv_header_zlib_h + ) + ) + dnl If the test above did not come up with a value (e.g. cross + dnl compiling) then this should give a definitive answer + AC_CHECK_HEADER(zlib.h) + + system_zlib_h_ok=$ac_cv_header_zlib_h + fi + + if test "$system_zlib_h_ok" = "yes"; then + AC_CHECK_LIB(z, deflate, ZLIB_LINK=" -lz") + fi if test "x$ZLIB_LINK" = "x" ; then if test "$wxUSE_ZLIB" = "sys" ; then - AC_MSG_ERROR([system zlib compression library not found! Use --with-zlib=builtin to use built-in version]) + AC_MSG_ERROR([zlib library not found or too old! Use --with-zlib=builtin to use built-in version]) else - AC_MSG_WARN([system zlib compression library not found, will use built-in instead]) + AC_MSG_WARN([zlib library not found or too old, will use built-in instead]) wxUSE_ZLIB=builtin fi else @@ -1681,23 +1809,46 @@ if test "$wxUSE_LIBPNG" != "no" ; then if test "$wxUSE_MGL" != 1 ; then dnl Don't check for libpng when building wxMGL, libmgl contains it if test "$wxUSE_LIBPNG" = "sys" -o "$wxUSE_LIBPNG" = "yes" ; then - AC_CHECK_HEADER(png.h, - AC_CHECK_LIB(png, png_check_sig, - PNG_LINK=" -lpng", - , - [-lz -lm]) - ) + dnl libpng version 0.9 is known to not work, if an even newer + dnl version is required, just bump it up in the test below + AC_CACHE_CHECK([for png.h > 0.90], ac_cv_header_png_h, + AC_TRY_RUN( + [ + dnl png.h defines PNG_LIBPNG_VER=number + #include + #include + + int main() + { + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%s", + PNG_LIBPNG_VER > 90 ? "yes" : "no"); + exit(0); + } + ], + ac_cv_header_png_h=`cat conftestval`, + ac_cv_header_png_h=no, + dnl cross-compiling: test (later) if we have any png.h + unset ac_cv_header_png_h + ) + ) + AC_CHECK_HEADER(png.h) + + if test "$ac_cv_header_png_h" = "yes"; then + AC_CHECK_LIB(png, png_check_sig, PNG_LINK=" -lpng", , [-lz -lm]) + fi if test "x$PNG_LINK" = "x" ; then if test "$wxUSE_LIBPNG" = "sys" ; then - AC_MSG_ERROR([system png library not found! Use --with-libpng=builtin to use built-in version]) + AC_MSG_ERROR([system png library not found or too old! Use --with-libpng=builtin to use built-in version]) else - AC_MSG_WARN([system png library not found, will use built-in instead]) + AC_MSG_WARN([system png library not found or too old, will use built-in instead]) wxUSE_LIBPNG=builtin fi else dnl we are using the system library - wxUSE_LIBPNG=yes + wxUSE_LIBPNG=sys fi fi fi @@ -1774,15 +1925,24 @@ dnl ------------------------------------------------------------------------ TIFF_INCLUDE= TIFF_LINK= +TIFF_PREREQ_LINKS=-lm if test "$wxUSE_LIBTIFF" != "no" ; then AC_DEFINE(wxUSE_LIBTIFF) if test "$wxUSE_LIBTIFF" = "sys" -o "$wxUSE_LIBTIFF" = "yes" ; then + dnl libtiff may depend on libjpeg and libz so use them in the test + dnl below or it would fail + if test "$wxUSE_LIBJPEG" = "sys"; then + TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $JPEG_LINK" + fi + if test "$wxUSE_ZLIB" = "sys"; then + TIFF_PREREQ_LINKS="$TIFF_PREREQ_LINKS $ZLIB_LINK" + fi AC_CHECK_HEADER(tiffio.h, AC_CHECK_LIB(tiff, TIFFError, TIFF_LINK=" -ltiff", , - -lm) + $TIFF_PREREQ_LINKS) ) if test "x$TIFF_LINK" = "x" ; then @@ -1808,6 +1968,7 @@ dnl search for toolkit (widget sets) dnl ---------------------------------------------------------------- AFMINSTALL= +WIN32INSTALL= TOOLKIT= TOOLKIT_INCLUDE= @@ -1863,6 +2024,19 @@ if test "$USE_WIN32" = 1 ; then RESFLAGS="--include-dir \$(top_srcdir)/include --include-dir \$(top_srcdir)/\$(program_dir) --define __WIN32__ --define __WIN95__ --define __GNUWIN32__" RESPROGRAMOBJ="\$(PROGRAM)_resources.o" + + dnl install Win32-specific files in "make install" + WIN32INSTALL=win32install +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 @@ -1879,12 +2053,8 @@ if test "$wxUSE_GUI" = "yes"; then GUIDIST=MSW_DIST dnl -mwindows causes a heap of other default gui libs to be linked in. - dnl FIXME: If cygwin needs this, please push it above, if not, please - dnl remove this comment :-) - case "${host}" in - *-*-mingw32* ) - LDFLAGS="$LDFLAGS -Wl,--subsystem,windows -mwindows" - esac + dnl All platforms need this, except maybe cygwin + LDFLAGS="$LDFLAGS -Wl,--subsystem,windows -mwindows" fi if test "$wxUSE_GTK" = 1; then @@ -1905,17 +2075,17 @@ if test "$wxUSE_GUI" = "yes"; then GTK_MODULES=gthread fi + dnl note that if we fail to find GTK2 we abort and don't fall + dnl back to GTK1.x wx_cv_lib_gtk= if test "x$wxUSE_GTK2" = "xyes"; then AM_PATH_GTK_2_0(2.0.0, wx_cv_lib_gtk=2.0, , $GTK_MODULES) - fi - - if test -z "$wx_cv_lib_gtk"; then + else AM_PATH_GTK(1.2.7, wx_cv_lib_gtk=1.2.7, , $GTK_MODULES) - fi - if test -z "$wx_cv_lib_gtk"; then - AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3, , $GTK_MODULES) + if test -z "$wx_cv_lib_gtk"; then + AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3, , $GTK_MODULES) + fi fi if test -z "$wx_cv_lib_gtk"; then @@ -1938,6 +2108,7 @@ if test "$wxUSE_GUI" = "yes"; then case "$wx_cv_lib_gtk" in 2.0) WXGTK20=1 + TOOLKIT_VERSION=2 ;; 1.2.7) WXGTK127=1 WXGTK12=1 @@ -1966,6 +2137,17 @@ equivalent variable and GTK+ is version 1.2.3 or above. ] ) fi + else + if test "$wxUSE_UNICODE" = "yes"; then + AC_MSG_WARN([Unicode configuration not supported with GTK+ 1.x]) + wxUSE_UNICODE=no + fi + fi + + dnl we need poll() in src/gtk/app.cpp (we know that Darwin doesn't + dnl have it but we do the check for the others) + if test "$USE_DARWIN" != 1; then + AC_CHECK_FUNCS(poll) fi TOOLKIT_INCLUDE="$wx_cv_cflags_gtk" @@ -1992,7 +2174,7 @@ equivalent variable and GTK+ is version 1.2.3 or above. dnl FIXME_MGL - test for MGL variants for freebsd etc. case "${host}" in *-*-linux* ) - mgl_os=linux/gcc/glibc + mgl_os="linux/gcc/glibc*" ;; *-pc-msdosdjgpp ) mgl_os=dos32/dj2 @@ -2111,6 +2293,37 @@ equivalent variable and GTK+ is version 1.2.3 or above. ) fi + if test "$wxUSE_UNICODE" = "yes"; then + PKG_CHECK_MODULES(PANGOX, pangox, + [ + CXXFLAGS="$CXXFLAGS $PANGOX_CFLAGS" + LIBS="$LIBS $PANGOX_LIBS" + ], + [ + AC_MSG_ERROR([pangox library not found, library cannot be compiled in Unicode mode]) + ] + ) + 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" + ] + ) + PKG_CHECK_MODULES(PANGOXFT, pangoxft, + [ + CXXFLAGS="$CXXFLAGS $PANGOXFT_CFLAGS" + LIBS="$LIBS $PANGOXFT_LIBS" + ], + [ + AC_MSG_WARN([pangoxft library not found, library will be compiled without anti-aliasing support]) + ] + ) + fi + wxUSE_UNIVERSAL="yes" if test "$wxUSE_NANOX" = "yes"; then @@ -2126,42 +2339,6 @@ equivalent variable and GTK+ is version 1.2.3 or above. GUIDIST=X11_DIST fi - if test "$wxUSE_WINE" = 1; then - AC_CHECK_HEADER(windows.h, [], - [ - AC_MSG_ERROR(please set CFLAGS to contain the location of windows.h) - ]) - - xpm_link= - AC_MSG_CHECKING(for Xpm library) - WX_PATH_FIND_LIBRARIES($SEARCH_LIB,Xpm) - if test "$ac_find_libraries" != "" ; then - GUI_TK_LIBRARY="-L$ac_find_libraries" - xpm_link=" -lXpm" - AC_DEFINE(wxHAVE_LIB_XPM) - AC_MSG_RESULT(found at $ac_find_libraries) - else - AC_MSG_RESULT(no) - AC_MSG_WARN(library will be compiled without support for images in XPM format) - fi - - mesa_link= - AC_MSG_CHECKING(for Mesa library) - WX_PATH_FIND_LIBRARIES($SEARCH_LIB,MesaGL) - if test "$ac_find_libraries" != "" ; then - GUI_TK_LIBRARY="$GUI_TK_LIBRARY -L$ac_find_libraries" - mesa_link=" -lMesaGL" - AC_MSG_RESULT(found at $ac_find_libraries) - else - AC_MSG_ERROR(no) - fi - - GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lwine$mesa_link$xpm_link -lXxf86dga -lXxf86vm -lSM -lICE -lXext -lXmu -lX11 -lncurses" - TOOLKIT=MSW - GUIDIST=MSW_DIST - TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXWINE__" - fi - if test "$wxUSE_MOTIF" = 1; then dnl use standard macros to check for X headers/libs, this brings support dnl for the standard configure options --x-includes and --x-libraries @@ -2171,8 +2348,10 @@ equivalent variable and GTK+ is version 1.2.3 or above. AC_MSG_ERROR(X11 not found, please use --x-includes and/or --x-libraries options) fi - GUI_TK_LIBRARY="$X_LIBS" - TOOLKIT_INCLUDE="$X_CFLAGS" + dnl for some reason AC_PATH_XTRA seems to add -INONE and -LNONE to + dnl X_LIBS and X_CFLAGS respectively -- what for?? + GUI_TK_LIBRARY=`echo $X_LIBS | sed 's/ -LNONE//'` + TOOLKIT_INCLUDE=`echo $X_CFLAGS | sed 's/ -INONE//'` AFMINSTALL=afminstall COMPILED_X_PROGRAM=0 @@ -2283,7 +2462,7 @@ equivalent variable and GTK+ is version 1.2.3 or above. for libp in "" " -lXp"; do if test "$libs_found" = "0"; then for libsm_ice in " -lSM -lICE"; do - if test "$libs_found" = "0"; then + 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 @@ -2328,16 +2507,9 @@ equivalent variable and GTK+ is version 1.2.3 or above. 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/morefilex -I/Developer/Headers/FlatCarbon" - TOOLKIT_VPATH="\${top_srcdir}/src/mac${PATH_IFS}\${top_srcdir}/src/mac/morefile" + TOOLKIT_VPATH="\${top_srcdir}/src/mac${PATH_IFS}\${top_srcdir}/src/mac/morefilex" TOOLKIT=MAC dnl we can't call this MAC_DIST or autoconf thinks its a macro GUIDIST=MACX_DIST @@ -2346,6 +2518,11 @@ equivalent variable and GTK+ is version 1.2.3 or above. if test "$wxUSE_PM" = 1; then TOOLKIT=PM GUIDIST=GTK_DIST + AC_MSG_WARN([OS/2 PM requires old resource format, re-enabled]) + wxUSE_PROLOGIO="yes" + wxUSE_RESOURCES="yes" + AC_MSG_WARN([OS/2 threads are not yet supported... disabled]) + wxUSE_THREADS="no" fi dnl the name of the directory where the files for this toolkit live @@ -2522,8 +2699,10 @@ if test "$wxUSE_DEBUG_FLAG" = "yes"; then lib_debug_suffix=d fi -TOOLCHAIN_NAME="${TOOLKIT_DIR}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}-${WX_RELEASE}" -TOOLCHAIN_NAME_GL="${TOOLKIT_DIR}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_gl-${WX_RELEASE}" +WX_VERSION_TAG=`echo WX${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_${WX_RELEASE} | tr "[[a-z]]" "[[A-Z]]"` + +TOOLCHAIN_NAME="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}-${WX_RELEASE}" +TOOLCHAIN_NAME_GL="${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}_gl-${WX_RELEASE}" if test "$cross_compiling" = "yes"; then TOOLCHAIN_NAME="${TOOLCHAIN_NAME}-${host_alias}" @@ -2533,6 +2712,7 @@ fi dnl library link name WX_LIBRARY="wx_${TOOLCHAIN_NAME}" WX_LIBRARY_GL="wx_${TOOLCHAIN_NAME_GL}" +WX_LIBRARY_BASENAME="wx_${TOOLKIT_DIR}${TOOLKIT_VERSION}${WIDGET_SET}${lib_unicode_suffix}${lib_debug_suffix}" dnl the name of the shared library WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${SO_SUFFIX}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}" @@ -2565,12 +2745,24 @@ case "${host}" in ;; *-*-darwin* ) + dnl Under Mac OS X, the naming conventions for shared libraries + dnl are different: the number precedes the suffix. + + WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.${SO_SUFFIX}" + WX_LIBRARY_NAME_SHARED_GL="lib${WX_LIBRARY_GL}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.${SO_SUFFIX}" + + WX_LIBRARY_LINK1="lib${WX_LIBRARY}.${WX_CURRENT}.${SO_SUFFIX}" + WX_LIBRARY_LINK2="lib${WX_LIBRARY}.${SO_SUFFIX}" + WX_LIBRARY_LINK1_GL="lib${WX_LIBRARY_GL}.${WX_CURRENT}.${SO_SUFFIX}" + WX_LIBRARY_LINK2_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}" + dnl Under Mac OS X, we should build real frameworks instead of simple 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_DATA="lib${WX_LIBRARY}.rsrc" + dnl base name of the resource file for wxMac must be the same + dnl as library installation base name (-install_name) + WX_RESOURCES_MACOSX_ASCII="lib${WX_LIBRARY}.${WX_CURRENT}.r" + WX_RESOURCES_MACOSX_DATA="lib${WX_LIBRARY}.${WX_CURRENT}.rsrc" fi ;; esac @@ -2619,14 +2811,19 @@ if test "$wxUSE_SHARED" = "yes"; then PIC_FLAG="-fPIC" fi + + dnl use versioned symbols if available on the platform + WX_VERSIONED_SYMBOLS([\$(top_builddir)/version-script]) + dnl the command to use for creating the shared library SHARED_LD="${CXX} -shared -o" 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" @@ -2687,29 +2884,35 @@ 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 dnl "-init _wxWindowsDylibInit" not useful with lazy linking solved SHARED_LD="\${top_srcdir}/distrib/mac/shared-ld-sh -undefined suppress -flat_namespace -o" PIC_FLAG="-dynamic -fPIC" - SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION}" - SONAME_FLAGS_GL=${SONAME_FLAGS} + dnl library installation base name and wxMac resources file base name + dnl must be identical in order for the resource file to be found at + dnl run time in src/mac/app.cpp + SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION} -install_name \$(libdir)/${WX_LIBRARY_LINK1}" + SONAME_FLAGS_GL="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION} -install_name \$(libdir)/${WX_LIBRARY_LINK1_GL}" ;; *-*-aix* ) - 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) + dnl default settings are ok for gcc + if test "$GCC" != "yes"; then + 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" + SHARED_LD="$(AIX_CXX_LD) -p 0 -o" + fi ;; *-*-cygwin* | *-*-mingw32* ) - WX_LIBRARY_IMPORTLIB="${WX_LIBRARY_NAME_SHARED}.a" SHARED_LD="${CXX} -shared -Wl,--out-implib,lib/${WX_LIBRARY_IMPORTLIB} -o" @@ -2717,12 +2920,12 @@ if test "$wxUSE_SHARED" = "yes"; then PIC_FLAG="-UWXUSINGDLL -DWXMAKINGDLL=1 -D_DLL=1 -D_WINDLL=1" - dnl install shared libs without symlinks + dnl Don't build seperate GL library + WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED}" + WX_ALL_INSTALLED="CREATE_INSTALLED_LINKS" + if test "$wxUSE_OPENGL" = "yes"; then - WX_ALL_INSTALLED="preinstall_gl" - WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED} \$(build_libdir)/${WX_LIBRARY_NAME_SHARED_GL}" - else - WX_ALL="\$(build_libdir)/${WX_LIBRARY_NAME_SHARED}" + LIBS="${LIBS} ${OPENGL_LIBS}" fi ;; @@ -2732,9 +2935,15 @@ if test "$wxUSE_SHARED" = "yes"; then SHARED_LD="${LD} -shared -o" ;; + *-*-irix* ) + dnl default settings are ok for gcc + if test "$GCC" != "yes"; then + PIC_FLAG="-KPIC" + fi + ;; + *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | \ *-*-sunos4* | \ - *-*-irix5* | *-*-irix6* | \ *-*-osf* | \ *-*-dgux5* | \ *-*-sysv5* ) @@ -2781,6 +2990,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 @@ -2791,15 +3006,10 @@ if test "$wxUSE_MAC" = 1; then AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez) AC_CHECK_PROG(DEREZ, DeRez, DeRez, /Developer/Tools/DeRez) MACOSX_BUNDLE="bundle" - if test "$wxUSE_SHARED" = "yes"; then - dnl resources are bundled with shared library, not with applications - LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r -o \$(BIN_PROGRAM)" - LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r -o" - else - dnl resources are bundled with applications, not with static library - LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r ${LIBWXMACRES} -o \$(BIN_PROGRAM)" - LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r \${prefix}/lib/${WX_RESOURCES_MACOSX_ASCII} -o" - fi + dnl resources are bundled both with shared library and applications + dnl since the carb resource *must* be included in the application + LIBWXMACRESCOMP="\$(RESCOMP) -t APPL Carbon.r ${LIBWXMACRES} -o \$(BIN_PROGRAM)" + LIBWXMACRESWXCONFIG="${RESCOMP} -t APPL Carbon.r \${prefix}/lib/${WX_RESOURCES_MACOSX_ASCII} -o" else if test "$wxUSE_PM" = 1; then LIBWXMACRESCOMP="emxbind -ep \$(BIN_PROGRAM)" @@ -2933,120 +3143,32 @@ else 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 - #include - ], [ - 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 - #include - ], [ - 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 ], + [&_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 - #include - ], [ - 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 -if test "$wxUSE_UNICODE" = yes; then - dnl look if we have wide char IO functions - AC_CHECK_FUNCS(fputwc wprintf vswprintf) -fi dnl the following tests are for Unix(like) systems only if test "$TOOLKIT" != "MSW"; then @@ -3093,9 +3215,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) @@ -3129,37 +3248,85 @@ AC_CACHE_CHECK(for statfs, wx_cv_func_statfs, ) if test "$wx_cv_func_statfs" = "yes"; then + wx_cv_type_statvfs_t="struct statfs" AC_DEFINE(HAVE_STATFS) else AC_CACHE_CHECK(for statvfs, wx_cv_func_statvfs, AC_TRY_COMPILE( [ - #include + #include + #include ], [ - long l; - struct statvfs fs; - statvfs("/", &fs); - l = fs.f_bsize; - l += fs.f_blocks; - l += fs.f_bavail; + statvfs("/", NULL); ], - [ - wx_cv_func_statvfs=yes - ], - [ - wx_cv_func_statvfs=no - ] + wx_cv_func_statvfs=yes, + wx_cv_func_statvfs=no ) ) if test "$wx_cv_func_statvfs" = "yes"; then - AC_DEFINE(HAVE_STATVFS) + dnl we also have to check whether we should use statvfs_t (works under + dnl Solaris 8, doesn't work under Solaris 7) or "struct statvfs" (vice + dnl versa) as the argument for statvfs in 64 bit off_t mode (in 32 bit + dnl mode both work fine) + dnl + dnl for this check C++ compiler has to be used as passing incompatible + dnl pointers is just a warning and not an error in C + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + AC_CACHE_CHECK(for statvfs argument type, wx_cv_type_statvfs_t, + AC_TRY_COMPILE( + [ + #include + ], + [ + long l; + statvfs_t fs; + statvfs("/", &fs); + l = fs.f_bsize; + l += fs.f_blocks; + l += fs.f_bavail; + ], + wx_cv_type_statvfs_t=statvfs_t, + [ + AC_TRY_COMPILE( + [ + #include + ], + [ + long l; + statvfs_t fs; + statvfs("/", &fs); + l = fs.f_bsize; + l += fs.f_blocks; + l += fs.f_bavail; + ], + wx_cv_type_statvfs_t="struct statvfs", + wx_cv_type_statvfs_t="unknown" + ) + ] + ) + ) + + AC_LANG_RESTORE + + if test "$wx_cv_type_statvfs_t" != "unknown"; then + AC_DEFINE(HAVE_STATVFS) + fi else - AC_MSG_WARN([wxGetDiskSpace() function won't work without statfs()]) + dnl set it for the test below + wx_cv_type_statvfs_t="unknown" fi fi +if test "$wx_cv_type_statvfs_t" != "unknown"; then + AC_DEFINE_UNQUOTED(WX_STATFS_T, $wx_cv_type_statvfs_t) +else + AC_MSG_WARN([wxGetDiskSpace() function won't work without statfs()]) +fi + dnl check for fcntl() or at least flock() needed by Unix implementation of dnl wxSingleInstanceChecker if test "$wxUSE_SNGLINST_CHECKER" = "yes"; then @@ -3186,7 +3353,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 @@ -3267,10 +3434,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 @@ -3286,10 +3453,7 @@ if test "$TOOLKIT" != "MSW"; then THREADS_CFLAGS= if test "$wxUSE_THREADS" = "yes" ; then - if test "$wxUSE_WINE" = 1 ; then - AC_MSG_WARN([Threads are not supported under WINE... disabled]) - wxUSE_THREADS="no" - elif test "$USE_BEOS" = 1; then + if test "$USE_BEOS" = 1; then AC_MSG_WARN([BeOS threads are not yet supported... disabled]) wxUSE_THREADS="no" fi @@ -3386,14 +3550,28 @@ if test "$TOOLKIT" != "MSW"; then else dnl yes, these special compiler flags should be used with the dnl linker as well - LIBS="$THREADS_LINK $THREADS_CFLAGS $LIBS" + LDFLAGS="$THREADS_CFLAGS $LDFLAGS" + LIBS="$THREADS_LINK $LIBS" AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host}" in - *-aix* | *-freebsd*) + *-aix*) + dnl again quoting from + dnl http://www-1.ibm.com/servers/esdd/articles/gnu.html: + dnl + dnl When compiling and linking with -pthread, the library + dnl search path should include -L/usr/lib/threads at the + dnl beginning of the path. + LDFLAGS="-L/usr/lib/threads $LDFLAGS" + flag="-D_THREAD_SAFE" + ;; + *-freebsd*) flag="-D_THREAD_SAFE" ;; + *-hp-hpux* ) + flag="-D_REENTRANT" + ;; *solaris* | alpha*-osf*) flag="-D_REENTRANT" ;; @@ -3527,6 +3705,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 @@ -3621,11 +3828,19 @@ if test "$GCC" = "yes" ; then 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 As of wx2.4 a bug in the hppa gcc compiler causes a similar problem + dnl without -ffunction-sections. No idea how long we'll need to maintain + dnl this, or even the extent of gcc/wx version combinations affected, but + dnl also as above, this 'fix' does not come without side effects. + dnl dnl TODO: test for the gcc version here (how?) case "${host}" in powerpc*-*-aix* ) CODE_GEN_FLAGS="$CODE_GEN_FLAGS -mminimal-toc" ;; + *-hppa* ) + CODE_GEN_FLAGS="$CODE_GEN_FLAGS -ffunction-sections" + ;; esac fi @@ -3967,7 +4182,7 @@ 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 "$wxUSE_MGL" = "1"; then AC_MSG_WARN([wxSocket not yet supported under MGL... disabled]) @@ -4234,7 +4449,7 @@ fi if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then -dnl There is now experimental generic MDI support +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 @@ -4285,14 +4500,18 @@ fi if test "$wxUSE_PROLOGIO" = "yes" ; then AC_DEFINE(wxUSE_PROLOGIO) + ALL_OBJECTS="$ALL_OBJECTS parser.o" fi if test "$wxUSE_RESOURCES" = "yes" ; then if test "$wxUSE_NANOX" = "yes"; then AC_MSG_WARN([Cannot use resource database functions in NanoX]) - else - AC_DEFINE(wxUSE_RESOURCES) - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + else + AC_DEFINE(wxUSE_RESOURCES) + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + fi + if test "$wxUSE_PROLOGIO" != "yes" ; then + ALL_OBJECTS="$ALL_OBJECTS parser.o" fi fi @@ -4308,13 +4527,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 + #include ], + [], + [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) @@ -4328,6 +4558,7 @@ 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 @@ -4557,12 +4788,8 @@ if test "$wxUSE_STATTEXT" = "yes"; then fi if test "$wxUSE_STATLINE" = "yes"; then - if test "$wxUSE_WINE" = 1 ; then - AC_MSG_WARN([wxStaticLine is not supported under WINE]) - else - AC_DEFINE(wxUSE_STATLINE) - USES_CONTROLS=1 - fi + AC_DEFINE(wxUSE_STATLINE) + USES_CONTROLS=1 fi if test "$wxUSE_STATUSBAR" = "yes"; then @@ -4626,14 +4853,10 @@ if test "$wxUSE_TOOLTIPS" = "yes"; then if test "$wxUSE_MOTIF" = 1; then AC_MSG_WARN([wxTooltip not supported yet under Motif... disabled]) else - if test "$wxUSE_WINE" = 1; then - AC_MSG_WARN([wxTooltip not supported under WINE... disabled]) + if test "$wxUSE_UNIVERSAL" = "yes"; then + AC_MSG_WARN([wxTooltip not supported yet in wxUniversal... disabled]) else - if test "$wxUSE_UNIVERSAL" = "yes"; then - AC_MSG_WARN([wxTooltip not supported yet in wxUniversal... disabled]) - else - AC_DEFINE(wxUSE_TOOLTIPS) - fi + AC_DEFINE(wxUSE_TOOLTIPS) fi fi fi @@ -4909,7 +5132,48 @@ dnl FIXME: should this be covered by the conditional above dnl given the -lm comment there? Or should that comment (and dnl this one) be removed.. [ 7 Nov 2001 ] -LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK -lm $LIBS" +LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK $LIBS" + +dnl Only add the -lm library if floating point functions cannot be used +dnl without it. This check is important on cygwin because of the bizarre +dnl way that they have organized functions into libraries. On cygwin, both +dnl libc.a and libm.a are symbolic links to a single lib libcygwin.a. This +dnl means that +dnl 1) linking with -lm is not necessary, and +dnl 2) linking with -lm is dangerous if the order of libraries is wrong +dnl In particular, if you compile any program with -mno-cygwin and link with +dnl -lm, it will crash instantly when it is run. This happens because the +dnl linker incorrectly links the Cygwin libm.a (==libcygwin.a), which replaces +dnl the ___main function instead of allowing it to be defined by +dnl /usr/lib/mingw/libmingw32.a as it should be. +dnl +dnl On MacOS X, this test will find that -lm is unnecessary and leave it out. +dnl +dnl Just check a few floating point functions. If they are all found without +dnl -lm, then we must not need -lm. +have_cos=0 +have_floor=0 +AC_CHECK_FUNCS(cos, have_cos=1) +AC_CHECK_FUNCS(floor, have_floor=1) +AC_MSG_CHECKING(if floating point functions link without -lm) +if test "$have_cos" = 1 -a "$have_floor" = 1; then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) + LIBS="$LIBS -lm" + # use different functions to avoid configure caching + have_sin=0 + have_ceil=0 + AC_CHECK_FUNCS(sin, have_sin=1) + AC_CHECK_FUNCS(ceil, have_ceil=1) + AC_MSG_CHECKING(if floating point functions link with -lm) + if test "$have_sin" = 1 -a "$have_ceil" = 1; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + # not sure we should warn the user, crash, etc. + fi +fi if test "$wxUSE_GUI" = "yes"; then @@ -4965,9 +5229,10 @@ 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 +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'` @@ -4994,6 +5259,7 @@ AC_SUBST(WX_MINOR_VERSION_NUMBER) AC_SUBST(WX_RELEASE_NUMBER) AC_SUBST(WX_LIBRARY_NAME_STATIC) AC_SUBST(WX_LIBRARY_NAME_SHARED) +AC_SUBST(WX_LIBRARY_BASENAME) AC_SUBST(WX_LIBRARY_IMPORTLIB) AC_SUBST(WX_TARGET_LIBRARY) AC_SUBST(WX_LIBRARY_LINK1) @@ -5021,12 +5287,15 @@ 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) dnl toolkit options AC_SUBST(USE_GUI) AC_SUBST(AFMINSTALL) +AC_SUBST(WIN32INSTALL) AC_SUBST(TOOLKIT) AC_SUBST(TOOLKIT_DIR) AC_SUBST(TOOLKIT_VPATH) @@ -5043,6 +5312,7 @@ 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) @@ -5060,10 +5330,12 @@ AC_SUBST(SAMPLES_SUBDIRS) dnl additional libraries and linker settings AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS_GL) +AC_SUBST(LDFLAGS_VERSIONING) AC_SUBST(LDFLAGS_EXE) AC_SUBST(OPENGL_LIBS) AC_SUBST(DMALLOC_LIBS) AC_SUBST(EXTRADEFS) +AC_SUBST(WX_VERSION_TAG) dnl additional resurces settings AC_SUBST(RESCOMP) @@ -5079,7 +5351,8 @@ AC_SUBST(LIBWXMACRES) AC_SUBST(LIBWXMACRESCOMP) AC_SUBST(LIBWXMACRESWXCONFIG) -dnl These seem to be missing +dnl other tools +AC_SUBST(GCC) AC_SUBST(DLLTOOL) AC_SUBST(AS) AC_SUBST(NM) @@ -5110,9 +5383,18 @@ wx_cv_program_ext=$PROGRAM_EXT wx_cv_target_library=$WX_TARGET_LIBRARY wx_cv_target_library_gl=$WX_TARGET_LIBRARY_GL wx_cv_target_libtype=$WX_TARGET_LIBRARY_TYPE +wx_cv_library_basename=${WX_LIBRARY_BASENAME} +wx_cv_release=${WX_RELEASE} +wx_cv_current=${WX_CURRENT} +wx_cv_revision=${WX_REVISION} +wx_cv_age=${WX_AGE} +wx_cv_use_gui=${USE_GUI} +wx_cv_use_resources=${wxUSE_RESOURCES} export wx_cv_path_samplesubdirs wx_cv_if_gnu_make \ wx_cv_path_ifs wx_cv_program_ext \ - wx_cv_target_library wx_cv_target_library_gl wx_cv_target_libtype + wx_cv_target_library wx_cv_target_library_gl wx_cv_target_libtype \ + wx_cv_library_basename wx_cv_release wx_cv_current wx_cv_revision wx_cv_age \ + wx_cv_use_gui wx_cv_use_resources AC_CONFIG_SUBDIRS(demos samples utils contrib) @@ -5121,6 +5403,7 @@ dnl (the original file name may be overriden by appending another name after a dnl colon) AC_OUTPUT([ wx-config + version-script src/make.env src/makeprog.env src/makelib.env @@ -5165,4 +5448,27 @@ AC_OUTPUT([ ] ) -dnl vi: set et sts=4 sw=4: +dnl report on what we decided to do +echo +echo "Configured wxWindows ${WX_VERSION} for \`${host}'" +echo "" +echo " Which GUI toolkit should wxWindows use? ${TOOLKIT:-base only}" + +echo " Should wxWindows be compiled in debug mode? ${wxUSE_DEBUG:-no}" +echo " Should wxWindows be linked as a shared library? ${wxUSE_SHARED:-no}" +echo " Should wxWindows be compiled in Unicode mode? ${wxUSE_UNICODE:-no}" + +echo " What level of wxWindows compatibility should be enabled?" +echo " wxWindows 2.0 ${WXWIN_COMPATIBILITY_2:-no}" +echo " wxWindows 2.2 ${WXWIN_COMPATIBILITY_2_2:-yes}" + +echo " Which libraries should wxWindows use?" +echo " jpeg ${wxUSE_LIBJPEG-none}" +echo " png ${wxUSE_LIBPNG-none}" +echo " regex ${wxUSE_REGEX}" +echo " tiff ${wxUSE_LIBTIFF-none}" +echo " zlib ${wxUSE_ZLIB}" + +echo "" + +dnl vi: set et sts=4 sw=4 com=\:dnl: