X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=4722d125a3b06a02972677aea1f0a45a1c792e21;hb=4347c57e9783cf9348af2e0ec773024ab6d9b9fc;hp=87f62c2039540f185efe8490714b67e4d2d7f77c;hpb=d41414f963e0536f6c7799928716f10d77257dba;p=mono.git diff --git a/configure.in b/configure.in index 87f62c20395..4722d125a3b 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ AC_INIT(README) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(mono,0.31.99) +AM_INIT_AUTOMAKE(mono,0.95) AM_MAINTAINER_MODE dnl @@ -30,21 +30,29 @@ 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 + ;; *-*-*netbsd*) platform_win32=no @@ -52,25 +60,25 @@ 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=pthreads + libgc_threads=no ;; *-*-*freebsd*|*-*-*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 +91,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,8 +120,12 @@ case "$host" in ;; esac AC_MSG_RESULT(ok) + +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) -AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes) AC_CHECK_TOOL(CC, gcc, gcc) AC_PROG_CC @@ -151,6 +162,15 @@ AC_HEADER_STDC AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL +# Test whenever ld supports -version-script +AC_PROG_LD +AC_PROG_LD_GNU +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 @@ -232,10 +252,6 @@ AC_ARG_WITH(nptl, [ --with-nptl=yes,no enable/disable support for NPTL],[] # 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]) -if test x$with_sigaltstack = "xyes"; then - AC_DEFINE(HAVE_WORKING_SIGALTSTACK) -fi - # assembly bundle support, see metadata/make-bundle.pl for more info AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[ BUNDLE_FILE=$with_bundle @@ -304,9 +320,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) @@ -318,6 +334,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) *** @@ -562,6 +640,7 @@ if test x$platform_win32 = xno; then AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") AC_CHECK_HEADERS(pthread.h) AC_CHECK_FUNCS(pthread_mutex_timedlock) + AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np) AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE) AC_TRY_COMPILE([ #include ], [ pthread_mutexattr_t attr; @@ -579,45 +658,145 @@ if test x$platform_win32 = xno; then dnl *** Checks for working __thread *** dnl *********************************** AC_MSG_CHECKING(for working __thread) - AC_TRY_RUN([ - #include - - __thread int i; - static int res1, res2; - - void thread_main (void *arg) - { - i = arg; - sleep (1); - if (arg == 1) - res1 = (i == arg); - else - res2 = (i == arg); - } + if test "x$with_nptl" != "xyes"; then + AC_MSG_RESULT(disabled) + else + AC_TRY_RUN([ + #include + + __thread int i; + static int res1, res2; + + void thread_main (void *arg) + { + i = arg; + sleep (1); + if (arg == 1) + res1 = (i == arg); + else + res2 = (i == arg); + } - int main () { - pthread_t t1, t2; + int main () { + pthread_t t1, t2; - i = 5; + i = 5; - pthread_create (&t1, NULL, thread_main, 1); - pthread_create (&t2, NULL, thread_main, 2); + pthread_create (&t1, NULL, thread_main, 1); + pthread_create (&t2, NULL, thread_main, 2); - pthread_join (t1, NULL); - pthread_join (t2, NULL); + pthread_join (t1, NULL); + pthread_join (t2, NULL); - return !(res1 + res2 == 2); - } - ], [ - if test "x$with_nptl" != "xyes"; then - AC_MSG_RESULT(disabled) - else + return !(res1 + res2 == 2); + } + ], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KW_THREAD) - fi - ], [ - AC_MSG_RESULT(no) - ]) + ], [ + AC_MSG_RESULT(no) + ]) + fi + + dnl ************************************** + dnl *** Checks for working sigaltstack *** + dnl ************************************** + AC_MSG_CHECKING(for working sigaltstack) + if test "x$with_sigaltstack" != "xyes"; then + AC_MSG_RESULT(disabled) + else + AC_TRY_RUN([ + #include + #include + #include + #include + #include + #include + + static void + sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context) + { + exit (0); + } + + static void * + loop (void *ignored) + { + char *ptr = NULL; + + *ptr = 0; + return NULL; + } + + static void + child () + { + struct sigaction sa; + struct sigaltstack sas; + pthread_t id; + pthread_attr_t attr; + + sa.sa_sigaction = sigsegv_signal_handler; + sigemptyset (&sa.sa_mask); + sa.sa_flags = SA_SIGINFO | SA_STACK; + if (sigaction (SIGSEGV, &sa, NULL) == -1) { + perror ("lala"); + return; + } + + sas.ss_sp = malloc (SIGSTKSZ); + sas.ss_size = SIGSTKSZ; + sas.ss_flags = SS_ONSTACK; + if (sigaltstack (&sas, NULL) == -1) { + perror ("lala"); + return; + } + + pthread_attr_init (&attr); + if (pthread_create(&id, &attr, loop, &attr) != 0) { + printf ("failed\n"); + return; + } + + sleep (100); + } + + int + main () + { + pid_t son; + int status; + int i; + + son = fork (); + if (son == -1) { + return 1; + } + + if (son == 0) { + child (); + return 0; + } + + for (i = 0; i < 3; ++i) { + sleep (1); + waitpid (son, &status, WNOHANG); + if (WIFEXITED (status) && WEXITSTATUS (status) == 0) + return 0; + } + + kill (son, SIGKILL); + return 1; + } + + ], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_WORKING_SIGALTSTACK) + ], [ + with_sigaltstack=no + AC_MSG_RESULT(no) + ]) + fi dnl ******************************** dnl *** Checks for semaphore lib *** @@ -690,9 +869,39 @@ 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?)) fi @@ -712,13 +921,13 @@ 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) AC_TRY_LINK([#include ], - [ truncl(0.0); ], + [ trunc(0.0); ], [ - AC_DEFINE(HAVE_TRUNCL) + AC_DEFINE(HAVE_TRUNC) AC_MSG_RESULT(yes) - ac_cv_truncl=yes + ac_cv_trunc=yes ], AC_MSG_RESULT(no))) @@ -744,7 +953,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 @@ -787,7 +996,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 @@ -799,18 +1009,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) @@ -835,7 +1059,7 @@ case "$host" in ;; x86_64-*-* | amd64-*-*) TARGET=AMD64; - arch_target=x86-64; + arch_target=amd64; JIT_SUPPORTED=no ;; sparc*-*-*) @@ -843,6 +1067,7 @@ case "$host" in arch_target=sparc; JIT_SUPPORTED=yes ACCESS_UNALIGNED="no" + LIBC="libc.so" jit_wanted=true ;; # alpha*-*-linux* | alpha*-*-osf*) @@ -865,6 +1090,7 @@ case "$host" in hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00) TARGET=HPPA; arch_target=hppa; + LIBC="libc.sl" ACCESS_UNALIGNED="no" ;; macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openbsd* | \ @@ -872,6 +1098,7 @@ case "$host" in TARGET=POWERPC; arch_target=ppc; JIT_SUPPORTED=yes + jit_wanted=true ;; arm-*-linux-* | armv4l-*-linux-*) TARGET=ARM; @@ -882,10 +1109,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 ]) @@ -908,6 +1136,10 @@ libsuffix=".so" case "$host" in powerpc-*-darwin*) libsuffix=".dylib" + LIBC="libc.dylib" + ;; + *-*-*netbsd*) + LIBC="libc.so.12" ;; esac AC_SUBST(libsuffix) @@ -940,6 +1172,15 @@ 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) @@ -993,7 +1234,10 @@ 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 @@ -1003,6 +1247,8 @@ samples/Makefile support/Makefile data/config mono.spec +tools/Makefile +tools/locale-builder/Makefile ]) echo " @@ -1012,5 +1258,7 @@ echo " NPTL: $with_nptl SIGALTSTACK: $with_sigaltstack Engine: $jit_status - + 2.0 Alpha: $PREVIEW + JNI support: $jdk_headers_found + "