X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.ac;h=6566b6e302edd6c1ca46241207a5845a6bd33134;hb=90b11833ff2f7b1d588763f6a22ebc92937ec735;hp=6bbe325553459692b1ccf1b55dd39d747bb7d5ce;hpb=088ea9db6e032beb96f33584ab24a9f64681d148;p=mono.git diff --git a/configure.ac b/configure.ac index 6bbe3255534..6566b6e302e 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ #AC_PREREQ([2.62]) # when bumping version number below, keep it in sync with man/mono.1 too -AC_INIT(mono, [4.9.0], +AC_INIT(mono, [4.9.4], [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono]) AC_CONFIG_SRCDIR([README.md]) @@ -29,6 +29,24 @@ AC_PROG_LN_S m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +MONO_VERSION_MAJOR=`echo $VERSION | cut -d . -f 1` +MONO_VERSION_MINOR=`echo $VERSION | cut -d . -f 2` +MONO_VERSION_BUILD=`echo $VERSION | cut -d . -f 3` + +# This is the version number of the corlib-runtime interface. When +# making changes to this interface (by changing the layout +# of classes the runtime knows about, changing icall signature or +# semantics etc), increment this variable. +# +# This can be reset to 0 when Mono's version number is bumped +# 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=0 +MONO_CORLIB_VERSION=`printf "1%02d%02d%02d%03d" $MONO_VERSION_MAJOR $MONO_VERSION_MINOR $MONO_VERSION_BUILD $MONO_CORLIB_COUNTER` + +AC_DEFINE_UNQUOTED(MONO_CORLIB_VERSION,$MONO_CORLIB_VERSION,[Version of the corlib-runtime interface]) +AC_SUBST(MONO_CORLIB_VERSION) + case $host_os in *cygwin* ) echo "Run configure using ./configure --host=i686-pc-mingw32" @@ -334,9 +352,13 @@ case "$host" in CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_THREAD_SAFE" libmono_cflags="-D_REENTRANT -D_THREAD_SAFE" libdl= - LIBS="$LIBS -lnetwork" + LIBS="$LIBS -lnetwork -ltextencoding" need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID) + dnl Haiku does not support static TLS with __thread + with_tls=pthread + dnl Boehm is too much work to backport Haiku support for + support_boehm=no libgc_threads=pthreads use_sigposix=yes ;; @@ -379,6 +401,10 @@ if test -z "$PLATFORM_LINUX_TRUE"; then : PLATFORM_AOT_SUFFIX=.so fi +if test -z "$HOST_WIN32_TRUE"; then : +PLATFORM_AOT_SUFFIX=.dll +fi + AC_SUBST(PLATFORM_AOT_SUFFIX) ## PLATFORM_AOT_SUFFIX not so simple for windows :-) @@ -802,7 +828,9 @@ AC_ARG_WITH(bitcode, [ --with-bitcode=yes,no If bitco 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(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(xbox, [ --with-xbox=yes,no If you want to build the Xbox assemblies (defaults to no)], [], [with_xbox=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(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]) @@ -820,7 +848,8 @@ with_monotouch_tv_default=no with_xammac_default=no with_testing_aot_hybrid_default=no with_testing_aot_full_default=no -with_xbox_default=no +with_winaot_default=no +with_orbis_default=no with_bitcode_default=no with_cooperative_gc_default=no @@ -838,7 +867,8 @@ elif test x$with_runtime_preset = xall; then with_monotouch_watch_default=yes with_monotouch_tv_default=yes with_xammac_default=yes - with_xbox_default=yes + with_winaot_default=yes + with_orbis_default=yes elif test x$with_runtime_preset = xfullaot; then DISABLE_MCS_DOCS_default=yes with_testing_aot_full_default=yes @@ -850,8 +880,9 @@ elif test x$with_runtime_preset = xfullaot; then mono_feature_disable_reflection_emit='yes' mono_feature_disable_appdomains='yes' - AOT_BUILD_FLAGS="-O=gsharedvt --aot=full,$INVARIANT_AOT_OPTIONS" - AOT_RUN_FLAGS="--full-aot" + AOT_BUILD_FLAGS="--runtime=mobile -O=gsharedvt --aot=full,$INVARIANT_AOT_OPTIONS" + + AOT_RUN_FLAGS="--runtime=mobile --full-aot" elif test x$with_runtime_preset = xbitcode; then DISABLE_MCS_DOCS_default=yes with_testing_aot_full_default=yes @@ -866,19 +897,15 @@ elif test x$with_runtime_preset = xbitcode; then mono_feature_disable_reflection_emit='yes' mono_feature_disable_appdomains='yes' - AOT_BUILD_FLAGS="--aot=llvmonly,$INVARIANT_AOT_OPTIONS" - AOT_RUN_FLAGS="--llvmonly" + AOT_BUILD_FLAGS="--runtime=mobile --aot=llvmonly,$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="--runtime=mobile --llvmonly" elif test x$with_runtime_preset = xhybridaot; then DISABLE_MCS_DOCS_default=yes with_testing_aot_hybrid_default=yes TEST_PROFILE=testing_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" + AOT_BUILD_FLAGS="--runtime=mobile --aot=hybrid,$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="--runtime=mobile --hybrid-aot" elif test x$with_runtime_preset = xaot; then with_profile4_x_default=yes @@ -886,6 +913,32 @@ elif test x$with_runtime_preset = xaot; then AOT_RUN_FLAGS="" DISABLE_MCS_DOCS_default=yes +elif test x$with_runtime_preset = xwinaot; then + DISABLE_MCS_DOCS_default=yes + with_winaot_default=yes + TEST_PROFILE=winaot + + mono_feature_disable_com='yes' + mono_feature_disable_remoting='yes' + mono_feature_disable_reflection_emit_save='yes' + mono_feature_disable_reflection_emit='yes' + mono_feature_disable_appdomains='yes' + + AOT_BUILD_FLAGS="--runtime=mobile --aot=full,$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="--runtime=mobile --full-aot" +elif test x$with_runtime_preset = xorbis; then + DISABLE_MCS_DOCS_default=yes + with_orbis_default=yes + TEST_PROFILE=orbis + + mono_feature_disable_com='yes' + mono_feature_disable_remoting='yes' + mono_feature_disable_reflection_emit_save='yes' + mono_feature_disable_reflection_emit='yes' + mono_feature_disable_appdomains='yes' + + AOT_BUILD_FLAGS="--runtime=mobile --aot=full,$INVARIANT_AOT_OPTIONS" + AOT_RUN_FLAGS="--runtime=mobile --full-aot" else with_profile4_x_default=yes fi @@ -926,8 +979,11 @@ fi if test "x$with_testing_aot_full" = "xdefault"; then with_testing_aot_full=$with_testing_aot_full_default fi -if test "x$with_xbox" = "xdefault"; then - with_xbox=$with_xbox_default +if test "x$with_winaot" = "xdefault"; then + with_winaot=$with_winaot_default +fi +if test "x$with_orbis" = "xdefault"; then + with_orbis=$with_orbis_default fi @@ -940,10 +996,10 @@ AM_CONDITIONAL(BITCODE, test "x$with_bitcode" = "xyes") AM_CONDITIONAL(INSTALL_XAMMAC, [test "x$with_xammac" != "xno"]) AM_CONDITIONAL(INSTALL_TESTING_AOT_HYBRID, [test "x$with_testing_aot_hybrid" != "xno"]) AM_CONDITIONAL(INSTALL_TESTING_AOT_FULL, [test "x$with_testing_aot_full" != "xno"]) -AM_CONDITIONAL(INSTALL_XBOX, [test "x$with_xbox" != "xno"]) - -AC_SUBST(INSTALL_TESTING_AOT_HYBRID) -AC_SUBST(INSTALL_TESTING_AOT_FULL) +AM_CONDITIONAL(INSTALL_WINAOT, [test "x$with_winaot" != "xno"]) +AM_CONDITIONAL(INSTALL_ORBIS, [test "x$with_orbis" != "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"]) default_profile=net_4_x if test -z "$INSTALL_MONODROID_TRUE"; then : @@ -961,6 +1017,12 @@ fi if test -z "$INSTALL_TESTING_AOT_FULL_TRUE"; then : default_profile=testing_aot_full fi +if test -z "$INSTALL_WINAOT_TRUE"; then : + default_profile=winaot +fi +if test -z "$INSTALL_ORBIS_TRUE"; then : + default_profile=orbis +fi if test -z "$INSTALL_4_x_TRUE"; then : default_profile=net_4_x fi @@ -992,7 +1054,7 @@ fi AC_ARG_ENABLE(minimal, [ --enable-minimal=LIST drop support for LIST subsystems. 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.], + security, lldb, mdb, 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'" @@ -1137,6 +1199,16 @@ if test "x$mono_feature_disable_security" = "xyes"; then AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)]) fi +if test "x$mono_feature_disable_lldb" = "xyes"; then + AC_DEFINE(DISABLE_LLDB, 1, [Disable support code for the LLDB plugin.]) + AC_MSG_NOTICE([Disabled LLDB plugin support code.]) +fi + +if test "x$mono_feature_disable_mdb" = "xyes"; then + AC_DEFINE(DISABLE_MDB, 1, [Disable support for .mdb symbol files.]) + AC_MSG_NOTICE([Disabled support for .mdb symbol files.]) +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.]) @@ -1378,8 +1450,6 @@ if test x$host_win32 = xno; then AC_CHECK_FUNCS(getgrgid_r) AC_CHECK_FUNCS(getgrnam_r) - AC_CHECK_FUNCS(getpwnam_r) - AC_CHECK_FUNCS(getpwuid_r) AC_CHECK_FUNCS(getresuid) AC_CHECK_FUNCS(setresuid) AC_CHECK_FUNCS(kqueue) @@ -1400,6 +1470,11 @@ if test x$host_win32 = xno; then AC_CHECK_FUNCS(sched_setaffinity) AC_CHECK_FUNCS(sched_getcpu) + if test x$platform_android != xyes; then + AC_CHECK_FUNCS(getpwnam_r) + AC_CHECK_FUNCS(getpwuid_r) + fi + dnl **************************************************************** dnl *** Check for sched_setaffinity from glibc versions before *** dnl *** 2.3.4. The older versions of the function only take 2 *** @@ -1860,6 +1935,10 @@ if test x$host_win32 = xno; then # and libpthread does not exist # case "${host}" in + *-*-*haiku*) + dnl Haiku has pthread in libroot (libc equiv) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS") + ;; *-*-*freebsd*) AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") ;; @@ -2269,6 +2348,10 @@ if test x$host_win32 = xno; then AC_MSG_RESULT(no) ]) + dnl ********************************** + dnl *** Checks for proclib *** + dnl ********************************** + AC_CHECK_HEADER(sys/errno.h, [AC_DEFINE(HAVE_SYS_ERRNO_H, 1, Define to 1 if you have the header file.)]) dnl ********************************** dnl *** Checks for MonoPosixHelper *** dnl ********************************** @@ -3037,6 +3120,7 @@ case "$host" in AOT_SUPPORTED="yes" BTLS_SUPPORTED=yes BTLS_PLATFORM=i386 + AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no]) ;; darwin*) AOT_SUPPORTED="yes" @@ -3059,6 +3143,7 @@ case "$host" in AOT_SUPPORTED="yes" BTLS_SUPPORTED=yes BTLS_PLATFORM=x86_64 + AC_CHECK_HEADER(stdalign.h,[],[BTLS_SUPPORTED=no]) ;; darwin*) AOT_SUPPORTED="yes" @@ -3258,7 +3343,6 @@ if test "x$host" != "x$target"; then TARGET=ARM; arch_target=arm; AC_DEFINE(TARGET_ARM, 1, [...]) - AC_DEFINE(TARGET_ANDROID, 1, [...]) ACCESS_UNALIGNED="no" CPPFLAGS="$CPPFLAGS -D__ARM_EABI__" # Can't use tls, since it depends on the runtime detection of tls offsets @@ -3271,6 +3355,11 @@ if test "x$host" != "x$target"; then CPPFLAGS="$CPPFLAGS" ;; armv5-*-linux-androideabi*) + AC_DEFINE(TARGET_ANDROID, 1, [...]) + CPPFLAGS="$CPPFLAGS" + ;; + *-linux-androideabi*) + AC_DEFINE(TARGET_ANDROID, 1, [...]) CPPFLAGS="$CPPFLAGS" ;; esac @@ -3290,23 +3379,33 @@ if test "x$host" != "x$target"; then TARGET=X86; arch_target=x86; AC_DEFINE(TARGET_X86, 1, [...]) - AC_DEFINE(TARGET_ANDROID, 1, [...]) CPPFLAGS="$CPPFLAGS" # Can't use tls, since it depends on the runtime detection of tls offsets # in mono-compiler.h with_tls=pthread target_mach=no + + case "$target" in + *-linux-android*) + AC_DEFINE(TARGET_ANDROID, 1, [...]) + ;; + esac ;; x86_64*-linux-*) TARGET=AMD64; arch_target=amd64; AC_DEFINE(TARGET_AMD64, 1, [...]) - AC_DEFINE(TARGET_ANDROID, 1, [...]) CPPFLAGS="$CPPFLAGS" # Can't use tls, since it depends on the runtime detection of tls offsets # in mono-compiler.h with_tls=pthread target_mach=no + + case "$target" in + *-linux-android*) + AC_DEFINE(TARGET_ANDROID, 1, [...]) + ;; + esac ;; x86_64-ps4-freebsd) TARGET=AMD64; @@ -3325,12 +3424,16 @@ if test "x$host" != "x$target"; then TARGET=ARM64; arch_target=arm64; AC_DEFINE(TARGET_ARM64, 1, [...]) - AC_DEFINE(TARGET_ANDROID, 1, [...]) CPPFLAGS="$CPPFLAGS" # Can't use tls, since it depends on the runtime detection of tls offsets # in mono-compiler.h with_tls=pthread target_mach=no + case "$target" in + *-linux-android*) + AC_DEFINE(TARGET_ANDROID, 1, [...]) + ;; + esac ;; aarch64-*) TARGET=ARM64 @@ -3487,6 +3590,7 @@ if test "x$target_mach" = "xyes"; then 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" + target_osx=yes ], [ AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS]) CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DTARGET_IOS" @@ -3497,6 +3601,8 @@ if test "x$target_mach" = "xyes"; then AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms]) fi +AM_CONDITIONAL(TARGET_OSX, test x$target_osx = xyes) + if test "x$sizeof_register" = "x4"; then AC_DEFINE(SIZEOF_REGISTER,4,[size of machine integer registers]) elif test "x$sizeof_register" = "x8"; then @@ -3521,6 +3627,15 @@ if test "x$have_deprecated" = "xyes"; then AC_DEFINE(HAVE_DEPRECATED, 1, [Support for the deprecated attribute]) fi +AC_ARG_ENABLE(interpreter, [ --enable-interpreter Enable Interpreter], enable_interpreter=$enableval, enable_interpreter=no) + +if test "x$enable_interpreter" = "xyes"; then + AC_DEFINE(ENABLE_INTERPRETER, 1, [Enable Interpreter]) +fi + +AM_CONDITIONAL(ENABLE_INTERPRETER, [test x$enable_interpreter = xyes]) + + dnl dnl Simple Generational checks (sgen) dnl @@ -3842,6 +3957,20 @@ if test ${ACCESS_UNALIGNED} = no; then CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS" fi +if test x$host_darwin = xyes; then + AC_MSG_CHECKING([for ranlib that supports -no_warning_for_no_symbols option]) + AS_IF( + [$RANLIB -no_warning_for_no_symbols 2>&1 | grep -q "unknown option"], + [AC_MSG_RESULT([no])], + [ + # avoid AR calling ranlib, libtool calls it anyway. suppress no symbols warning. + AR_FLAGS="Scru" + RANLIB="$RANLIB -no_warning_for_no_symbols" + AC_MSG_RESULT([yes]) + ] + ) +fi + case "x$libgc" in xincluded) # Pass CPPFLAGS to libgc configure @@ -4024,6 +4153,8 @@ if test "x$enable_btls" = "xyes"; then 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\"" + else + AC_MSG_ERROR([Need to pass the --with-btls-android-ndk argument when building with BTLS support on Android.]) fi fi @@ -4098,13 +4229,20 @@ 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 +CSC_LOCATION=`cd $srcdir && pwd`/external/roslyn-binaries/Microsoft.Net.Compilers/Microsoft.Net.Compilers.2.0.0/tools/csc.exe + +if test $csc_compiler = mcs; then + CSC=$mcs_topdir/class/lib/build/mcs.exe +else + CSC=$CSC_LOCATION +fi 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`"'" + CSC=`cygpath -m -a $CSC` + CSC_LOCATION=`cygpath -m -a $CSC_LOCATION` else mono_cfg_dir=`echo $mono_cfg_root | tr '/' '\\'`\\etc fi @@ -4305,9 +4443,9 @@ mono/tests/Makefile mono/tests/tests-config mono/tests/assemblyresolve/Makefile mono/tests/gc-descriptors/Makefile +mono/tests/testing_gac/Makefile mono/unit-tests/Makefile mono/benchmark/Makefile -mono/io-layer/Makefile mono/mini/Makefile mono/profiler/Makefile m4/Makefile @@ -4356,7 +4494,7 @@ po/Makefile ]) # Update all submodules recursively to ensure everything is checked out -$srcdir/scripts/update_submodules +$srcdir/scripts/update_submodules.sh if test x$host_win32 = xyes; then # Get rid of 'cyg' prefixes in library names @@ -4416,6 +4554,7 @@ fi }')] echo "MONO_VERSION = $myver" >> $mcs_topdir/build/config.make + 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 @@ -4447,7 +4586,7 @@ fi echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make fi - echo "CSC_LOCATION = $CSC" >> $srcdir/$mcsdir/build/config.make + echo "CSC_LOCATION = $CSC_LOCATION" >> $srcdir/$mcsdir/build/config.make if test $csc_compiler = mcs; then echo "MCS_MODE = 1" >> $srcdir/$mcsdir/build/config.make @@ -4494,6 +4633,7 @@ echo " BigArrays: $enable_big_arrays DTrace: $enable_dtrace LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm) + Interpreter: $enable_interpreter Libraries: .NET 4.x: $with_profile4_x @@ -4502,7 +4642,8 @@ echo " Xamarin.WatchOS: $with_monotouch_watch Xamarin.TVOS: $with_monotouch_tv Xamarin.Mac: $with_xammac - Xbox: $with_xbox + Windows AOT: $with_winaot + Orbis: $with_orbis Test profiles: AOT Full ($with_testing_aot_full), AOT Hybrid ($with_testing_aot_hybrid) JNI support: $jdk_headers_found libgdiplus: $libgdiplus_msg