X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=mono.git;a=blobdiff_plain;f=configure.ac;h=bad8ecc8e3c8d08b5978acdf663d81535eb076be;hp=25c905871588f56aceb8e91bbb1a38ef4d5e5798;hb=4c144cfacfbfc8b67e78fe6d864329003bf94a93;hpb=5e1d20ac48917f8e777f99524b5c1994431b2228 diff --git a/configure.ac b/configure.ac index 25c90587158..bad8ecc8e3c 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ # Process this file with autoconf to produce a configure script. #AC_PREREQ([2.62]) -AC_INIT(mono, [5.3.0], +AC_INIT(mono, [5.7.0], [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono]) AC_CONFIG_SRCDIR([README.md]) @@ -41,7 +41,7 @@ MONO_VERSION_BUILD=`echo $VERSION | cut -d . -f 3` # since it's part of the corlib version (the prefix '1' in the full # version number is to ensure the number isn't treated as octal in C) MONO_CORLIB_COUNTER=1 -MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%03d" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR $MONO_VERSION_BUILD $MONO_CORLIB_COUNTER` +MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%03d" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR 0 $MONO_CORLIB_COUNTER` AC_DEFINE_UNQUOTED(MONO_CORLIB_VERSION,$MONO_CORLIB_VERSION,[Version of the corlib-runtime interface]) AC_SUBST(MONO_CORLIB_VERSION) @@ -67,8 +67,6 @@ libgc_configure_args= # libgc should inherit the original CFLAGS/CPPFLAGS passed to configure, i.e. -O0 CPPFLAGS_FOR_LIBGC=$CPPFLAGS CFLAGS_FOR_LIBGC=$CFLAGS -CPPFLAGS_FOR_EGLIB=$CPPFLAGS -CFLAGS_FOR_EGLIB=$CFLAGS CPPFLAGS_FOR_BTLS=$CPPFLAGS CFLAGS_FOR_BTLS=$CFLAGS @@ -98,8 +96,15 @@ need_link_unlink=no #Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen) extra_runtime_ldflags="" + +# Hack for WASM +# Current autotools (v1.15) doesn't have a triplet we can use for wasm so the kludge we do is to +# work around it by using a feature flag instead +AC_ARG_ENABLE(wasm,[ --enable-wasm Hack to set the current runtime to target wasm], enable_wasm=$enableval) + # Thread configuration inspired by sleepycat's db AC_MSG_CHECKING([host platform characteristics]) + libgc_threads=no has_dtrace=no parallel_mark=yes @@ -109,10 +114,20 @@ host_win32=no target_win32=no platform_android=no host_darwin=no + + +if test "x$enable_wasm" = "xyes"; then +CFLAGS="$CFLAGS -D_REENTRANT -D_GNU_SOURCE -DNO_UNALIGNED_ACCESS -s WASM=1" +CPPFLAGS="$CPPFLAGS -D_REENTRANT -DUSE_MMAP -D_GNU_SOURCE -DNO_UNALIGNED_ACCESS -s WASM=1" +libdl="-ldl" +libgc_threads=pthreads + +else + case "$host" in *-mingw*|*-*-cygwin*) AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer]) - AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks]) + AC_DEFINE(HOST_NO_SYMLINKS,1,[This platform does not support symlinks]) host_win32=yes mono_cv_clang=no if test "x$cross_compiling" = "xno"; then @@ -143,7 +158,7 @@ case "$host" in CPPFLAGS="$CPPFLAGS -D_REENTRANT -DGC_NETBSD_THREADS -D_GNU_SOURCE" libmono_cflags="-D_REENTRANT" LDFLAGS="$LDFLAGS -pthread" - CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" + CPPFLAGS="$CPPFLAGS -DHOST_BSD" libmono_ldflags="-pthread" need_link_unlink=yes libdl="-ldl" @@ -178,7 +193,7 @@ case "$host" in LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib" libmono_ldflags="$PTHREAD_LIBS" fi - CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" + CPPFLAGS="$CPPFLAGS -DHOST_BSD" need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer]) libdl= @@ -188,7 +203,7 @@ case "$host" in with_sgen_default_concurrent=yes ;; *-*-*openbsd*) - CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_REENTRANT -DUSE_MMAP" + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DHOST_BSD -D_REENTRANT -DUSE_MMAP" if test "x$disable_munmap" != "xyes"; then CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" fi @@ -204,7 +219,7 @@ case "$host" in ;; *-*-linux-android*) platform_android=yes - AC_DEFINE(PLATFORM_ANDROID,1,[Targeting the Android platform]) + AC_DEFINE(HOST_ANDROID,1,[Targeting the Android platform]) AC_DEFINE(TARGET_ANDROID,1,[Targeting the Android platform]) CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" @@ -264,17 +279,8 @@ case "$host" in with_sgen_default_concurrent=yes ;; *-*-nacl*) - CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP" - if test "x$disable_munmap" != "xyes"; then - CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP" - fi - libmono_cflags="-D_REENTRANT" - libdl= - libgc_threads=pthreads - use_sigposix=yes - ikvm_native=no - AC_DEFINE(DISABLE_SOCKETS,1,[Disable sockets support]) - AC_DEFINE(DISABLE_ATTACH, 1, [Disable agent attach support]) + echo "nacl no longer supported." + exit 1 ;; *-*-hpux*) CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT" @@ -295,7 +301,7 @@ case "$host" in use_sigposix=yes ;; *-*-solaris*) - CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DPLATFORM_SOLARIS" + CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP -DHOST_SOLARIS" need_link_unlink=yes libmono_cflags="-D_REENTRANT" libgc_threads=pthreads @@ -307,7 +313,7 @@ case "$host" in parallel_mark="Disabled_Currently_Hangs_On_MacOSX" host_darwin=yes target_mach=yes - CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX -DUSE_MMAP -DUSE_MUNMAP" + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_MACOSX_THREADS -DUSE_MMAP -DUSE_MUNMAP" libmono_cflags="-D_THREAD_SAFE" need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID) @@ -332,8 +338,6 @@ case "$host" in CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS" CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS" 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*) @@ -363,6 +367,10 @@ case "$host" in libdl="-ldl" ;; esac + +# WASM hack +fi + AC_MSG_RESULT(ok) if test x$need_link_unlink = xyes; then @@ -377,6 +385,10 @@ if test x$target_win32 = xyes; then AC_DEFINE(TARGET_WIN32, 1, [Target Platform is Win32]) fi +if test x$host_darwin = xyes; then + AC_DEFINE(HOST_DARWIN, 1, [Host Platform is Darwin]) +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]) @@ -384,16 +396,16 @@ 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) -AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux) -AM_CONDITIONAL(PLATFORM_DARWIN, test x$host_darwin = xyes) -AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes) -AM_CONDITIONAL(PLATFORM_ANDROID, test x$platform_android = xyes) +AM_CONDITIONAL(HOST_LINUX, echo x$target_os | grep -q linux) +AM_CONDITIONAL(HOST_DARWIN, test x$host_darwin = xyes) +AM_CONDITIONAL(HOST_SIGPOSIX, test x$use_sigposix = xyes) +AM_CONDITIONAL(HOST_ANDROID, test x$platform_android = xyes) -if test -z "$PLATFORM_DARWIN_TRUE"; then : +if test -z "$HOST_DARWIN_TRUE"; then : PLATFORM_AOT_SUFFIX=.dylib fi -if test -z "$PLATFORM_LINUX_TRUE"; then : +if test -z "$HOST_LINUX_TRUE"; then : PLATFORM_AOT_SUFFIX=.so fi @@ -543,7 +555,18 @@ AC_CHECK_FUNCS(_finite, , AC_MSG_CHECKING(for _finite in math.h) AC_CHECK_HEADERS(linux/magic.h) # not 64 bit clean in cross-compile -AC_CHECK_SIZEOF(void *, 4) +if test "x$enable_wasm" = "xyes"; then +AC_DEFINE(SIZEOF_VOID_P,4) +AC_DEFINE(SIZEOF_LONG,4) +ac_cv_sizeof_void_p="4" +ac_cv_sizeof_long="4" +else +AC_CHECK_SIZEOF(void *) +AC_CHECK_SIZEOF(long) +fi + +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(long long) AC_CACHE_CHECK([for clang], mono_cv_clang,[ @@ -580,7 +603,6 @@ if test x"$GCC" = xyes; then 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 @@ -700,6 +722,9 @@ AC_ARG_WITH(crosspkgdir, [ --with-crosspkgdir=/path/to/pkg-config/dir Chan fi ) +AC_CHECK_PROG(ninja, ninja, yes, no) +AM_CONDITIONAL(NINJA, test x$ninja != xno) + AC_ARG_ENABLE(werror, [ --enable-werror Pass -Werror to the C compiler], werror_flag=$enableval, werror_flag=no) if test x$werror_flag = xyes; then WERROR_CFLAGS="-Werror" @@ -707,11 +732,8 @@ 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) - -GLIB_CFLAGS='-I$(top_srcdir)/eglib/src -I$(top_builddir)/eglib/src' -GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm' +GLIB_CFLAGS='-I$(top_srcdir)/mono/eglib -I$(top_builddir)/mono/eglib' +GLIB_LIBS='$(top_builddir)/mono/eglib/libeglib.la -lm' AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) @@ -743,10 +765,6 @@ fi AM_CONDITIONAL(DISABLE_LIBRARIES, test x$enable_libraries = xno) -case $host in -*nacl* ) with_shared_mono=yes;; -esac - if test "x$host_win32" = "xyes"; then # Boehm GC requires the runtime to be in its own dll with_static_mono=no @@ -804,7 +822,10 @@ if test $csc_compiler = default; then if test $endian = big; then csc_compiler=mcs elif test $endian = little; then - csc_compiler=roslyn + case "$host" in + powerpc*) csc_compiler=mcs ;; + *) csc_compiler=roslyn ;; + esac else csc_compiler=mcs fi @@ -825,10 +846,11 @@ AC_ARG_WITH(xammac, [ --with-xammac=yes,no If you w AC_ARG_WITH(testing_aot_hybrid, [ --with-testing_aot_hybrid=yes,no If you want to build the testing_aot_hybrid assemblies (defaults to no)], [], [with_testing_aot_hybrid=default]) AC_ARG_WITH(testing_aot_full, [ --with-testing_aot_full=yes,no If you want to build the testing_aot_full assemblies (defaults to no)], [], [with_testing_aot_full=default]) AC_ARG_WITH(winaot, [ --with-winaot=yes,no If you want to build the Windows friendly AOT assemblies (defaults to no)], [], [with_winaot=default]) -AC_ARG_WITH(orbis, [ --with-orbis=yes,no If you want to build the Orbis assemblies (defaults to no)], [], [with_orbis=default]) +AC_ARG_WITH(orbis, [ --with-orbis=yes,no If you want to build the Orbis assemblies (defaults to no)], [], [with_orbis=default]) +AC_ARG_WITH(unreal, [ --with-unreal=yes,no If you want to build the Unreal assemblies (defaults to no)], [], [with_unreal=default]) -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]) +AC_ARG_WITH(runtime_preset, [ --with-runtime_preset=net_4_x,all,aot,hybridaot,fullaot,bitcode,unreal Which default profile to build (defaults to net_4_x)], [], [with_runtime_preset=net_4_x]) dnl dnl Profile defaults @@ -846,6 +868,7 @@ with_testing_aot_hybrid_default=no with_testing_aot_full_default=no with_winaot_default=no with_orbis_default=no +with_unreal_default=no with_bitcode_default=no with_cooperative_gc_default=no @@ -865,6 +888,7 @@ elif test x$with_runtime_preset = xall; then with_xammac_default=yes with_winaot_default=yes with_orbis_default=yes + with_unreal_default=yes elif test x$with_runtime_preset = xfullaot; then DISABLE_MCS_DOCS_default=yes with_testing_aot_full_default=yes @@ -935,6 +959,17 @@ elif test x$with_runtime_preset = xorbis; then AOT_BUILD_FLAGS="--runtime=mobile --aot=full,$INVARIANT_AOT_OPTIONS" AOT_RUN_FLAGS="--runtime=mobile --full-aot" +elif test x$with_runtime_preset = xunreal; then + DISABLE_MCS_DOCS_default=yes + with_unreal_default=yes + TEST_PROFILE=unreal + + mono_feature_disable_com='yes' + mono_feature_disable_remoting='yes' + mono_feature_disable_appdomains='no' + + AOT_BUILD_FLAGS="--runtime=mobile --aot=hybrid,$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="--runtime=mobile --hybrid-aot" else with_profile4_x_default=yes fi @@ -981,6 +1016,9 @@ fi if test "x$with_orbis" = "xdefault"; then with_orbis=$with_orbis_default fi +if test "x$with_unreal" = "xdefault"; then + with_unreal=$with_unreal_default +fi AM_CONDITIONAL(INSTALL_4_x, [test "x$with_profile4_x" = "xyes"]) @@ -994,8 +1032,9 @@ AM_CONDITIONAL(INSTALL_TESTING_AOT_HYBRID, [test "x$with_testing_aot_hybrid" != AM_CONDITIONAL(INSTALL_TESTING_AOT_FULL, [test "x$with_testing_aot_full" != "xno"]) AM_CONDITIONAL(INSTALL_WINAOT, [test "x$with_winaot" != "xno"]) AM_CONDITIONAL(INSTALL_ORBIS, [test "x$with_orbis" != "xno"]) +AM_CONDITIONAL(INSTALL_UNREAL, [test "x$with_unreal" != "xno"]) AM_CONDITIONAL(FULL_AOT_TESTS, [test "x$TEST_PROFILE" = "xtesting_aot_full"] || [test "x$TEST_PROFILE" = "xwinaot"] || [test "x$TEST_PROFILE" = "xorbis"]) -AM_CONDITIONAL(HYBRID_AOT_TESTS, [test "x$TEST_PROFILE" = "xtesting_aot_hybrid"]) +AM_CONDITIONAL(HYBRID_AOT_TESTS, [test "x$TEST_PROFILE" = "xtesting_aot_hybrid"] || [test "x$TEST_PROFILE" = "xunreal"]) default_profile=net_4_x if test -z "$INSTALL_MONODROID_TRUE"; then : @@ -1019,6 +1058,9 @@ fi if test -z "$INSTALL_ORBIS_TRUE"; then : default_profile=orbis fi +if test -z "$INSTALL_UNREAL_TRUE"; then : + default_profile=unreal +fi if test -z "$INSTALL_4_x_TRUE"; then : default_profile=net_4_x fi @@ -1275,7 +1317,7 @@ dnl dnl Boehm GC configuration dnl -AC_ARG_WITH(libgc, [ --with-libgc=included,none Controls the Boehm GC config, default=included],[libgc=$with_gc],[libgc=included]) +AC_ARG_WITH(libgc, [ --with-libgc=included,none Controls the Boehm GC config, default=included],[libgc=$with_libgc],[libgc=included]) 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) @@ -1333,7 +1375,7 @@ if test "x$support_boehm" = "xyes"; then gc_msg="none" ;; *) - AC_MSG_ERROR([Invalid argument to --with-libgc.]) + AC_MSG_ERROR([Invalid argument $libgc to --with-libgc.]) ;; esac @@ -1349,6 +1391,7 @@ if test "x$support_boehm" = "xyes"; then AC_SUBST(BOEHM_DEFINES) fi +AM_CONDITIONAL(SUPPORT_NULLGC, test "x$libgc" = "xnone") dnl dnl End of Boehm GC Configuration @@ -1371,8 +1414,6 @@ AC_TRY_COMPILE([ AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays]) ]) -AC_CHECK_HEADERS(nacl/nacl_dyncode.h) - dnl *********************************** dnl *** Checks for signals dnl *********************************** @@ -1472,6 +1513,8 @@ if test x$host_win32 = xno; then AC_CHECK_FUNCS(getpwuid_r) fi + AC_FUNC_STRERROR_R() + dnl **************************************************************** dnl *** Check for sched_setaffinity from glibc versions before *** dnl *** 2.3.4. The older versions of the function only take 2 *** @@ -1949,7 +1992,7 @@ if test x$host_win32 = xno; then 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 pthread_setname_np) + AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np pthread_cond_timedwait_relative_np) AC_CHECK_FUNCS(pthread_kill) AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE) AC_TRY_COMPILE([ #include ], [ @@ -2220,13 +2263,11 @@ if test x$host_win32 = xno; then dnl ********************************** dnl *** epoll *** dnl ********************************** - 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 + 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 havekqueue=no @@ -2859,40 +2900,6 @@ fi AM_CONDITIONAL(ENABLE_DTRACE, [test x$enable_dtrace = xyes]) AM_CONDITIONAL(DTRACE_G_REQUIRED, [test x$dtrace_g = xyes]) -dnl ************** -dnl *** NaCl *** -dnl ************** - -AC_ARG_ENABLE(nacl_codegen, [ --enable-nacl-codegen Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no) -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 - AC_DEFINE(TARGET_NACL, 1, [...]) - AC_DEFINE(__native_client_codegen__, 1, [...]) -fi -if test "x$enable_nacl_gc" = "xyes"; then - if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then - INSTRUMENT_CFLAG="-finstrument-for-thread-suspension" - else - # Not yet implemented - INSTRUMENT_CFLAG="" - fi - CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__" -fi -AC_SUBST(MONO_NACL_ALIGN_MASK_OFF) - dnl ************************** dnl *** AOT cross offsets *** dnl ************************** @@ -3065,6 +3072,19 @@ jit_wanted=true boehm_supported=true BTLS_SUPPORTED=no BTLS_PLATFORM= + +if test "x$enable_wasm" = "xyes"; then +TARGET=WASM +HOST=WASM +arch_target=wasm +AC_DEFINE(TARGET_WASM, 1, [Target wasm]) +AC_DEFINE(HOST_WASM, 1, [Host wasm]) +BTLS_SUPPORTED=no +with_tls=pthread +target_mach=no + +else + case "$host" in mips*) TARGET=MIPS; @@ -3155,21 +3175,6 @@ case "$host" in mingw*) ;; esac - case "$host" in - x86_64-*-nacl*) - AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) - sizeof_register=8 - ;; - esac - ;; - ia64-*-*) - TARGET=IA64 - arch_target=ia64 - ACCESS_UNALIGNED="no" - LIBC="libc.so.6.1" - INTL="libc.so.6.1" - AC_CHECK_LIB(unwind, _U_dyn_register, [], [AC_MSG_ERROR(library libunwind not found)]) - libmono_ldflags="-lunwind" ;; sparc*-*-*) if test "x$ac_cv_sizeof_void_p" = "x8"; then @@ -3235,6 +3240,14 @@ case "$host" in ACCESS_UNALIGNED="no" AOT_SUPPORTED="yes" CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=arm + AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no]) + case "$target" in + arm*-linux*-gnueabi) + BTLS_PLATFORM=armsoft + ;; + esac ;; arm*-netbsd*-eabi*) TARGET=ARM; @@ -3242,19 +3255,15 @@ case "$host" in ACCESS_UNALIGNED="no" CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" ;; -# TODO: make proper support for NaCl host. -# arm*-*nacl) -# TARGET=ARM; -# arch_target=arm; -# ACCESS_UNALIGNED="no" -# AOT_SUPPORTED="no" -# ;; aarch64-*) # https://lkml.org/lkml/2012/7/15/133 TARGET=ARM64 arch_target=arm64 boehm_supported=false AOT_SUPPORTED="yes" + BTLS_SUPPORTED=yes + BTLS_PLATFORM=aarch64 + AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no]) ;; s390x-*-linux*) TARGET=S390X; @@ -3306,38 +3315,6 @@ if test "x$host" != "x$target"; then sizeof_register=8 target_byte_order=G_BIG_ENDIAN ;; - x86_64-*-nacl) - TARGET=AMD64 - arch_target=amd64 - AC_DEFINE(TARGET_AMD64, 1, [...]) - AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) - sizeof_register=8 - ;; -# TODO: make proper support for NaCl target. -# arm*-*nacl) -# TARGET=ARM -# arch_target=arm -# AC_DEFINE(TARGET_ARM, 1, [...]) -# ACCESS_UNALIGNED="no" -# sizeof_register=4 -# CPPFLAGS="$CPPFLAGS \ -# -D__ARM_EABI__ \ -# -D__arm__ \ -# -D__portable_native_client__ \ -# -Dtimezone=_timezone \ -# -DDISABLE_SOCKETS \ -# -DDISABLE_ATTACH \ -# -DUSE_NEWLIB" - # 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*-linux-*) TARGET=ARM; arch_target=arm; @@ -3468,9 +3445,6 @@ S390X) MIPS) AC_DEFINE(TARGET_MIPS, 1, [...]) ;; -IA64) - AC_DEFINE(TARGET_IA64, 1, [...]) - ;; SPARC) AC_DEFINE(TARGET_SPARC, 1, [...]) ;; @@ -3505,9 +3479,6 @@ S390X) MIPS) AC_DEFINE(HOST_MIPS, 1, [...]) ;; -IA64) - AC_DEFINE(HOST_IA64, 1, [...]) - ;; SPARC) AC_DEFINE(HOST_SPARC, 1, [...]) ;; @@ -3516,6 +3487,8 @@ SPARC64) ;; esac +#WASM hack +fi dnl ************* @@ -3595,6 +3568,7 @@ if test "x$target_mach" = "xyes"; then CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS" CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DTARGET_IOS" BTLS_SUPPORTED=no + target_ios=yes ]) fi AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms]) @@ -3610,6 +3584,8 @@ else AC_DEFINE(SIZEOF_REGISTER,SIZEOF_VOID_P,[size of machine integer registers]) fi +AC_SUBST(SIZEOF_VOID_P,[$ac_cv_sizeof_void_p]) + if test "x$target_byte_order" = "xG_BIG_ENDIAN"; then AC_DEFINE(TARGET_BYTE_ORDER,G_BIG_ENDIAN,[byte order of target]) elif test "x$target_byte_order" = "xG_LITTLE_ENDIAN"; then @@ -3634,7 +3610,6 @@ fi AM_CONDITIONAL(ENABLE_INTERPRETER, [test x$enable_interpreter = xyes]) - dnl dnl Simple Generational checks (sgen) dnl @@ -3718,9 +3693,178 @@ case "$host" in ;; esac - AC_SUBST(libsuffix) +###################################### +# EGLIB CHECKS +###################################### + +GNUC_PRETTY= +GNUC_UNUSED= +BREAKPOINT="G_STMT_START { raise (SIGTRAP); } G_STMT_END" +if test x$GCC = xyes; then + GNUC_UNUSED='__attribute__((__unused__))' + GNUC_NORETURN='__attribute__((__noreturn__))' + case $host_cpu in + i*86|x86_64) BREAKPOINT="G_STMT_START { __asm__ (\"int \$03\"); } G_STMT_END" ;; + esac +fi +AC_SUBST(GNUC_PRETTY) +AC_SUBST(GNUC_UNUSED) +AC_SUBST(GNUC_NORETURN) +AC_SUBST(BREAKPOINT) + +AC_C_BIGENDIAN([ORDER=G_BIG_ENDIAN],[ORDER=G_LITTLE_ENDIAN]) + +case $host in +*-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*) + PATHSEP='\\' + SEARCHSEP=';' + OS="WIN32" + PIDTYPE='void *' + ;; +*) + PATHSEP='/' + SEARCHSEP=':' + OS="UNIX" + PIDTYPE='int' + ;; +esac + +case $host in + *-*-solaris*) + CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS" + ;; +esac + +case $target in +arm*-darwin*|aarch64*-*) + CFLAGS="$CFLAGS -U_FORTIFY_SOURCE" + ;; +i*86-*-darwin*) + ORDER=G_LITTLE_ENDIAN + ;; +*-*-haiku*) + LDFLAGS="$LDFLAGS -ltextencoding" + ;; +*-*-openbsd*) + CFLAGS="$CFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + ;; +esac + +AC_SUBST(ORDER) +AC_SUBST(CFLAGS) +AC_SUBST(PATHSEP) +AC_SUBST(SEARCHSEP) +AC_SUBST(OS) +AC_SUBST(PIDTYPE) + +# 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_CHECK_FUNCS(strlcpy stpcpy strtok_r rewinddir vasprintf strerror_r) +AC_CHECK_FUNCS(getrlimit) +AC_CHECK_FUNCS(fork execv execve) + +AC_ARG_WITH([overridable-allocators], [ --with-overridable-allocators allow g_*alloc/g_free to call custom allocators set via g_mem_set_vtable]) + +if test x$with_overridable_allocators = xyes; then + AC_DEFINE(ENABLE_OVERRIDABLE_ALLOCATORS,1,[Overridable allocator support enabled]) + AC_MSG_NOTICE([Overridable allocator support enabled]) +else + AC_MSG_NOTICE([Overridable allocator support disabled]) +fi + +# +# Mono currently supports 10.6, but strndup is not available prior to 10.7; avoiding +# the detection of strndup on OS X so Mono built on 10.7+ still runs on 10.6. This can be +# removed once support for 10.6 is dropped. +# +# iOS detection of strndup and getpwuid_r is faulty for some reason so let's simply avoid it +# +if test x$target_osx = xyes; then +AC_CHECK_FUNCS(getpwuid_r) +elif test x$target_ios = xno; then +AC_CHECK_FUNCS(strndup getpwuid_r) +fi + +AM_CONDITIONAL(NEED_VASPRINTF, test x$ac_cv_func_vasprintf = xno || test x$with_overridable_allocators = xyes) +AM_ICONV() +AC_SEARCH_LIBS(sqrtf, m) + +# nanosleep may not be part of libc, also search it in other libraries +AC_SEARCH_LIBS(nanosleep, rt) + +AC_SEARCH_LIBS(dlopen, dl) +old_ldflags="${LDFLAGS}" +LDFLAGS="${LDFLAGS} -Wl,-export-dynamic" +AC_TRY_LINK(, [int i;], found_export_dynamic=yes, found_export_dynamic=no) +if test $found_export_dynamic = no; then + LDFLAGS="${old_ldflags}" +fi + +AC_MSG_CHECKING(for varargs macros) +AC_TRY_COMPILE([],[ +int foo (int i, int j); +#define bar(...) foo (1, __VA_ARGS__) +void main () { + bar (2); +} +],have_iso_varargs=yes,have_iso_varargs=no) +AC_MSG_RESULT($have_iso_varargs) +G_HAVE_ISO_VARARGS=0 +if test "x$have_iso_varargs" = "xyes"; then + G_HAVE_ISO_VARARGS=1 +fi +AC_SUBST(G_HAVE_ISO_VARARGS) + +AC_CHECK_HEADERS(getopt.h sys/select.h sys/time.h sys/wait.h pwd.h iconv.h localcharset.h sys/types.h sys/resource.h) +AC_CHECK_LIB([iconv], [locale_charset],[],[AC_CHECK_LIB([charset], [locale_charset],[LIBS+="-liconv -lcharset"])]) +AC_CHECK_HEADER(alloca.h, [HAVE_ALLOCA_H=1], [HAVE_ALLOCA_H=0]) +AC_SUBST(HAVE_ALLOCA_H) + +if test $ac_cv_sizeof_void_p = $ac_cv_sizeof_int; then + GPOINTER_TO_INT="((gint) (ptr))" + GPOINTER_TO_UINT="((guint) (ptr))" + GINT_TO_POINTER="((gpointer) (v))" + GUINT_TO_POINTER="((gpointer) (v))" + GSIZE="int" + GSIZE_FORMAT='"u"' +elif test $ac_cv_sizeof_void_p = $ac_cv_sizeof_long; then + GPOINTER_TO_INT="((gint)(long) (ptr))" + GPOINTER_TO_UINT="((guint)(long) (ptr))" + GINT_TO_POINTER="((gpointer)(glong) (v))" + GUINT_TO_POINTER="((gpointer)(gulong) (v))" + GSIZE="long" + GSIZE_FORMAT='"lu"' +elif test $ac_cv_sizeof_void_p = $ac_cv_sizeof_long_long; then + GPOINTER_TO_INT="((gint)(long long) (ptr))" + GPOINTER_TO_UINT="((guint)(unsigned long long) (ptr))" + GINT_TO_POINTER="((gpointer)(long long) (v))" + GUINT_TO_POINTER="((gpointer)(unsigned long long) (v))" + GSIZE="long long" + GSIZE_FORMAT='"I64u"' +else + AC_MSG_ERROR([unsupported pointer size]) +fi + +AC_SUBST(GPOINTER_TO_INT) +AC_SUBST(GPOINTER_TO_UINT) +AC_SUBST(GINT_TO_POINTER) +AC_SUBST(GUINT_TO_POINTER) +AC_SUBST(GSIZE) +AC_SUBST(GSIZE_FORMAT) +AC_SUBST(G_GUINT64_FORMAT) +AC_SUBST(G_GINT64_FORMAT) +AC_SUBST(G_GUINT32_FORMAT) +AC_SUBST(G_GINT32_FORMAT) + +# +# END OF EGLIB CHECKS +# + AC_ARG_WITH([libgdiplus], [ --with-libgdiplus=installed|sibling| Override the libgdiplus used for System.Drawing tests (defaults to installed)], [], [with_libgdiplus=installed]) @@ -4095,8 +4239,6 @@ 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 @@ -4125,6 +4267,16 @@ if test "x$enable_btls" = "xyes"; then x86_64) btls_arch=x86_64 ;; + arm) + btls_arch=arm + ;; + armsoft) + btls_arch=arm + btls_cflags="-DOPENSSL_NO_ASM=1" + ;; + aarch64) + btls_arch=aarch64 + ;; android-armv5) BTLS_CMAKE_ARGS="-DANDROID_ABI=\"armeabi\" -DANDROID_NATIVE_API_LEVEL=12" ;; @@ -4192,17 +4344,19 @@ 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(IA64, test x$TARGET = xIA64) AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS) AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC) AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64) AM_CONDITIONAL(ARM, test x$TARGET = xARM) AM_CONDITIONAL(ARM64, test x$TARGET = xARM64) AM_CONDITIONAL(S390X, test x$TARGET = xS390X) +AM_CONDITIONAL(WASM, test x$TARGET = xWASM) 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(HOST_ARM64, test x$HOST = xARM64) +AM_CONDITIONAL(HOST_WASM, test x$HOST = xWASM) + AM_CONDITIONAL(CROSS_COMPILE, test "x$host" != "x$target") AC_SUBST(LIBC) @@ -4228,7 +4382,7 @@ AC_SUBST(mono_build_root) mono_runtime=mono/mini/mono AC_SUBST(mono_runtime) -CSC_LOCATION=`cd $srcdir && pwd`/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.1.0/tools/csc.exe +CSC_LOCATION=`cd $srcdir && pwd`/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.3.2/tools/csc.exe if test $csc_compiler = mcs; then CSC=$mcs_topdir/class/lib/build/mcs.exe @@ -4435,7 +4589,6 @@ mono/arch/sparc/Makefile mono/arch/s390x/Makefile mono/arch/arm/Makefile mono/arch/arm64/Makefile -mono/arch/ia64/Makefile mono/arch/mips/Makefile mono/sgen/Makefile mono/tests/Makefile @@ -4446,6 +4599,8 @@ mono/unit-tests/Makefile mono/benchmark/Makefile mono/mini/Makefile mono/profiler/Makefile +mono/eglib/Makefile +mono/eglib/eglib-config.h m4/Makefile ikvm-native/Makefile scripts/Makefile @@ -4555,7 +4710,19 @@ fi echo "MONO_CORLIB_VERSION = $MONO_CORLIB_VERSION" >> $mcs_topdir/build/config.make if test x$host_darwin = xyes; then - echo "PLATFORM = darwin" >> $mcs_topdir/build/config.make + echo "BUILD_PLATFORM = darwin" >> $mcs_topdir/build/config.make + elif test x$host_win32 = xyes; then + echo "BUILD_PLATFORM = win32" >> $mcs_topdir/build/config.make + else + echo "BUILD_PLATFORM = linux" >> $mcs_topdir/build/config.make + fi + + if test x$host_darwin = xyes; then + echo "HOST_PLATFORM ?= darwin" >> $mcs_topdir/build/config.make + elif test x$host_win32 = xyes; then + echo "HOST_PLATFORM ?= win32" >> $mcs_topdir/build/config.make + else + echo "HOST_PLATFORM ?= linux" >> $mcs_topdir/build/config.make fi if test "x$PLATFORM_AOT_SUFFIX" != "x"; then @@ -4597,9 +4764,6 @@ 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 @@ -4642,6 +4806,7 @@ echo " Xamarin.Mac: $with_xammac Windows AOT: $with_winaot Orbis: $with_orbis + Unreal: $with_unreal Test profiles: AOT Full ($with_testing_aot_full), AOT Hybrid ($with_testing_aot_hybrid) JNI support: $jdk_headers_found libgdiplus: $libgdiplus_msg