Merge pull request #3121 from lambdageek/dev/managed-init_message
[mono.git] / configure.ac
index 52bd77591086353b5a9030c95f425cfe9e90687b..0cd24ea88df8c4c419f2092bc028b6a33c6bb3a8 100644 (file)
@@ -1,7 +1,8 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [4.5.0],
+# when bumping version number below, keep it in sync with man/mono.1 too
+AC_INIT(mono, [4.5.2],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README.md])
@@ -92,11 +93,11 @@ case "$host" in
                host_win32=yes
                mono_cv_clang=no
                if test "x$cross_compiling" = "xno"; then
-                       if test "x$host" == "x$build" -a "x$host" == "x$target"; then
+                       if test "x$host" = "x$build" -a "x$host" = "x$target"; then
                                target_win32=yes
                        fi
                else
-                       if test "x$host" == "x$target"; then
+                       if test "x$host" = "x$target"; then
                                target_win32=yes
                        fi
                fi
@@ -967,71 +968,75 @@ AC_ARG_WITH(libgc,   [  --with-gc=included,none  Controls the Boehm GC config, d
 AC_ARG_ENABLE(boehm, [  --disable-boehm            Disable the Boehm GC.], support_boehm=$enableval,support_boehm=${support_boehm:-yes})
 AM_CONDITIONAL(SUPPORT_BOEHM, test x$support_boehm = xyes)
 
-AC_ARG_ENABLE(parallel-mark, [  --enable-parallel-mark     Enables Boehm GC Parallel Marking], enable_parallel_mark=$enableval, enable_parallel_mark=$parallel_mark)
-if test x$enable_parallel_mark = xyes; then
-       libgc_configure_args="$libgc_configure_args --enable-parallel-mark"
-fi
+if test "x$support_boehm" = "xyes"; then
 
-gc_msg=""
-LIBGC_CPPFLAGS=
-LIBGC_LIBS=
-LIBGC_STATIC_LIBS=
-libgc_dir=
-case "x$libgc" in
-       xincluded)
-               if test "x$support_boehm" = "xyes"; then
-                       libgc_dir=libgc
-               fi
+       AC_ARG_ENABLE(parallel-mark, [  --enable-parallel-mark     Enables Boehm GC Parallel Marking], enable_parallel_mark=$enableval, enable_parallel_mark=$parallel_mark)
+       if test x$enable_parallel_mark = xyes; then
+               libgc_configure_args="$libgc_configure_args --enable-parallel-mark"
+       fi
 
-               LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include'
-               LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la'
-               LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la'
+       gc_msg=""
+       LIBGC_CPPFLAGS=
+       LIBGC_LIBS=
+       LIBGC_STATIC_LIBS=
+       libgc_dir=
+       case "x$libgc" in
+               xincluded)
+                       if test "x$support_boehm" = "xyes"; then
+                               libgc_dir=libgc
+                       fi
 
-               BOEHM_DEFINES="-DHAVE_BOEHM_GC"
+                       LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include'
+                       LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la'
+                       LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la'
 
-               if test x$target_win32 = xyes; then
-                       BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL"
-                       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL"
-               fi
+                       BOEHM_DEFINES="-DHAVE_BOEHM_GC"
 
-               gc_msg="Included Boehm GC with typed GC"
-               if test x$enable_parallel_mark = xyes; then
-                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description])
-                       gc_msg="$gc_msg and parallel mark"
-               else
-                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description])
-               fi
-               ;;
+                       if test x$target_win32 = xyes; then
+                               BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL"
+                               CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL"
+                       fi
 
-       xboehm|xbohem|xyes)
-               AC_MSG_WARN("External Boehm is no longer supported")
-               ;;
+                       gc_msg="Included Boehm GC with typed GC"
+                       if test x$enable_parallel_mark = xyes; then
+                               AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description])
+                               gc_msg="$gc_msg and parallel mark"
+                       else
+                               AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description])
+                       fi
+                       ;;
 
-       xsgen)
-               AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration")
-               ;;
+               xboehm|xbohem|xyes)
+                       AC_MSG_WARN("External Boehm is no longer supported")
+                       ;;
 
-       xnone)
-               AC_MSG_WARN("Compiling mono without GC.")
-               AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description])
-               AC_DEFINE(HAVE_NULL_GC,1,[No GC support.])
-               gc_msg="none"
-               ;;
-       *)
-               AC_MSG_ERROR([Invalid argument to --with-gc.])
-               ;;
-esac
+               xsgen)
+                       AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration")
+                       ;;
 
-AC_ARG_WITH(large-heap, [  --with-large-heap=yes,no       Enable support for GC heaps larger than 3GB (defaults to no)], [large_heap=$withval], [large_heap=no])
-if test "x$large_heap" = "xyes"; then
-   CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG"
-fi
+               xnone)
+                       AC_MSG_WARN("Compiling mono without GC.")
+                       AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description])
+                       AC_DEFINE(HAVE_NULL_GC,1,[No GC support.])
+                       gc_msg="none"
+                       ;;
+               *)
+                       AC_MSG_ERROR([Invalid argument to --with-gc.])
+                       ;;
+       esac
+
+       AC_ARG_WITH(large-heap, [  --with-large-heap=yes,no       Enable support for GC heaps larger than 3GB (defaults to no)], [large_heap=$withval], [large_heap=no])
+       if test "x$large_heap" = "xyes"; then
+          CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG"
+       fi
 
-AC_SUBST(LIBGC_CPPFLAGS)
-AC_SUBST(LIBGC_LIBS)
-AC_SUBST(LIBGC_STATIC_LIBS)
-AC_SUBST(libgc_dir)
-AC_SUBST(BOEHM_DEFINES)
+       AC_SUBST(LIBGC_CPPFLAGS)
+       AC_SUBST(LIBGC_LIBS)
+       AC_SUBST(LIBGC_STATIC_LIBS)
+       AC_SUBST(libgc_dir)
+       AC_SUBST(BOEHM_DEFINES)
+
+fi
 
 dnl
 dnl End of Boehm GC Configuration
@@ -2451,7 +2456,7 @@ 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
+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
@@ -2549,9 +2554,6 @@ if test "x$enable_nacl_codegen" = "xyes"; then
    MONO_NACL_ALIGN_MASK_OFF=1
    AC_DEFINE(TARGET_NACL, 1, [...])
    AC_DEFINE(__native_client_codegen__, 1, [...])
-else
-   MONO_NACL_ALIGN_MASK_OFF=0
-   AC_DEFINE(__default_codegen__, 1, [...])
 fi
 if test "x$enable_nacl_gc" = "xyes"; then
    if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
@@ -2613,7 +2615,7 @@ if test "x$enable_llvm" = "xyes"; then
    AC_MSG_CHECKING(LLVM version)
    AC_MSG_RESULT($llvm_version $llvm_api_version)
    if echo $llvm_version | grep -q 'mono'; then
-         if test "x$enable_llvm_version_check" == "xyes"; then
+         if test "x$enable_llvm_version_check" = "xyes"; then
                 if test "$llvm_version" != "$expected_llvm_version"; then
                        AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"])
                 fi
@@ -2648,7 +2650,7 @@ if test "x$enable_llvm" = "xyes"; then
       llvm_jit_libs=""
    fi
    LLVM_LIBS=`$LLVM_CONFIG --libs analysis core bitwriter $llvm_jit_libs`
-   if test "x$LLVM_LIBS" == "x"; then
+   if test "x$LLVM_LIBS" = "x"; then
          echo "$LLVM_CONFIG --libs failed."
          exit 1
    fi
@@ -2873,6 +2875,7 @@ case "$host" in
                TARGET=ARM;
                TARGET_SYS=WATCHOS
                arch_target=arm;
+               arm_fpu=VFP_HARD
                ACCESS_UNALIGNED="no"
                CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                ;;
@@ -2890,6 +2893,12 @@ case "$host" in
                AOT_SUPPORTED="yes"
                CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                ;;
+       arm*-netbsd*-eabi*)
+               TARGET=ARM;
+               arch_target=arm;
+               ACCESS_UNALIGNED="no"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+               ;;
 # TODO: make proper support for NaCl host.
 #        arm*-*nacl)
 #              TARGET=ARM;
@@ -2902,6 +2911,7 @@ case "$host" in
                TARGET=ARM64
                arch_target=arm64
                boehm_supported=false
+               AOT_SUPPORTED="yes"
                ;;
        s390x-*-linux*)
                TARGET=S390X;
@@ -2927,6 +2937,7 @@ if test "x$host" != "x$target"; then
                with_tls=pthread
                case "$target" in
                armv7k-*)
+                       arm_fpu=VFP_HARD
                        AC_DEFINE(TARGET_WATCHOS, 1, [...])
                        ;;
                esac            
@@ -3004,6 +3015,17 @@ if test "x$host" != "x$target"; then
                        ;;
                esac
                ;;
+   arm*-netbsd*-eabi*)
+               TARGET=ARM;
+               arch_target=arm;
+               AC_DEFINE(TARGET_ARM, 1, [...])
+               ACCESS_UNALIGNED="no"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               target_mach=no
+               ;;
    i686*-linux-*)
                TARGET=X86;
                arch_target=x86;
@@ -3240,11 +3262,23 @@ dnl
 dnl Simple Generational checks (sgen)
 dnl
 SGEN_DEFINES=
-AC_ARG_WITH(sgen, [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=yes])
+AC_ARG_WITH(sgen,                    [  --with-sgen=yes,no             Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=yes])
+AC_ARG_WITH(sgen-default-concurrent, [  --with-sgen-default-concurrent=yes,no             Use Concurrent GC, default=no],[],[with_sgen_default_concurrent=no])
 if test x$buildsgen = xyes; then
    AC_DEFINE(HAVE_MOVING_COLLECTOR, 1, [Moving collector])
    SGEN_DEFINES="-DHAVE_SGEN_GC"
-   gc_msg="sgen and $gc_msg"
+
+       conc_gc_msg=""
+   if test x$with_sgen_default_concurrent != xno; then
+       AC_DEFINE(HAVE_CONC_GC_AS_DEFAULT, 1, [Defaults to concurrent GC])
+          conc_gc_msg=" (concurrent by default)"
+   fi
+
+   if test "x$gc_msg" = "x"; then
+      gc_msg="sgen$conc_gc_msg"
+   else
+      gc_msg="sgen$conc_gc_msg and $gc_msg"
+   fi
 fi
 AC_SUBST(SGEN_DEFINES)
 AM_CONDITIONAL(SUPPORT_SGEN, test x$buildsgen = xyes)
@@ -3265,8 +3299,10 @@ case "$host" in
        GTKX11="libgtk-x11-2.0.dylib"
        ;;
      *-*-*netbsd*)
-       LIBC="libc.so.12"
-       INTL="libintl.so.0"
+       LIBC="libc.so"
+       INTL="libintl.so"
+       SQLITE="libsqlite.so"
+       SQLITE3="libsqlite3.so"
        ;;
      *-*-kfreebsd*-gnu)
        LIBC="libc.so.0.1"
@@ -3428,6 +3464,10 @@ if test ${TARGET} = ARM; then
                ])
        fi
 
+       if test x$arm_fpu != x; then
+          fpu=$arm_fpu
+       fi
+
        AC_MSG_RESULT($fpu)
        CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
        unset fpu
@@ -3491,12 +3531,6 @@ if test ${TARGET} = ARM; then
        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.")
@@ -3539,20 +3573,6 @@ AC_ARG_WITH(bitcode,         [  --with-bitcode=yes,no           If bitcode is en
 AC_ARG_WITH(xammac,          [  --with-xammac=yes,no            If you want to build the Xamarin.Mac assemblies (defaults to no)],    [], [with_xammac=no])
 AC_ARG_WITH(mobile_static,   [  --with-mobile_static=yes,no     If you want to build the mobile_static assemblies (defaults to no)],  [], [with_mobile_static=no])
 
-OPROFILE=no
-AC_ARG_WITH(oprofile,[  --with-oprofile=no,<oprofile install dir>   Enable oprofile support (defaults to no)],[
-       if test x$with_oprofile != xno; then
-           oprofile_include=$with_oprofile/include
-           if test ! -f $oprofile_include/opagent.h; then
-                 AC_MSG_ERROR([oprofile include file not found at $oprofile_include/opagent.h])
-               fi
-           OPROFILE=yes
-               OPROFILE_CFLAGS="-I$oprofile_include"
-           OPROFILE_LIBS="-L$with_oprofile/lib/oprofile -lopagent"
-           AC_DEFINE(HAVE_OPROFILE,1,[Have oprofile support])
-       fi
-])
-
 MALLOC_MEMPOOLS=no
 AC_ARG_WITH(malloc_mempools,[  --with-malloc-mempools=yes,no  Use malloc for each single mempool allocation (only for runtime debugging, defaults to no)],[
        if test x$with_malloc_mempools = xyes; then
@@ -3584,6 +3604,8 @@ AC_ARG_WITH(cooperative_gc, [  --with-cooperative-gc=yes|no      Enable cooperat
        fi
 ], [with_cooperative_gc=no])
 
+AM_CONDITIONAL([ENABLE_COOP], [test x$with_cooperative_gc != xno])
+
 AC_ARG_ENABLE(checked_build, [  --enable-checked-build=LIST      To enable checked build (expensive asserts), configure with a comma-separated LIST of checked build modules and then include that same list in the environment variable MONO_CHECK_MODE at runtime. Recognized checked build modules: all, gc, metadata, thread],[
 
        if test x$enable_checked_build != x ; then
@@ -3662,10 +3684,6 @@ 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)
-
 libmono_ldflags="$libmono_ldflags $LIBS"
 
 AM_CONDITIONAL(INSTALL_4_x, [test "x$with_profile4_x" = xyes])
@@ -3913,6 +3931,7 @@ AC_OUTPUT([
 Makefile
 mono-uninstalled.pc
 acceptance-tests/Makefile
+llvm/Makefile
 scripts/mono-find-provides
 scripts/mono-find-requires
 mono/Makefile
@@ -4087,7 +4106,6 @@ echo "
        TLS:           $with_tls
        SIGALTSTACK:   $with_sigaltstack
        Engine:        $jit_status
-       oprofile:      $OPROFILE
        BigArrays:     $enable_big_arrays
        DTrace:        $enable_dtrace
        LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)