X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=12626cccf579888022e084726f165f2f4b94f4a9;hb=6a329d951df135123647116d34b97e2e9e1d7f19;hp=051546e7583fa20461a5df9f440b7b9aafbd421a;hpb=f610e779dcef0a990779d30e67049a355508ff2a;p=mono.git diff --git a/configure.in b/configure.in index 051546e7583..12626cccf57 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.30.99) +AM_INIT_AUTOMAKE(mono,0.31.99) AM_MAINTAINER_MODE dnl @@ -114,7 +114,6 @@ 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) AC_CHECK_TOOL(CC, gcc, gcc) AC_PROG_CC @@ -151,6 +150,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 @@ -228,6 +236,10 @@ AC_ARG_WITH(gc, [ --with-gc=boehm,included,none],[gc=$with_gc],[gc=$gc_default] # 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 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]) + # assembly bundle support, see metadata/make-bundle.pl for more info AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[ BUNDLE_FILE=$with_bundle @@ -260,6 +272,10 @@ case "x$gc" in if test "x$found_gcj_malloc" = "xyes"; then AC_DEFINE(HAVE_GC_GCJ_MALLOC) fi + AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl) + if test "x$found_gc_enable" = "xyes"; then + AC_DEFINE(HAVE_GC_ENABLE) + fi ;; xincluded) @@ -281,6 +297,7 @@ case "x$gc" in # The included libgc contains GCJ support AC_DEFINE(HAVE_GC_GCJ_MALLOC) + AC_DEFINE(HAVE_GC_ENABLE) ;; xnone) @@ -305,6 +322,63 @@ 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 + jdk_headers_found=no + 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) *** @@ -549,6 +623,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; @@ -566,45 +641,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 *** @@ -673,6 +848,25 @@ if test x$platform_win32 = xno; then ], [ AC_MSG_RESULT(no) ]) + + dnl ********************* + dnl *** Check for AIO *** + dnl ********************* + 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']) else 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?)) @@ -696,9 +890,17 @@ ac_cv_c_socklen_t=yes AC_CHECK_FUNCS(truncl, , AC_MSG_CHECKING(for truncl in math.h) AC_TRY_LINK([#include ], [ truncl(0.0); ], - AC_DEFINE(HAVE_TRUNCL) AC_MSG_RESULT(yes), + [ + AC_DEFINE(HAVE_TRUNCL) + AC_MSG_RESULT(yes) + ac_cv_truncl=yes + ], AC_MSG_RESULT(no))) +if test "x$ac_cv_truncl" != "xyes"; then + AC_CHECK_LIB(sunmath, aintl, [ AC_DEFINE(HAVE_AINTL) LIBS="$LIBS -lsunmath"]) +fi + dnl **************************** dnl *** Look for /dev/random *** dnl **************************** @@ -760,7 +962,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 @@ -794,6 +997,7 @@ ACCESS_UNALIGNED="yes" JIT_SUPPORTED=no LIBC="libc.so.6" +jit_wanted=false case "$host" in # mips-sgi-irix5.* | mips-sgi-irix6.*) # TARGET=MIPS; @@ -803,6 +1007,7 @@ case "$host" in TARGET=X86; arch_target=x86; JIT_SUPPORTED=yes + jit_wanted=true ;; x86_64-*-* | amd64-*-*) TARGET=AMD64; @@ -812,7 +1017,9 @@ case "$host" in sparc*-*-*) TARGET=SPARC; arch_target=sparc; + JIT_SUPPORTED=yes ACCESS_UNALIGNED="no" + jit_wanted=true ;; # alpha*-*-linux* | alpha*-*-osf*) # TARGET=ALPHA; @@ -851,9 +1058,28 @@ 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],[ + jit_wanted=true +]) + +USEJIT=false +if test x$JIT_SUPPORTED = xyes; then + if $jit_wanted; then + USEJIT=true + jit_status="Building and using the JIT" + else + jit_status="Building the JIT, defaulting to the interpreter" + fi +else + jit_status="interpreter" +fi + +AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue) + libsuffix=".so" case "$host" in @@ -944,20 +1170,27 @@ 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 -doc/Makefile +web/Makefile docs/Makefile data/Makefile samples/Makefile +support/Makefile data/config mono.spec ]) echo " - GC: $gc - ICU: $enable_icu - NPTL: $with_nptl + GC: $gc + ICU: $enable_icu + NPTL: $with_nptl + SIGALTSTACK: $with_sigaltstack + Engine: $jit_status + "