* Consts.cs: Added consts for NET_2_0.
[mono.git] / configure.in
index dff0a2388518abf2f4f431a7b4b936990ec22823..8a89fd6b31e67e7fc547f4aaa8f62636629be834 100644 (file)
@@ -94,7 +94,7 @@ case "$host" in
                ;;
        *-*-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"
@@ -115,15 +115,6 @@ esac
 AC_MSG_RESULT(ok)
 AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
 
-# 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_TOOL(CC, gcc, gcc)
 AC_PROG_CC
 AM_PROG_CC_STDC
@@ -159,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
@@ -322,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) ***
@@ -566,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.h>], [
                pthread_mutexattr_t attr;
@@ -583,145 +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 <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);
-               }
+       if test "x$with_nptl" != "xyes"; then
+               AC_MSG_RESULT(disabled)
+       else
+               AC_TRY_RUN([
+                       #include <pthread.h>
 
-               int main () {
-                       pthread_t t1, t2;
+                       __thread int i;
+                       static int res1, res2;
 
-                       i = 5;
+                       void thread_main (void *arg)
+                       {
+                               i = arg;
+                               sleep (1);
+                               if (arg == 1)
+                                       res1 = (i == arg);
+                               else
+                                       res2 = (i == arg);
+                       }
 
-                       pthread_create (&t1, NULL, thread_main, 1);
-                       pthread_create (&t2, NULL, thread_main, 2);
+                       int main () {
+                               pthread_t t1, t2;
 
-                       pthread_join (t1, NULL);
-                       pthread_join (t2, NULL);
+                               i = 5;
 
-                       return !(res1 + res2 == 2);
-               }
-       ], [
-                       if test "x$with_nptl" != "xyes"; then
-                               AC_MSG_RESULT(disabled)
-                       else
+                               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);
+                       }
+               ], [
                                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)
-       AC_TRY_RUN([
-               #include <stdio.h>
-               #include <stdlib.h>
-               #include <unistd.h>
-               #include <signal.h>
-               #include <pthread.h>
-               #include <sys/wait.h>
-
-               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;
+       if test "x$with_sigaltstack" != "xyes"; then
+               AC_MSG_RESULT(disabled)
+       else
+               AC_TRY_RUN([
+                       #include <stdio.h>
+                       #include <stdlib.h>
+                       #include <unistd.h>
+                       #include <signal.h>
+                       #include <pthread.h>
+                       #include <sys/wait.h>
+
+                       static void
+                       sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context)
+                       {
+                               exit (0);
                        }
 
-                       sas.ss_sp = malloc (SIGSTKSZ);
-                       sas.ss_size = SIGSTKSZ;
-                       sas.ss_flags = SS_ONSTACK;
-                       if (sigaltstack (&sas, NULL) == -1) {
-                               perror ("lala");
-                               return;
-                       }
+                       static void *
+                       loop (void *ignored)
+                       {
+                               char *ptr = NULL;
 
-                       pthread_attr_init (&attr);
-                       if (pthread_create(&id, &attr, loop, &attr) != 0) {
-                               printf ("failed\n");
-                               return;
+                               *ptr = 0;
+                               return NULL;
                        }
 
-                       sleep (100);
-               }
+                       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;
+                               }
 
-               int
-               main ()
-               {
-                       pid_t son;
-                       int status;
-                       int i;
+                               sas.ss_sp = malloc (SIGSTKSZ);
+                               sas.ss_size = SIGSTKSZ;
+                               sas.ss_flags = SS_ONSTACK;
+                               if (sigaltstack (&sas, NULL) == -1) {
+                                       perror ("lala");
+                                       return;
+                               }
 
-                       son = fork ();
-                       if (son == -1) {
-                               return 1;
-                       }
+                               pthread_attr_init (&attr);
+                               if (pthread_create(&id, &attr, loop, &attr) != 0) {
+                                       printf ("failed\n");
+                                       return;
+                               }
 
-                       if (son == 0) {
-                               child ();
-                               return 0;
+                               sleep (100);
                        }
 
-                       for (i = 0; i < 3; ++i) {
-                               sleep (1);
-                               waitpid (son, &status, WNOHANG);
-                               if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
+                       int
+                       main ()
+                       {
+                               pid_t son;
+                               int status;
+                               int i;
+
+                               son = fork ();
+                               if (son == -1) {
+                                       return 1;
+                               }
+
+                               if (son == 0) {
+                                       child ();
                                        return 0;
-                       }
+                               }
 
-                       kill (son, SIGKILL);
-                       return 1;
-               }
+                               for (i = 0; i < 3; ++i) {
+                                       sleep (1);
+                                       waitpid (son, &status, WNOHANG);
+                                       if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
+                                               return 0;
+                               }
 
-       ], [
-                       if test "x$with_sigaltstack" != "xyes"; then
-                               AC_MSG_RESULT(disabled)
-                       else
+                               kill (son, SIGKILL);
+                               return 1;
+                       }
+
+               ], [
                                AC_MSG_RESULT(yes)
                                AC_DEFINE(HAVE_WORKING_SIGALTSTACK)
-                       fi
-       ], [
-                       with_sigaltstack=no
-                       AC_MSG_RESULT(no)
-       ])
+               ], [
+                               with_sigaltstack=no
+                               AC_MSG_RESULT(no)
+               ])
+       fi
 
        dnl ********************************
        dnl *** Checks for semaphore lib ***
@@ -791,11 +849,29 @@ if test x$platform_win32 = xno; then
                AC_MSG_RESULT(no)
        ]) 
 
+       dnl *********************
+       dnl * Check for scandir *
+       dnl *********************
+       AC_CHECK_FUNCS(scandir)
+
        dnl *********************
        dnl *** Check for AIO ***
        dnl *********************
-       AC_CHECK_HEADERS(aio.h)
+       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 <sys/signal.h>
+                               ])
+               AC_CHECK_MEMBER(union sigval.sival_ptr,SIGVAL_PTR="sival_ptr",, [
+                               #include <sys/signal.h>
+                               ])
+               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?))
@@ -891,7 +967,8 @@ if test "x$ac_cv_have_dev_random" = "xno" \
 *** entropy collection in place, please contact <crichton@gimp.org> 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
  
@@ -903,18 +980,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)
@@ -976,6 +1067,7 @@ case "$host" in
                TARGET=POWERPC;
                arch_target=ppc;
                JIT_SUPPORTED=yes
+               jit_wanted=true
                ;;
        arm-*-linux-* | armv4l-*-linux-*)
                TARGET=ARM;
@@ -986,10 +1078,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
 ])
 
@@ -1044,6 +1137,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)
@@ -1097,7 +1199,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
@@ -1116,5 +1221,6 @@ echo "
        NPTL:        $with_nptl
        SIGALTSTACK: $with_sigaltstack
        Engine:      $jit_status
+       2.0 Alpha:   $PREVIEW
        
 "