X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=e0e5581de946b9cedc20677ef60a5ea9ea319229;hb=5c3deb94d1a09347d78e0ce48ec4f0f3c3766b5c;hp=a7e9e1050391929151201caa9868cd3cf10dc019;hpb=be8cf2ca69e6a47e3a6163fbabd9e7bf9d91c2c0;p=mono.git diff --git a/configure.in b/configure.in index a7e9e105039..e0e5581de94 100644 --- a/configure.in +++ b/configure.in @@ -1,9 +1,11 @@ AC_INIT(README) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(mono,0.31.99) +AM_INIT_AUTOMAKE(mono,1.0) AM_MAINTAINER_MODE +AC_PROG_LN_S + dnl dnl libgc checks dnl @@ -30,21 +32,30 @@ AC_SUBST(libmono_ldflags) dnl if linker handles the version script no_version_script=no +# Set to yes if Unix sockets cannot be created in an anonymous namespace +need_link_unlink=no + # Thread configuration inspired by sleepycat's db AC_MSG_CHECKING([host platform characteristics]) libgc_threads=no case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes - AC_DEFINE(PLATFORM_WIN32) + AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32]) CC="gcc -mno-cygwin" HOST_CC="gcc" + # So libgc configure gets -mno-cygwin + export CC # latest libgc already defines GC_WIN32_THREADS # CPPFLAGS="$CPPFLAGS -DGC_WIN32_THREADS -DWIN32_THREADS" CPPFLAGS="$CPPFLAGS -DWIN32_THREADS" libdl= libgc_threads=win32 gc_default=boehm + with_nptl=no + with_sigaltstack=no + LN_S=cp + ;; *-*-*netbsd*) platform_win32=no @@ -52,25 +63,80 @@ case "$host" in libmono_cflags="-D_REENTRANT" LDFLAGS="$LDFLAGS -pthread" libmono_ldflags="-pthread" - AC_DEFINE(NEED_LINK_UNLINK) + need_link_unlink=yes + libdl= + libgc_threads=no + ;; +# these flags will work for all versions of -STABLE +# + *-*-*freebsd4*) + platform_win32=no + if test "x$PTHREAD_CFLAGS" = "x"; then + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_FREEBSD_THREADS" + libmono_cflags="-D_THREAD_SAFE" + else + CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags="$PTHREAD_CFLAGS" + fi + if test "x$PTHREAD_LIBS" = "x"; then + LDFLAGS="$LDFLAGS -pthread" + libmono_ldflags="-pthread" + else + LDFLAGS="$LDFLAGS $PTHREAD_LIBS" + libmono_ldflags="$PTHREAD_LIBS" + fi + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID) + libdl= + libgc_threads=pthreads +# TLS isn't implemented at all on -STABLE + with_nptl=no + with_tls=pthread + ;; +# older versions of -CURRENT will break with these flags but testing +# indicates these older versions won't run Mono anyway +# + *-*-*freebsd5*) + platform_win32=no + if test "x$PTHREAD_CFLAGS" = "x"; then + CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags= + else + CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags="$PTHREAD_CFLAGS" + fi + if test "x$PTHREAD_LIBS" = "x"; then + LDFLAGS="$LDFLAGS -lpthread" + libmono_ldflags="-lpthread" + else + LDFLAGS="$LDFLAGS $PTHREAD_LIBS" + libmono_ldflags="$PTHREAD_LIBS" + fi + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID) libdl= libgc_threads=pthreads +# TLS is only partially implemented on -CURRENT (compiler support +# but NOT library support) +# + with_nptl=no + with_tls=pthread ;; - *-*-*freebsd*|*-*-*openbsd*) + *-*-*openbsd*) platform_win32=no - CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_FREEBSD_THREADS" libmono_cflags="-D_THREAD_SAFE" LDFLAGS="$LDFLAGS -pthread" libmono_ldflags="-pthread" - AC_DEFINE(NEED_LINK_UNLINK) + need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID) libdl= libgc_threads=pthreads ;; *-*-linux*) platform_win32=no - CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -DMONO_USE_EXC_TABLES -D_GNU_SOURCE -D_REENTRANT -fexceptions" - libmono_cflags="-DMONO_USE_EXC_TABLES -fexceptions -D_REENTRANT" + CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT" + libmono_cflags="-D_REENTRANT" libmono_ldflags="-lpthread" libdl="-ldl" libgc_threads=pthreads @@ -83,28 +149,27 @@ case "$host" in libmono_cflags="-D_REENTRANT" libmono_ldflags="-lpthread" libgc_threads=pthreads - AC_DEFINE(NEED_LINK_UNLINK) + need_link_unlink=yes ;; *-*-solaris*) platform_win32=no CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT" - AC_DEFINE(NEED_LINK_UNLINK) + need_link_unlink=yes libmono_cflags="-D_REENTRANT" libgc_threads=pthreads ;; *-*-darwin*) platform_win32=no - CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE" + CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS" libmono_cflags="-D_THREAD_SAFE" LDFLAGS="$LDFLAGS -pthread" libmono_ldflags="-pthread" - AC_DEFINE(NEED_LINK_UNLINK) + need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID) AC_DEFINE(USE_MACH_SEMA) no_version_script=yes libdl= - libgc_threads=no - gc_default=none + libgc_threads=pthreads ;; *) AC_MSG_WARN([*** Please add $host to configure.in checks!]) @@ -113,9 +178,12 @@ case "$host" in ;; esac AC_MSG_RESULT(ok) -AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes) -AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes) +if test x$need_link_unlink = xyes; then + AC_DEFINE(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace]) +fi + +AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes) AC_CHECK_TOOL(CC, gcc, gcc) AC_PROG_CC @@ -159,6 +227,8 @@ if test "x$lt_cv_prog_gnu_ld" = "xno"; then no_version_script=yes fi +AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes) + AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h) # for mono/mini/tramp-x86.c @@ -231,14 +301,27 @@ AC_SUBST(GMODULE_LIBS) AC_ARG_WITH(gc, [ --with-gc=boehm,included,none],[gc=$with_gc],[gc=$gc_default]) -# Enable support for NPTL only features like fast thread-local storage -# We can't reliably detect nptl at compile & run time -# so this option will stay until nptl becomes more widespread -AC_ARG_WITH(nptl, [ --with-nptl=yes,no enable/disable support for NPTL],[],[with_nptl=yes]) +# Enable support for fast thread-local storage +# Some systems have broken support, so we allow to disable it. +AC_ARG_WITH(tls, [ --with-tls=__thread,pthread select Thread Local Storage implementation],[],[with_tls=__thread]) + +# Kept for compatibility +AC_ARG_WITH(nptl, [ --with-nptl=yes,no deprecated, use --with-tls instead],[],[with_nptl=default]) + +if test "x$with_nptl" != "xdefault"; then + if test "x$with_nptl" = "xyes"; then + AC_MSG_WARN([--with-nptl=yes is deprecated, use --with-tls=__thread option instead.]) + with_tls=__thread + fi + if test "x$with_nptl" = "xno"; then + AC_MSG_WARN([--with-nptl=no is deprecated, use --with-tls=pthread option instead.]) + with_tls=pthread + fi +fi # Enable support for using sigaltstack for SIGSEGV and stack overflow handling # This does not work on some platforms (bug #55253) -AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack],[],[with_sigaltstack=yes]) +AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack],[],[with_sigaltstack=no]) # assembly bundle support, see metadata/make-bundle.pl for more info AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[ @@ -308,9 +391,9 @@ case "x$gc" in ;; esac -we_are_embedded_in_mono=yes -export we_are_embedded_in_mono -export libgc_threads + +# tell libgc/configure about what we want +ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads" AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes) AC_SUBST(LIBGC_CFLAGS) @@ -322,7 +405,68 @@ dnl End of libgc checks dnl if test x$platform_win32 = xno; then + + dnl ****************************************************************** + dnl *** Checks for the IKVM JNI interface library *** + dnl ****************************************************************** + AC_ARG_WITH(ikvm-jni, [ --with-ikvm-jni=yes,no build the IKVM JNI interface library],[with_ikvm_jni=$withval],[with_ikvm_jni=yes]) + AC_ARG_WITH(jdk, [ --with-jdk=DIRECTORY Use JDK from DIRECTORY],[with_jdk_dir=$withval],[with_jdk_dir=]) + + ikvm_jni_dir= + if test x$with_ikvm_jni = xyes; then + AC_MSG_CHECKING([JDK headers]) + + if test x$with_jdk_dir = x; then + # Try JAVA_HOME variable + if test x$JAVA_HOME != x; then + with_jdk_dir=$JAVA_HOME + fi + fi + + jdk_platform= + if test -d $with_jdk_dir/include; then + jdk_headers_found=yes + + if test -d $with_jdk_dir/include/linux; then + jdk_platform=linux + else + if test -d $with_jdk_dir/include/solaris; then + jdk_platform=solaris + else + if test -f $with_jdk_dir/include/jni_md.h; then + # GNU Classpath sources + jdk_platform= + else + jdk_headers_found=no + fi + fi + fi + else + jdk_headers_found=no + fi + + if test x$jdk_headers_found = xyes; then + AC_MSG_RESULT($with_jdk_dir/include $with_jdk_dir/include/$jdk_platform) + else + AC_MSG_RESULT(not found) + fi + + if test x$jdk_headers_found = xyes; then + ikvm_jni_dir=ikvm-jni + IKVM_JNI_CFLAGS="-I$with_jdk_dir/include -I$with_jdk_dir/include/$jdk_platform" + fi + fi + + AC_SUBST(ikvm_jni_dir) + AC_SUBST(IKVM_JNI_CFLAGS) + + AC_CHECK_FUNCS(getgrgid_r) + AC_CHECK_FUNCS(getgrnam_r) + AC_CHECK_FUNCS(getpwnam_r) AC_CHECK_FUNCS(getpwuid_r) + AC_CHECK_FUNCS(getresuid) + AC_CHECK_FUNCS(setresuid) + dnl ****************************************************************** dnl *** Check for large file support *** dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) *** @@ -564,7 +708,17 @@ if test x$platform_win32 = xno; then dnl ***************************** dnl *** Checks for libpthread *** dnl ***************************** - AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") +# on FreeBSD -STABLE, the pthreads functions all reside in libc_r +# and libpthread does not exist +# + case "${host}" in + *-*-*freebsd4*) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") + ;; + *) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") + ;; + esac AC_CHECK_HEADERS(pthread.h) AC_CHECK_FUNCS(pthread_mutex_timedlock) AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np) @@ -585,7 +739,7 @@ if test x$platform_win32 = xno; then dnl *** Checks for working __thread *** dnl *********************************** AC_MSG_CHECKING(for working __thread) - if test "x$with_nptl" != "xyes"; then + if test "x$with_tls" != "x__thread"; then AC_MSG_RESULT(disabled) else AC_TRY_RUN([ @@ -796,11 +950,69 @@ if test x$platform_win32 = xno; then dnl ********************* dnl *** Check for AIO *** dnl ********************* - AC_CHECK_HEADERS(aio.h) - AC_CHECK_LIB(rt, aio_read, [ LIBS="$LIBS -lrt" ],) + AC_MSG_CHECKING([for SIGEV_THREAD definition]) + dnl Some systems (FreeBSD at least) may have aio_read + dnl but don't support/define SIGEV_THREAD. + AC_TRY_COMPILE([ + #include + ],[ + int x = SIGEV_THREAD; + ],[ + ac_cv_c_sigev_thread=yes + AC_MSG_RESULT(yes) + ],[ + AC_MSG_RESULT(no) + ]) + + if test "$ac_cv_c_sigev_thread" = "yes" ; then + AC_CHECK_HEADERS(aio.h sys/aio.h) + AC_CHECK_LIB(rt, aio_read, [ LIBS="$LIBS -lrt" ],) + SIGVAL_PTR="undefined" + if test "$ac_cv_header_aio_h" = "yes" -o "$ac_cv_header_sys_aio_h" = "yes" ; then + AC_CHECK_MEMBER(union sigval.sigval_ptr,SIGVAL_PTR="sigval_ptr",, [ + #include + ]) + AC_CHECK_MEMBER(union sigval.sival_ptr,SIGVAL_PTR="sival_ptr",, [ + #include + ]) + if test "$SIGVAL_PTR" = "undefined" ; then + AC_MSG_ERROR([Unable to detect field name in 'union sigval']) + fi + fi + AC_DEFINE_UNQUOTED(SIGVAL_PTR,$SIGVAL_PTR,[Pointer field name in 'union sigval']) + fi else + jdk_headers_found=no AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?)) AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?)) + + dnl ********************************* + dnl *** Check for struct ip_mreqn *** + dnl ********************************* + AC_MSG_CHECKING(for struct ip_mreqn) + AC_TRY_COMPILE([#include ], [ + struct ip_mreqn mreq; + mreq.imr_address.s_addr = 0; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_STRUCT_IP_MREQN) + ], [ + # We'll just have to try and use struct ip_mreq + AC_MSG_RESULT(no) + AC_MSG_CHECKING(for struct ip_mreq) + AC_TRY_COMPILE([#include ], [ + struct ip_mreq mreq; + mreq.imr_interface.s_addr = 0; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_STRUCT_IP_MREQ) + ], [ + # No multicast support + AC_MSG_RESULT(no) + ]) + ]) fi dnl socklen_t check @@ -818,13 +1030,14 @@ ac_cv_c_socklen_t=yes AC_MSG_RESULT(no) ]) -AC_CHECK_FUNCS(truncl, , AC_MSG_CHECKING(for truncl in math.h) +AC_CHECK_FUNCS(trunc, , AC_MSG_CHECKING(for trunc in math.h) + # Simply calling trunc (0.0) is no good since gcc will optimize the call away AC_TRY_LINK([#include ], - [ truncl(0.0); ], + [ static void *p = &trunc; ], [ - AC_DEFINE(HAVE_TRUNCL) + AC_DEFINE(HAVE_TRUNC) AC_MSG_RESULT(yes) - ac_cv_truncl=yes + ac_cv_trunc=yes ], AC_MSG_RESULT(no))) @@ -850,7 +1063,7 @@ case "{$target}" in dnl Win32 does not have /dev/random, they have their own method... *-*-mingw*|*-*-cygwin*) - ac_cv_have_dev_random = no + ac_cv_have_dev_random=no ;; dnl Everywhere else, it's /dev/random @@ -893,7 +1106,8 @@ if test "x$ac_cv_have_dev_random" = "xno" \ *** entropy collection in place, please contact and *** provide information about the system and how to access the random device. *** -*** For those systems who lack a random device, EGD support is forthcoming. +*** Otherwise you can install either egd or prngd and set the environment +*** variable MONO_EGD_SOCKET to point to the daemon's socket to use that. ***]]) fi @@ -905,18 +1119,32 @@ if test "x$try_shared_handles" != "xyes"; then AC_SUBST(DISABLE_SHARED_HANDLES) fi +# +# ICU +# ICU_CFLAGS="" ICU_LIBS="" enable_icu=no -AC_PATH_PROG(ICU_CONFIG, icu-config, no) -if test "x$ICU_CONFIG" = "xno" -o ! -x "$ICU_CONFIG"; then - AC_MSG_WARN([Only invariant locale available; install ICU for I18N support]) - enable_icu="no, if you want full i18n support download it from: http://oss.software.ibm.com/icu/index.html" -else - enable_icu="yes. Version: `$ICU_CONFIG --version`" - AC_DEFINE(HAVE_ICU) - ICU_CFLAGS=`$ICU_CONFIG --cppflags` - ICU_LIBS=`$ICU_CONFIG --ldflags` + +probe_icu=true +AC_ARG_WITH(icu, [ --with-icu=yes/no], + if test x$with_icu = xno; then + probe_icu=false; + AC_MSG_RESULT(Will not probe for ICU) + fi +) + +if $probe_icu; then + AC_PATH_PROG(ICU_CONFIG, icu-config, no) + if test "x$ICU_CONFIG" = "xno" -o ! -x "$ICU_CONFIG"; then + AC_MSG_WARN([Only invariant locale available; install ICU for I18N support]) + enable_icu="no, if you want full i18n support download it from: http://oss.software.ibm.com/icu/index.html" + else + enable_icu="yes. Version: `$ICU_CONFIG --version`" + AC_DEFINE(HAVE_ICU) + ICU_CFLAGS=`$ICU_CONFIG --cppflags` + ICU_LIBS=`$ICU_CONFIG --ldflags` + fi fi AC_SUBST(ICU_CFLAGS) AC_SUBST(ICU_LIBS) @@ -926,6 +1154,7 @@ ACCESS_UNALIGNED="yes" JIT_SUPPORTED=no LIBC="libc.so.6" +INTL="libc.so.6" jit_wanted=false case "$host" in @@ -945,16 +1174,24 @@ case "$host" in JIT_SUPPORTED=no ;; sparc*-*-*) - TARGET=SPARC; + if test "x$ac_cv_sizeof_void_p" = "x8"; then + TARGET=SPARC64 + else + TARGET=SPARC + fi arch_target=sparc; JIT_SUPPORTED=yes ACCESS_UNALIGNED="no" + LIBC="libc.so" + INTL="libintl.so" jit_wanted=true ;; -# alpha*-*-linux* | alpha*-*-osf*) -# TARGET=ALPHA; -# ACCESS_UNALIGNED="no" -# ;; + alpha*-*-linux* | alpha*-*-osf*) + TARGET=ALPHA; + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=no + arch_target=alpha; + ;; # ia64-*-linux* | ia64-*-hpux*) # TARGET=IA64; # arch_target=ia64; @@ -969,6 +1206,12 @@ case "$host" in # TARGET=M68K # ;; hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00) + TARGET=HPPA; + arch_target=hppa; + LIBC="libc.sl" + ACCESS_UNALIGNED="no" + ;; + hppa*linux*) TARGET=HPPA; arch_target=hppa; ACCESS_UNALIGNED="no" @@ -978,6 +1221,7 @@ case "$host" in TARGET=POWERPC; arch_target=ppc; JIT_SUPPORTED=yes + jit_wanted=true ;; arm-*-linux-* | armv4l-*-linux-*) TARGET=ARM; @@ -988,10 +1232,11 @@ case "$host" in TARGET=S390; arch_target=s390; ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes ;; esac -AC_ARG_WITH(jit, [ --with-jit=yes,no If you want to build scripts that default to the JIT],[ +AC_ARG_WITH(jit, [ --with-jit=yes,no If you want to build scripts that default to the JIT],[ jit_wanted=true ]) @@ -1014,6 +1259,12 @@ libsuffix=".so" case "$host" in powerpc-*-darwin*) libsuffix=".dylib" + LIBC="libc.dylib" + INTL="libintl.dylib" + ;; + *-*-*netbsd*) + LIBC="libc.so.12" + INTL="libintl.so.0" ;; esac AC_SUBST(libsuffix) @@ -1046,9 +1297,19 @@ if test ${ACCESS_UNALIGNED} = no; then CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS" fi +PREVIEW=no +AC_ARG_WITH(preview, [ --with-preview=yes,no If you want to install the 2.0 FX preview],[ + if test x$with_preview = xyes; then + PREVIEW=yes + fi +]) + +AM_CONDITIONAL(INSTALL_2_0, test x$PREVIEW = xyes) + AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes) AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno) AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC) +AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64) AM_CONDITIONAL(X86, test x$TARGET = xX86) AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64) AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA) @@ -1062,6 +1323,7 @@ AM_CONDITIONAL(HPPA, test x$TARGET = xHPPA) AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes) AC_SUBST(LIBC) +AC_SUBST(INTL) AC_SUBST(arch_target) AC_SUBST(CFLAGS) @@ -1099,24 +1361,33 @@ mono/io-layer/Makefile mono/handles/Makefile mono/mini/Makefile mono/profiler/Makefile +ikvm-jni/Makefile runtime/Makefile +runtime/net_1_1/Makefile +runtime/net_2_0/Makefile scripts/Makefile man/Makefile web/Makefile docs/Makefile data/Makefile +data/net_1_1/Makefile +data/net_2_0/Makefile samples/Makefile support/Makefile data/config mono.spec +tools/Makefile +tools/locale-builder/Makefile ]) echo " GC: $gc ICU: $enable_icu - NPTL: $with_nptl + TLS: $with_tls SIGALTSTACK: $with_sigaltstack Engine: $jit_status - + 2.0 Alpha: $PREVIEW + JNI support: $jdk_headers_found + "