X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.ac;h=f198f127a4e655db65d620a0922f6c6bfdd3c305;hb=79283363f0f551d2b2d435d09bbec69f0b643675;hp=9a10f6d4917d3143ac993bd5f0f59e26fdd941cf;hpb=df39947352df2c8e6d544763cafed84d23a23b7a;p=mono.git diff --git a/configure.ac b/configure.ac index 9a10f6d4917..f198f127a4e 100644 --- a/configure.ac +++ b/configure.ac @@ -52,6 +52,8 @@ CPPFLAGS_FOR_LIBGC=$CPPFLAGS CFLAGS_FOR_LIBGC=$CFLAGS CPPFLAGS_FOR_EGLIB=$CPPFLAGS CFLAGS_FOR_EGLIB=$CFLAGS +CPPFLAGS_FOR_BTLS=$CPPFLAGS +CFLAGS_FOR_BTLS=$CFLAGS # libgc uses some deprecated APIs CFLAGS_FOR_LIBGC="$CFLAGS -Wno-deprecated-declarations" @@ -66,7 +68,11 @@ AC_SUBST(libmono_cflags) AC_SUBST(libmono_ldflags) # Variable to have relocatable .pc files (lib, or lib64) -reloc_libdir=`basename ${libdir}` +# realpath isn't always available, and requires that all but the tip of the provided +# path exists. Fall back to the old behaviour, but realpath allows depth >1 +# e.g. Debian puts Mono in /usr/bin and libs in /usr/lib/x86_64-linux-gnu/ which is +# too deep for the old method to work +reloc_libdir=`realpath --relative-to=${prefix} ${libdir} 2> /dev/null || basename ${libdir}` AC_SUBST(reloc_libdir) # Set to yes if Unix sockets cannot be created in an anonymous namespace @@ -111,6 +117,7 @@ case "$host" in libgc_threads=win32 with_sigaltstack=no with_tls=pthread + with_sgen_default_concurrent=yes LN_S=cp # This forces libgc to use the DllMain based thread registration code on win32 libgc_configure_args="$libgc_configure_args --enable-win32-dllmain=yes" @@ -126,6 +133,7 @@ case "$host" in libgc_threads=pthreads with_sigaltstack=no use_sigposix=yes + with_sgen_default_concurrent=yes ;; *-*-kfreebsd*-gnu) CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP -DUSE_MUNMAP -DTHREAD_LOCAL_ALLOC -pthread" @@ -136,6 +144,7 @@ case "$host" in need_link_unlink=yes with_sigaltstack=no use_sigposix=yes + with_sgen_default_concurrent=yes ;; *-*-*freebsd*) if test "x$PTHREAD_CFLAGS" = "x"; then @@ -159,6 +168,7 @@ case "$host" in libgc_threads=pthreads use_sigposix=yes has_dtrace=yes + with_sgen_default_concurrent=yes ;; *-*-*openbsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_REENTRANT -DUSE_MMAP" @@ -173,6 +183,7 @@ case "$host" in libgc_threads=pthreads with_sigaltstack=no use_sigposix=yes + with_sgen_default_concurrent=yes ;; *-*-linux-android*) platform_android=yes @@ -236,6 +247,7 @@ case "$host" in disable_munmap=yes ;; esac + with_sgen_default_concurrent=yes ;; *-*-nacl*) CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" @@ -308,8 +320,10 @@ case "$host" in CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS" CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS" CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS" + with_sgen_default_concurrent=yes ;; x*64-*-darwin*) + with_sgen_default_concurrent=yes ;; arm*-darwin*) has_dtrace=no @@ -345,6 +359,10 @@ if test x$target_win32 = xyes; then AC_DEFINE(TARGET_WIN32, 1, [Target Platform is Win32]) fi +# Defined for all targets/platforms using classic Windows API support. +AC_DEFINE(HAVE_CLASSIC_WINAPI_SUPPORT, 1, [Use classic Windows API support]) +AC_DEFINE(HAVE_UWP_WINAPI_SUPPORT, 0, [Don't use UWP Windows API support]) + AC_SUBST(extra_runtime_ldflags) AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes) AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes) @@ -521,7 +539,7 @@ AC_ARG_ENABLE(visibility-hidden, 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 -Wno-attributes' + 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 -Wno-attributes -Wno-format-zero-length' # We require C99 with some GNU extensions, e.g. `linux` macro CFLAGS="$CFLAGS -std=gnu99" @@ -532,9 +550,6 @@ if test x"$GCC" = xyes; then # We rely on signed overflow to behave CFLAGS="$CFLAGS -fwrapv" - # We rely on zero length arrays in structs - CFLAGS="$CFLAGS -Wno-zero-length-array" - CFLAGS="$CFLAGS -DMONO_DLL_EXPORT" if test x"$disable_visibility_hidden" = xno; then # Don't export any symbols by default @@ -561,6 +576,8 @@ if test x"$GCC" = xyes; then # https://bugzilla.samba.org/show_bug.cgi?id=8118 WARN="$WARN -Qunused-arguments" WARN="$WARN -Wno-unused-function -Wno-tautological-compare -Wno-parentheses-equality -Wno-self-assign -Wno-return-stack-address -Wno-constant-logical-operand" + # We rely on zero length arrays in structs + WARN="$WARN -Wno-zero-length-array" fi else # The Sun Forte compiler complains about inline functions that access static variables @@ -741,21 +758,48 @@ fi AC_ARG_ENABLE(system-aot, [ --enable-system-aot Enable the Ahead-Of-Time compilation of system assemblies during the build (on by default on some platforms)], enable_system_aot=$enableval, enable_system_aot=default) DISABLED_FEATURES=none +csc_compiler=default +endian=unknown +AC_C_BIGENDIAN([endian=big],[endian=little],[endian=unknown]) +AC_MSG_CHECKING([CSharp compiler to use]) +AC_ARG_WITH(csc, [ --with-csc=mcs,roslyn,default Configures the CSharp compiler to use],[ + if test x$withval = xmcs; then + csc_compiler=mcs + elif test x$withval = xroslyn; then + csc_compiler=roslyn + elif test x$withval = xdefault; then + : + else + AC_MSG_ERROR([You must supply one of "mcs", "roslyn" or "default" to the --with-csc option]) + fi +],[csc_compiler=default]) + +if test $csc_compiler = default; then + if test $endian = big; then + csc_compiler=mcs + elif test $endian = little; then + csc_compiler=roslyn + else + csc_compiler=mcs + fi +fi +AC_MSG_RESULT($csc_compiler) # # Set the build profiles and options before things which use them # -AC_ARG_WITH(profile4_x, [ --with-profile4=yes,no If you want to install the 4.x FX (defaults to yes)], [], [with_profile4_x=default]) +AC_ARG_WITH(profile4_x, [ --with-profile4_x=yes,no If you want to install the 4.x FX (defaults to yes)], [], [with_profile4_x=default]) AC_ARG_WITH(monodroid, [ --with-monodroid=yes,no If you want to build the MonoDroid assemblies (defaults to no)], [], [with_monodroid=default]) AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no If you want to build the Xamarin.iOS assemblies (defaults to no)], [], [with_monotouch=default]) AC_ARG_WITH(monotouch_watch, [ --with-monotouch_watch=yes,no If you want to build the Xamarin.WatchOS assemblies (defaults to no)],[], [with_monotouch_watch=default]) AC_ARG_WITH(monotouch_tv, [ --with-monotouch_tv=yes,no If you want to build the Xamarin.TVOS assemblies (defaults to no)], [], [with_monotouch_tv=default]) AC_ARG_WITH(bitcode, [ --with-bitcode=yes,no If bitcode is enabled (defaults to no)], [], [with_bitcode=default]) AC_ARG_WITH(xammac, [ --with-xammac=yes,no If you want to build the Xamarin.Mac assemblies (defaults to no)], [], [with_xammac=default]) -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=default]) +AC_ARG_WITH(aot_hybrid, [ --with-aot_hybrid=yes,no If you want to build the aot_hybrid assemblies (defaults to no)], [], [with_aot_hybrid=default]) +AC_ARG_WITH(aot_only, [ --with-aot_only=yes,no If you want to build the aot_only assemblies (defaults to no)], [], [with_aot_only=default]) -AC_ARG_WITH(runtime_preset, [ --with-runtime_preset=net_4_x,all,mobile_static,bitcode_mobile_static Which default profile to build (defaults to net_4_x)], [], [with_runtime_preset=net_4_x]) +AC_ARG_WITH(runtime_preset, [ --with-runtime_preset=net_4_x,all,aot,hybridaot,fullaot,bitcode Which default profile to build (defaults to net_4_x)], [], [with_runtime_preset=net_4_x]) dnl dnl Profile defaults @@ -763,52 +807,35 @@ dnl TEST_PROFILE=default enable_llvm_default=no -INVARIANT_AOT_OPTIONS=nimt-trampolines=900,ntrampolines=8000,nrgctx-fetch-trampolines=256,ngsharedvt-trampolines=2800 +with_profile4_x_default=no +with_monodroid_default=no +with_monotouch_default=no +with_monotouch_watch_default=no +with_monotouch_tv_default=no +with_xammac_default=no +with_aot_hybrid_default=no +with_aot_only_default=no + +with_bitcode_default=no +with_cooperative_gc_default=no + +INVARIANT_AOT_OPTIONS=nimt-trampolines=2000,ntrampolines=8000,nrgctx-fetch-trampolines=256,ngsharedvt-trampolines=4000 if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then DISABLE_MCS_DOCS_default=yes - with_profile4_x_default=no - with_monodroid_default=no - with_monotouch_default=no - with_monotouch_watch_default=no - with_monotouch_tv_default=no - with_xammac_default=no - with_mobile_static_default=no - with_bitcode_default=no - with_cooperative_gc_default=no elif test x$with_runtime_preset = xnet_4_x; then - with_cooperative_gc_default=no with_profile4_x_default=yes - with_monodroid_default=no - with_monotouch_default=no - with_monotouch_watch_default=no - with_monotouch_tv_default=no - with_xammac_default=no - with_mobile_static_default=no - with_bitcode_default=no elif test x$with_runtime_preset = xall; then - with_cooperative_gc_default=no with_profile4_x_default=yes with_monodroid_default=yes with_monotouch_default=yes with_monotouch_watch_default=yes with_monotouch_tv_default=yes with_xammac_default=yes - with_mobile_static_default=no - with_bitcode_default=no -elif test x$with_runtime_preset = xmobile_static; then +elif test x$with_runtime_preset = xfullaot; then DISABLE_MCS_DOCS_default=yes - with_cooperative_gc_default=no - with_profile4_x_default=no - with_monodroid_default=no - with_monotouch_default=no - with_monotouch_watch_default=no - with_monotouch_tv_default=no - with_xammac_default=no - with_mobile_static_default=yes - with_bitcode_default=no - with_cooperative_gc_default=no - TEST_PROFILE=mobile_static + with_aot_only_default=yes + TEST_PROFILE=aot_only mono_feature_disable_com='yes' mono_feature_disable_remoting='yes' @@ -818,18 +845,12 @@ elif test x$with_runtime_preset = xmobile_static; then AOT_BUILD_FLAGS="-O=gsharedvt --aot=full,$INVARIANT_AOT_OPTIONS" AOT_RUN_FLAGS="--full-aot" -elif test x$with_runtime_preset = xbitcode_mobile_static; then +elif test x$with_runtime_preset = xbitcode; then DISABLE_MCS_DOCS_default=yes - with_profile4_x_default=no - with_monodroid_default=no - with_monotouch_default=no - with_monotouch_watch_default=no - with_monotouch_tv_default=no - with_xammac_default=no - with_mobile_static_default=yes + with_aot_only_default=yes with_bitcode_default=yes with_cooperative_gc_default=yes - TEST_PROFILE=mobile_static + TEST_PROFILE=aot_only enable_llvm_default=yes mono_feature_disable_com='yes' @@ -840,16 +861,26 @@ elif test x$with_runtime_preset = xbitcode_mobile_static; then AOT_BUILD_FLAGS="--aot=llvmonly,$INVARIANT_AOT_OPTIONS" AOT_RUN_FLAGS="--llvmonly" +elif test x$with_runtime_preset = xhybridaot; then + DISABLE_MCS_DOCS_default=yes + with_aot_hybrid_default=yes + TEST_PROFILE=aot_hybrid + + mono_feature_disable_com='yes' + mono_feature_disable_remoting='yes' + mono_feature_disable_appdomains='yes' + + AOT_BUILD_FLAGS="--aot=hybrid,$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="--hybrid-aot" +elif test x$with_runtime_preset = xaot; then + with_profile4_x_default=yes + + AOT_BUILD_FLAGS="--aot=$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="" + + DISABLE_MCS_DOCS_default=yes else with_profile4_x_default=yes - with_monodroid_default=no - with_monotouch_default=no - with_monotouch_watch_default=no - with_monotouch_tv_default=no - with_bitcode_default=no - with_xammac_default=no - with_mobile_static_default=no - with_cooperative_gc_default=no fi if test "x$AOT_BUILD_FLAGS" != "x"; then : @@ -882,8 +913,11 @@ fi if test "x$with_xammac" = "xdefault"; then with_xammac=$with_xammac_default fi -if test "x$with_mobile_static" = "xdefault"; then - with_mobile_static=$with_mobile_static_default +if test "x$with_aot_hybrid" = "xdefault"; then + with_aot_hybrid=$with_aot_hybrid_default +fi +if test "x$with_aot_only" = "xdefault"; then + with_aot_only=$with_aot_only_default fi AM_CONDITIONAL(INSTALL_4_x, [test "x$with_profile4_x" = "xyes"]) @@ -893,9 +927,11 @@ AM_CONDITIONAL(INSTALL_MONOTOUCH_WATCH, [test "x$with_monotouch_watch" != "xno"] AM_CONDITIONAL(INSTALL_MONOTOUCH_TV, [test "x$with_monotouch_tv" != "xno"]) AM_CONDITIONAL(BITCODE, test "x$with_bitcode" = "xyes") AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"]) -AM_CONDITIONAL(INSTALL_MOBILE_STATIC, [test "x$with_mobile_static" != "xno"]) +AM_CONDITIONAL(INSTALL_AOT_HYBRID, [test "x$with_aot_hybrid" != "xno"]) +AM_CONDITIONAL(INSTALL_AOT_ONLY, [test "x$with_aot_only" != "xno"]) -AC_SUBST(INSTALL_MOBILE_STATIC) +AC_SUBST(INSTALL_AOT_HYBRID) +AC_SUBST(INSTALL_AOT_ONLY) default_profile=net_4_x if test -z "$INSTALL_MONODROID_TRUE"; then : @@ -907,8 +943,11 @@ fi if test -z "$INSTALL_XAMMAC_TRUE"; then : default_profile=xammac fi -if test -z "$INSTALL_MOBILE_STATIC_TRUE"; then : - default_profile=mobile_static +if test -z "$INSTALL_AOT_HYBRID_TRUE"; then : + default_profile=aot_hybrid +fi +if test -z "$INSTALL_AOT_ONLY_TRUE"; then : + default_profile=aot_only fi if test -z "$INSTALL_4_x_TRUE"; then : default_profile=net_4_x @@ -1030,11 +1069,6 @@ if test "x$mono_feature_disable_attach" = "xyes"; then AC_MSG_NOTICE([Disabled agent attach]) fi -if test "x$mono_feature_disable_full_messages" = "xyes"; then - AC_DEFINE(DISABLE_FULL_MESSAGES, 1, [Disables building in the full table of WAPI messages]) - AC_MSG_NOTICE([Disabled full messages for Win32 errors, only core message strings shipped]) -fi - if test "x$mono_feature_disable_verifier" = "xyes"; then AC_DEFINE(DISABLE_VERIFIER, 1, [Disables the verifier]) AC_MSG_NOTICE([Disabled the metadata and IL verifiers]) @@ -1156,20 +1190,6 @@ AC_COMPILE_IFELSE([ AC_MSG_RESULT(no) ]) -AC_MSG_CHECKING(for deprecated __attribute__) -AC_TRY_COMPILE([ - int doit (void) __attribute__ ((deprecated)); - int doit (void) { return 0; } -], [ - return 0; -], [ - have_deprecated=yes - AC_MSG_RESULT(yes) -], [ - have_deprecated=no - AC_MSG_RESULT(no) -]) - dnl dnl Boehm GC configuration dnl @@ -1390,7 +1410,15 @@ if test x$host_win32 = xno; then # We have the new, three-parameter version AC_MSG_RESULT(no) ]) - + AC_TRY_COMPILE([#include ], [ + CPU_COUNT((void *) 0); + ], [ + AC_MSG_RESULT(yes) + AC_DEFINE(GLIBC_HAS_CPU_COUNT, 1, [GLIBC has CPU_COUNT macro in sched.h]) + ], [ + # We have the new, three-parameter version + AC_MSG_RESULT(no) + ]) dnl ****************************************************************** dnl *** Check for large file support *** @@ -2666,12 +2694,6 @@ 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 @@ -2947,6 +2969,8 @@ sizeof_register="SIZEOF_VOID_P" jit_wanted=true boehm_supported=true +BTLS_SUPPORTED=no +BTLS_PLATFORM= case "$host" in mips*) TARGET=MIPS; @@ -2999,9 +3023,13 @@ case "$host" in ;; linux*) AOT_SUPPORTED="yes" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=i386 ;; darwin*) AOT_SUPPORTED="yes" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=i386 ;; openbsd*|freebsd*|kfreebsd-gnu*) ;; @@ -3017,9 +3045,13 @@ case "$host" in case $host_os in linux*) AOT_SUPPORTED="yes" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=x86_64 ;; darwin*) AOT_SUPPORTED="yes" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=x86_64 ;; openbsd*|freebsd*|kfreebsd-gnu*) ;; @@ -3140,6 +3172,7 @@ HOST=$TARGET 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 + BTLS_SUPPORTED=no case "$target" in arm*-darwin*) TARGET=ARM; @@ -3425,10 +3458,12 @@ if test "x$target_mach" = "xyes"; then AC_DEFINE(TARGET_WATCHOS,1,[The JIT/AOT targets WatchOS]) CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_WATCHOS" CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_WATCHOS" + BTLS_SUPPORTED=no elif test "x$TARGET" = "xARM" -o "x$TARGET" = "xARM64"; 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" + BTLS_SUPPORTED=no else AC_TRY_COMPILE([#include "TargetConditionals.h"],[ #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 @@ -3443,6 +3478,7 @@ if test "x$target_mach" = "xyes"; 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" + BTLS_SUPPORTED=no ]) fi AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms]) @@ -3750,6 +3786,45 @@ if test ${TARGET} = unknown; then AC_MSG_WARN("mono has not been ported to $host: some things may not work.") fi +if test "x$platform_android" = "xyes"; then + case "x${TARGET}" in + xARM) + case "x$arm_ver" in + xARMv5) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=android-armv5 + ;; + xARMv6) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=android-armv6 + ;; + xARMv7) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=android-armv7 + ;; + *) + BTLS_SUPPORTED=no + ;; + esac + ;; + xARM64) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=android-v8a + ;; + xX86) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=android-x86 + ;; + xAMD64) + BTLS_SUPPORTED=yes + BTLS_PLATFORM=android-x64 + ;; + *) + BTLS_SUPPORTED=no + ;; + esac +fi + if test ${ACCESS_UNALIGNED} = no; then CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS" fi @@ -3872,6 +3947,90 @@ else fi AC_SUBST(LIBMONO_LA) +dnl ************** +dnl *** Btls *** +dnl ************** + +AC_ARG_ENABLE(btls, [ --disable-btls Disable the BoringTls provider], enable_btls=$enableval, enable_btls=$BTLS_SUPPORTED) +AC_ARG_WITH(btls_android_ndk, [ --with-btls-android-ndk Android NDK for BoringTls]) + +AC_ARG_ENABLE(dynamic-btls, [ --enable-dynamic-btls Place the BTLS provider into a separate shared library/archive.], enable_dynamic_btls=$enableval, enable_dynamic_btls=no) + +AM_CONDITIONAL(BTLS, test x$enable_btls = xyes) + +btls_android=no +if test "x$enable_btls" = "xyes"; then + AC_PATH_PROG(CMAKE, [cmake], [no], [$PATH:/Applications/CMake.app/Contents/bin:/usr/local/bin]) + if test "x$CMAKE" = "xno"; then + AC_MSG_ERROR("cmake not found") + fi + + BTLS_ROOT=`cd $srcdir && pwd`/external/boringssl + AC_SUBST(BTLS_ROOT) + + btls_arch= + btls_cflags= + BTLS_CMAKE_ARGS= + + case "$BTLS_PLATFORM" in + i386) + btls_arch=i386 + btls_cflags="-m32" + case $host_os in + darwin*) + btls_cflags="$btls_cflags -arch i386" + esac + ;; + x86_64) + btls_arch=x86_64 + ;; + android-armv5) + BTLS_CMAKE_ARGS="-DANDROID_ABI=\"armeabi\" -DANDROID_NATIVE_API_LEVEL=12" + ;; + android-armv6) + BTLS_CMAKE_ARGS="-DANDROID_ABI=\"armeabi\" -DANDROID_NATIVE_API_LEVEL=12" + ;; + android-armv7) + BTLS_CMAKE_ARGS="-DANDROID_ABI=\"armeabi-v7a\" -DANDROID_NATIVE_API_LEVEL=12" + ;; + android-v8a) + BTLS_CMAKE_ARGS="-DANDROID_ABI=\"arm64-v8a\" -DANDROID_NATIVE_API_LEVEL=12" + ;; + android-x86) + BTLS_CMAKE_ARGS="-DANDROID_ABI=\"x86\" -DANDROID_NATIVE_API_LEVEL=12" + ;; + android-x64) + BTLS_CMAKE_ARGS="-DANDROID_ABI=\"x86_64\" -DANDROID_NATIVE_API_LEVEL=12" + ;; + *) + AC_MSG_ERROR(Invalid BTLS platform) + esac + + if test "x$platform_android" = "xyes"; then + btls_android=yes + BTLS_CMAKE_ARGS="$BTLS_CMAKE_ARGS -DCMAKE_TOOLCHAIN_FILE=$BTLS_ROOT/util/android-cmake/android.toolchain.cmake" + if test "x$with_btls_android_ndk" != "x"; then + BTLS_CMAKE_ARGS="$BTLS_CMAKE_ARGS -DANDROID_NDK=\"$with_btls_android_ndk\"" + fi + fi + + if test "x$btls_arch" != "x"; then + BTLS_CMAKE_ARGS="$BTLS_CMAKE_ARGS -DBTLS_ARCH=\"$btls_arch\"" + fi + + BTLS_CFLAGS="$CPPFLAGS_FOR_BTLS $btls_cflags" + AC_SUBST(BTLS_ARCH) + AC_SUBST(BTLS_CFLAGS) + AC_SUBST(BTLS_PLATFORM) + AC_SUBST(BTLS_CMAKE_ARGS) + + AC_DEFINE(HAVE_BTLS, 1, [BoringTls is supported]) +else + enable_btls=no +fi + +AM_CONDITIONAL(BTLS_ANDROID, test x$btls_android = xyes) + if test x$DISABLE_MCS_DOCS = xyes; then docs_dir="" else @@ -3926,10 +4085,13 @@ AC_SUBST(mono_build_root) mono_runtime=mono/mini/mono AC_SUBST(mono_runtime) +CSC=`cd $srcdir && pwd`/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.1.3.2/tools/csc.exe + mono_cfg_root=$mono_build_root/runtime if test x$host_win32 = xyes; then if test "x$cross_compiling" = "xno"; then mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc + CSC="'"`cygpath -w -a $CSC`"'" else mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc fi @@ -3938,6 +4100,8 @@ else fi AC_SUBST(mono_cfg_dir) +AC_SUBST(CSC) + AC_CONFIG_FILES([po/mcs/Makefile.in]) AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper]) @@ -4108,6 +4272,7 @@ llvm/Makefile scripts/mono-find-provides scripts/mono-find-requires mono/Makefile +mono/btls/Makefile mono/utils/Makefile mono/metadata/Makefile mono/dis/Makefile @@ -4215,6 +4380,7 @@ 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 "mono_build_root=$mono_build_root" >> $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 @@ -4268,19 +4434,42 @@ fi echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make fi + echo "CSC_LOCATION = $CSC" >> $srcdir/$mcsdir/build/config.make + + if test $csc_compiler = mcs; then + echo "MCS_MODE = 1" >> $srcdir/$mcsdir/build/config.make + fi + if test "x$AOT_BUILD_FLAGS" != "x" ; then echo "AOT_RUN_FLAGS=$AOT_RUN_FLAGS" >> $srcdir/$mcsdir/build/config.make echo "AOT_BUILD_FLAGS=$AOT_BUILD_FLAGS" >> $srcdir/$mcsdir/build/config.make fi + if test "x$enable_btls" = "xyes"; then + echo "HAVE_BTLS=1" >> $srcdir/$mcsdir/build/config.make + if test "x$enable_dynamic_btls" = "xyes"; then + echo "HAVE_DYNAMIC_BTLS=1" >> $srcdir/$mcsdir/build/config.make + fi + fi + fi ) libgdiplus_msg=${libgdiplus_loc:-assumed to be installed} +btls_platform_string= +if test x$enable_btls = xyes; then + if test x$btls_android = xyes; then + btls_platform_string=" (android:$BTLS_PLATFORM)" + else + btls_platform_string=" ($BTLS_PLATFORM)" + fi +fi + echo " mcs source: $mcsdir + C# Compiler: $csc_compiler Engine: Host: $host @@ -4300,10 +4489,12 @@ echo " Xamarin.WatchOS: $with_monotouch_watch Xamarin.TVOS: $with_monotouch_tv Xamarin.Mac: $with_xammac - mobile_static: $with_mobile_static + AOT preferred: $with_aot_hybrid + AOT only: $with_aot_only JNI support: $jdk_headers_found libgdiplus: $libgdiplus_msg zlib: $zlib_msg + BTLS: $enable_btls$btls_platform_string $disabled " if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then