2008-06-02 Zoltan Varga <vargaz@gmail.com>
[mono.git] / configure.in
index 9158a49c6817f7f6b30bc72239233417bc8f9d4a..2c1a6d34993129432df8d37e7711360b8ca6f92e 100644 (file)
@@ -36,6 +36,11 @@ else
   gc_default=boehm
 fi
 
+# These variables are the CPPFLAGS/CFLAGS passed to libgc's configure
+# libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0
+CPPFLAGS_FOR_LIBGC=$CPPFLAGS
+CFLAGS_FOR_LIBGC=$CFLAGS
+
 #
 # These are the flags that need to be stored in the mono.pc file for 
 # compiling code that will embed Mono
@@ -295,6 +300,17 @@ AC_LIBTOOL_WIN32_DLL
 # This causes monodis to not link correctly
 #AC_DISABLE_FAST_INSTALL
 AM_PROG_LIBTOOL
+AC_ARG_ENABLE(dolt, [ --enable-dolt    Use dolt (http://dolt.freedesktop.org/) instead of libtool for building.])
+
+if test "x$enable_dolt" = "xyes"; then
+   DOLT
+else
+       # The DOLT macro contains AC_SUBST's for these so we must define them because of
+       # autoconf brokeness
+    LTCOMPILE='$(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(COMPILE)'
+    LTCXXCOMPILE='$(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXXCOMPILE)'
+fi
 
 # Test whenever ld supports -version-script
 AC_PROG_LD
@@ -305,7 +321,7 @@ 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 linux/rtc.h sys/syscall.h sys/mkdev.h)
+AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h)
 
 AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
 if test x$have_zlib = xyes; then
@@ -394,6 +410,7 @@ else
        esac
 fi
 CFLAGS="$CFLAGS -g $WARN"
+CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g"
 
 # Where's the 'mcs' source tree?
 if test -d $srcdir/mcs; then
@@ -406,7 +423,7 @@ fi
 # A sanity check to catch cases where the package was unpacked
 # with an ancient tar program (Solaris)
 #
-AC_MSG_CHECKING(Integrity of package)
+AC_MSG_CHECKING(integrity of package)
 if test -f $srcdir/$mcsdir/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap/SoapTypeMapper.cs
 then
    AC_MSG_RESULT(ok)
@@ -564,6 +581,8 @@ if test "x$with_xen_opt" = "xyes"; then
                                           void main () { }
        ], [
           AC_MSG_RESULT(yes)
+          # Pass it to libgc as well
+          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -mno-tls-direct-seg-refs"
        ], [
           AC_MSG_RESULT(no)
           CFLAGS=$ORIG_CFLAGS
@@ -1649,10 +1668,22 @@ if test "x$try_shared_handles" != "xyes"; then
        AC_SUBST(DISABLE_SHARED_HANDLES)
 fi
 
+if test x$gc = xsgen; then
+   if test x$with_tls != x__thread; then
+         AC_MSG_ERROR([The SGEN garbage collector depends on a working __thread implementation, and either --with-thread=pthread was passed to configure, or the configure test for __thread failed.])
+   fi
+fi
 
 AC_ARG_ENABLE(nunit-tests, [ --enable-nunit-tests      Run the nunit tests of the class library on 'make check'])
 AM_CONDITIONAL(ENABLE_NUNIT_TESTS, [test x$enable_nunit_tests = xyes])
 
+AC_MSG_CHECKING([if big-arrays are to be enabled])
+AC_ARG_ENABLE(big-arrays,  [ --enable-big-arrays       Enable the allocation and indexing of arrays greater than Int32.MaxValue], enable_big_arrays=$enableval, enable_big_arrays=no)
+AC_MSG_RESULT($enable_big_arrays)
+if test "x$enable_big_arrays" = "xyes" ; then
+       AC_DEFINE(MONO_BIG_ARRAYS,1,[Enable the allocation and indexing of arrays greater than Int32.MaxValue])
+fi
+
 TARGET="unknown"
 ACCESS_UNALIGNED="yes"
 
@@ -1783,7 +1814,11 @@ case "$host" in
                ;;
        macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
         powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* )
-               TARGET=POWERPC;
+               if test "x$ac_cv_sizeof_void_p" = "x8"; then
+                       TARGET=POWERPC64;
+               else
+                       TARGET=POWERPC;
+               fi
                AC_DEFINE(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters])
                arch_target=ppc;
                JIT_SUPPORTED=yes
@@ -1994,7 +2029,10 @@ case "x$gc" in
                # We should use a separate variable for this to avoid passing useless and
                # potentially problematic defines to libgc (like -D_FILE_OFFSET_BITS=64)
                # This should be executed late so we pick up the final version of CPPFLAGS
-               ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS=$CPPFLAGS\""
+               # The problem with this approach, is that during a reconfigure, the main
+               # configure scripts gets invoked with these arguments, so we use separate
+               # variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
+               ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
                AC_CONFIG_SUBDIRS(libgc)
                ;;
 esac
@@ -2043,6 +2081,7 @@ AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
 AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
 AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
 AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
+AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64)
 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
 AM_CONDITIONAL(S390, test x$TARGET = xS390)
 AM_CONDITIONAL(S390x, test x$TARGET = xS390x)
@@ -2207,6 +2246,7 @@ data/mint.pc
 data/mono.pc
 data/mono-cairo.pc
 data/dotnet.pc
+data/dotnet35.pc
 data/cecil.pc
 data/smcs.pc
 samples/Makefile
@@ -2305,6 +2345,7 @@ echo "
        libgdiplus:  $libgdiplus_msg
        zlib:        $zlib_msg
        oprofile:    $OPROFILE
+       BigArrays:   $enable_big_arrays
        $disabled
 
 "