Added missing spaces.
[mono.git] / configure.in
index 778441e52fd35784260aa513bd01b26882315792..ce18864c42344fea61f69626d5445c6a38971d04 100644 (file)
@@ -1,8 +1,8 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [2.11],
-        [http://bugzilla.novell.com/enter_bug.cgi?product=mono])
+AC_INIT(mono, [2.11.2],
+        [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README])
 AC_CONFIG_MACRO_DIR([m4])
@@ -95,11 +95,21 @@ case "$host" in
                host_win32=yes
                if test "x$cross_compiling" = "xno"; then
                        target_win32=yes
-                       if test "x$host" == "x$build"; then
+                       if test "x$host" == "x$build" -a "x$host" == "x$target"; then
                                AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
                        fi
-                       CC="gcc -mno-cygwin -g"
-                       CXX="g++ -mno-cygwin -g"
+                       #
+                       # gcc-3/g++-3 are from the gcc-core/gcc-g++ cygwin packages.
+                       # Other gcc packages will not work:
+                       # - the gcc-4 packages no longer support -mno-cygwin
+                       # - the mingw-gcc packages produce executables which depends on a libgcc<...>
+                       # dll, which means we would have to distribute that file too.
+                       #
+                       if test "x$CC" != "x"; then
+                               AC_ERROR(Don't set CC. mono can only be compiled with gcc-3 from the 'gcc-core' package)
+                       fi
+                       CC="gcc-3.exe -mno-cygwin -g"
+                       CXX="g++-3.exe -mno-cygwin -g"
                        # So libgc configure gets -mno-cygwin
                        export CC
                        export CXX
@@ -215,6 +225,7 @@ case "$host" in
 
                # to bypass the underscore linker check, can't work when cross-compiling
                mono_cv_uscore=yes
+               mono_cv_clang=no
                ;;
        *-*-linux*)
                host_win32=no
@@ -365,12 +376,6 @@ if test "x$CXX" = "xg++"; then
        fi
 fi
 
-AC_CHECK_PROG(BISON, bison,yes,no)
-if test "x$BISON" = "xno";
-then
-       AC_MSG_ERROR([You need to install bison])
-fi
-
 dnl may require a specific autoconf version
 dnl AC_PROG_CC_FOR_BUILD
 dnl CC_FOR_BUILD not automatically detected
@@ -413,8 +418,8 @@ AM_ICONV()
 
 AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
 
-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 sys/uio.h sys/param.h)
-AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.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 sys/uio.h sys/param.h libproc.h)
+AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h)
 AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
                   [], [], [#include <stddef.h>
                  #include <sys/socket.h>
@@ -481,15 +486,15 @@ AC_CHECK_SIZEOF(void *, 4)
 
 WARN=''
 if test x"$GCC" = xyes; then
-        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings'
+        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch-enum'
                # The runtime code does not respect ANSI C strict aliasing rules
                CFLAGS="$CFLAGS -fno-strict-aliasing"
 
                ORIG_CFLAGS=$CFLAGS
                CFLAGS="$CFLAGS -Wdeclaration-after-statement"
                AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc)
-               AC_TRY_COMPILE([], [
-                                                  void main () { }
+               AC_TRY_COMPILE([],[
+                               return 0;
                ], [
                   AC_MSG_RESULT(yes)
                ], [
@@ -501,8 +506,8 @@ if test x"$GCC" = xyes; then
                # Check for the normal version, since gcc ignores unknown -Wno options
                CFLAGS="$CFLAGS -Wunused-but-set-variable"
                AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc)
-               AC_TRY_COMPILE([], [
-                                                  void main () { }
+               AC_TRY_COMPILE([],[
+                               return 0;
                ], [
                   AC_MSG_RESULT(yes)
                   CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable"
@@ -522,6 +527,22 @@ fi
 CFLAGS="$CFLAGS -g $WARN"
 CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g"
 
+AC_CACHE_CHECK([for clang],
+       mono_cv_clang,[
+       AC_TRY_RUN([
+               int main () {
+                       #ifdef __clang__
+                               return 0;
+                       #else
+                               return 1;
+                       #endif
+               }
+       ],
+       [mono_cv_clang=yes],
+       [mono_cv_clang=no],
+       [])
+])
+
 # Where's the 'mcs' source tree?
 if test -d $srcdir/mcs; then
   mcsdir=mcs
@@ -572,9 +593,6 @@ if test x$cross_compiling$host_win32 = xnoyes; then
   esac
 fi
 
-## Maybe should also disable if mcsdir is invalid.  Let's punt the issue for now.
-AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
-
 AC_SUBST([mcs_topdir])
 AC_SUBST([mcs_topdir_from_srcdir])
 
@@ -680,13 +698,13 @@ AM_CONDITIONAL(SHARED_MONO, test x$with_shared_mono != xno)
 AC_ARG_ENABLE(mcs-build, [  --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
 
 AC_ARG_WITH(xen_opt,   [  --with-xen_opt=yes,no          Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes])
-if test "x$with_xen_opt" = "xyes"; then
+if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then
        AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour])
        ORIG_CFLAGS=$CFLAGS
        CFLAGS="$CFLAGS -mno-tls-direct-seg-refs"
        AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc)
        AC_TRY_COMPILE([], [
-                                          void main () { }
+               return 0;
        ], [
           AC_MSG_RESULT(yes)
           # Pass it to libgc as well
@@ -711,7 +729,7 @@ DISABLED_FEATURES=none
 
 AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
      LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
-     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping.],
+     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping, shared_perfcounters.],
 [
        for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
                eval "mono_feature_disable_$feature='yes'"
@@ -836,10 +854,20 @@ if test "x$mono_feature_disable_assembly_remapping" = "xyes"; then
        AC_MSG_NOTICE([Disabled Assembly remapping.])
 fi
 
+if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then
+       AC_DEFINE(DISABLE_SHARED_PERFCOUNTERS, 1, [Disable shared perfcounters.])
+       AC_MSG_NOTICE([Disabled Shared perfcounters.])
+fi
+
+AC_ARG_ENABLE(executables, [  --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes)
+AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno)
+
 AC_MSG_CHECKING(for visibility __attribute__)
-AC_TRY_COMPILE([], [
-   void __attribute__ ((visibility ("hidden"))) doit (void) {}
-   void main () { doit (); }
+AC_COMPILE_IFELSE([
+       AC_LANG_SOURCE([[
+               void __attribute__ ((visibility ("hidden"))) doit (void) {}
+               int main () { doit (); return 0; }
+       ]])
 ], [
    have_visibility_hidden=yes
    AC_MSG_RESULT(yes)
@@ -873,7 +901,7 @@ AM_CONDITIONAL(SUPPORT_BOEHM, test x$support_boehm = xyes)
 dnl
 dnl Boehm GC configuration
 dnl
-LIBGC_CFLAGS=
+LIBGC_CPPFLAGS=
 LIBGC_LIBS=
 LIBGC_STATIC_LIBS=
 libgc_dir=
@@ -922,7 +950,7 @@ case "x$gc" in
                use_included_gc=yes
                libgc_dir=libgc
 
-               LIBGC_CFLAGS='-I$(top_srcdir)/libgc/include'
+               LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include'
                LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la'
                LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la'
 
@@ -957,7 +985,7 @@ if test "x$large_heap" = "xyes"; then
 fi
 
 AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes)
-AC_SUBST(LIBGC_CFLAGS)
+AC_SUBST(LIBGC_CPPFLAGS)
 AC_SUBST(LIBGC_LIBS)
 AC_SUBST(LIBGC_STATIC_LIBS)
 AC_SUBST(libgc_dir)
@@ -1071,10 +1099,9 @@ if test x$target_win32 = xno; then
        dnl ****************************************************************
        AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4)
        AC_TRY_COMPILE([#include <sched.h>], [
-               int main() {
             int mask = 1; 
             sched_setaffinity(0, &mask);
-        }
+                       return 0;
        ], [
                # Yes, we have it...
                AC_MSG_RESULT(yes)
@@ -1368,6 +1395,7 @@ if test x$target_win32 = xno; then
        AC_CHECK_HEADERS(pthread.h)
        AC_CHECK_FUNCS(pthread_mutex_timedlock)
        AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np)
+       AC_CHECK_FUNCS(pthread_kill)
        AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
        AC_TRY_COMPILE([ #include <pthread.h>], [
                pthread_mutexattr_t attr;
@@ -1455,12 +1483,11 @@ if test x$target_win32 = xno; then
                                exit (0);
                        }
 
+                       volatile char*__ptr = NULL;
                        static void *
                        loop (void *ignored)
                        {
-                               char *ptr = NULL;
-
-                               *ptr = 0;
+                               *__ptr = 0;
                                return NULL;
                        }
 
@@ -1468,7 +1495,11 @@ if test x$target_win32 = xno; then
                        child ()
                        {
                                struct sigaction sa;
+                       #ifdef __APPLE__
+                               stack_t sas;
+                       #else
                                struct sigaltstack sas;
+                       #endif
                                pthread_t id;
                                pthread_attr_t attr;
 
@@ -1480,6 +1511,11 @@ if test x$target_win32 = xno; then
                                        return;
                                }
 
+                               /* x86 darwin deliver segfaults using SIGBUS */
+                               if (sigaction (SIGBUS, &sa, NULL) == -1) {
+                                       perror ("sigaction");
+                                       return;
+                               }
                                sas.ss_sp = malloc (SIGSTKSZ);
                                sas.ss_size = SIGSTKSZ;
                                sas.ss_flags = 0;
@@ -2096,7 +2132,7 @@ if test "x$enable_llvm" = "xyes"; then
    # from LLVM classes.
    LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
    LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
-   LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit x86codegen`
+   LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit x86codegen`
    LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
 
    # Should be something like '2.6' or '2.7svn'
@@ -2157,16 +2193,16 @@ case "$host" in
        mips*)
                TARGET=MIPS;
                arch_target=mips;
+               sgen_supported=true
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
 
                AC_MSG_CHECKING(for mips n32)
-               AC_TRY_COMPILE([], [
-               void main () {
+               AC_TRY_COMPILE([],[
                #if _MIPS_SIM != _ABIN32
                #error Not mips n32
                #endif
-               }
+               return 0;
                ],[
                AC_MSG_RESULT(yes)
                sizeof_register=8
@@ -2201,6 +2237,7 @@ case "$host" in
                        sgen_supported=true
                        ;;
                  cygwin*)
+                       sgen_supported=true
                        have_visibility_hidden=no                 
                        ;;
                  haiku*)
@@ -2210,6 +2247,10 @@ case "$host" in
                        sgen_supported=true
                        AOT_SUPPORTED="yes"
                        ;;
+                 darwin*)
+                       sgen_supported=true
+                       AOT_SUPPORTED="yes"
+                       ;;
                  darwin*|openbsd*|freebsd*)
                        sgen_supported=true
                        ;;
@@ -2357,6 +2398,7 @@ esac
 
 if test "x$host" != "x$target"; then
    AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
+   enable_mcs_build=no
    case "$target" in
    powerpc64-ps3-linux-gnu)
                TARGET=POWERPC64
@@ -2386,6 +2428,12 @@ if test "x$host" != "x$target"; then
                AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
                sizeof_register=8
                ;;
+   *-*-nacl)
+               TARGET=X86
+               arch_target=x86
+               AC_DEFINE(TARGET_X86, 1, [...])
+               sizeof_register=4
+               ;;
    armv7l-unknown-linux-gnueabi*)
                # TEGRA
                TARGET=ARM;
@@ -2450,6 +2498,9 @@ POWERPC64)
 S390x)
        AC_DEFINE(TARGET_S390X, 1, [...])
        ;;
+MIPS)
+       AC_DEFINE(TARGET_MIPS, 1, [...])
+       ;;
 esac
 
 if test "x$sizeof_register" = "x4"; then
@@ -2560,7 +2611,8 @@ case "$host" in
        done
        
        if test "x$X11" = "xlibX11.so"; then
-               AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? WinForms may not work...]);
+               AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? Assuming libX11.so.6...]);
+               X11=libX11.so.6
        fi
        ;;
 esac
@@ -2576,7 +2628,7 @@ if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
                # undefined reference to `__tls_get_addr'
                #
                rm -f conftest.c conftest.so conftest
-               echo "static __thread int foo; void main () { foo = 5; }" > conftest.c
+               echo "static __thread int foo; int main () { foo = 5; return 0; }" > conftest.c
                $CC -fPIC --shared -o conftest.so conftest.c > /dev/null 2>&1
                $CC -o conftest conftest.so > /dev/null 2>&1
                if test ! -f conftest; then
@@ -2617,6 +2669,21 @@ fi
 AM_CONDITIONAL(MONO_DEBUGGER_SUPPORTED, test x$mono_debugger_supported = xyes)
 AC_MSG_RESULT($mono_debugger_supported)
 
+AC_ARG_ENABLE(icall-symbol-map,[ --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no)
+if test "x$icall_symbol_map" = "xyes"; then
+   AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled])
+fi
+
+AC_ARG_ENABLE(icall-export,[ --enable-icall-export Export icall functions], icall_export=$enableval, icall_export=no)
+if test "x$icall_export" = "xyes"; then
+   AC_DEFINE(ENABLE_ICALL_EXPORT, 1, [Icall export enabled])
+fi
+
+AC_ARG_ENABLE(icall-tables,[ --disable-icall-tables Disable the runtime lookup of icalls], icall_tables=$enableval, icall_tables=yes)
+if test "x$icall_tables" = "xno"; then
+   AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
+fi
+
 if test "x$with_tls" = "x__thread"; then
        AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
        # Pass the information to libgc
@@ -2625,7 +2692,10 @@ if test "x$with_tls" = "x__thread"; then
        AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
                ], [
                        AC_MSG_RESULT(yes)
-                       AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
+                       # CLANG doesn't support this yet, and it prints warnings about it
+                       if test "x$mono_cv_clang" = "xno"; then
+                               AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
+                       fi
                ], [
                        AC_MSG_RESULT(no)
        ])
@@ -2637,12 +2707,19 @@ if test ${TARGET} = ARM && test x$cross_compiling = xno && test x$enable_mcs_bui
        dnl ******************************************
        AC_MSG_CHECKING(which FPU to use)
 
-       ORIG_CFLAGS=$CFLAGS
-       CFLAGS="$CFLAGS -mfpu=vfp -mfloat-abi=softfp"
-       AC_TRY_RUN([
-               int main () { __asm__ ("faddd   d7, d6, d7"); return 0; }
-                       ], fpu=VFP, fpu=NONE)
-       CFLAGS=$ORIG_CFLAGS
+       fpu=NONE
+       if gcc -v 2>&1 | grep -q -- '--with-float=hard'; then
+          fpu=VFP_HARD
+       fi
+
+       if test x$fpu = xNONE; then
+          ORIG_CFLAGS=$CFLAGS
+          CFLAGS="$CFLAGS -mfpu=vfp -mfloat-abi=softfp"
+          AC_TRY_RUN([
+                               int main () { __asm__ ("faddd   d7, d6, d7"); return 0; }
+                               ], fpu=VFP, fpu=NONE)
+          CFLAGS=$ORIG_CFLAGS
+       fi
 
        if test x$fpu = xNONE; then
                AC_TRY_COMPILE([], [
@@ -2685,23 +2762,24 @@ case "x$gc" in
                # 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.
-               LIBGC_CPPFLAGS="$CPPFLAGS $NESTED_LIBGC_FLAGS"
+               TMP_CPPFLAGS="$CPPFLAGS $NESTED_LIBGC_FLAGS"
                if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
-                       LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
+                       TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
                fi
                # Don't pass -finstrument-for-thread-suspension in, 
                # if these are instrumented it will be very bad news 
                # (infinite recursion, undefined parking behavior, etc)
-               LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
-               ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$LIBGC_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
+               TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
+               ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$TMP_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
                AC_CONFIG_SUBDIRS(libgc)
                ;;
 esac
 
 #AC_ARG_WITH(profile2,  [  --with-profile2=yes,no          If you want to install the 2.0 FX (defaults to yes)],                 [], [with_profile2=yes])
-AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.0 FX (defaults to yes)],                  [], [with_profile4=yes])
+AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install the 4.x FX (defaults to yes)],                  [], [with_profile4=yes])
 AC_ARG_WITH(monodroid, [  --with-monodroid=yes,no         If you want to build the MonoDroid 2.1 assemblies (defaults to no)], [], [with_monodroid=no])
 AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no         If you want to build the MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
+AC_ARG_WITH(mobile,    [  --with-mobile=yes,no            If you want to build the Mobile 2.1 assemblies (defaults to no)], [], [with_mobile=no])
 
 OPROFILE=no
 AC_ARG_WITH(oprofile,[  --with-oprofile=no,<oprofile install dir>   Enable oprofile support (defaults to no)],[
@@ -2754,6 +2832,23 @@ AC_CHECK_HEADER([malloc.h],
                [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
                        [Define to 1 if you have /usr/include/malloc.h.])],,)
 
+if test x"$GCC" = xyes; then
+       # Implicit function declarations are not 64 bit safe
+       # Do this late, since this causes lots of configure tests to fail
+       CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
+       # jay has a lot of implicit declarations
+       JAY_CFLAGS="-Wno-implicit-function-declaration"
+fi
+
+# When --disable-shared is used, libtool transforms libmono-2.0.la into libmono-2.0.so
+# instead of libmono-static.a
+if test "x$enable_shared" = "xno"; then
+   LIBMONO_LA=.libs/libmono-static.a
+else
+   LIBMONO_LA=libmono-$API_VER.la
+fi
+AC_SUBST(LIBMONO_LA)
+
 dnl
 dnl Consistency settings
 dnl
@@ -2768,6 +2863,9 @@ else
 fi
 AC_SUBST(docs_dir)
 
+## Maybe should also disable if mcsdir is invalid.  Let's punt the issue for now.
+AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
+
 AM_CONDITIONAL(HAVE_OPROFILE, test x$OPROFILE = xyes)
 AC_SUBST(OPROFILE_CFLAGS)
 AC_SUBST(OPROFILE_LIBS)
@@ -2782,6 +2880,7 @@ AM_CONDITIONAL(MOONLIGHT_SGEN, [test "x$with_moon_gc" = "xsgen"])
 AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
 AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" = xyes])
 AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" = xyes])
+AM_CONDITIONAL(INSTALL_MOBILE, [test "x$with_mobile" = xyes])
 
 AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
 AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
@@ -2940,9 +3039,43 @@ AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/web.config],
     cd $depth
 ],[LN_S='$LN_S'])
 
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/machine.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
+    cd runtime/etc/mono/4.5
+    rm -f machine.config
+    $LN_S $reldir/data/net_4_5/machine.config machine.config
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config],
+[   depth=../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
+    cd runtime/etc/mono/4.5
+    rm -f web.config
+    $LN_S $reldir/data/net_4_5/web.config web.config
+    cd $depth
+],[LN_S='$LN_S'])
+
 if test x$enable_quiet_build = xyes; then
-   AC_CONFIG_COMMANDS([quiet], [for i in `find mono libgc support -name Makefile.in | sed -e 's/Makefile.in/Makefile/g'`; do if test -f $i; then $srcdir/scripts/patch-quiet.sh $i; fi; done], [shell=$SHELL])
-   AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/$echo "copying selected/$show "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool])
+   AC_CONFIG_COMMANDS([quiet],
+[  for i in `find mono libgc support -name Makefile`; do
+          if [ grep -q 'generated by automake' $i ]; then
+                 $srcdir/scripts/patch-quiet.sh $i;
+          fi;
+   done
+], [shell=$SHELL])
+   AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/echo "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool; sed -e 's/$ECHO "copying selected/# "copying selected/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool])
 fi
 
 AC_OUTPUT([
@@ -2991,6 +3124,7 @@ docs/Makefile
 data/Makefile
 data/net_2_0/Makefile
 data/net_4_0/Makefile
+data/net_4_5/Makefile
 data/net_2_0/Browsers/Makefile
 data/mint.pc
 data/mono-2.pc
@@ -3010,6 +3144,8 @@ data/system.web.extensions_1.0.pc
 data/system.web.extensions.design_1.0.pc
 data/system.web.mvc.pc
 data/system.web.mvc2.pc
+data/system.web.mvc3.pc
+data/aspnetwebstack.pc
 samples/Makefile
 support/Makefile
 data/config
@@ -3021,6 +3157,9 @@ msvc/Makefile
 po/Makefile
 ])
 
+# Update all submodules recursively to ensure everything is checked out
+$srcdir/scripts/update_submodules
+
 if test x$host_win32 = xyes; then
    # Get rid of 'cyg' prefixes in library names
    sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
@@ -3051,10 +3190,10 @@ fi
     echo "exec_prefix=$exec_prefix" >> $mcs_topdir/build/config.make
     echo "sysconfdir=$sysconfdir" >> $mcs_topdir/build/config.make
     echo 'mono_libdir=${exec_prefix}/lib' >> $mcs_topdir/build/config.make
-    echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $mcs_topdir/build/config.make
     echo 'IL_FLAGS = /debug' >> $mcs_topdir/build/config.make
     echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $mcs_topdir/build/config.make
     echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $mcs_topdir/build/config.make
+    echo "JAY_CFLAGS = $JAY_CFLAGS" >> $mcs_topdir/build/config.make
 
     case $INSTALL in
     [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;;
@@ -3087,7 +3226,7 @@ fi
           enable_system_aot=no
        fi
 
-    if test x$host_win32 = xno -a x$platform_darwin != xyes -a x$enable_system_aot = xyes; then
+    if test x$host_win32 = xno -a x$enable_system_aot = xyes; then
       echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
     fi
 
@@ -3098,6 +3237,10 @@ fi
     if test x$with_moonlight != xno; then
       echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make
     fi
+    
+    if test x$with_profile4 != xyes; then
+      echo "DEFAULT_PROFILE = net_2_0" >> $srcdir/$mcsdir/build/config.make
+    fi
 
   fi
 
@@ -3133,13 +3276,13 @@ echo "
        oprofile:      $OPROFILE
        BigArrays:     $enable_big_arrays
        DTrace:        $enable_dtrace
-       Parallel Mark: $enable_parallel_mark
        LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)
 
     Libraries:
        Moon Profile:  $with_moonlight ($with_moon_gc)
        MonoDroid:     $with_monodroid
        MonoTouch:     $with_monotouch
+       Mobile:        $with_mobile
        JNI support:   $jdk_headers_found
        libgdiplus:    $libgdiplus_msg
        zlib:          $zlib_msg