X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/52127426a14176f9e12608952c5dc6ea9a2b6bd4..eb22f2a6dc1d8cafc91482b6ba45df86fc54f626:/configure.in diff --git a/configure.in b/configure.in index e82e69e7df..aa62bad3ac 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 @@ -187,15 +187,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 +224,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 +260,6 @@ case "${host}" in AC_DEFINE(__EMX__) PROGRAM_EXT=".exe" DEFAULT_DEFAULT_wxUSE_PM=1 - LIBS="$LIBS -lstdcpp" ;; powerpc-*-darwin* ) @@ -354,6 +356,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 +531,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 +555,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 @@ -656,8 +662,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,7 +694,7 @@ AC_ARG_WITH(microwin, [ --with-microwin use MicroWindows], [wxUSE_ 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) @@ -712,8 +718,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 +741,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 +762,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 +1043,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" ;; *) @@ -1094,10 +1104,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_ values too @@ -1124,7 +1134,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 @@ -1196,7 +1205,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 +1339,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 ------------------------------------------------------------------------ @@ -1357,10 +1387,6 @@ if test "$ac_cv_header_wchar_h" != "yes"; then 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) @@ -1400,6 +1426,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 @@ -1411,6 +1444,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 @@ -1431,7 +1468,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 + ] ) ]) @@ -1440,6 +1486,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 @@ -1457,10 +1517,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! @@ -1527,9 +1586,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` " @@ -1640,13 +1697,61 @@ 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: test if we have any zlib.h + 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 @@ -1685,23 +1790,45 @@ 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 if we have any 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 @@ -1778,15 +1905,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 @@ -1812,6 +1948,7 @@ dnl search for toolkit (widget sets) dnl ---------------------------------------------------------------- AFMINSTALL= +WIN32INSTALL= TOOLKIT= TOOLKIT_INCLUDE= @@ -1867,6 +2004,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 @@ -1909,17 +2059,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 @@ -1942,6 +2092,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 @@ -1970,6 +2121,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" @@ -1996,7 +2158,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 @@ -2115,6 +2277,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 @@ -2157,13 +2350,15 @@ 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" TOOLKIT=MSW GUIDIST=MSW_DIST - TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXWINE__" + TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WINE__" fi if test "$wxUSE_MOTIF" = 1; then @@ -2175,15 +2370,19 @@ 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 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( [ @@ -2208,16 +2407,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 @@ -2235,6 +2435,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 @@ -2244,10 +2446,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 @@ -2267,6 +2473,8 @@ 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 AC_MSG_CHECKING([if we need -lXp and/or -lSM -lICE]) @@ -2276,9 +2484,12 @@ 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 + CFLAGS="$CFLAGS $TOOLKIT_INCLUDE" + AC_TRY_LINK( [ #include @@ -2298,7 +2509,9 @@ equivalent variable and GTK+ is version 1.2.3 or above. libs_found=1 ], [] ) + LIBS="$save_LIBS" + CFLAGS=$save_CFLAGS fi done fi @@ -2316,16 +2529,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 @@ -2334,6 +2540,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 @@ -2510,8 +2721,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}" @@ -2521,6 +2734,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}" @@ -2553,12 +2767,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 @@ -2607,14 +2833,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" @@ -2675,29 +2906,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" @@ -2705,12 +2942,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 ;; @@ -2720,9 +2957,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* ) @@ -2769,6 +3012,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 @@ -2779,15 +3028,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)" @@ -2891,157 +3135,62 @@ 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 *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 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 check for vsnprintf() -- a safe version of vsprintf()) +AC_CHECK_FUNCS(vsnprintf) -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 - ]) - ]) -]) - -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 dnl the following tests are for Unix(like) systems only if test "$TOOLKIT" != "MSW"; then @@ -3088,9 +3237,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) @@ -3124,37 +3270,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 - ], - [ - long l; - struct statvfs fs; - statvfs("/", &fs); - l = fs.f_bsize; - l += fs.f_blocks; - l += fs.f_bavail; + #include + #include ], [ - wx_cv_func_statvfs=yes + statvfs("/", NULL); ], - [ - 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 @@ -3181,7 +3375,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 @@ -3262,10 +3456,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 @@ -3381,14 +3575,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" ;; @@ -3522,6 +3730,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 @@ -3616,11 +3853,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 @@ -3962,7 +4207,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]) @@ -4228,15 +4473,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 @@ -4278,14 +4525,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 @@ -4301,13 +4552,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) @@ -4321,6 +4583,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 + #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)" + 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 @@ -4902,7 +5209,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 @@ -4915,7 +5263,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)" @@ -4958,9 +5306,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'` @@ -4987,6 +5336,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) @@ -5014,12 +5364,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) @@ -5036,6 +5389,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) @@ -5053,10 +5407,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) @@ -5072,7 +5428,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) @@ -5103,9 +5460,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) @@ -5114,6 +5480,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 @@ -5158,4 +5525,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: