X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6c657b5253095ad7e9a6d629ed3c1ccd1ab75e01..ac9b5f98890276181638271f9691735b36f4db77:/configure.in diff --git a/configure.in b/configure.in index 21099a736f..1546cc42e2 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__) @@ -234,15 +235,10 @@ case "${host}" in ;; *-*-cygwin* | *-*-mingw32* ) - USE_UNIX=0 - USE_WIN32=1 + dnl MBN: some of the defines have been moved after toolkit detection + dnl because for wxMotif/wxGTK/wxX11 to build on Cygwin + dnl USE_UNIX must be set and not USE_WIN32 SO_SUFFIX=dll - AC_DEFINE(__WIN32__) - AC_DEFINE(__WIN95__) - AC_DEFINE(__WINDOWS__) - AC_DEFINE(__GNUWIN32__) - AC_DEFINE(STRICT) - AC_DEFINE(WINVER, 0x0400) PROGRAM_EXT=".exe" RESCOMP=windres DEFAULT_DEFAULT_wxUSE_MSW=1 @@ -254,13 +250,14 @@ case "${host}" in AC_DEFINE(__DOS__) PROGRAM_EXT=".exe" DEFAULT_DEFAULT_wxUSE_MGL=1 + dnl DJGPP needs explicit -lstdc++ for some reason (VS: mayb some versions only?) + LIBS="$LIBS -lstdc++" ;; *-pc-os2_emx | *-pc-os2-emx ) AC_DEFINE(__EMX__) PROGRAM_EXT=".exe" DEFAULT_DEFAULT_wxUSE_PM=1 - LIBS="$LIBS -lstdcpp" ;; powerpc-*-darwin* ) @@ -271,6 +268,7 @@ case "${host}" in AC_DEFINE(__BSD__) AC_DEFINE(__DARWIN__) AC_DEFINE(__POWERPC__) + AC_DEFINE(TARGET_CARBON) DEFAULT_DEFAULT_wxUSE_MAC=1 ;; @@ -284,11 +282,6 @@ case "${host}" in AC_MSG_ERROR(unknown system type ${host}.) esac -if test "$USE_UNIX" = 1 ; then - wxUSE_UNIX=yes - AC_DEFINE(__UNIX__) -fi - dnl --------------------------------------------------------------------------- dnl command line options for configure dnl --------------------------------------------------------------------------- @@ -362,6 +355,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 @@ -400,7 +395,7 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_PROTOCOL_FTP=no DEFAULT_wxUSE_PROTOCOL_FILE=no DEFAULT_wxUSE_URL=no - + DEFAULT_wxUSE_COMMONDLGS=no DEFAULT_wxUSE_CHOICEDLG=no DEFAULT_wxUSE_COLOURDLG=no @@ -535,6 +530,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 @@ -557,8 +554,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 @@ -664,8 +661,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 +685,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]) @@ -696,7 +693,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) @@ -720,8 +717,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 @@ -743,7 +740,15 @@ 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, [ --enable-compat22 enable wxWindows 2.2 compatibility], WXWIN_COMPATIBILITY_2_2) +WX_ARG_ENABLE(compat24, [ --disable-compat24 disable wxWindows 2.4 compatibility], WXWIN_COMPATIBILITY_2_4, disable) + +AC_ARG_ENABLE(rpath, [ --enable-rpath=DIR output the rpath flag from wx-config], [wxRPATH_DIR="$enableval"]) + +if test "$wxRPATH_DIR" != "" -a "$wxRPATH_DIR" != "disable"; then + WXCONFIG_RPATH="-Wl,-rpath -Wl,$wxRPATH_DIR" +fi + dnl --------------------------------------------------------------------------- dnl (small) optional non GUI classes @@ -757,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) @@ -1036,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" ;; *) @@ -1055,6 +1064,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 @@ -1083,7 +1099,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 @@ -1095,10 +1111,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 @@ -1121,6 +1137,60 @@ else AC_MSG_RESULT(base ($host_alias hosted) only) fi +dnl --------------------------------------------------------------------------- +dnl When we are using Cygwin with Motif/GTK+, we want it to appear like +dnl 'just' a POSIX platform, so the Win32 API must not be available +dnl --------------------------------------------------------------------------- +dnl (Windows-only piece) +wants_win32=0 +doesnt_want_win32=0 +case "${host}" in + *-*-cygwin*) + if test "$wxUSE_MSW" = 1 ; then + wants_win32=1 + else + doesnt_want_win32=1 + fi + ;; + *-*-mingw*) + wants_win32=1 + ;; +esac + +dnl --------------------------------------------------------------------------- +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 + USE_UNIX=0 + USE_WIN32=1 + AC_DEFINE(__WIN32__) + AC_DEFINE(__WIN95__) + AC_DEFINE(__WINDOWS__) + AC_DEFINE(__GNUWIN32__) + AC_DEFINE(STRICT) + AC_DEFINE(WINVER, 0x0400) +fi +if test "$doesnt_want_win32" = 1 ; then + USE_UNIX=1 + USE_WIN32=0 +fi +dnl (end of Windows-only piece) + +if test "$USE_UNIX" = 1 ; then + wxUSE_UNIX=yes + AC_DEFINE(__UNIX__) +fi + dnl --------------------------------------------------------------------------- dnl Checks for programs dnl --------------------------------------------------------------------------- @@ -1153,7 +1223,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 @@ -1193,7 +1263,7 @@ dnl make install path absolute (if not already); will fail with MSDOS paths case ${INSTALL} in /* ) # Absolute ;; - *) + *) INSTALL=`pwd`/${INSTALL} ;; esac @@ -1287,6 +1357,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 ------------------------------------------------------------------------ @@ -1314,10 +1405,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) @@ -1357,6 +1444,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 @@ -1368,6 +1462,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 @@ -1388,7 +1486,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 + ] ) ]) @@ -1397,6 +1504,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 @@ -1406,15 +1527,17 @@ WX_CPP_NEW_HEADERS(, AC_DEFINE(wxUSE_IOSTREAMH)) dnl check whether C++ compiler supports bool built-in type WX_CPP_BOOL +dnl check whether C++ compiler supports explicit keyword +WX_CPP_EXPLICIT + dnl --------------------------------------------------------------------------- dnl Define search path for includes and libraries: all headers and libs will be dnl looked for in all directories of this path 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! @@ -1481,9 +1604,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` " @@ -1497,7 +1618,7 @@ AC_CACHE_SAVE dnl check for glibc version dnl dnl VZ: I have no idea why had this check been there originally, but now -dnl it is only used to get the recursive mutexes under Linux +dnl we could probably do without it by just always adding _GNU_SOURCE if test "$USE_LINUX" = 1; then AC_CACHE_CHECK([for glibc 2.1 or later], wx_cv_lib_glibc21,[ AC_TRY_COMPILE([#include ], @@ -1519,6 +1640,20 @@ if test "$USE_LINUX" = 1; then fi fi +dnl we may need _GNU_SOURCE for 2 things: +dnl +dnl 1. to get PTHREAD_MUTEX_RECURSIVE with glibc 2.1+ (strictly speaking we +dnl only need _XOPEN_SOURCE=500 but just defining this disables _BSD_SOURCE +dnl which breaks libtiff compilation, so it is simpler to just define +dnl _GNU_SOURCE to get everything) +dnl +dnl 2. for Unicode functions +if test "x$wx_cv_lib_glibc21" = "xyes"; then + if test "$wxUSE_UNICODE" = "yes" -o "$wxUSE_THREADS" = "yes"; then + AC_DEFINE(_GNU_SOURCE) + fi +fi + dnl --------------------------------------------------------------------------- dnl Optional libraries dnl @@ -1580,13 +1715,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 @@ -1608,7 +1794,7 @@ PNG_INCLUDE= PNG_LINK= if test "$wxUSE_LIBPNG" != "no" ; then AC_DEFINE(wxUSE_LIBPNG) - + if test "$wxUSE_MGL" = 1 -a "$wxUSE_LIBPNG" = "builtin" ; then AC_MSG_WARN([wxMGL doesn't work with builtin png library, will use MGL one instead]) wxUSE_LIBPNG=sys @@ -1625,23 +1811,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 @@ -1718,15 +1927,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 @@ -1752,6 +1970,7 @@ dnl search for toolkit (widget sets) dnl ---------------------------------------------------------------- AFMINSTALL= +WIN32INSTALL= TOOLKIT= TOOLKIT_INCLUDE= @@ -1807,6 +2026,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 @@ -1823,12 +2055,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 @@ -1849,17 +2077,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 @@ -1882,6 +2110,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 @@ -1897,6 +2126,32 @@ equivalent variable and GTK+ is version 1.2.3 or above. ;; esac + if test "$WXGTK20" = 1; then + if test "$wxUSE_PRINTING_ARCHITECTURE" = "yes" ; then + PKG_CHECK_MODULES(PANGOFT2, pangoft2, + [ + CXXFLAGS="$CXXFLAGS $PANGOFT2_CFLAGS" + LIBS="$LIBS $PANGOFT2_LIBS" + ], + [ + AC_MSG_WARN([pangoft2 library not found, library will be compiled without printing support]) + wxUSE_PRINTING_ARCHITECTURE="no" + ] + ) + fi + 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" GUI_TK_LIBRARY="$wx_cv_libs_gtk" @@ -1909,7 +2164,7 @@ equivalent variable and GTK+ is version 1.2.3 or above. fi if test "$wxUSE_MGL" = 1; then - AC_MSG_CHECKING(for SciTech MGL library) + AC_MSG_CHECKING(for SciTech MGL library) if test "x$MGL_ROOT" = x ; then AC_MSG_RESULT(not found) AC_MSG_ERROR([Cannot find MGL library. Make sure MGL_ROOT is set.]) @@ -1917,36 +2172,52 @@ equivalent variable and GTK+ is version 1.2.3 or above. AC_MSG_RESULT($MGL_ROOT) fi + AC_MSG_CHECKING(for libmgl location) dnl Find MGL library that we want dnl FIXME_MGL - test for MGL variants for freebsd etc. case "${host}" in *-*-linux* ) - mgl_os=linux/gcc/glibc + if test "x$wxUSE_SHARED" = xyes ; then + mgl_os_candidates="linux/gcc/glibc.so linux/gcc/glibc" + else + mgl_os_candidates="linux/gcc/glibc linux/gcc/glibc.so" + fi ;; *-pc-msdosdjgpp ) - mgl_os=dos32/dj2 + mgl_os_candidates="dos32/dj2" ;; *) AC_MSG_ERROR(This system type ${host} is not yet supported by wxMGL.) esac mgl_lib_type="" - - if test "$wxUSE_DEBUG_FLAG" = yes ; then - if test -f $MGL_ROOT/lib/debug/$mgl_os/libmgl.a -o \ - -f $MGL_ROOT/lib/debug/$mgl_os/libmgl.so; then - mgl_lib_type=debug - fi - fi - if test "x$mgl_lib_type" = x ; then - if test -f $MGL_ROOT/lib/release/$mgl_os/libmgl.a -o \ - -f $MGL_ROOT/lib/release/$mgl_os/libmgl.so; then - mgl_lib_type=release - else - AC_MSG_ERROR([Cannot find MGL libraries, make sure they are compiled.]) + mgl_os="" + + for mgl_os_i in $mgl_os_candidates ; do + if test "x$mgl_os" = x ; then + if test "$wxUSE_DEBUG_FLAG" = yes ; then + if test -f $MGL_ROOT/lib/debug/$mgl_os_i/libmgl.a -o \ + -f $MGL_ROOT/lib/debug/$mgl_os_i/libmgl.so; then + mgl_lib_type=debug + mgl_os=$mgl_os_i + fi + fi + if test "x$mgl_lib_type" = x ; then + if test -f $MGL_ROOT/lib/release/$mgl_os_i/libmgl.a -o \ + -f $MGL_ROOT/lib/release/$mgl_os_i/libmgl.so; then + mgl_lib_type=release + mgl_os=$mgl_os_i + fi + fi fi - fi + done + if test "x$mgl_os" = x ; then + AC_MSG_RESULT(not found) + AC_MSG_ERROR([Cannot find MGL libraries, make sure they are compiled.]) + fi + AC_MSG_RESULT("$MGL_ROOT/lib/$mgl_lib_type/$mgl_os") + wxUSE_UNIVERSAL="yes" TOOLKIT_INCLUDE="-I$MGL_ROOT/include" @@ -2040,6 +2311,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 @@ -2055,42 +2357,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 @@ -2100,15 +2366,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( [ @@ -2133,16 +2403,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 @@ -2160,6 +2431,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 @@ -2169,10 +2442,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 @@ -2192,25 +2469,65 @@ 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]) + libp_link="" + libsm_ice_link="" + libs_found=0 + for libp in "" " -lXp"; do + if test "$libs_found" = "0"; then + for libsm_ice in " -lSM -lICE"; do + if test "$libs_found" = "0"; then + save_LIBS="$LIBS" + LIBS="$GUI_TK_LIBRARY -lXm${xpm_link} ${libp} -lXmu -lXext -lXt${libsm_ice} -lX11" + save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS $TOOLKIT_INCLUDE" + + AC_TRY_LINK( + [ + #include + #include + ], + [ + XmString string = NULL; + Widget w = NULL; + int position = 0; + XmListAddItem(w, string, position); + ], + [ + libp_link="$libp" + libsm_ice_link="$libsm_ice" + AC_MSG_RESULT( + [need${libp_link}${libsm_ice_link}]) + libs_found=1 + ], [] + ) + + LIBS="$save_LIBS" + CFLAGS=$save_CFLAGS + fi + done + fi + done + + if test "$libs_found" = "0"; then + AC_MSG_RESULT([can't find the right libraries]) + AC_MSG_ERROR([can't link a simple motif program]) fi - GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm$xpm_link -lXmu -lXext -lXt -lX11" + GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm$xpm_link${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11" TOOLKIT_VPATH="\${top_srcdir}/src/motif${PATH_IFS}\${top_srcdir}/src/motif/xmcombo" TOOLKIT=MOTIF GUIDIST=MOTIF_DIST fi if test "$wxUSE_MAC" = 1; then - if test "$wxUSE_PRECOMP" = "yes"; then - CPPFLAGS="$CPPFLAGS -cpp-precomp" - else - CPPFLAGS="$CPPFLAGS -no-cpp-precomp" - fi - CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon -I\${top_srcdir}/src/mac/morefile" - CFLAGS="$CFLAGS -fpascal-strings" - CXXFLAGS="$CXXFLAGS -fpascal-strings" + CPPFLAGS="$CPPFLAGS -fpascal-strings -I\${top_srcdir}/src/mac/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 @@ -2219,6 +2536,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 @@ -2395,8 +2717,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}" @@ -2406,6 +2730,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}" @@ -2426,7 +2751,7 @@ case "${host}" in dnl FIXME: is this GL stuff actually even used for wxMSW? should it be?? - if test "$cross_compiling" != "yes"; then + if test "$cross_compiling" != "yes" -a "$TOOLKIT_DIR" = "msw"; then WX_LIBRARY="wxmsw${WX_MSW_VERSION}${lib_unicode_suffix}${lib_debug_suffix}" WX_LIBRARY_GL="wxmsw_gl${WX_MSW_VERSION}${lib_unicode_suffix}${lib_debug_suffix}" WX_LIBRARY_NAME_SHARED="${WX_LIBRARY}.${SO_SUFFIX}" @@ -2438,12 +2763,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 @@ -2492,14 +2829,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" @@ -2560,29 +2902,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" @@ -2590,12 +2938,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 ;; @@ -2605,9 +2953,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* ) @@ -2654,8 +3008,18 @@ 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 +dnl default value is comment for makefile +MACRESCOMP="#" +MACSETFILE="#" +MACRESWXCONFIG="#" if test "$wxUSE_MAC" = 1; then dnl add the resources target for wxMac LIBWXMACRES="\$(top_builddir)/lib/${WX_RESOURCES_MACOSX_ASCII}" @@ -2663,19 +3027,16 @@ if test "$wxUSE_MAC" = 1; then WX_ALL_INSTALLED="${WX_ALL_INSTALLED} preinstall_res" AC_CHECK_PROG(RESCOMP, Rez, Rez, /Developer/Tools/Rez) AC_CHECK_PROG(DEREZ, DeRez, DeRez, /Developer/Tools/DeRez) + AC_CHECK_PROG(SETFILE, SetFile, SetFile, /Developer/Tools/SetFile) 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 + MACRESCOMP="\$(RESCOMP) -d __DARWIN__ -t APPL Carbon.r ${LIBWXMACRES} -o" + MACSETFILE="\$(SETFILE)" + MACRESWXCONFIG="${RESCOMP} -d __DARWIN__ -t APPL Carbon.r \$(top_builddir)/lib/${WX_RESOURCES_MACOSX_ASCII}} -o" else if test "$wxUSE_PM" = 1; then - LIBWXMACRESCOMP="emxbind -ep \$(BIN_PROGRAM)" + MACRESCOMP="emxbind -ep" fi fi @@ -2776,158 +3137,96 @@ 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()) +dnl +dnl the trouble here is that on some systems (notable HP-UX) this function is +dnl present in libc but not in the system headers and so AC_CHECK_FUNCS (which, +dnl stupidly, provides a dummy function declaration inside its extension) +dnl succeeds, even with C++ compiler, but the compilation of wxWindows fails +dnl +dnl so we first check if the function is in the library +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([ +if test "$ac_cv_func_vsnprintf" = "yes"; then + dnl yes it is -- now check if it is in the headers + AC_CACHE_CHECK([for vsnprintf declaration], wx_cv_func_vsnprintf_decl, + [ + AC_TRY_COMPILE( + [ #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 - ]) - ]) -]) + ], + [ + char *buf; + va_list ap; + vsnprintf(buf, 10u, "%s", ap); + ], + wx_cv_func_vsnprintf_decl=yes, + wx_cv_func_vsnprintf_decl=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 "$wx_cv_func_vsnprintf_decl" = "yes"; then + AC_DEFINE(HAVE_VSNPRINTF_DECL) + fi 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 - ]) -]) +if test "$wxUSE_UNICODE" = yes; then + dnl also look if we have wide char IO functions + AC_CHECK_FUNCS(fputwc wprintf vswprintf) -if test "$wx_cv_func_vsscanf" = yes; then - AC_DEFINE(HAVE_VSSCANF) + 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 +AC_LANG_RESTORE + + + dnl the following tests are for Unix(like) systems only if test "$TOOLKIT" != "MSW"; then @@ -2973,9 +3272,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) @@ -3009,37 +3305,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; + struct statvfs 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 @@ -3066,7 +3410,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 @@ -3147,10 +3491,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 @@ -3166,10 +3510,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 @@ -3204,8 +3545,9 @@ if test "$TOOLKIT" != "MSW"; then dnl and finally the userland threads THREAD_OPTS="-kthread lthread $THREAD_OPTS c_r" ;; - *-*-darwin*) + *-*-darwin* | *-*-cygwin* ) dnl Darwin / Mac OS X just uses -lpthread tested below + dnl and so does Cygwin THREAD_OPTS="" ;; *-*-aix*) @@ -3265,14 +3607,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" ;; @@ -3365,14 +3721,6 @@ if test "$TOOLKIT" != "MSW"; then dnl defined, we do it by directly assigned dnl PTHREAD_MUTEX_RECURSIVE_MUTEX_INITIALIZER_NP to attr - dnl we need _GNU_SOURCE to get PTHREAD_MUTEX_RECURSIVE with glibc 2.1+ - dnl (strictly speaking we only need _XOPEN_SOURCE=500 but just defining - dnl this disables _BSD_SOURCE which breaks libtiff compilation, so it is - dnl simpler to just define _GNU_SOURCE to get everything) - if test "x$wx_cv_lib_glibc21" = "xyes"; then - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - fi - AC_CACHE_CHECK([for pthread_mutexattr_t], wx_cv_type_pthread_mutexattr_t, [ AC_TRY_COMPILE([#include ], @@ -3414,6 +3762,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 @@ -3508,11 +3885,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 @@ -3531,14 +3916,24 @@ else fi fi +dnl --------------------------------------------------------------------------- +dnl compatibility level +dnl --------------------------------------------------------------------------- + if test "$WXWIN_COMPATIBILITY_2" = "yes"; then AC_DEFINE(WXWIN_COMPATIBILITY_2) WXWIN_COMPATIBILITY_2_2="yes" fi -if test "x$WXWIN_COMPATIBILITY_2_2" != "xno"; then +if test "x$WXWIN_COMPATIBILITY_2_2" = "xyes"; then AC_DEFINE(WXWIN_COMPATIBILITY_2_2) + + WXWIN_COMPATIBILITY_2_4="yes" +fi + +if test "x$WXWIN_COMPATIBILITY_2_4" != "xno"; then + AC_DEFINE(WXWIN_COMPATIBILITY_2_4) fi dnl --------------------------------------------------------------------------- @@ -3854,13 +4249,8 @@ 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_X11" = "1"; then - AC_MSG_WARN([wxSocket not yet supported under X11... disabled]) - wxUSE_SOCKETS="no" - fi - if test "$wxUSE_MGL" = "1"; then AC_MSG_WARN([wxSocket not yet supported under MGL... disabled]) wxUSE_SOCKETS="no" @@ -4069,7 +4459,7 @@ fi if test "$wxUSE_UNICODE" = "yes" ; then AC_DEFINE(wxUSE_UNICODE) - + if test "$wxUSE_MSW" != 1; then wxUSE_UNICODE_MSLU=no fi @@ -4125,15 +4515,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 @@ -4175,14 +4567,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 @@ -4198,13 +4594,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) @@ -4218,6 +4625,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 @@ -4447,12 +4855,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 @@ -4516,14 +4920,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 @@ -4547,7 +4947,7 @@ if test "$wxUSE_POPUPWIN" = "yes"; then else if test "$wxUSE_PM" = 1; then AC_MSG_WARN([wxPopupWindow not yet supported under PM... disabled]) - else + else AC_DEFINE(wxUSE_POPUPWIN) USES_CONTROLS=1 @@ -4559,7 +4959,7 @@ fi if test "$wxUSE_TIPWINDOW" = "yes"; then if test "$wxUSE_PM" = 1; then AC_MSG_WARN([wxTipWindow not yet supported under PM... disabled]) - else + else AC_DEFINE(wxUSE_TIPWINDOW) fi fi @@ -4782,6 +5182,9 @@ fi AC_DEFINE_UNQUOTED(wxINSTALL_PREFIX, "$wxPREFIX") +dnl define the variables used in wx-config +top_builddir=`pwd` + dnl --------------------------------------------------------------------------- dnl Output the makefiles and such from the results found above dnl --------------------------------------------------------------------------- @@ -4799,7 +5202,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 @@ -4812,7 +5256,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)" @@ -4855,11 +5299,12 @@ if test "$GXX" = yes ; then fi fi -EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE $INCLUDES" +EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE" dnl remove the extra white space from the cc/c++/ld options -CFLAGS=`echo $CFLAGS $EXTRA_CFLAGS $CXXWARNINGS | sed 's/ \\+/ /g'` -CXXFLAGS=`echo $CXXFLAGS $EXTRA_CFLAGS $CXXWARNINGS | sed 's/ \+/ /g'` +CPPFLAGS=`echo $INCLUDES $CPPFLAGS | sed 's/ \\+/ /g'` +CFLAGS=`echo $EXTRA_CFLAGS $CFLAGS $CXXWARNINGS | sed 's/ \\+/ /g'` +CXXFLAGS=`echo $EXTRA_CFLAGS $CXXFLAGS $CXXWARNINGS | sed 's/ \+/ /g'` LIBS=`echo $LIBS | sed 's/ \+/ /g'` LDFLAGS="$LDFLAGS $PROFILE" @@ -4884,6 +5329,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) @@ -4911,12 +5357,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) @@ -4925,6 +5374,7 @@ AC_SUBST(TOOLCHAIN_DEFS) AC_SUBST(TOOLCHAIN_DLL_DEFS) dnl wx-config options +AC_SUBST(top_builddir) AC_SUBST(host_alias) AC_SUBST(cross_compiling) AC_SUBST(WXCONFIG_LIBS) @@ -4932,6 +5382,8 @@ AC_SUBST(WXCONFIG_LIBS_GL) AC_SUBST(WXCONFIG_LIBS_STATIC) AC_SUBST(WXCONFIG_LIBS_STATIC_GL) AC_SUBST(WXCONFIG_INCLUDE) +AC_SUBST(WXCONFIG_RPATH) +AC_SUBST(WX_LARGEFILE_FLAGS) dnl the list of files to compile/install AC_SUBST(ALL_OBJECTS) @@ -4949,10 +5401,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) @@ -4965,10 +5419,12 @@ dnl additional for Mac OS X AC_SUBST(DEREZ) AC_SUBST(MACOSX_BUNDLE) AC_SUBST(LIBWXMACRES) -AC_SUBST(LIBWXMACRESCOMP) -AC_SUBST(LIBWXMACRESWXCONFIG) +AC_SUBST(MACRESCOMP) +AC_SUBST(MACSETFILE) +AC_SUBST(MACRESWXCONFIG) -dnl These seem to be missing +dnl other tools +AC_SUBST(GCC) AC_SUBST(DLLTOOL) AC_SUBST(AS) AC_SUBST(NM) @@ -4999,9 +5455,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) @@ -5010,6 +5475,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 @@ -5054,4 +5520,28 @@ 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:-no}" +echo " wxWindows 2.4 ${WXWIN_COMPATIBILITY_2_4:-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: