X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c7206e642459697310df2051e76068307584aa14..6d9022fe3bb50a75b9b5eaf5cf32558e518ba310:/configure.in?ds=sidebyside diff --git a/configure.in b/configure.in index 1e5be7dee3..d4fae38dc0 100644 --- a/configure.in +++ b/configure.in @@ -11,323 +11,6 @@ dnl dnl Version: $Id$ dnl --------------------------------------------------------------------------- -dnl =========================================================================== -dnl macros to find the a file in the list of include/lib paths -dnl =========================================================================== - -dnl --------------------------------------------------------------------------- -dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes -dnl to the full name of the file that was found or leaves it empty if not found -dnl --------------------------------------------------------------------------- -AC_DEFUN([WX_PATH_FIND_INCLUDES], -[ -ac_find_includes= -for ac_dir in $1; - do - if test -f "$ac_dir/$2"; then - ac_find_includes=$ac_dir - break - fi - done -]) - -dnl --------------------------------------------------------------------------- -dnl call WX_PATH_FIND_LIBRARIES(search path, header name), sets ac_find_libraries -dnl to the full name of the file that was found or leaves it empty if not found -dnl --------------------------------------------------------------------------- -AC_DEFUN([WX_PATH_FIND_LIBRARIES], -[ -ac_find_libraries= -for ac_dir in $1; - do - for ac_extension in a so sl dylib; do - if test -f "$ac_dir/lib$2.$ac_extension"; then - ac_find_libraries=$ac_dir - break 2 - fi - done - done -]) - -dnl --------------------------------------------------------------------------- -dnl Path to include, already defined -dnl --------------------------------------------------------------------------- -AC_DEFUN([WX_INCLUDE_PATH_EXIST], -[ - ac_path_to_include=$1 - echo "$2" | grep "\-I$1" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_include="" - else - ac_path_to_include=" -I$1" - fi -]) - -dnl --------------------------------------------------------------------------- -dnl Path to link, already defined -dnl --------------------------------------------------------------------------- -AC_DEFUN([WX_LINK_PATH_EXIST], -[ - echo "$2" | grep "\-L$1" > /dev/null - result=$? - if test $result = 0; then - ac_path_to_link="" - else - ac_path_to_link=" -L$1" - fi -]) - -dnl =========================================================================== -dnl C++ features test -dnl =========================================================================== - -dnl --------------------------------------------------------------------------- -dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" header -dnl or only the old one - it may be generally assumed that if -dnl exists, the other "new" headers (without .h) exist too. -dnl -dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling) -dnl --------------------------------------------------------------------------- - -AC_DEFUN([WX_CPP_NEW_HEADERS], -[ - if test "$cross_compiling" = "yes"; then - ifelse([$2], , :, [$2]) - else - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - - AC_CHECK_HEADERS(iostream) - - if test "$ac_cv_header_iostream" = "yes" ; then - ifelse([$1], , :, [$1]) - else - ifelse([$2], , :, [$2]) - fi - - AC_LANG_RESTORE - fi -]) - -dnl --------------------------------------------------------------------------- -dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type -dnl -dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool -dnl --------------------------------------------------------------------------- - -AC_DEFUN([WX_CPP_BOOL], -[ - AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool, - [ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - - AC_TRY_COMPILE( - [ - ], - [ - bool b = true; - - return 0; - ], - [ - wx_cv_cpp_bool=yes - ], - [ - wx_cv_cpp_bool=no - ] - ) - - AC_LANG_RESTORE - ]) - - if test "$wx_cv_cpp_bool" = "yes"; then - AC_DEFINE(HAVE_BOOL) - fi -]) - -dnl --------------------------------------------------------------------------- -dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling -dnl --------------------------------------------------------------------------- - -AC_DEFUN([WX_C_BIGENDIAN], -[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian, -[ac_cv_c_bigendian=unknown -# See if sys/param.h defines the BYTE_ORDER macro. -AC_TRY_COMPILE([#include -#include ], [ -#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN - bogus endian macros -#endif], [# It does; now see whether it defined to BIG_ENDIAN or not. -AC_TRY_COMPILE([#include -#include ], [ -#if BYTE_ORDER != BIG_ENDIAN - not big endian -#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)]) -if test $ac_cv_c_bigendian = unknown; then -AC_TRY_RUN([main () { - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long l; - char c[sizeof (long)]; - } u; - u.l = 1; - exit (u.c[sizeof (long) - 1] == 1); -}], [ac_cv_c_bigendian=no], [ac_cv_c_bigendian=yes], [ac_cv_c_bigendian=unknown]) -fi]) -if test $ac_cv_c_bigendian = unknown; then - AC_MSG_WARN([Assuming little-endian target machine - this may be overriden by adding the line "ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}" to config.cache file]) -fi -if test $ac_cv_c_bigendian = yes; then - AC_DEFINE(WORDS_BIGENDIAN) -fi -]) - -dnl --------------------------------------------------------------------------- -dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file -dnl --------------------------------------------------------------------------- - -AC_DEFUN([WX_ARG_CACHE_INIT], - [ - wx_arg_cache_file="configarg.cache" - echo "loading argument cache $wx_arg_cache_file" - rm -f ${wx_arg_cache_file}.tmp - touch ${wx_arg_cache_file}.tmp - touch ${wx_arg_cache_file} - ]) - -AC_DEFUN([WX_ARG_CACHE_FLUSH], - [ - echo "saving argument cache $wx_arg_cache_file" - mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file} - ]) - -dnl this macro checks for a three-valued command line --with argument: -dnl possible arguments are 'yes', 'no', 'sys', or 'builtin' -dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name) -AC_DEFUN([WX_ARG_SYS_WITH], - [ - AC_MSG_CHECKING([for --with-$1]) - no_cache=0 - AC_ARG_WITH($1, [$2], - [ - if test "$withval" = yes; then - ac_cv_use_$1='$3=yes' - elif test "$withval" = no; then - ac_cv_use_$1='$3=no' - elif test "$withval" = sys; then - ac_cv_use_$1='$3=sys' - elif test "$withval" = builtin; then - ac_cv_use_$1='$3=builtin' - else - AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin]) - fi - ], - [ - LINE=`grep "$3" ${wx_arg_cache_file}` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - else - no_cache=1 - fi - - ac_cv_use_$1='$3='$DEFAULT_$3 - ]) - - eval "$ac_cv_use_$1" - if test "$no_cache" != 1; then - echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp - fi - - if test "$$3" = yes; then - AC_MSG_RESULT(yes) - elif test "$$3" = no; then - AC_MSG_RESULT(no) - elif test "$$3" = sys; then - AC_MSG_RESULT([system version]) - elif test "$$3" = builtin; then - AC_MSG_RESULT([builtin version]) - else - AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no, sys, or builtin]) - fi - ]) - -dnl this macro checks for a command line argument and caches the result -dnl usage: WX_ARG_WITH(option, helpmessage, variable-name) -AC_DEFUN([WX_ARG_WITH], - [ - AC_MSG_CHECKING([for --with-$1]) - no_cache=0 - AC_ARG_WITH($1, [$2], - [ - if test "$withval" = yes; then - ac_cv_use_$1='$3=yes' - else - ac_cv_use_$1='$3=no' - fi - ], - [ - LINE=`grep "$3" ${wx_arg_cache_file}` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - else - no_cache=1 - fi - - ac_cv_use_$1='$3='$DEFAULT_$3 - ]) - - eval "$ac_cv_use_$1" - if test "$no_cache" != 1; then - echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp - fi - - if test "$$3" = yes; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - ]) - -dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH -dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name) -AC_DEFUN([WX_ARG_ENABLE], - [ - AC_MSG_CHECKING([for --enable-$1]) - no_cache=0 - AC_ARG_ENABLE($1, [$2], - [ - if test "$enableval" = yes; then - ac_cv_use_$1='$3=yes' - else - ac_cv_use_$1='$3=no' - fi - ], - [ - LINE=`grep "$3" ${wx_arg_cache_file}` - if test "x$LINE" != x ; then - eval "DEFAULT_$LINE" - else - no_cache=1 - fi - - ac_cv_use_$1='$3='$DEFAULT_$3 - ]) - - eval "$ac_cv_use_$1" - if test "$no_cache" != 1; then - echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp - fi - - if test "$$3" = yes; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - ]) - dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- @@ -413,13 +96,10 @@ dnl _REENTRANT" and it's easier to just define this symbol for these platforms dnl than checking it during run-time NEEDS_D_REENTRANT_FOR_R_FUNCS=0 -dnl the additional define needed for MT programs -CPP_MT_FLAG=-D_REENTRANT - 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" +ALL_TOOLKITS="GTK MAC MGL MICROWIN MOTIF MSW PM WINE 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 @@ -431,6 +111,7 @@ 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 - dnl they're not cached and are only used if no --with-toolkit was given *and* @@ -443,6 +124,7 @@ 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= SO_SUFFIX=so @@ -498,7 +180,6 @@ case "${host}" in *-*-freebsd*) USE_BSD=1 USE_FREEBSD=1 - CPP_MT_FLAG=-D_THREAD_SAFE AC_DEFINE(__FREEBSD__) AC_DEFINE(__BSD__) DEFAULT_DEFAULT_wxUSE_GTK=1 @@ -570,20 +251,19 @@ case "${host}" in AC_DEFINE(__DOS__) PROGRAM_EXT=".exe" DEFAULT_DEFAULT_wxUSE_MGL=1 - DEFAULT_DEFAULT_wxUSE_SHARED=0 ;; *-pc-os2_emx | *-pc-os2-emx ) AC_DEFINE(__EMX__) PROGRAM_EXT=".exe" DEFAULT_DEFAULT_wxUSE_PM=1 + LIBS="$LIBS -lstdcpp" ;; powerpc-*-darwin* ) dnl PowerPC Darwin based distributions (including Mac OS X) USE_BSD=1 USE_DARWIN=1 - CPP_MT_FLAG= SO_SUFFIX=dylib AC_DEFINE(__BSD__) AC_DEFINE(__DARWIN__) @@ -646,6 +326,8 @@ DEBUG_CONFIGURE=0 if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_UNIVERSAL=no + DEFAULT_wxUSE_NANOX=no + DEFAULT_wxUSE_THREADS=yes DEFAULT_wxUSE_SHARED=yes @@ -679,7 +361,6 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_LIBJPEG=no DEFAULT_wxUSE_LIBTIFF=no DEFAULT_wxUSE_ODBC=no - DEFAULT_wxUSE_FREETYPE=no DEFAULT_wxUSE_OPENGL=no DEFAULT_wxUSE_ON_FATAL_EXCEPTION=no @@ -813,11 +494,14 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_GIF=no DEFAULT_wxUSE_PCX=no DEFAULT_wxUSE_PNM=no + DEFAULT_wxUSE_IFF=no DEFAULT_wxUSE_XPM=no DEFAULT_wxUSE_ICO_CUR=no else DEFAULT_wxUSE_UNIVERSAL=no + DEFAULT_wxUSE_NANOX=no + DEFAULT_wxUSE_THREADS=yes DEFAULT_wxUSE_SHARED=yes @@ -850,7 +534,6 @@ else DEFAULT_wxUSE_LIBJPEG=yes DEFAULT_wxUSE_LIBTIFF=yes DEFAULT_wxUSE_ODBC=no - DEFAULT_wxUSE_FREETYPE=no DEFAULT_wxUSE_OPENGL=no DEFAULT_wxUSE_ON_FATAL_EXCEPTION=yes @@ -874,7 +557,7 @@ else DEFAULT_wxUSE_DIALUP_MANAGER=yes DEFAULT_wxUSE_JOYSTICK=yes DEFAULT_wxUSE_DYNLIB_CLASS=yes - DEFAULT_wxUSE_DYNAMIC_LOADER=no + DEFAULT_wxUSE_DYNAMIC_LOADER=yes DEFAULT_wxUSE_LONGLONG=yes DEFAULT_wxUSE_GEOMETRY=yes @@ -983,6 +666,7 @@ else DEFAULT_wxUSE_IMAGE=yes DEFAULT_wxUSE_GIF=yes DEFAULT_wxUSE_PCX=yes + DEFAULT_wxUSE_IFF=no DEFAULT_wxUSE_PNM=yes DEFAULT_wxUSE_XPM=yes DEFAULT_wxUSE_ICO_CUR=yes @@ -1028,13 +712,14 @@ AC_ARG_WITH(msw, [ --with-msw use MS-Windows], [wxUSE_MS AC_ARG_WITH(pm, [ --with-pm use OS/2 Presentation Manager], [wxUSE_PM="$withval" CACHE_PM=1 TOOLKIT_GIVEN=1]) AC_ARG_WITH(mgl, [ --with-mgl use SciTech MGL], [wxUSE_MGL="$withval" CACHE_MGL=1 TOOLKIT_GIVEN=1]) AC_ARG_WITH(microwin, [ --with-microwin use MicroWindows], [wxUSE_MICROWIN="$withval" CACHE_MICROWIN=1 TOOLKIT_GIVEN=1]) +AC_ARG_WITH(x11, [ --with-x11 use X11], [wxUSE_X11="$withval" wxUSE_UNIVERSAL="yes" CACHE_X11=1 TOOLKIT_GIVEN=1]) +WX_ARG_ENABLE(nanox, [ --enable-nanox use NanoX], wxUSE_NANOX) -AC_ARG_ENABLE(gtk2, [ --enable-gtk2 use GTK+ 2.0 if available (EXPERIMENTAL)],wxUSE_GTK2=1,wxUSE_GTK2=0) +AC_ARG_ENABLE(gtk2, [ --enable-gtk2 use GTK+ 2.0 if available (EXPERIMENTAL)],wxUSE_GTK2="yes",wxUSE_GTK2="no") 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) WX_ARG_SYS_WITH(libtiff, [ --with-libtiff use libtiff (TIFF file format)], wxUSE_LIBTIFF) -WX_ARG_SYS_WITH(freetype, [ --with-freetype use freetype (font rasterizer)], wxUSE_FREETYPE) WX_ARG_WITH(opengl, [ --with-opengl use OpenGL (or Mesa)], wxUSE_OPENGL) fi @@ -1077,7 +762,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, [ --enable-compat22 enable wxWindows 2.2 compatibility], WXWIN_COMPATIBILITY_2_2) +WX_ARG_ENABLE(compat22, [ --disable-compat22 disable wxWindows 2.2 compatibility], WXWIN_COMPATIBILITY_2_2) dnl --------------------------------------------------------------------------- dnl (small) optional non GUI classes @@ -1358,11 +1043,27 @@ WX_ARG_ENABLE(palette, [ --enable-palette use wxPalette class], wxUS WX_ARG_ENABLE(image, [ --enable-image use wxImage class], wxUSE_IMAGE) WX_ARG_ENABLE(gif, [ --enable-gif use gif images (GIF file format)], wxUSE_GIF) WX_ARG_ENABLE(pcx, [ --enable-pcx use pcx images (PCX file format)], wxUSE_PCX) +WX_ARG_ENABLE(iff, [ --enable-iff use iff images (IFF file format)], wxUSE_IFF) WX_ARG_ENABLE(pnm, [ --enable-pnm use pnm images (PNM file format)], wxUSE_PNM) WX_ARG_ENABLE(xpm, [ --enable-xpm use xpm images (XPM file format)], wxUSE_XPM) WX_ARG_ENABLE(ico_cur, [ --enable-icocur use Windows ICO and CUR formats], wxUSE_ICO_CUR) fi + +dnl General settings (needed for GUI and non-GUI compilations alike). +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 ';') + LEX_STEM="lexyy" + ;; + *) + PATH_IFS=':' + LEX_STEM="lex.yy" + ;; +esac + dnl for GUI only dnl cache the options values before (may be) aborting below @@ -1401,21 +1102,12 @@ 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_WINE:-0} + ${wxUSE_MSW:-0} + ${wxUSE_MGL:-0} + ${wxUSE_MICROWIN:-0} + ${wxUSE_X11:-0}` dnl Allow wxUSE_PM only for OS/2 with EMX. - dnl Path separator; ':' for unix. - dnl Stem for flex output; lexyy for OS/2, lex.yy otherwise case "${host}" in *-pc-os2_emx | *-pc-os2-emx ) - # PATH_IFS is autodetected by OS/2's configure (usually ';') NUM_TOOLKITS=`expr ${NUM_TOOLKITS} + ${wxUSE_PM:-0}` - LEX_STEM="lexyy" - ;; - *) - PATH_IFS=':' - LEX_STEM="lex.yy" - ;; esac case "$NUM_TOOLKITS" in @@ -1445,7 +1137,6 @@ if test "$wxUSE_GUI" = "yes"; then fi done else - PATH_IFS=':' AC_MSG_RESULT(base ($host_alias hosted) only) fi @@ -1459,7 +1150,7 @@ AC_CACHE_SAVE dnl cross-compiling support: we're cross compiling if the build system is dnl different from the target one (assume host and target be always the same) if test "$build" != "$host" ; then - if test "$USE_WIN32" = 1 -o "$USE_DOS" = 1 ; then + if test "$USE_WIN32" = 1 -o "$USE_DOS" = 1 -o "$USE_UNIX"; then CC=$host_alias-gcc CXX=$host_alias-c++ AR=$host_alias-ar @@ -1479,10 +1170,13 @@ dnl defines CC with the compiler to use dnl defines GCC with yes if using gcc 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 -g and -O flags ourselves below +CFLAGS=${CFLAGS:=} AC_PROG_CC -CFLAGS=`echo "$CFLAGS" | sed 's/-g//g'` - dnl is -traditional needed for correct compilations dnl adds -traditional for gcc if needed AC_PROG_GCC_TRADITIONAL @@ -1495,10 +1189,11 @@ dnl defines CXX with the compiler to use dnl defines GXX with yes if using gxx dnl defines GXX empty if not using gxx dnl defines CXXFLAGS +dnl +dnl see CFLAGS line above +CXXFLAGS=${CXXFLAGS:=} AC_PROG_CXX -CXXFLAGS=`echo "$CXXFLAGS" | sed 's/-g//g'` - AC_LANG_RESTORE dnl ranlib command @@ -1529,8 +1224,29 @@ dnl strip command dnl defines STRIP as strip or nothing if not found AC_CHECK_PROG(STRIP, strip, strip, true) +dnl does make support "-include" (only GNU make does AFAIK)? +AC_CACHE_CHECK([if make is GNU make], wx_cv_prog_makeisgnu, +[ + if ( ${SHELL-sh} -c "${MAKE-make} --version" 2> /dev/null | + egrep -s GNU > /dev/null); then + wx_cv_prog_makeisgnu="yes" + else + wx_cv_prog_makeisgnu="no" + fi +]) + +if test "x$wx_cv_prog_makeisgnu" = "xyes"; then + IF_GNU_MAKE="" +else + IF_GNU_MAKE="#" +fi + +AC_SUBST(IF_GNU_MAKE) + +dnl we don't need to check for VPATH support in GNU make - it does have it +if test "x$wx_cv_prog_makeisgnu" != "xyes"; then dnl check if VPATH works -AC_MSG_CHECKING(make for VPATH support) +AC_CACHE_CHECK([if make supports VPATH], wx_cv_prog_makevpath, [ dnl create Makefile cat - << EOF > confMake check : file @@ -1547,10 +1263,14 @@ RESULT=$? rm -f sub/file check final_file confMake rmdir sub if test "$RESULT" = 0; then - AC_MSG_RESULT(yes) + wx_cv_prog_makevpath="yes" else - AC_MSG_RESULT(no) - AC_MSG_ERROR([ + wx_cv_prog_makevpath="no" +fi +]) + +if test "x$wx_cv_prog_makevpath" != "xyes"; then +AC_MSG_ERROR([ You need a make-utility that is able to use the variable VPATH correctly. If your version of make does not support VPATH correctly, @@ -1561,7 +1281,8 @@ setenv MAKE gmake; ./configure for csh-type shells Also please do remember to use gmake in this case every time you are trying to compile. ]) -fi +fi dnl make without VPATH +fi dnl not GNU make dnl YACC checks dnl defines YACC with the appropriate command @@ -1752,32 +1473,41 @@ 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 + fi dnl for the check below to have a chance to succeed, we must already have - dnl libz somewhere - if test "$wxUSE_LIBPNG" = "sys" -a "$wxUSE_ZLIB" != "sys" ; then + dnl libz somewhere (don't do this when bulding wxMGL since its libpng + dnl doesn't depend on zlib) + if test "$wxUSE_MGL" != 1 -a "$wxUSE_LIBPNG" = "sys" -a "$wxUSE_ZLIB" != "sys" ; then AC_MSG_WARN([system png library doesn't work without system zlib, will use built-in instead]) wxUSE_LIBPNG=builtin fi - 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]) - ) + 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]) + ) - 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]) + 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]) + else + AC_MSG_WARN([system png library not found, will use built-in instead]) + wxUSE_LIBPNG=builtin + fi else - AC_MSG_WARN([system png library not found, will use built-in instead]) - wxUSE_LIBPNG=builtin + dnl we are using the system library + wxUSE_LIBPNG=yes fi - else - dnl we are using the system library - wxUSE_LIBPNG=yes fi fi @@ -1797,40 +1527,48 @@ JPEG_LINK= if test "$wxUSE_LIBJPEG" != "no" ; then AC_DEFINE(wxUSE_LIBJPEG) - if test "$wxUSE_LIBJPEG" = "sys" -o "$wxUSE_LIBJPEG" = "yes" ; then - dnl can't use AC_CHECK_HEADER as jconfig.h defines things like - dnl HAVE_STDLIB_H which are already defined and this provokes - dnl a compiler warning which configure considers as an error... - AC_MSG_CHECKING(for jpeglib.h) - AC_CACHE_VAL(ac_cv_header_jpeglib_h, - AC_TRY_COMPILE( - [ - #undef HAVE_STDLIB_H - #include - #include - ], - [ - ], - ac_cv_header_jpeglib_h=yes, - ac_cv_header_jpeglib_h=no + if test "$wxUSE_MGL" = 1 -a "$wxUSE_LIBJPEG" = "builtin" ; then + AC_MSG_WARN([wxMGL doesn't work with builtin jpeg library, will use MGL one instead]) + wxUSE_LIBJPEG=sys + fi + + if test "$wxUSE_MGL" != 1 ; then + dnl Don't check for libjpeg when building wxMGL, libmgl contains it + if test "$wxUSE_LIBJPEG" = "sys" -o "$wxUSE_LIBJPEG" = "yes" ; then + dnl can't use AC_CHECK_HEADER as jconfig.h defines things like + dnl HAVE_STDLIB_H which are already defined and this provokes + dnl a compiler warning which configure considers as an error... + AC_MSG_CHECKING(for jpeglib.h) + AC_CACHE_VAL(ac_cv_header_jpeglib_h, + AC_TRY_COMPILE( + [ + #undef HAVE_STDLIB_H + #include + #include + ], + [ + ], + ac_cv_header_jpeglib_h=yes, + ac_cv_header_jpeglib_h=no + ) ) - ) - AC_MSG_RESULT($ac_cv_header_jpeglib_h) + AC_MSG_RESULT($ac_cv_header_jpeglib_h) - if test "$ac_cv_header_jpeglib_h" = "yes"; then - AC_CHECK_LIB(jpeg, jpeg_read_header, JPEG_LINK=" -ljpeg") - fi + if test "$ac_cv_header_jpeglib_h" = "yes"; then + AC_CHECK_LIB(jpeg, jpeg_read_header, JPEG_LINK=" -ljpeg") + fi - if test "x$JPEG_LINK" = "x" ; then - if test "$wxUSE_LIBJPEG" = "sys" ; then - AC_MSG_ERROR([system jpeg library not found! Use --with-libjpeg=builtin to use built-in version]) + if test "x$JPEG_LINK" = "x" ; then + if test "$wxUSE_LIBJPEG" = "sys" ; then + AC_MSG_ERROR([system jpeg library not found! Use --with-libjpeg=builtin to use built-in version]) + else + AC_MSG_WARN([system jpeg library not found, will use built-in instead]) + wxUSE_LIBJPEG=builtin + fi else - AC_MSG_WARN([system jpeg library not found, will use built-in instead]) - wxUSE_LIBJPEG=builtin + dnl we are using the system library + wxUSE_LIBJPEG=sys fi - else - dnl we are using the system library - wxUSE_LIBJPEG=sys fi fi @@ -1874,41 +1612,6 @@ if test "$wxUSE_LIBTIFF" != "no" ; then fi fi -dnl ------------------------------------------------------------------------ -dnl Check for freetype library -dnl ------------------------------------------------------------------------ - -FREETYPE_INCLUDE= -FREETYPE_LINK= -if test "$wxUSE_FREETYPE" != "no" ; then - AC_DEFINE(wxUSE_FREETYPE) - - if test "$wxUSE_FREETYPE" = "sys" -o "$wxUSE_FREETYPE" = "yes" ; then - AC_CHECK_HEADER(freetype.h, - AC_CHECK_LIB(freetype, FT_Render_Glyph, - FREETYPE_LINK=" -lfreetype", - , - [-lm]) - ) - - if test "x$FREETYPE_LINK" = "x" ; then - if test "$wxUSE_FREETYPE" = "sys" ; then - AC_MSG_ERROR([system freetype library not found! Use --with-freetype=builtin to use built-in version]) - else - AC_MSG_WARN([system freetype library not found, will use built-in instead]) - wxUSE_FREETYPE=builtin - fi - else - dnl we are using the system library - wxUSE_FREETYPE=sys - fi - fi - - if test "$wxUSE_FREETYPE" = "builtin" ; then - FREETYPE_INCLUDE="-I\${top_srcdir}/src/freetype" - fi -fi - dnl ---------------------------------------------------------------- dnl search for toolkit (widget sets) dnl ---------------------------------------------------------------- @@ -2013,7 +1716,7 @@ if test "$wxUSE_GUI" = "yes"; then wx_cv_lib_gtk= if test "x$wxUSE_GTK2" = "xyes"; then - AM_PATH_GTK_2_0(1.3.1, wx_cv_lib_gtk=2.0, , $GTK_MODULES) + 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 @@ -2142,6 +1845,75 @@ equivalent variable and GTK+ is version 1.2.3 or above. TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXUNIVERSAL__ -D__WXMSW__ -D__WIN95__ -D__WIN32__ -DMWIN -DMICROWIN_NOCONTROLS -DMICROWIN_TODO=1" fi + if test "$wxUSE_X11" = 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 + AC_PATH_XTRA + + if test "$no_x" = "yes"; then + 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" + AFMINSTALL=afminstall + COMPILED_X_PROGRAM=0 + + if test "$wxUSE_NANOX" = "yes"; then + AC_MSG_CHECKING(for MicroWindows/NanoX distribution) + if test "x$MICROWIN" = x ; then + AC_MSG_RESULT(not found) + AC_MSG_ERROR([Cannot find MicroWindows library. Make sure MICROWIN is set.]) + else + AC_MSG_RESULT($MICROWIN) + AC_DEFINE(wxUSE_NANOX) + fi + fi + + xpm_link= + AC_MSG_CHECKING(for Xpm library) + WX_PATH_FIND_LIBRARIES($SEARCH_LIB,Xpm) + 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 + AC_TRY_COMPILE( + [ + #include + ], + [ + int version; + version = XpmLibraryVersion(); + ], + [ + xpm_link=" -lXpm" + AC_DEFINE(wxHAVE_LIB_XPM) + AC_MSG_RESULT(found in default search path) + COMPILED_X_PROGRAM=0 + ], + [ + AC_MSG_RESULT(no) + AC_MSG_WARN(library will be compiled without support for images in XPM format) + ] + ) + fi + + if test "$wxUSE_NANOX" = "yes"; then + TOOLKIT_INCLUDE="-I\$(top_srcdir)/include/wx/x11/nanox -I\$(MICROWIN)/src/include $TOOLKIT_INCLUDE" + TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__NANOX__ -DMWPIXEL_FORMAT=MWPF_TRUECOLOR0888 -DHAVE_FILEIO -DHAVE_BMP_SUPPORT=1 -DHAVE_GIF_SUPPORT=1 -DHAVE_PNM_SUPPORT=1 -DHAVE_XPM_SUPPORT=1 -DLINUX=1 -DUNIX=1 -DUSE_EXPOSURE -DSCREEN_HEIGHT=480 -DSCREEN_WIDTH=640 -DSCREEN_DEPTH=4 -DX11=1" + GUI_TK_LIBRARY="$GUI_TK_LIBRARY \$(MICROWIN)/src/lib/libnano-X.a" + else + GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lX11$xpm_link" + fi + + TOOLKIT_VPATH="\${top_srcdir}/src/x11" + TOOLKIT=X11 + GUIDIST=X11_DIST + fi + if test "$wxUSE_WINE" = 1; then AC_CHECK_HEADER(windows.h, [], [ @@ -2318,12 +2090,25 @@ equivalent variable and GTK+ is version 1.2.3 or above. if test "$wxUSE_UNIVERSAL" = "yes"; then ALL_OBJECTS="\$(GUI_LOWLEVEL_OBJS) \${UNIVOBJS}" + + dnl ALL_SOURCES and ALL_HEADERS shouldn't include really all sources + dnl and headers as some/most are not needed for wxUniv but I don't + dnl have time to add GUI_LOWLEVEL_SOURCES/HEADERS stuff now (TODO!) + ALL_SOURCES="\$(ALL_SOURCES) \${UNIV_SOURCES}" + ALL_HEADERS="\$(ALL_HEADERS) \${UNIV_HEADERS}" + PORT_FILES="${PORT_FILES} \${top_srcdir}/src/univ/files.lst" - TOOLKIT_VPATH="\${top_srcdir}/src/univ${PATH_IFS}\${top_srcdir}/src/univ/themes${PATH_IFS}\${top_srcdir}/src/${TOOLKIT_DIR}" + if test "$wxUSE_X11" = 1; then + TOOLKIT_VPATH="\${top_srcdir}/src/${TOOLKIT_DIR}${PATH_IFS}\${top_srcdir}/src/univ${PATH_IFS}\${top_srcdir}/src/univ/themes" + else + TOOLKIT_VPATH="\${top_srcdir}/src/univ${PATH_IFS}\${top_srcdir}/src/univ/themes${PATH_IFS}\${top_srcdir}/src/${TOOLKIT_DIR}" + fi TOOLCHAIN_DEFS="${TOOLCHAIN_DEFS} -D__WXUNIVERSAL__" WIDGET_SET=univ else ALL_OBJECTS="\$(GUIOBJS)" + ALL_SOURCES="\$(ALL_SOURCES)" + ALL_HEADERS="\$(ALL_HEADERS)" fi ALL_OBJECTS="${ALL_OBJECTS} \$(COMMONOBJS) \$(GENERICOBJS)" @@ -2336,10 +2121,6 @@ equivalent variable and GTK+ is version 1.2.3 or above. ALL_OBJECTS="${ALL_OBJECTS} \$(HTMLOBJS)" fi - dnl ODBC objects are Unix only - if test "$TOOLKIT" != "MSW" -a "$wxUSE_ODBC" = "yes" ; then - ALL_OBJECTS="${ALL_OBJECTS} \$(IODBCOBJS)" - fi if test "$wxUSE_LIBJPEG" = "builtin" ; then ALL_OBJECTS="${ALL_OBJECTS} \$(JPEGOBJS)" fi @@ -2349,9 +2130,6 @@ equivalent variable and GTK+ is version 1.2.3 or above. if test "$wxUSE_LIBPNG" = "builtin" ; then ALL_OBJECTS="${ALL_OBJECTS} \$(PNGOBJS)" fi - if test "$wxUSE_FREETYPE" = "builtin" ; then - ALL_OBJECTS="${ALL_OBJECTS} \$(FREETYPEOBJS)" - fi dnl distribute samples/demos/utils with GUI versions GUIDIST="${GUIDIST} SAMPLES_DIST DEMOS_DIST UTILS_DIST MISC_DIST" @@ -2376,6 +2154,9 @@ else TOOLKIT_VPATH="\${top_srcdir}/src/unix" fi + ALL_SOURCES="\$(ALL_SOURCES)" + ALL_HEADERS="\$(ALL_HEADERS)" + PORT_FILES="\${top_srcdir}/src/files.lst" dnl distribute only wxBase sources/headers @@ -2386,6 +2167,12 @@ fi dnl --------------------------------------------------------------------------- dnl Optional libraries included when system library is not used dnl --------------------------------------------------------------------------- + +dnl ODBC objects are Unix only +if test "$TOOLKIT" != "MSW" -a "$wxUSE_ODBC" = "yes" ; then + ALL_OBJECTS="${ALL_OBJECTS} \$(IODBCOBJS)" +fi + if test "$wxUSE_REGEX" = "builtin" ; then ALL_OBJECTS="${ALL_OBJECTS} \$(REGEXOBJS)" fi @@ -2407,7 +2194,11 @@ if test "$wxUSE_OPENGL" = "yes"; then WX_PATH_FIND_LIBRARIES([$SEARCH_LIB],[GL]) if test "$ac_find_libraries" != "" ; then WX_LINK_PATH_EXIST([$ac_find_libraries],[$LDFLAGS]) - LDFLAGS_GL="$LDFLAGS$ac_path_to_link" + if test "$ac_path_to_link" = " -L/usr/lib" ; then + LDFLAGS_GL="$LDFLAGS" + else + LDFLAGS_GL="$LDFLAGS$ac_path_to_link" + fi OPENGL_LIBS="-lGL -lGLU" AC_MSG_RESULT([yes]) else @@ -2542,6 +2333,17 @@ fi dnl --- the marker for quick search, leave it here: SHARED_LIB_SETUP --- +if test "$wxUSE_SHARED" = "yes"; then + case "${host}" in + *-pc-os2_emx | *-pc-os2-emx | \ + *-pc-msdosdjgpp ) + dnl only static for now + wxUSE_SHARED=no + AC_MSG_WARN([Host system doesn't support shared libraries, disabling]) + ;; + esac +fi + if test "$wxUSE_SHARED" = "yes"; then dnl install targets @@ -2625,10 +2427,17 @@ 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 -DDYLIB_INIT" CXXFLAGS="$CXXFLAGS -fno-common -DDYLIB_INIT" + dnl Executables must necessarily fully bind the wxWindows library at + dnl program launch otherwise lazy binding breaks RTTI class info + LDFLAGS="$LDFLAGS -Wl,-bind_at_load" SHARED_LD="$CXX -dynamiclib -init _wxWindowsDylibInit -o" PIC_FLAG="-dynamic -fPIC" + SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION}" + SONAME_FLAGS_GL=${SONAME_FLAGS} ;; *-*-aix* ) @@ -2653,11 +2462,6 @@ if test "$wxUSE_SHARED" = "yes"; then fi ;; - *-pc-os2_emx | *-pc-os2-emx ) - dnl only static for now - wxUSE_SHARED=no - ;; - *-*-beos* ) dnl can't use gcc under BeOS for shared library creation because it dnl complains about missing 'main' @@ -2721,20 +2525,25 @@ 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) + MACOSX_BUNDLE="bundle" LIBWXMACRES="\$(top_builddir)/lib/lib${WX_LIBRARY}.r" LIBWXMACRESCOMP="\$(RESCOMP) Carbon.r -t APPL ${LIBWXMACRES} -o \$(BIN_PROGRAM)" LIBWXMACRESWXCONFIG="${RESCOMP} Carbon.r -t APPL \${prefix}/lib/${WX_RESOURCES_MACOSX_COMPILED} -o" +else + if test "$wxUSE_PM" = 1; then + LIBWXMACRESCOMP="emxbind -ep \$(BIN_PROGRAM)" + fi fi dnl ------------------------------------------------------------------------ dnl Check for headers dnl ------------------------------------------------------------------------ -dnl do not check for strings.h for wxMac -dnl it exists but is only a simple redirection to string.h -dnl it is in conflict with Strings.h in FlatCarbon headers +dnl test for strings.h needed under AIX, but do not check for it wxMac as +dnl it exists but is only a simple redirection to string.h and it is in +dnl conflict with Strings.h in FlatCarbon headers if test "$wxUSE_MAC" != 1; then - dnl defines HAVE_STRINGS_H (where some string functions live on AIX for example) + dnl defines HAVE_STRINGS_H AC_CHECK_HEADERS(strings.h) fi @@ -2746,14 +2555,19 @@ dnl defines HAVE_UNISTD_H AC_CHECK_HEADERS(unistd.h) dnl defines HAVE_WCHAR_H AC_CHECK_HEADERS(wchar.h) -dnl defines HAVE_WCSTR_H -AC_CHECK_HEADERS(wcstr.h) -dnl defined HAVE_WCTYPE_H -AC_CHECK_HEADERS(wctype.h) + +dnl maybe wchar_t is in wcstr.h if we don't have wchar.h? +if test "$ac_cv_header_wchar_h" != "yes"; then + dnl defines HAVE_WCSTR_H + AC_CHECK_HEADERS(wcstr.h) +fi + +dnl checking for wctype.h is useless as we need wcslen(), not just wchar_t and +dnl this function is never provided by it +dnl AC_CHECK_HEADERS(wctype.h) + dnl defines HAVE_FNMATCH_H AC_CHECK_HEADERS(fnmatch.h) -dnl defines HAVE_ICONV_H (Unix98 encoding conversion routines) -AC_CHECK_HEADERS(iconv.h) dnl defines HAVE_LANGINFO_H (GNU libc locale parameters) AC_CHECK_HEADERS(langinfo.h) @@ -2901,10 +2715,18 @@ dnl cross-compiling) dnl defines the size of certain types of variables in SIZEOF_ AC_CHECK_SIZEOF(char, 1) AC_CHECK_SIZEOF(short, 2) -AC_CHECK_SIZEOF(int *, 4) +AC_CHECK_SIZEOF(void *, 4) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) -AC_CHECK_SIZEOF(long long, 0) + +case "${host}" in + arm-*-linux* ) + AC_CHECK_SIZEOF(long long, 8) + ;; + * ) + AC_CHECK_SIZEOF(long long, 0) +esac + dnl we have to do it ourselves because SGI/Irix's stdio.h does not include dnl wchar_t and AC_CHECK_SIZEOF only includes stdio.h @@ -3089,23 +2911,9 @@ dnl check for available version of iconv() AC_LANG_SAVE AC_LANG_CPLUSPLUS -AC_CACHE_CHECK([if iconv() takes char**], wx_cv_iconv_takes_char, -[ - AC_TRY_COMPILE([#include ], - [ - char **inbuf, **outbuf; - iconv_t cd; - size_t insz, outsz; - iconv(cd, inbuf, &insz, outbuf, &outsz); - ], - wx_cv_iconv_takes_char=yes, - wx_cv_iconv_takes_char=no) -]) +AM_ICONV +LIBS="$LIBICONV $LIBS" AC_LANG_RESTORE -if test "$wx_cv_iconv_takes_char" = yes ; then - AC_DEFINE(WX_ICONV_TAKES_CHAR) -fi - dnl check for POSIX signals if we need them if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes" -a "$wxUSE_UNIX" = "yes"; then @@ -3275,7 +3083,7 @@ AC_CHECK_FUNCS(strtok_r) AC_LANG_RESTORE dnl check for inet_addr and inet_aton (these may live either in libc, or in -dnl libnsl or libresolv) +dnl libnsl or libresolv or libsocket) INET_LINK= AC_CHECK_FUNCS(inet_addr, AC_DEFINE(HAVE_INET_ADDR), @@ -3283,7 +3091,10 @@ AC_CHECK_FUNCS(inet_addr, AC_CHECK_LIB(nsl, inet_addr, INET_LINK="nsl", AC_CHECK_LIB(resolv, inet_addr, - INET_LINK="resolv" + INET_LINK="resolv", + AC_CHECK_LIB(socket, inet_addr, + INET_LINK="socket" + ) ) ) ] @@ -3316,17 +3127,19 @@ dnl thread support for Unix (always available under Win32) dnl --------------------------------------------------------------------------- dnl under MSW we always have thread support +CPP_MT_FLAG= if test "$TOOLKIT" != "MSW"; then dnl the code below: - dnl defines THREADS_OBJ which contains the object files to build - dnl defines THREADS_LINK which contains the thread library to link with - dnl defines wxUSE_THREADS=1 if thread support is activated + dnl + dnl defines THREADS_LINK and THREADS_CFLAGS which are the options + dnl necessary to build the MT programs for the linker and compiler + dnl respectively + dnl + dnl sets wxUSE_THREADS=1 if thread support is activated THREADS_LINK= - THREADS_OBJ= - CODE_GEN_FLAGS= - CODE_GEN_FLAGS_CXX= + THREADS_CFLAGS= if test "$wxUSE_THREADS" = "yes" ; then if test "$wxUSE_WINE" = 1 ; then @@ -3340,67 +3153,136 @@ if test "$TOOLKIT" != "MSW"; then if test "$wxUSE_THREADS" = "yes" ; then dnl find if POSIX threads are available + dnl + dnl the tests here are based on ACX_PTHREAD macro from autoconf macro + dnl archive from http://ac-archive.sourceforge.net/ + dnl + dnl thanks to Steven G. Johnson and Alejandro + dnl Forero Cuervo for the original code + + dnl TODO: cache the result + + dnl define the list of the thread options to try in the loop below + dnl with the convention that anything starting with '-' is a cpp flag + dnl while anything else is a library (i.e. there is an implicit "-l") + THREAD_OPTS="-pthread" + case "${host}" in + *-*-solaris2* | *-*-sunos4* ) + if test "x$GCC" = "xyes"; then + dnl Solaris/gcc combination use this one for some reason + THREAD_OPTS="-pthreads $THREAD_OPTS" + else + THREAD_OPTS="-mt $THREAD_OPTS" + fi + ;; + *-*-freebsd*) + dnl look, in order, for the kernel threads, then Linux threads + dnl and finally the userland threads + THREAD_OPTS="-kthread lthread $THREAD_OPTS c_r" + ;; + *-*-darwin*) + dnl Darwin / Mac OS X just uses -lpthread tested below + THREAD_OPTS="" + ;; + *-*-aix*) + dnl AIX calls the library libpthreads - thanks IBM! + THREAD_OPTS="pthreads" + ;; + esac - dnl AIX calls the library libpthreads - thanks IBM! - if test "$USE_AIX" = 1; then - THREADS_LIB=pthreads - else - THREADS_LIB=pthread - fi + dnl simply linking with libpthread should make the test below work but + dnl it's far from certain that the threaded programs compiled without + dnl any special switches actually work, so try it after all the others + THREAD_OPTS="$THREAD_OPTS pthread none" + + dnl now test for all possibilities + THREADS_OK=no + for flag in $THREAD_OPTS; do + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; - dnl standard lib name is pthread - dnl We no longer test for pthread-0.7 as it breaks compilation on some - dnl glibc2 systems, especially for static linkage. - AC_CHECK_LIB($THREADS_LIB, pthread_create, [ - THREADS_OBJ="threadpsx.lo" - THREADS_LINK=$THREADS_LIB - ], [ - dnl thread functions are in libc_r under FreeBSD - AC_CHECK_LIB(c_r, pthread_create, [ - THREADS_OBJ="threadpsx.lo" - THREADS_LINK="c_r" - ], [ - dnl VZ: SGI threads are not supported currently - AC_CHECK_HEADER(sys/prctl.h, [ - THREADS_OBJ="threadsgi.lo" - ]) - ]) - ]) + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + THREADS_CFLAGS="$flag" + ;; - if test -z "$THREADS_OBJ" ; then - wxUSE_THREADS=no - AC_MSG_WARN([No thread support on this system... disabled]) - fi + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + THREADS_LINK="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$THREADS_LINK $LIBS" + CFLAGS="$THREADS_CFLAGS $CFLAGS" + + AC_TRY_LINK([#include ], + [pthread_create(0,0,0,0);], + THREADS_OK=yes) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($THREADS_OK) + if test "x$THREADS_OK" = "xyes"; then + break; + fi + + THREADS_LINK="" + THREADS_CFLAGS="" + done + + if test "x$THREADS_OK" != "xyes"; then + wxUSE_THREADS=no + AC_MSG_WARN([No thread support on this system... disabled]) + else + dnl yes, these special compiler flags should be used with the + dnl linker as well + LIBS="$THREADS_LINK $THREADS_CFLAGS $LIBS" + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host}" in + *-aix* | *-freebsd*) + flag="-D_THREAD_SAFE" + ;; + *solaris* | alpha*-osf*) + flag="-D_REENTRANT" + ;; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + THREADS_CFLAGS="$THREADS_CFLAGS $flag" + fi + + if test "x$THREADS_CFLAGS" != "x"; then + dnl don't add these options to CPPFLAGS as cpp might not know them + CFLAGS="$CFLAGS $THREADS_CFLAGS" + CXXFLAGS="$CXXFLAGS $THREADS_CFLAGS" + fi + fi fi dnl do other tests only if we are using threads if test "$wxUSE_THREADS" = "yes" ; then AC_CHECK_FUNCS(thr_setconcurrency) - dnl define autoconf macro to check for given function in both pthread and - dnl posix4 libraries - dnl usage: AC_FUNC_THREAD(FUNCTION_NAME) - dnl VZ: TODO - dnl AC_DEFUN(AC_FUNC_THREAD, - dnl [ - dnl AC_CHECK_LIB($THREADS_LINK, $1, - dnl AC_DEFINE(HAVE_`'translit($1, `A-Z', 'a-z'), - dnl [AC_CHECK_LIB([posix4], $1, - dnl [AC_DEFINE(HAVE_`'translit($1, `A-Z', 'a-z')) - dnl POSIX4_LINK=" -lposix4" - dnl ]) - dnl ]) - dnl ]) - AC_CHECK_HEADERS(sched.h) - - AC_CHECK_LIB($THREADS_LINK, sched_yield, - AC_DEFINE(HAVE_SCHED_YIELD), - [AC_CHECK_LIB([posix4], sched_yield, - [AC_DEFINE(HAVE_SCHED_YIELD) POSIX4_LINK=" -lposix4"], - AC_MSG_WARN(wxThread::Yield will not work properly) - )] - ) + if test "$ac_cv_header_sched_h" = "yes"; then + AC_CHECK_FUNC(sched_yield, + AC_DEFINE(HAVE_SCHED_YIELD), + [ + AC_CHECK_LIB(posix4, + sched_yield, + [AC_DEFINE(HAVE_SCHED_YIELD) POSIX4_LINK=" -lposix4"], + AC_MSG_WARN(wxThread::Yield will not work properly) + ) + ] + ) + fi dnl to be able to set the thread priority, we need to have all of the dnl following functions: @@ -3409,9 +3291,9 @@ if test "$TOOLKIT" != "MSW"; then dnl (this one can be in either libpthread or libposix4 (under Solaris)) dnl 3. pthread_attr_getschedparam and pthread_attr_setschedparam HAVE_PRIOR_FUNCS=0 - AC_CHECK_LIB($THREADS_LINK, pthread_attr_getschedpolicy, - AC_CHECK_LIB($THREADS_LINK, pthread_attr_setschedparam, - AC_CHECK_LIB($THREADS_LINK, sched_get_priority_max, + AC_CHECK_FUNC(pthread_attr_getschedpolicy, + AC_CHECK_FUNC(pthread_attr_setschedparam, + AC_CHECK_FUNC(sched_get_priority_max, HAVE_PRIOR_FUNCS=1, AC_CHECK_LIB([posix4], sched_get_priority_max, [ @@ -3429,9 +3311,9 @@ if test "$TOOLKIT" != "MSW"; then AC_MSG_WARN(Setting thread priority will not work) fi - AC_CHECK_LIB($THREADS_LINK, pthread_cancel, - AC_DEFINE(HAVE_PTHREAD_CANCEL), - AC_MSG_WARN([wxThread::Kill() will not work properly])) + AC_CHECK_FUNC(pthread_cancel, + AC_DEFINE(HAVE_PTHREAD_CANCEL), + AC_MSG_WARN([wxThread::Kill() will not work properly])) AC_CACHE_CHECK([for pthread_cleanup_push/pop], wx_cv_func_pthread_cleanup_push, [ @@ -3505,16 +3387,6 @@ if test "$TOOLKIT" != "MSW"; then AC_MSG_WARN([wxMutex won't be recursive on this platform]) fi fi - - THREADS_LINK=" -l$THREADS_LINK" - - dnl building MT programs under Solaris with the native compiler requires -mt - dnl switch - if test "$USE_SOLARIS" = "yes" -a "$GCC" != "yes"; then - CPPFLAGS="$CFLAGS -mt" - CXXFLAGS="$CXXFLAGS -mt" - LDFLAGS="$LDFLAGS -mt" - fi fi dnl from if !MSW @@ -3523,9 +3395,6 @@ fi if test "$wxUSE_THREADS" = "yes"; then AC_DEFINE(wxUSE_THREADS) - dnl we must define _REENTRANT or something along these lines for MT code - TOOLCHAIN_DEFS="$TOOLCHAIN_DEFS $CPP_MT_FLAG" - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS thread" else dnl on some systems, _REENTRANT should be defined if we want to use any _r() @@ -3591,6 +3460,8 @@ if test "$wxUSE_PROFILE" = "yes" ; then PROFILE=" -pg" fi +CODE_GEN_FLAGS= +CODE_GEN_FLAGS_CXX= if test "$GCC" = "yes" ; then if test "$wxUSE_NO_RTTI" = "yes" ; then CODE_GEN_FLAGS_CXX="$CODE_GEN_FLAGS_CXX -fno-rtti" @@ -3609,9 +3480,6 @@ if test "$GCC" = "yes" ; then fi fi - -CXXFLAGS=`echo "${CXXFLAGS}" | sed "s/\-O.//g" ` -CFLAGS=`echo "${CFLAGS}" | sed "s/\-O.//g" ` if test "$wxUSE_OPTIMISE" = "no" ; then OPTIMISE= else @@ -3633,7 +3501,7 @@ if test "$WXWIN_COMPATIBILITY_2" = "yes"; then WXWIN_COMPATIBILITY_2_2="yes" fi -if test "$WXWIN_COMPATIBILITY_2_2" = "yes"; then +if test "x$WXWIN_COMPATIBILITY_2_2" != "xno"; then AC_DEFINE(WXWIN_COMPATIBILITY_2_2) fi @@ -3949,14 +3817,23 @@ dnl ------------------------------------------------------------------------ dnl wxSocket dnl ------------------------------------------------------------------------ -dnl under MSW we always have sockets -if test "$TOOLKIT" != "MSW"; then +dnl VZ: the GUI hooks wxSocket needs are not implemented yet in wxX11 +if test "$wxUSE_SOCKETS" = "yes"; then + if test "$TOOLKIT" = "X11"; then + AC_MSG_WARN([wxSocket not yet supported under X11... disabled]) + wxUSE_SOCKETS="no" + fi +fi - if test "$wxUSE_SOCKETS" = "yes"; then - dnl under Solaris, socket functions live in -lsocket +if test "$wxUSE_SOCKETS" = "yes"; then + dnl under MSW we always have sockets + if test "$TOOLKIT" != "MSW"; then + dnl under Solaris and OS/2, socket functions live in -lsocket AC_CHECK_FUNC(socket,, AC_CHECK_LIB(socket, socket, - INET_LINK="$INET_LINK -lsocket", + if test "$INET_LINK" != " -lsocket"; then + INET_LINK="$INET_LINK -lsocket" + fi, [ AC_MSG_WARN([socket library not found - sockets will be disabled]) wxUSE_SOCKETS=no @@ -3964,12 +3841,13 @@ if test "$TOOLKIT" != "MSW"; then ) ) fi +fi +if test "$wxUSE_SOCKETS" = "yes" ; then dnl this test may be appropriate if building under cygwin dnl right now I'm assuming it also uses the winsock stuff dnl like mingw does.. -- RL - - if test "$wxUSE_SOCKETS" = "yes" ; then + if test "$TOOLKIT" != "MSW"; then dnl determine the type of third argument for getsockname AC_CACHE_CHECK([what is the type of the third argument of getsockname], wx_cv_type_getsockname3, @@ -4023,7 +3901,6 @@ if test "$TOOLKIT" != "MSW"; then fi fi fi -dnl if !MSW if test "$wxUSE_SOCKETS" = "yes" ; then AC_DEFINE(wxUSE_SOCKETS) @@ -4044,6 +3921,10 @@ if test "$wxUSE_GUI" = "yes"; then AC_MSG_WARN([Joystick not yet supported under Motif... disabled]) wxUSE_JOYSTICK=no fi + if test "$TOOLKIT" = "X11"; then + AC_MSG_WARN([Joystick not yet supported under X11... disabled]) + wxUSE_JOYSTICK=no + fi dnl under MSW we always have joystick support if test "$TOOLKIT" != "MSW"; then @@ -4146,6 +4027,10 @@ fi if test "$wxUSE_UNICODE" = "yes" ; then AC_DEFINE(wxUSE_UNICODE) + + if test "$wxUSE_MSW" != 1; then + wxUSE_UNICODE_MSLU=no + fi if test "$wxUSE_MSW" = 1 -a "$wxUSE_UNICODE_MSLU" = "yes"; then AC_CHECK_LIB(unicows,main, @@ -4199,7 +4084,7 @@ fi if test "$wxUSE_MDI_ARCHITECTURE" = "yes"; then if test "$wxUSE_UNIVERSAL" = "yes"; then - AC_MSG_WARN(MDI not yet supported for wxUNIVERSAL... disabled) + AC_MSG_WARN(MDI not yet supported for wxUniversal... disabled) wxUSE_MDI_ARCHITECTURE=no fi @@ -4223,14 +4108,7 @@ if test "$wxUSE_HELP" = "yes"; then if test "$wxUSE_MSW" = 1; then if test "$wxUSE_MS_HTML_HELP" = "yes"; then - AC_CHECK_HEADER(htmlhelp.h, - [ - AC_DEFINE(wxUSE_MS_HTML_HELP) - ], - [ - AC_MSG_WARN([MS HTML Help cannot be used without htmlhelp.h... disabled]) - wxUSE_MS_HTML_HELP=no - ]) + AC_DEFINE(wxUSE_MS_HTML_HELP) fi fi @@ -4258,8 +4136,12 @@ if test "$wxUSE_PROLOGIO" = "yes" ; then fi if test "$wxUSE_RESOURCES" = "yes" ; then - AC_DEFINE(wxUSE_RESOURCES) - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS resource" + 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" + fi fi if test "$wxUSE_X_RESOURCES" = "yes"; then @@ -4332,6 +4214,11 @@ if test "$wxUSE_DRAG_AND_DROP" = "yes" ; then wxUSE_DRAG_AND_DROP=no fi + if test "$wxUSE_X11" = 1; then + AC_MSG_WARN([Drag and drop not yet supported under X11... disabled]) + wxUSE_DRAG_AND_DROP=no + fi + if test "$wxUSE_DRAG_AND_DROP" = "yes"; then AC_DEFINE(wxUSE_DRAG_AND_DROP) SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dnd" @@ -4538,7 +4425,7 @@ if test "$wxUSE_TOGGLEBTN" = "yes"; then wxUSE_TOGGLEBTN=no fi if test "$wxUSE_UNIVERSAL" = "yes"; then - AC_MSG_WARN([Toggle button not yet supported under wxUNIVERSAL... disabled]) + AC_MSG_WARN([Toggle button not yet supported under wxUniversal... disabled]) wxUSE_TOGGLEBTN=no fi @@ -4579,7 +4466,7 @@ if test "$wxUSE_TOOLTIPS" = "yes"; then AC_MSG_WARN([wxTooltip not supported under WINE... disabled]) else if test "$wxUSE_UNIVERSAL" = "yes"; then - AC_MSG_WARN([wxTooltip not supported yet in wxUNIVERSAL... disabled]) + AC_MSG_WARN([wxTooltip not supported yet in wxUniversal... disabled]) else AC_DEFINE(wxUSE_TOOLTIPS) fi @@ -4604,15 +4491,23 @@ if test "$wxUSE_POPUPWIN" = "yes"; then if test "$wxUSE_MOTIF" = 1; then AC_MSG_WARN([wxPopupWindow not yet supported under Motif... disabled]) else - AC_DEFINE(wxUSE_POPUPWIN) + if test "$wxUSE_PM" = 1; then + AC_MSG_WARN([wxPopupWindow not yet supported under PM... disabled]) + else + AC_DEFINE(wxUSE_POPUPWIN) - USES_CONTROLS=1 + USES_CONTROLS=1 + fi fi fi fi if test "$wxUSE_TIPWINDOW" = "yes"; then - AC_DEFINE(wxUSE_TIPWINDOW) + if test "$wxUSE_PM" = 1; then + AC_MSG_WARN([wxTipWindow not yet supported under PM... disabled]) + else + AC_DEFINE(wxUSE_TIPWINDOW) + fi fi if test "$USES_CONTROLS" = 1; then @@ -4712,6 +4607,10 @@ if test "$wxUSE_PCX" = "yes" ; then AC_DEFINE(wxUSE_PCX) fi +if test "$wxUSE_IFF" = "yes" ; then + AC_DEFINE(wxUSE_IFF) +fi + if test "$wxUSE_PNM" = "yes" ; then AC_DEFINE(wxUSE_PNM) fi @@ -4754,14 +4653,10 @@ if test "$wxUSE_FONTDLG" = "yes"; then fi if test "$wxUSE_DIRDLG" = "yes"; then - if test "$wxUSE_CONSTRAINTS" != "yes"; then - AC_MSG_WARN(wxDirDialog requires constraints so it won't be compiled without them) + if test "$wxUSE_TREECTRL" != "yes"; then + AC_MSG_WARN(wxDirDialog requires wxTreeCtrl so it won't be compiled without it) else - if test "$wxUSE_TREECTRL" != "yes"; then - AC_MSG_WARN(wxDirDialog requires wxTreeCtrl so it won't be compiled without it) - else - AC_DEFINE(wxUSE_DIRDLG) - fi + AC_DEFINE(wxUSE_DIRDLG) fi fi @@ -4846,18 +4741,18 @@ 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$THREADS_LINK$DL_LINK -lm$LIBS" +LIBS="$ZLIB_LINK $POSIX4_LINK $INET_LINK $WCHAR_LINK $DL_LINK -lm $LIBS" if test "$wxUSE_GUI" = "yes"; then - LIBS=" $GUI_TK_LIBRARY$PNG_LINK$JPEG_LINK$TIFF_LINK$FREETYPE_LINK$LIBS" + LIBS="$GUI_TK_LIBRARY $PNG_LINK $JPEG_LINK $TIFF_LINK $LIBS" dnl TODO add checks that these samples will really compile (i.e. all the dnl library features they need are present) dnl TODO some samples are never built so far: dnl ipc, mfc, nativdlg, oleauto, ownerdrw - SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS controls dialogs \ + SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS artprov controls dialogs \ drawing dynamic erase event exec font image \ minimal richedit rotate widgets" @@ -4870,8 +4765,7 @@ fi dnl all -I options we must pass to the compiler INCLUDES="-I\${top_builddir}/lib/wx/include/${TOOLCHAIN_NAME} -I\${top_srcdir}/include \ -$REGEX_INCLUDE $ZLIB_INCLUDE $PNG_INCLUDE $JPEG_INCLUDE $TIFF_INCLUDE \ -$FREETYPE_INCLUDE $TOOLKIT_INCLUDE" +$REGEX_INCLUDE $ZLIB_INCLUDE $PNG_INCLUDE $JPEG_INCLUDE $TIFF_INCLUDE $TOOLKIT_INCLUDE" dnl wxGTK does not need TOOLKIT includes in wx-config if test "$wxUSE_GTK" = 1; then @@ -4897,10 +4791,12 @@ fi EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE $INCLUDES" +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'` +LIBS=`echo $LIBS | sed 's/ \+/ /g'` -LDFLAGS="$LDFLAGS$PROFILE" +LDFLAGS="$LDFLAGS $PROFILE" dnl for convenience, sort the samples in alphabetical order dnl @@ -4971,8 +4867,10 @@ AC_SUBST(WXCONFIG_LIBS_STATIC) AC_SUBST(WXCONFIG_LIBS_STATIC_GL) AC_SUBST(WXCONFIG_INCLUDE) -dnl what to compile +dnl the list of files to compile/install AC_SUBST(ALL_OBJECTS) +AC_SUBST(ALL_HEADERS) +AC_SUBST(ALL_SOURCES) dnl distribution vars AC_SUBST(GUIDIST) @@ -4998,6 +4896,7 @@ AC_SUBST(WX_RESOURCES_MACOSX_COMPILED) dnl additional for Mac OS X AC_SUBST(DEREZ) +AC_SUBST(MACOSX_BUNDLE) AC_SUBST(LIBWXMACRES) AC_SUBST(LIBWXMACRESCOMP) AC_SUBST(LIBWXMACRESWXCONFIG) @@ -5027,6 +4926,7 @@ if test "$wxUSE_GUI" = "yes"; then dnl we need to pass SAMPLES_SUBDIRS (and some other) to the configure in dnl samples and the only way to do it is, again, use the cache wx_cv_path_samplesubdirs=$SAMPLES_SUBDIRS + wx_cv_if_gnu_make=$IF_GNU_MAKE wx_cv_path_ifs=$PATH_IFS wx_cv_program_ext=$PROGRAM_EXT wx_cv_target_library=$WX_TARGET_LIBRARY @@ -5034,9 +4934,10 @@ if test "$wxUSE_GUI" = "yes"; then wx_cv_target_libtype=$WX_TARGET_LIBRARY_TYPE dnl we need to export them because passing them through cache won't dnl work when cache=/dev/null (which is default for autoconf 2.50) - export wx_cv_path_samplesubdirs wx_cv_path_ifs wx_cv_program_ext \ + 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 - AC_CONFIG_SUBDIRS(demos samples utils contrib) + AC_CONFIG_SUBDIRS(demos samples utils contrib mobile) fi dnl create each of the files in the space separated list from the file.in