X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e45387bf100caa523e5cb0171b7e54a6416d2ce5..a81c3c2383f9096ef5e96b708a0f1c1ffe7cc6a8:/configure.in?ds=sidebyside diff --git a/configure.in b/configure.in index abbdc42985..17cb392540 100644 --- a/configure.in +++ b/configure.in @@ -96,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 @@ -114,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* @@ -126,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 @@ -181,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 @@ -253,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__) @@ -329,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 @@ -362,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 @@ -502,6 +500,8 @@ if test $DEBUG_CONFIGURE = 1; then else DEFAULT_wxUSE_UNIVERSAL=no + DEFAULT_wxUSE_NANOX=no + DEFAULT_wxUSE_THREADS=yes DEFAULT_wxUSE_SHARED=yes @@ -534,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 @@ -558,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 @@ -713,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 @@ -762,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 @@ -1049,6 +1049,21 @@ WX_ARG_ENABLE(xpm, [ --enable-xpm use xpm images (XPM file f 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 @@ -1087,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 @@ -1131,7 +1137,6 @@ if test "$wxUSE_GUI" = "yes"; then fi done else - PATH_IFS=':' AC_MSG_RESULT(base ($host_alias hosted) only) fi @@ -1145,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 @@ -1165,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 @@ -1181,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 @@ -1219,7 +1228,7 @@ 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); then + egrep -s GNU > /dev/null); then wx_cv_prog_makeisgnu="yes" else wx_cv_prog_makeisgnu="no" @@ -1603,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 ---------------------------------------------------------------- @@ -1742,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 @@ -1871,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, [], [ @@ -2055,7 +2098,11 @@ equivalent variable and GTK+ is version 1.2.3 or above. 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 @@ -2083,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" @@ -2110,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 @@ -2286,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 @@ -2369,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* ) @@ -2397,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' @@ -2465,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 @@ -2490,10 +2555,17 @@ 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_LANGINFO_H (GNU libc locale parameters) @@ -2643,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 @@ -3003,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), @@ -3011,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" + ) ) ) ] @@ -3044,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 @@ -3068,67 +3153,132 @@ 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" + ;; + *-*-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: @@ -3137,9 +3287,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, [ @@ -3157,9 +3307,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, [ @@ -3233,16 +3383,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 @@ -3251,9 +3391,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() @@ -3319,6 +3456,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" @@ -3337,9 +3476,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 @@ -3361,7 +3497,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 @@ -3677,14 +3813,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 @@ -3692,12 +3837,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, @@ -3751,7 +3897,6 @@ if test "$TOOLKIT" != "MSW"; then fi fi fi -dnl if !MSW if test "$wxUSE_SOCKETS" = "yes" ; then AC_DEFINE(wxUSE_SOCKETS) @@ -3772,6 +3917,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 @@ -3874,6 +4023,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, @@ -3927,7 +4080,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 @@ -3951,14 +4104,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 @@ -3986,8 +4132,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 @@ -4060,6 +4210,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" @@ -4266,7 +4421,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 @@ -4307,7 +4462,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 @@ -4332,15 +4487,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 @@ -4486,14 +4649,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 @@ -4578,18 +4737,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" @@ -4602,8 +4761,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 @@ -4629,10 +4787,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 @@ -4732,6 +4892,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) @@ -4772,7 +4933,7 @@ if test "$wxUSE_GUI" = "yes"; then 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