2003-11-20 Dick Porter <dick@ximian.com>
[mono.git] / configure.in
index 6a61c3d902eb447f91e6a18e3e45e50d827804d3..0d1f677277313aa9c44fddab60bb44ecd627f9e4 100644 (file)
@@ -1,7 +1,7 @@
 AC_INIT(README)
 AC_CANONICAL_SYSTEM
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono,0.28)
+AM_INIT_AUTOMAKE(mono,0.28.99)
 AM_MAINTAINER_MODE
 
 dnl
@@ -215,6 +215,11 @@ 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 Enable support for NPTL])
+
 # assembly bundle support, see metadata/make-bundle.pl for more info
 AC_ARG_WITH(bundle, [  --with-bundle=bundle_template],[
        BUNDLE_FILE=$with_bundle
@@ -532,6 +537,7 @@ if test x$platform_win32 = xno; then
        dnl *** Checks for libpthread ***
        dnl *****************************
        AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
+       AC_CHECK_HEADERS(pthread.h)
        AC_CHECK_FUNCS(pthread_mutex_timedlock)
        AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
        AC_TRY_COMPILE([ #include <pthread.h>], [
@@ -546,6 +552,50 @@ if test x$platform_win32 = xno; then
        ])
        AC_CHECK_FUNCS(pthread_attr_setstacksize)
 
+       dnl ***********************************
+       dnl *** Checks for working __thread ***
+       dnl ***********************************
+       AC_MSG_CHECKING(for working __thread)
+       AC_TRY_RUN([
+               #include <pthread.h>
+
+               __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;
+
+                       i = 5;
+
+                       pthread_create (&t1, NULL, thread_main, 1);
+                       pthread_create (&t2, NULL, thread_main, 2);
+
+                       pthread_join (t1, NULL);
+                       pthread_join (t2, NULL);
+
+                       return !(res1 + res2 == 2);
+               }
+       ], [
+                       if test "x$with_nptl" = "x"; then
+                               AC_MSG_RESULT(disabled)
+                       else
+                               AC_MSG_RESULT(yes)
+                               AC_DEFINE(HAVE_KW_THREAD)
+                       fi
+       ], [
+                       AC_MSG_RESULT(no)
+       ])
+
        dnl ********************************
        dnl *** Checks for semaphore lib ***
        dnl ********************************
@@ -597,6 +647,19 @@ if test x$platform_win32 = xno; then
        dnl *** have it in the library (duh))                            ***
        dnl ****************************************************************
        AC_CHECK_FUNCS(poll)
+
+       dnl *************************
+       dnl *** Check for signbit ***
+       dnl *************************
+       AC_MSG_CHECKING(for signbit)
+       AC_TRY_COMPILE([#include <math.h>], [
+               int s = signbit(1.0);
+       ], [
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_SIGNBIT)
+       ], [
+               AC_MSG_RESULT(no)
+       ]) 
 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?))