Remove spec file as we don't use it anymore.
[mono.git] / configure.ac
index 45838328adb21f6c631d32086d5562477d993d09..8e0f7c924b09759374d2d663574fe51d8dc7e4b1 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [3.99.0],
+AC_INIT(mono, [4.1.0],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README.md])
@@ -70,9 +70,6 @@ AC_SUBST(libmono_ldflags)
 reloc_libdir=`basename ${libdir}`
 AC_SUBST(reloc_libdir)
 
-dnl if linker handles the version script
-no_version_script=no
-
 # Set to yes if Unix sockets cannot be created in an anonymous namespace
 need_link_unlink=no
 
@@ -306,12 +303,10 @@ case "$host" in
                platform_darwin=yes
                target_mach=yes
                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"
                need_link_unlink=yes
                AC_DEFINE(PTHREAD_POINTER_ID)
                AC_DEFINE(USE_MACH_SEMA, 1, [...])
-               no_version_script=yes
                libdl=
                libgc_threads=pthreads
                has_dtrace=yes
@@ -433,16 +428,11 @@ AC_SUBST(export_ldflags)
 # 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_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 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(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 sys/sysctl.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 arpa/inet.h complex.h)
 AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
                   [], [], [#include <stddef.h>
                  #include <sys/socket.h>
@@ -455,6 +445,8 @@ AC_CHECK_HEADERS(sys/user.h, [], [],
 #endif
 ])
 
+AC_CHECK_HEADERS(linux/serial.h)
+
 AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
 if test x$have_zlib = xyes; then
    AC_TRY_COMPILE([#include <zlib.h>], [
@@ -527,26 +519,30 @@ AC_CACHE_CHECK([for clang],
        [])
 ])
 
+AC_ARG_ENABLE(visiblity-hidden,
+[  --disable-visibility-hidden    disable usage of -fvisiblity=hidden]
+   disable_visibility_hidden=no, disable_visibility_hidden=yes)
+
 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 -Wno-switch-enum -Wno-unused-value'
+
+               # We require C99 with some GNU extensions, e.g. `linux` macro
+               CFLAGS="$CFLAGS -std=gnu99"
+
                # The runtime code does not respect ANSI C strict aliasing rules
                CFLAGS="$CFLAGS -fno-strict-aliasing"
 
                # We rely on signed overflow to behave
                CFLAGS="$CFLAGS -fwrapv"
 
-               ORIG_CFLAGS=$CFLAGS
-               CFLAGS="$CFLAGS -Wdeclaration-after-statement"
-               AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc)
-               AC_TRY_COMPILE([],[
-                               return 0;
-               ], [
-                  AC_MSG_RESULT(yes)
-               ], [
-                  AC_MSG_RESULT(no)
-                  CFLAGS=$ORIG_CFLAGS
-               ])
+               CFLAGS="$CFLAGS -DMONO_DLL_EXPORT"
+               if test x"$disable_visibility_hidden" = xno; then
+                  # Don't export any symbols by default
+                  SHARED_CFLAGS="-fvisibility=hidden"
+                  CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB -fvisibility=hidden"
+                  CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
+               fi
 
                ORIG_CFLAGS=$CFLAGS
                # Check for the normal version, since gcc ignores unknown -Wno options
@@ -678,6 +674,7 @@ if test x$werror_flag = xyes; then
        WERROR_CFLAGS="-Werror"
 fi
 AC_SUBST([WERROR_CFLAGS])
+AC_SUBST([SHARED_CFLAGS])
 
 ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\""
 AC_CONFIG_SUBDIRS(eglib)
@@ -975,6 +972,12 @@ if test x$enable_gsharing = xyes; then
        AC_DEFINE(ENABLE_GSHAREDVT,1,[Gsharing])
 fi
 
+# A synonym
+AC_ARG_ENABLE(gsharedvt, [  --enable-gsharedvt Enable generic valuetype sharing], enable_gsharedvt=$enableval, enable_gsharedvt=no)
+if test x$enable_gsharedvt = xyes; then
+       AC_DEFINE(ENABLE_GSHAREDVT,1,[Gsharedvt])
+fi
+
 AC_ARG_ENABLE(native-types, [  --enable-native-types Enable native types], enable_native_types=$enableval, enable_native_types=no)
 if test x$enable_native_types = xyes; then
        AC_DEFINE(MONO_NATIVE_TYPES,1,[native types])
@@ -1145,6 +1148,12 @@ AC_TRY_COMPILE([
 
 AC_CHECK_HEADERS(nacl/nacl_dyncode.h)
 
+dnl ***********************************
+dnl *** Checks for signals
+dnl ***********************************
+AC_CHECK_HEADERS(signal.h)
+AC_CHECK_FUNCS(sigaction)
+
 if test x$target_win32 = xno; then
 
        dnl hires monotonic clock support
@@ -1519,11 +1528,32 @@ if test x$target_win32 = xno; then
                ])
        ])
        
+       dnl **********************************
+       dnl *** Check for getaddrinfo ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getaddrinfo)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <netdb.h>
+       ], [
+               getaddrinfo(NULL,NULL,NULL,NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETADDRINFO, 1, [Have getaddrinfo])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
        dnl **********************************
        dnl *** Check for gethostbyname2_r ***
        dnl **********************************
        AC_MSG_CHECKING(for gethostbyname2_r)
-               AC_TRY_LINK([#include <netdb.h>], [
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <netdb.h>
+       ], [
+
                gethostbyname2_r(NULL,0,NULL,NULL,0,NULL,NULL);
        ], [
                # Yes, we have it...
@@ -1533,6 +1563,92 @@ if test x$target_win32 = xno; then
                AC_MSG_RESULT(no)
        ])
 
+       dnl **********************************
+       dnl *** Check for gethostbyname2 ***
+       dnl **********************************
+       AC_MSG_CHECKING(for gethostbyname2)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <netdb.h>
+       ], [
+               gethostbyname2(NULL,0);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETHOSTBYNAME2, 1, [Have gethostbyname2])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for gethostbyname ***
+       dnl **********************************
+       AC_MSG_CHECKING(for gethostbyname)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <netdb.h>
+       ], [
+               gethostbyname(NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [Have gethostbyname])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for getprotobyname ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getprotobyname)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <netdb.h>
+       ], [
+               getprotobyname(NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETPROTOBYNAME, 1, [Have getprotobyname])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for getnameinfo ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getnameinfo)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <netdb.h>
+       ], [
+               getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETNAMEINFO, 1, [Have getnameinfo])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+
+       dnl **********************************
+       dnl *** Check for inet_ntop ***
+       dnl **********************************
+       AC_MSG_CHECKING(for inet_ntop)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <arpa/inet.h>
+       ], [
+               inet_ntop (0, NULL, NULL, 0);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_INET_NTOP, 1, [Have inet_ntop])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
        dnl *****************************
        dnl *** Checks for libnsl     ***
        dnl *****************************
@@ -1598,11 +1714,23 @@ if test x$target_win32 = xno; then
        AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize)
        AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np)
 
-       dnl ***********************************
-       dnl *** Checks for signals
-       dnl ***********************************
-       AC_CHECK_HEADERS(signal.h)
-       AC_CHECK_FUNCS(sigaction)
+       dnl **********************************
+       dnl *** Check for mincore ***
+       dnl **********************************
+       AC_MSG_CHECKING(for mincore)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <sys/types.h>
+               #include <sys/mman.h>
+       ], [
+               mincore(NULL, 0, NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_MINCORE, 1, [Have mincore])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 
        dnl ***********************************
        dnl *** Checks for working __thread ***
@@ -2156,6 +2284,97 @@ else
                        AC_MSG_RESULT(no)
                ])
        ])
+
+       dnl **********************************
+       dnl *** Check for getaddrinfo ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getaddrinfo)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <winsock2.h>
+               #include <ws2tcpip.h>
+       ], [
+               getaddrinfo(NULL,NULL,NULL,NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETADDRINFO, 1, [Have getaddrinfo])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for gethostbyname ***
+       dnl **********************************
+       AC_MSG_CHECKING(for gethostbyname)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <winsock2.h>
+               #include <ws2tcpip.h>
+       ], [
+               gethostbyname(NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [Have gethostbyname])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for getprotobyname ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getprotobyname)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <winsock2.h>
+               #include <ws2tcpip.h>
+       ], [
+               getprotobyname(NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETPROTOBYNAME, 1, [Have getprotobyname])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for getnameinfo ***
+       dnl **********************************
+       AC_MSG_CHECKING(for getnameinfo)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <winsock2.h>
+               #include <ws2tcpip.h>
+       ], [
+               getnameinfo (NULL, 0, NULL, 0, NULL, 0, 0);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_GETNAMEINFO, 1, [Have getnameinfo])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
+       dnl **********************************
+       dnl *** Check for inet_ntop ***
+       dnl **********************************
+       AC_MSG_CHECKING(for inet_ntop)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <winsock2.h>
+               #include <ws2tcpip.h>
+       ], [
+               inet_ntop (0, NULL, NULL, 0);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_INET_NTOP, 1, [Have inet_ntop])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
+
        AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include <windows.h>]])
        AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include <windows.h>]])
        AC_CHECK_DECLS(InterlockedDecrement64, [], [], [[#include <windows.h>]])
@@ -2299,6 +2518,12 @@ fi
 
 AC_ARG_ENABLE(bcl-opt, [  --disable-bcl-opt    BCL is compiled with no optimizations (allows accurate BCL debugging)], test_bcl_opt=$enableval, test_bcl_opt=yes)
 
+AC_ARG_ENABLE(perf-events, [  --enable-perf-events Enable using `perf` for profiling on Linux], test_perf_events=$enableval, test_perf_events=no)
+if test "x$test_perf_events" == "xyes"; then
+       AC_DEFINE(ENABLE_PERF_EVENTS, 1, [Enable using `perf` for profiling on Linux])
+       AC_SUBST(ENABLE_PERF_EVENTS)
+fi
+
 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)
 if test "x$enable_big_arrays" = "xyes" ; then
@@ -2420,6 +2645,9 @@ AC_ARG_WITH(llvm, [  --with-llvm=<llvm prefix>    Enable the LLVM back-end], ena
 if test "x$enable_llvm" = "xyes"; then
    if test "x$with_llvm" != "x"; then
          LLVM_CONFIG=$with_llvm/bin/llvm-config
+         if test x$target_win32 = xyes; then
+               LLVM_CONFIG=$LLVM_CONFIG.exe
+         fi
          if test ! -x $LLVM_CONFIG; then
                 AC_MSG_ERROR([LLVM executable $LLVM_CONFIG not found.])
       fi
@@ -2437,6 +2665,8 @@ if test "x$enable_llvm" = "xyes"; then
                ;;
    esac
 
+   if test "x$target_win32" = "xno"; then
+
    # 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
@@ -2466,17 +2696,39 @@ if test "x$enable_llvm" = "xyes"; then
                        AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"])
                 fi
          fi
-         if test "x$llvm_api_version" = "x"; then
-               LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=0"
-               LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=0"
-         else
-               LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=$llvm_api_version"
-               LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=$llvm_api_version"
-         fi
    else
          AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.])
    fi
 
+   else
+       LLVM_CFLAGS="-I$with_llvm/include -DNDEBUG -D__NO_CTYPE_INLINE -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
+       LLVM_CXXFLAGS="$LLVM_CFLAGS -std=gnu++11 -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Woverloaded-virtual -Wcast-qual"
+       LLVM_LDFLAGS="-L$with_llvm/lib"
+       LLVM_SYSTEM_LIBS="-lshell32 -lpsapi -limagehlp -ldbghelp -lm"
+       LLVM_LIBS="-lLLVMLTO -lLLVMObjCARCOpts -lLLVMLinker -lLLVMipo -lLLVMVectorize -lLLVMBitWriter \
+         -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo \
+         -lLLVMARMAsmPrinter -lLLVMTableGen -lLLVMDebugInfo -lLLVMOption -lLLVMX86Disassembler \
+         -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc \
+         -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMJIT \
+         -lLLVMIRReader -lLLVMAsmParser -lLLVMLineEditor -lLLVMMCAnalysis -lLLVMInstrumentation \
+         -lLLVMInterpreter -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine -lLLVMTransformUtils \
+         -lLLVMipa -lLLVMAnalysis -lLLVMProfileData -lLLVMMCJIT -lLLVMTarget -lLLVMRuntimeDyld \
+         -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMExecutionEngine -lLLVMMC -lLLVMCore \
+         -lLLVMSupport -lstdc++"
+       LLVM_LIBS="$LLVM_LIBS $LLVM_SYSTEM_LIBS"
+
+       llvm_config_path=$with_llvm/include/llvm/Config/llvm-config.h
+       llvm_api_version=`awk '/MONO_API_VERSION/ { print $3 }' $llvm_config_path`
+   fi  
+
+   if test "x$llvm_api_version" = "x"; then
+         LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=0"
+         LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=0"
+   else
+         LLVM_CFLAGS="$LLVM_CFLAGS -DLLVM_API_VERSION=$llvm_api_version"
+         LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_API_VERSION=$llvm_api_version"
+   fi   
+
    AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties])
 
    AC_SUBST(LLVM_CFLAGS)
@@ -2797,6 +3049,18 @@ if test "x$host" != "x$target"; then
                with_tls=pthread
                target_mach=no
                ;;
+   x86_64*-linux-*)
+               TARGET=AMD64;
+               arch_target=amd64;
+               AC_DEFINE(TARGET_AMD64, 1, [...])
+               AC_DEFINE(TARGET_ANDROID, 1, [...])
+               CPPFLAGS="$CPPFLAGS"
+               sgen_supported=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               target_mach=no
+               ;;
    aarch64*-linux-*)
                TARGET=ARM64;
                arch_target=arm64;
@@ -2853,6 +3117,46 @@ SPARC64)
        ;;
 esac
 
+dnl *************
+dnl *** VTUNE ***
+dnl *************
+
+AC_ARG_ENABLE(vtune,[  --enable-vtune  Enable the VTUNE back-end], enable_vtune=$enableval, enable_vtune=no)
+AC_ARG_WITH(vtune, [  --with-vtune=<vtune prefix>      Enable jit vtune profiling], enable_vtune=yes,)
+
+AM_CONDITIONAL(HAVE_VTUNE, test x$enable_vtune = xyes)
+
+if test "x$enable_vtune" = "xyes"; then
+       if test "x$with_vtune" = "x"; then
+               VTUNE_PATH=/opt/intel/vtune_amplifier_xe
+       else
+               VTUNE_PATH=$with_vtune
+       fi
+       VTUNE_INCLUDE=$VTUNE_PATH/include
+       case "$TARGET" in
+       X86)
+               VTUNE_LIB=$VTUNE_PATH/lib32
+               ;;
+       AMD64)
+               VTUNE_LIB=$VTUNE_PATH/lib64
+               ;;
+       *)
+               AC_MSG_ERROR([Unsupported target $TARGET for VTUNE.])
+               ;;
+       esac
+       if test ! -f $VTUNE_INCLUDE/jitprofiling.h; then
+               AC_MSG_ERROR([VTUNE $VTUNE_INCLUDE/jitprofiling.h not found.])
+       fi
+       if test ! -f $VTUNE_LIB/libjitprofiling.a; then
+               AC_MSG_ERROR([VTUNE $VTUNE_LIB/libjitprofiling.a not found.])
+       fi
+
+       VTUNE_CFLAGS=-I$VTUNE_INCLUDE
+       VTUNE_LIBS="-L/$VTUNE_LIB/ -ljitprofiling"
+
+       AC_SUBST(VTUNE_LIBS)
+       AC_SUBST(VTUNE_CFLAGS)
+fi
 dnl Use GCC atomic ops if they work on the target.
 if test x$GCC = "xyes"; then
        case $TARGET in
@@ -3251,6 +3555,12 @@ AC_ARG_WITH(lazy_gc_thread_creation, [  --with-lazy-gc-thread-creation=yes|no
        fi
 ], [with_lazy_gc_thread_creation=no])
 
+AC_ARG_WITH(cooperative_gc, [  --with-cooperative-gc=yes|no      Enable cooperative stop-the-world garbage collection (sgen only) (defaults to no)],[
+       if test x$with_cooperative_gc != xno ; then
+               AC_DEFINE(USE_COOP_GC,1,[Enable cooperative stop-the-world garbage collection.])
+       fi
+], [with_cooperative_gc=no])
+
 AC_CHECK_HEADER([malloc.h], 
                [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
                        [Define to 1 if you have /usr/include/malloc.h.])],,)
@@ -3523,10 +3833,10 @@ AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config],
 ],[LN_S='$LN_S'])
 
 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])
+AC_CONFIG_COMMANDS([nolock-libtool], [sed -e 's/lock_old_archive_extraction=yes/lock_old_archive_extraction=no/g' < libtool > libtool.tmp && mv libtool.tmp libtool && chmod a+x libtool])
 
 AC_OUTPUT([
 Makefile
-mono-core.spec
 mono-uninstalled.pc
 scripts/mono-find-provides
 scripts/mono-find-requires
@@ -3557,7 +3867,6 @@ mono/tests/cas/threads/Makefile
 mono/tests/gc-descriptors/Makefile
 mono/unit-tests/Makefile
 mono/benchmark/Makefile
-mono/monograph/Makefile
 mono/io-layer/Makefile
 mono/mini/Makefile
 mono/profiler/Makefile
@@ -3599,6 +3908,7 @@ data/config
 tools/Makefile
 tools/locale-builder/Makefile
 tools/sgen/Makefile
+tools/monograph/Makefile
 runtime/Makefile
 msvc/Makefile
 po/Makefile