X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9d353d4a226d1d9bcf756d937e1e87fe9a644963..19f0aa9a2f8d65aa61d8b02af1526194ebcf8a83:/configure.in diff --git a/configure.in b/configure.in index d21fb8e912..7bbfa3dcc2 100644 --- a/configure.in +++ b/configure.in @@ -96,9 +96,6 @@ 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! @@ -183,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 @@ -268,7 +264,6 @@ case "${host}" in 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__) @@ -340,8 +335,8 @@ if test $DEBUG_CONFIGURE = 1; then DEFAULT_wxUSE_OPTIMISE=no DEFAULT_wxUSE_PROFILE=no DEFAULT_wxUSE_NO_DEPS=no - DEFAULT_wxUSE_NO_RTTI=yes - DEFAULT_wxUSE_NO_EXCEPTIONS=yes + DEFAULT_wxUSE_NO_RTTI=no + DEFAULT_wxUSE_NO_EXCEPTIONS=no DEFAULT_wxUSE_PERMISSIVE=no DEFAULT_wxUSE_DEBUG_FLAG=yes DEFAULT_wxUSE_DEBUG_INFO=yes @@ -514,8 +509,8 @@ else DEFAULT_wxUSE_OPTIMISE=yes DEFAULT_wxUSE_PROFILE=no DEFAULT_wxUSE_NO_DEPS=no - DEFAULT_wxUSE_NO_RTTI=yes - DEFAULT_wxUSE_NO_EXCEPTIONS=yes + DEFAULT_wxUSE_NO_RTTI=no + DEFAULT_wxUSE_NO_EXCEPTIONS=no DEFAULT_wxUSE_PERMISSIVE=no DEFAULT_wxUSE_DEBUG_FLAG=no DEFAULT_wxUSE_DEBUG_INFO=no @@ -1175,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 @@ -1191,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 @@ -2099,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 @@ -2289,10 +2292,6 @@ WX_LIBRARY_LINK2="lib${WX_LIBRARY}.${SO_SUFFIX}" WX_LIBRARY_LINK1_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}.${WX_CURRENT}" WX_LIBRARY_LINK2_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}" -dnl the name of the resources file for wxMac -WX_RESOURCES_MACOSX="lib${WX_LIBRARY}.rsrc" -WX_RESOURCES_MACOSX_COMPILED="lib${WX_LIBRARY}.r" - case "${host}" in *-*-cygwin* | *-*-mingw32* ) @@ -2311,7 +2310,17 @@ case "${host}" in WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}.${SO_SUFFIX}" WX_LIBRARY_NAME_SHARED_GL="lib${WX_LIBRARY_GL}.${SO_SUFFIX}" fi + ;; + *-*-darwin* ) + 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" + fi + ;; esac dnl the name of the static library @@ -2426,9 +2435,14 @@ 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" - SHARED_LD="$CXX -dynamiclib -init _wxWindowsDylibInit -o" + CFLAGS="$CFLAGS -fno-common -DWXMAKINGDLL" + CXXFLAGS="$CXXFLAGS -fno-common -DWXMAKINGDLL" + dnl Executables must necessarily fully bind the wxWindows library at + dnl program launch otherwise lazy binding breaks RTTI class info + LDFLAGS_EXE="$LDFLAGS_EXE -Wl,-bind_at_load" + dnl The initialization routine doesn't seem useful with lazy linking solved + dnl SHARED_LD="$CXX -dynamiclib -init _wxWindowsDylibInit -o" + SHARED_LD="\${top_srcdir}/distrib/mac/shared-ld-sh -o" PIC_FLAG="-dynamic -fPIC" SONAME_FLAGS="-compatibility_version ${WX_RELEASE} -current_version ${WX_VERSION}" SONAME_FLAGS_GL=${SONAME_FLAGS} @@ -2515,14 +2529,21 @@ fi if test "$wxUSE_MAC" = 1; then dnl add the resources target for wxMac - WX_ALL="${WX_ALL} \$(build_libdir)/lib${WX_LIBRARY}.r" + LIBWXMACRES="\$(top_builddir)/lib/${WX_RESOURCES_MACOSX_ASCII}" + WX_ALL="${WX_ALL} ${LIBWXMACRES}" 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" + 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 else if test "$wxUSE_PM" = 1; then LIBWXMACRESCOMP="emxbind -ep \$(BIN_PROGRAM)" @@ -3121,17 +3142,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 @@ -3145,67 +3168,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: @@ -3214,9 +3306,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, [ @@ -3234,9 +3326,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, [ @@ -3310,16 +3402,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 @@ -3328,9 +3410,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() @@ -3396,6 +3475,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" @@ -3414,9 +3495,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 @@ -4678,7 +4756,7 @@ 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 @@ -4728,10 +4806,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 @@ -4818,6 +4898,7 @@ AC_SUBST(SAMPLES_SUBDIRS) dnl additional libraries and linker settings AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS_GL) +AC_SUBST(LDFLAGS_EXE) AC_SUBST(OPENGL_LIBS) AC_SUBST(DMALLOC_LIBS) AC_SUBST(EXTRADEFS) @@ -4826,8 +4907,8 @@ dnl additional resurces settings AC_SUBST(RESCOMP) AC_SUBST(RESFLAGS) AC_SUBST(RESPROGRAMOBJ) -AC_SUBST(WX_RESOURCES_MACOSX) -AC_SUBST(WX_RESOURCES_MACOSX_COMPILED) +AC_SUBST(WX_RESOURCES_MACOSX_ASCII) +AC_SUBST(WX_RESOURCES_MACOSX_DATA) dnl additional for Mac OS X AC_SUBST(DEREZ)