Merge pull request #555 from jack-pappas/sigaltstack-patch
[mono.git] / configure.in
index efb7bcb51ef93ec7c460542b01aa6e790be53572..5a4b2e19cc8ce66f022e976942eabdb9fe9db188 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [3.0.1],
+AC_INIT(mono, [3.0.10],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README])
@@ -14,7 +14,7 @@ AC_CANONICAL_HOST
 m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
 
 AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign])
-AM_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADERS([config.h])
 AM_MAINTAINER_MODE
 
 API_VER=2.0
@@ -160,10 +160,10 @@ case "$host" in
                        libmono_cflags="$PTHREAD_CFLAGS"
                fi
                if test "x$PTHREAD_LIBS" = "x"; then
-                       LDFLAGS="$LDFLAGS -pthread"
+                       LDFLAGS="$LDFLAGS -pthread -L/usr/local/lib"
                        libmono_ldflags="-pthread"
                else
-                       LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
+                       LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib"
                        libmono_ldflags="$PTHREAD_LIBS"
                fi
                CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
@@ -171,12 +171,6 @@ case "$host" in
                AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
                libdl=
                libgc_threads=pthreads
-               # This doesn't seem to work as of 7.0 on amd64
-               with_sigaltstack=no
-# TLS is only partially implemented on -CURRENT (compiler support
-# but NOT library support)
-#
-               with_tls=pthread
                use_sigposix=yes
                ;;
        *-*-*openbsd*)
@@ -241,6 +235,11 @@ case "$host" in
                libdl="-ldl"
                libgc_threads=pthreads
                use_sigposix=yes
+               if test "x$cross_compiling" != "xno"; then
+                       # to bypass the underscore linker check, not
+                       # available during cross-compilation
+                       mono_cv_uscore=no
+                fi
                ;;
        *-*-nacl*)
                host_win32=no
@@ -296,8 +295,6 @@ case "$host" in
                CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP"
                CPPFLAGS="$CPPFLAGS -DGetCurrentProcess=MonoGetCurrentProcess -DGetCurrentThread=MonoGetCurrentThread -DCreateEvent=MonoCreateEvent"
                libmono_cflags="-D_THREAD_SAFE"
-               LDFLAGS="$LDFLAGS -pthread"
-               libmono_ldflags="-pthread"
                need_link_unlink=yes
                AC_DEFINE(PTHREAD_POINTER_ID)
                AC_DEFINE(USE_MACH_SEMA, 1, [...])
@@ -314,7 +311,7 @@ case "$host" in
                case "$host" in
                        dnl Snow Leopard and newer config.guess reports as this
                        i*86-*-darwin*)
-                               BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE -mmacosx-version-min=10.5"
+                               BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE"
                                CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_FLAGS"
                                CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS"
                                CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS"
@@ -326,7 +323,7 @@ case "$host" in
                                ;;
                        arm*-darwin*)
                                has_dtrace=no
-                               ;;
+                               ;;                      
                esac
                ;;
        *-*-haiku*)
@@ -364,7 +361,6 @@ AC_PROG_CC
 AC_CHECK_TOOL(CXX, g++, g++)
 AC_PROG_CXX
 AM_PROG_AS
-AM_PROG_CC_STDC
 AC_PROG_INSTALL
 AC_PROG_AWK
 dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4
@@ -494,7 +490,7 @@ 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 -Wno-switch-enum'
+        WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
                # The runtime code does not respect ANSI C strict aliasing rules
                CFLAGS="$CFLAGS -fno-strict-aliasing"
 
@@ -537,14 +533,12 @@ 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
-               }
+       AC_TRY_COMPILE([], [
+               #ifdef __clang__
+               #else
+               #error "FAILED"
+               #endif
+               return 0;
        ],
        [mono_cv_clang=yes],
        [mono_cv_clang=no],
@@ -564,6 +558,8 @@ AC_ARG_WITH(mcs-path, [  --with-mcs-path=/path/to/mcs      Specify an alternate
        fi
 )
 
+AC_ARG_WITH(jumptables, [  --with-jumptables=yes,no      enable/disable support for jumptables (ARM-only for now) (defaults to no)],[],[with_jumptables=no])
+
 #
 # A sanity check to catch cases where the package was unpacked
 # with an ancient tar program (Solaris)
@@ -743,8 +739,9 @@ AC_ARG_ENABLE(system-aot, [  --enable-system-aot  Enable the Ahead-Of-Time compi
 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, shared_perfcounters.],
+     LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, appdomains, verifier, 
+     reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, perfcounters, normalization, assembly_remapping, shared_perfcounters, remoting,
+        security, sgen_remset, sgen_marksweep_par, sgen_marksweep_fixed, sgen_marksweep_fixed_par, sgen_copying.],
 [
        for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
                eval "mono_feature_disable_$feature='yes'"
@@ -859,6 +856,10 @@ if test "x$mono_feature_disable_soft_debug" = "xyes"; then
        AC_MSG_NOTICE([Disabled Soft Debugger.])
 fi
 
+if test "x$mono_feature_disable_perfcounters" = "xyes"; then
+       AC_DEFINE(DISABLE_PERFCOUNTERS, 1, [Disable Performance Counters.])
+       AC_MSG_NOTICE([Disabled Performance Counters.])
+fi
 if test "x$mono_feature_disable_normalization" = "xyes"; then
        AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.])
        AC_MSG_NOTICE([Disabled String normalization support.])
@@ -874,9 +875,58 @@ if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then
        AC_MSG_NOTICE([Disabled Shared perfcounters.])
 fi
 
+if test "x$mono_feature_disable_appdomains" = "xyes"; then
+       AC_DEFINE(DISABLE_APPDOMAINS, 1, [Disable support for multiple appdomains.])
+       AC_MSG_NOTICE([Disabled support for multiple appdomains.])
+fi
+
+if test "x$mono_feature_disable_remoting" = "xyes"; then
+       AC_DEFINE(DISABLE_REMOTING, 1, [Disable remoting support (This disables type proxies and make com non-functional)])
+       AC_MSG_NOTICE([Disabled remoting])
+fi
+
+if test "x$mono_feature_disable_security" = "xyes"; then
+       AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security])
+       AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)])
+fi
+
+if test "x$mono_feature_disable_sgen_remset" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_REMSET, 1, [Disable wbarrier=remset support in SGEN.])
+       AC_MSG_NOTICE([Disabled wbarrier=remset support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_marksweep_par" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_PAR, 1, [Disable major=marksweep-par support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=marksweep-par support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_marksweep_fixed" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED, 1, [Disable major=marksweep-fixed support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=marksweep-fixed support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_marksweep_fixed_par" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED_PAR, 1, [Disable major=marksweep-fixed-par support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=marksweep-fixed-par support in SGEN.])
+fi
+
+if test "x$mono_feature_disable_sgen_copying" = "xyes"; then
+       AC_DEFINE(DISABLE_SGEN_MAJOR_COPYING, 1, [Disable major=copying support in SGEN.])
+       AC_MSG_NOTICE([Disabled major=copying support in SGEN.])
+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_ARG_ENABLE(extension-module, [  --enable-extension-module enables usage of the extension module], has_extension_module=$enableval, has_extension_module=no)
+AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno])
+
+if test x$has_extension_module != xno ; then
+       AC_DEFINE([ENABLE_EXTENSION_MODULE], 1, [Extension module enabled])
+       AC_MSG_NOTICE([Enabling mono extension module.])
+fi
+
+
 AC_MSG_CHECKING(for visibility __attribute__)
 AC_COMPILE_IFELSE([
        AC_LANG_SOURCE([[
@@ -1027,6 +1077,8 @@ AC_TRY_COMPILE([
        AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays])
 ])
 
+AC_CHECK_HEADERS(nacl/nacl_dyncode.h)
+
 if test x$target_win32 = xno; then
 
        dnl hires monotonic clock support
@@ -1173,6 +1225,14 @@ if test x$target_win32 = xno; then
        dnl *****************************
        AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
 
+       case "$host" in
+               *-*-*freebsd*)
+                       dnl *****************************
+                       dnl *** Checks for libinotify ***
+                       dnl *****************************
+                       AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify")
+       esac
+
        dnl *******************************
        dnl *** Checks for MSG_NOSIGNAL ***
        dnl *******************************
@@ -1188,6 +1248,51 @@ if test x$target_win32 = xno; then
                AC_MSG_RESULT(no)
        ])
 
+       dnl *****************************
+       dnl *** Checks for IPPROTO_IP ***
+       dnl *****************************
+       AC_MSG_CHECKING(for IPPROTO_IP)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IPPROTO_IP;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl *******************************
+       dnl *** Checks for IPPROTO_IPV6 ***
+       dnl *******************************
+       AC_MSG_CHECKING(for IPPROTO_IPV6)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IPPROTO_IPV6;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl ******************************
+       dnl *** Checks for IPPROTO_TCP ***
+       dnl ******************************
+       AC_MSG_CHECKING(for IPPROTO_TCP)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IPPROTO_TCP;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IPPROTO_TCP, 1, [Have IPPROTO_TCP])
+       ], [
+               # We'll have to use getprotobyname
+               AC_MSG_RESULT(no)
+       ])
+
        dnl *****************************
        dnl *** Checks for SOL_IP     ***
        dnl *****************************
@@ -1237,7 +1342,7 @@ if test x$target_win32 = xno; then
        dnl *** Checks for IP_PKTINFO ***
        dnl *****************************
        AC_MSG_CHECKING(for IP_PKTINFO)
-       AC_TRY_COMPILE([#include <netdb.h>], [
+       AC_TRY_COMPILE([#include <linux/in.h>], [
                int level = IP_PKTINFO;
        ], [
                # Yes, we have it...
@@ -1261,11 +1366,25 @@ if test x$target_win32 = xno; then
                AC_MSG_RESULT(no)
        ])
 
+       dnl **********************************
+       dnl *** Checks for IP_DONTFRAG     ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_DONTFRAG)
+       AC_TRY_COMPILE([#include <netinet/in.h>], [
+               int level = IP_DONTFRAG;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_DONTFRAG, 1, [Have IP_DONTFRAG])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
        dnl **********************************
        dnl *** Checks for IP_DONTFRAGMENT ***
        dnl **********************************
        AC_MSG_CHECKING(for IP_DONTFRAGMENT)
-       AC_TRY_COMPILE([#include <netdb.h>], [
+       AC_TRY_COMPILE([#include <Ws2ipdef.h>], [
                int level = IP_DONTFRAGMENT;
        ], [
                # Yes, we have it...
@@ -1279,7 +1398,7 @@ if test x$target_win32 = xno; then
        dnl *** Checks for IP_MTU_DISCOVER ***
        dnl **********************************
        AC_MSG_CHECKING(for IP_MTU_DISCOVER)
-       AC_TRY_COMPILE([#include <netdb.h>], [
+       AC_TRY_COMPILE([#include <linux/in.h>], [
                int level = IP_MTU_DISCOVER;
        ], [
                # Yes, we have it...
@@ -1289,6 +1408,20 @@ if test x$target_win32 = xno; then
                AC_MSG_RESULT(no)
        ])
 
+       dnl **********************************
+       dnl *** Checks for  IP_PMTUDISC_DO ***
+       dnl **********************************
+       AC_MSG_CHECKING(for IP_PMTUDISC_DO)
+       AC_TRY_COMPILE([#include <linux/in.h>], [
+               int level = IP_PMTUDISC_DO;
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_IP_PMTUDISC_DO, 1, [Have IP_PMTUDISC_DO])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
        dnl *********************************
        dnl *** Check for struct ip_mreqn ***
        dnl *********************************
@@ -1402,6 +1535,7 @@ if test x$target_win32 = xno; then
                ;;
        esac
        AC_CHECK_HEADERS(pthread.h)
+       AC_CHECK_HEADERS(pthread_np.h)
        AC_CHECK_FUNCS(pthread_mutex_timedlock)
        AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np)
        AC_CHECK_FUNCS(pthread_kill)
@@ -1655,11 +1789,13 @@ if test x$target_win32 = xno; then
        dnl **********************************
        dnl *** epoll                      ***
        dnl **********************************
-       AC_CHECK_HEADERS(sys/epoll.h)
-       haveepoll=no
-       AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
-       if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes" ; then
-               AC_DEFINE(HAVE_EPOLL, 1, [epoll supported])
+       if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xno"; then
+               AC_CHECK_HEADERS(sys/epoll.h)
+               haveepoll=no
+               AC_CHECK_FUNCS(epoll_ctl, [haveepoll=yes], )
+               if test "x$haveepoll" = "xyes" -a "x$ac_cv_header_sys_epoll_h" = "xyes"; then
+                       AC_DEFINE(HAVE_EPOLL, 1, [epoll supported])
+               fi
        fi
 
        havekqueue=no
@@ -1830,6 +1966,9 @@ if test x$target_win32 = xno; then
        AC_CHECK_FUNCS(lockf)
        AC_CHECK_FUNCS(swab)
        AC_CHECK_FUNCS(setusershell endusershell)
+       AC_CHECK_FUNCS(futimens utimensat)
+       AC_CHECK_FUNCS(fstatat mknodat readlinkat)
+       AC_CHECK_FUNCS(readv writev preadv pwritev)
        AC_CHECK_SIZEOF(size_t)
        AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , 
                [#include <sys/types.h>
@@ -1844,6 +1983,8 @@ if test x$target_win32 = xno; then
        AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], ,
                [#include <unistd.h>
                 #include <fcntl.h>])
+       AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], ,
+               [#include <sys/uio.h>])
        AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], ,
                [#include <sys/poll.h>])
        AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], ,
@@ -1873,6 +2014,11 @@ if test x$target_win32 = xno; then
                [struct statfs.f_flags],,, 
                [#include <sys/types.h>
                 #include <sys/vfs.h>])
+       AC_CHECK_MEMBERS(
+               [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, 
+               [#include <sys/types.h>
+                #include <sys/stat.h>
+                #include <unistd.h>])
 
        dnl Favour xattr through glibc, but use libattr if we have to
        AC_CHECK_FUNC(lsetxattr, ,
@@ -1896,6 +2042,11 @@ if test x$target_win32 = xno; then
        AC_CHECK_HEADERS(sys/param.h)
        AC_CHECK_HEADERS(dirent.h)
 
+       dnl ******************************************
+       dnl *** Checks for OSX and iOS compilation ***
+       dnl ******************************************
+       AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h)
+
        dnl *********************************
        dnl *** Check for Console 2.0 I/O ***
        dnl *********************************
@@ -2160,6 +2311,16 @@ AC_ARG_ENABLE(nacl_codegen, [  --enable-nacl-codegen      Enable Native Client c
 AC_ARG_ENABLE(nacl_gc, [  --enable-nacl-gc           Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no)
 
 AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno)
+
+dnl
+dnl Hack to use system mono for operations in build/install not allowed in NaCl.
+dnl
+nacl_self_host=""
+if test "x$ac_cv_header_nacl_nacl_dyncode_h" = "xyes"; then
+   nacl_self_host="nacl_self_host"
+fi
+AC_SUBST(nacl_self_host)
+
 if test "x$enable_nacl_codegen" = "xyes"; then
    MONO_NACL_ALIGN_MASK_OFF=1
    CPPFLAGS="$CPPFLAGS -D__native_client_codegen__"
@@ -2186,13 +2347,21 @@ if test "x$enable_llvm" = "xyes"; then
          AC_MSG_ERROR([llvm-config not found.])
    fi
 
+   llvm_codegen="x86codegen"
+   case "$target" in
+   arm*)
+               llvm_codegen="armcodegen"
+               ;;
+   esac
+
+
    # The output of --cflags seems to include optimizations flags too
    LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
    # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
    # from LLVM classes.
    LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
    LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
-   LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit x86codegen`
+   LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
    LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
 
    # Should be something like '2.6' or '2.7svn'
@@ -2320,6 +2489,10 @@ case "$host" in
                TARGET=AMD64;
                arch_target=amd64;
                JIT_SUPPORTED=yes
+               if test "x$ac_cv_sizeof_void_p" = "x4"; then
+                       AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
+                       sizeof_register=8
+               fi
                case $host_os in
                  linux*)
                        sgen_supported=true
@@ -2370,37 +2543,11 @@ case "$host" in
                fi
                sgen_supported=true
                ;;
-       alpha*-*-linux* | alpha*-*-osf*)
-               TARGET=ALPHA;
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               arch_target=alpha;
-               CFLAGS="$CFLAGS -mieee -O0"
-               case $host_os in
-                 linux*)
-                       LIBC="libc.so.6.1"
-                       INTL="libc.so.6.1"
-               esac
-              ;;
        *-mingw*|*-*-cygwin*)
                # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
                have_visibility_hidden=no
                INTL="intl"
                ;;
-       hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00)
-               TARGET=HPPA;
-               arch_target=hppa; 
-               LIBC="libc.sl"
-               ACCESS_UNALIGNED="no"
-               INTERP_SUPPORTED=yes
-               interp_wanted=true
-               ;;
-       hppa*linux*)
-               TARGET=HPPA;
-               arch_target=hppa; 
-               ACCESS_UNALIGNED="no"
-               JIT_SUPPORTED=yes
-               ;;
        macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \
         powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | powerpc-*-freebsd* )
                if test "x$ac_cv_sizeof_void_p" = "x8"; then
@@ -2436,7 +2583,21 @@ case "$host" in
                JIT_SUPPORTED=yes
                sgen_supported=true
                AOT_SUPPORTED="yes"
+               if test "x$cross_compiling" != "xno"; then
+                  # Provide sane defaults when cross-compiling
+                  CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+                  NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
+               fi
                ;;
+# TODO: make proper support for NaCl host.
+#        arm*-*nacl)
+#              TARGET=ARM;
+#              arch_target=arm;
+#              ACCESS_UNALIGNED="no"
+#              JIT_SUPPORTED=yes
+#              sgen_supported=true
+#              AOT_SUPPORTED="no"
+#              ;;
        s390-*-linux*)
                TARGET=S390;
                arch_target=s390;
@@ -2462,6 +2623,17 @@ 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
+   arm*-darwin*)
+               TARGET=ARM;
+               arch_target=arm;
+               ACCESS_UNALIGNED="no"
+               JIT_SUPPORTED=yes
+               CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               jit_wanted=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               ;;
    powerpc64-ps3-linux-gnu)
                TARGET=POWERPC64
                arch_target=powerpc64
@@ -2490,13 +2662,35 @@ 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)
+# TODO: make proper support for NaCl target.
+#   arm*-*nacl)
+#              TARGET=ARM
+#              arch_target=arm
+#              AC_DEFINE(TARGET_ARM, 1, [...])
+#              ACCESS_UNALIGNED="no"
+#              JIT_SUPPORTED=yes
+#              sizeof_register=4
+#               CPPFLAGS="$CPPFLAGS \
+#                    -DARM_FPU_VFP=1 -D__ARM_EABI__ \
+#                    -D__arm__ \
+#                    -D__portable_native_client__ \
+#                    -DARM_FPU_VFP=1 \
+#                    -Dtimezone=_timezone \
+#                    -DDISABLE_SOCKETS \
+#                    -DDISABLE_ATTACH \
+#                    -DUSE_NEWLIB"
+#              jit_wanted=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+#              with_tls=pthread
+#              ;;
+   i686-*-nacl)
                TARGET=X86
                arch_target=x86
                AC_DEFINE(TARGET_X86, 1, [...])
                sizeof_register=4
                ;;
-   arm*-unknown-linux-gnueabi*)
+   arm*-unknown-linux-*)
                TARGET=ARM;
                arch_target=arm;
                AC_DEFINE(TARGET_ARM, 1, [...])
@@ -2551,6 +2745,26 @@ MIPS)
 esac
 
 if test "x$target_mach" = "xyes"; then
+   if test "x$TARGET" = "xARM"; then
+         AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
+         CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS"
+         CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS"
+   else
+       AC_TRY_COMPILE([#include "TargetConditionals.h"],[
+       #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1
+       #error fail this for ios
+       #endif
+       return 0;
+       ], [
+                 AC_DEFINE(TARGET_OSX,1,[The JIT/AOT targets OSX])
+          CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_OSX"
+          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_OSX"
+       ], [
+          AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
+          CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS"
+          CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS"
+       ])
+       fi
    AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms])
 fi
 
@@ -2693,7 +2907,7 @@ fi
 mono_debugger_supported=no
 AC_ARG_ENABLE(mono-debugger, [  --disable-mono-debugger disable support for the mdb debugger], try_mono_debugger=$enableval, try_mono_debugger=yes)
 if test "x$try_mono_debugger" = "xyes"; then
-       if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xALPHA" -o "x$TARGET" = "xS390x"; then
+       if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xS390x"; then
                if test x$use_included_gc = xyes; then
                        case "$host" in
                        *-*-*linux*)
@@ -2738,6 +2952,11 @@ if test "x$icall_tables" = "xno"; then
    AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
 fi
 
+if test "x$mono_cv_clang" = "xyes"; then
+   # FIXME: This causes many compilation errors
+   with_tls=pthread
+fi
+
 if test "x$with_tls" = "x__thread"; then
        AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
        # Pass the information to libgc
@@ -2798,6 +3017,12 @@ if test ${TARGET} = ARM && test x$cross_compiling = xno && test x$enable_mcs_bui
        fi
 fi
 
+if test ${TARGET} = ARM; then
+       if test "x${with_jumptables}" = "xyes"; then
+                AC_DEFINE(USE_JUMP_TABLES, 1, Use jump tables in JIT)
+        fi
+fi
+
 if test ${TARGET} = unknown; then
        CPPFLAGS="$CPPFLAGS -DNO_PORT"
        AC_MSG_WARN("mono has not been ported to $host: some things may not work.")
@@ -2834,6 +3059,7 @@ AC_ARG_WITH(profile4,  [  --with-profile4=yes,no          If you want to install
 AC_ARG_WITH(profile4_5,[  --with-profile4_5=yes,no        If you want to install the 4.5 FX (defaults to yes)],                [], [with_profile4_5=yes])
 AC_ARG_WITH(monodroid, [  --with-monodroid=yes,no         If you want to build the MonoDroid assemblies (defaults to no)],     [], [with_monodroid=no])
 AC_ARG_WITH(monotouch, [  --with-monotouch=yes,no,only    If you want to build the MonoTouch assemblies (defaults to no)],     [], [with_monotouch=no])
+AC_ARG_WITH(mobile,    [  --with-mobile=yes,no            If you want to build the Mobile 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)],[
@@ -2882,6 +3108,12 @@ AC_ARG_WITH(moon_gc, [  --with-moon-gc=boehm,sgen                Select the gc to use with Moo
        fi
 ], [with_moon_gc=boehm])
 
+AC_ARG_WITH(lazy_gc_thread_creation, [  --with-lazy-gc-thread-creation=yes|no      Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[
+       if test x$with_lazy_gc_thread_creation != xno ; then
+               AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.])
+       fi
+], [with_lazy_gc_thread_creation=no])
+
 AC_CHECK_HEADER([malloc.h], 
                [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
                        [Define to 1 if you have /usr/include/malloc.h.])],,)
@@ -2896,7 +3128,7 @@ 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
+if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then
    LIBMONO_LA=libmini-static.la
 else
    LIBMONO_LA=libmono-$API_VER.la
@@ -2942,6 +3174,8 @@ AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
 AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes])
 AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"])
 AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"])
+AM_CONDITIONAL(INSTALL_MOBILE, [test "x$with_mobile" = xyes])
+AM_CONDITIONAL(ONLY_MONOTOUCH, [test "x$with_monotouch" = "xonly"])
 
 AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
 AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
@@ -2949,7 +3183,6 @@ AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
 AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64)
 AM_CONDITIONAL(X86, test x$TARGET = xX86)
 AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
-AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
 AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
 AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
 AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
@@ -2958,10 +3191,10 @@ 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)
-AM_CONDITIONAL(HPPA, test x$TARGET = xHPPA)
 AM_CONDITIONAL(HOST_X86, test x$HOST = xX86)
 AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64)
 AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM)
+AM_CONDITIONAL(CROSS_COMPILE, test "x$host" != "x$target")
 
 AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes)
 AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue)
@@ -3147,13 +3380,11 @@ mono/cil/Makefile
 mono/arch/Makefile
 mono/arch/x86/Makefile
 mono/arch/amd64/Makefile
-mono/arch/hppa/Makefile
 mono/arch/ppc/Makefile
 mono/arch/sparc/Makefile
 mono/arch/s390/Makefile
 mono/arch/s390x/Makefile
 mono/arch/arm/Makefile
-mono/arch/alpha/Makefile
 mono/arch/ia64/Makefile
 mono/arch/mips/Makefile
 mono/interpreter/Makefile
@@ -3166,6 +3397,7 @@ mono/tests/cas/demand/Makefile
 mono/tests/cas/inheritance/Makefile
 mono/tests/cas/linkdemand/Makefile
 mono/tests/cas/threads/Makefile
+mono/tests/gc-descriptors/Makefile
 mono/benchmark/Makefile
 mono/monograph/Makefile
 mono/io-layer/Makefile
@@ -3201,6 +3433,7 @@ data/system.web.mvc.pc
 data/system.web.mvc2.pc
 data/system.web.mvc3.pc
 data/aspnetwebstack.pc
+data/reactive.pc
 samples/Makefile
 support/Makefile
 data/config
@@ -3293,6 +3526,10 @@ fi
       echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make
     fi
 
+    if test x$has_extension_module != xno; then
+        echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make
+    fi
+
        default_profile=net_2_0
     if test -z "$INSTALL_4_0_TRUE"; then :
                default_profile=net_4_0