X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=5a4b2e19cc8ce66f022e976942eabdb9fe9db188;hb=3f3ef7225cbabdae584723e5d77974d2e1c67d6c;hp=cbd3f1f74daf45a204c65d66bc9e0f34d32e12e3;hpb=0700e99074f53358e36ca887828c0e0bb3b3577f;p=mono.git diff --git a/configure.in b/configure.in index cbd3f1f74da..5a4b2e19cc8 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ # Process this file with autoconf to produce a configure script. #AC_PREREQ([2.62]) -AC_INIT(mono, [3.0.0], +AC_INIT(mono, [3.0.10], [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono]) AC_CONFIG_SRCDIR([README]) @@ -14,7 +14,7 @@ AC_CANONICAL_HOST m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])]) AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign]) -AM_CONFIG_HEADER([config.h]) +AC_CONFIG_HEADERS([config.h]) AM_MAINTAINER_MODE API_VER=2.0 @@ -22,6 +22,8 @@ AC_SUBST(API_VER) AC_PROG_LN_S +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + # In case of cygwin, override LN_S, irrespective of what it determines. # The build uses cygwin, but the actual runtime doesn't. case $host_os in @@ -87,6 +89,7 @@ esac host_win32=no target_win32=no platform_android=no +platform_darwin=no case "$host" in *-mingw*|*-*-cygwin*) AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32]) @@ -157,10 +160,10 @@ case "$host" in libmono_cflags="$PTHREAD_CFLAGS" fi if test "x$PTHREAD_LIBS" = "x"; then - LDFLAGS="$LDFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread -L/usr/local/lib" libmono_ldflags="-pthread" else - LDFLAGS="$LDFLAGS $PTHREAD_LIBS" + LDFLAGS="$LDFLAGS $PTHREAD_LIBS -L/usr/local/lib" libmono_ldflags="$PTHREAD_LIBS" fi CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD" @@ -168,12 +171,6 @@ case "$host" in AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer]) libdl= libgc_threads=pthreads - # This doesn't seem to work as of 7.0 on amd64 - with_sigaltstack=no -# TLS is only partially implemented on -CURRENT (compiler support -# but NOT library support) -# - with_tls=pthread use_sigposix=yes ;; *-*-*openbsd*) @@ -238,6 +235,11 @@ case "$host" in libdl="-ldl" libgc_threads=pthreads use_sigposix=yes + if test "x$cross_compiling" != "xno"; then + # to bypass the underscore linker check, not + # available during cross-compilation + mono_cv_uscore=no + fi ;; *-*-nacl*) host_win32=no @@ -293,8 +295,6 @@ case "$host" in 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" - LDFLAGS="$LDFLAGS -pthread" - libmono_ldflags="-pthread" need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID) AC_DEFINE(USE_MACH_SEMA, 1, [...]) @@ -311,7 +311,7 @@ case "$host" in case "$host" in dnl Snow Leopard and newer config.guess reports as this i*86-*-darwin*) - BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE -mmacosx-version-min=10.5" + BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE" CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_FLAGS" CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS" CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS" @@ -321,6 +321,9 @@ case "$host" in CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS" CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS" ;; + arm*-darwin*) + has_dtrace=no + ;; esac ;; *-*-haiku*) @@ -358,7 +361,6 @@ AC_PROG_CC AC_CHECK_TOOL(CXX, g++, g++) AC_PROG_CXX AM_PROG_AS -AM_PROG_CC_STDC AC_PROG_INSTALL AC_PROG_AWK dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4 @@ -488,7 +490,7 @@ AC_CHECK_SIZEOF(void *, 4) 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-enum' + 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' # The runtime code does not respect ANSI C strict aliasing rules CFLAGS="$CFLAGS -fno-strict-aliasing" @@ -531,14 +533,12 @@ CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g" AC_CACHE_CHECK([for clang], mono_cv_clang,[ - AC_TRY_RUN([ - int main () { - #ifdef __clang__ - return 0; - #else - return 1; - #endif - } + AC_TRY_COMPILE([], [ + #ifdef __clang__ + #else + #error "FAILED" + #endif + return 0; ], [mono_cv_clang=yes], [mono_cv_clang=no], @@ -558,6 +558,8 @@ AC_ARG_WITH(mcs-path, [ --with-mcs-path=/path/to/mcs Specify an alternate fi ) +AC_ARG_WITH(jumptables, [ --with-jumptables=yes,no enable/disable support for jumptables (ARM-only for now) (defaults to no)],[],[with_jumptables=no]) + # # A sanity check to catch cases where the package was unpacked # with an ancient tar program (Solaris) @@ -677,6 +679,8 @@ AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable suppor AC_ARG_WITH(static_mono, [ --with-static_mono=yes,no link mono statically to libmono (faster) (defaults to yes)],[],[with_static_mono=yes]) AC_ARG_WITH(shared_mono, [ --with-shared_mono=yes,no build a shared libmono library (defaults to yes)],[],[with_shared_mono=yes]) +# Same as --with-shared_mono=no +AC_ARG_ENABLE(libraries, [ --disable-libraries disable the build of libmono], enable_libraries=$enableval, enable_libraries=yes) if test "x$enable_static" = "xno"; then with_static_mono=no @@ -686,6 +690,12 @@ if test "x$enable_shared" = "xno"; then with_shared_mono=no fi +if test "x$enable_libraries" = "xno"; then + with_shared_mono=no +fi + +AM_CONDITIONAL(DISABLE_LIBRARIES, test x$enable_libraries = xno) + case $host in *nacl* ) with_shared_mono=yes;; esac @@ -717,7 +727,6 @@ if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then ]) fi -AC_ARG_ENABLE(quiet-build, [ --enable-quiet-build Enable quiet runtime build (on by default)], enable_quiet_build=$enableval, enable_quiet_build=yes) AC_ARG_ENABLE(small-config, [ --enable-small-config Enable tweaks to reduce requirements (and capabilities)], enable_small_config=$enableval, enable_small_config=no) if test x$enable_small_config = xyes; then @@ -730,8 +739,9 @@ AC_ARG_ENABLE(system-aot, [ --enable-system-aot Enable the Ahead-Of-Time compi DISABLED_FEATURES=none AC_ARG_ENABLE(minimal, [ --enable-minimal=LIST drop support for LIST subsystems. - LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug, - reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping, shared_perfcounters.], + 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.], [ for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do eval "mono_feature_disable_$feature='yes'" @@ -846,6 +856,10 @@ if test "x$mono_feature_disable_soft_debug" = "xyes"; then AC_MSG_NOTICE([Disabled Soft Debugger.]) fi +if test "x$mono_feature_disable_perfcounters" = "xyes"; then + AC_DEFINE(DISABLE_PERFCOUNTERS, 1, [Disable Performance Counters.]) + AC_MSG_NOTICE([Disabled Performance Counters.]) +fi if test "x$mono_feature_disable_normalization" = "xyes"; then AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.]) AC_MSG_NOTICE([Disabled String normalization support.]) @@ -861,9 +875,58 @@ if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then AC_MSG_NOTICE([Disabled Shared perfcounters.]) fi +if test "x$mono_feature_disable_appdomains" = "xyes"; then + AC_DEFINE(DISABLE_APPDOMAINS, 1, [Disable support for multiple appdomains.]) + AC_MSG_NOTICE([Disabled support for multiple appdomains.]) +fi + +if test "x$mono_feature_disable_remoting" = "xyes"; then + AC_DEFINE(DISABLE_REMOTING, 1, [Disable remoting support (This disables type proxies and make com non-functional)]) + AC_MSG_NOTICE([Disabled remoting]) +fi + +if test "x$mono_feature_disable_security" = "xyes"; then + AC_DEFINE(DISABLE_SECURITY, 1, [Disable CAS/CoreCLR security]) + AC_MSG_NOTICE([Disabled CAS/CoreCLR security manager (used e.g. for Moonlight)]) +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.]) +fi + +if test "x$mono_feature_disable_sgen_marksweep_par" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_PAR, 1, [Disable major=marksweep-par support in SGEN.]) + AC_MSG_NOTICE([Disabled major=marksweep-par support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_marksweep_fixed" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED, 1, [Disable major=marksweep-fixed support in SGEN.]) + AC_MSG_NOTICE([Disabled major=marksweep-fixed support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_marksweep_fixed_par" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_MARKSWEEP_FIXED_PAR, 1, [Disable major=marksweep-fixed-par support in SGEN.]) + AC_MSG_NOTICE([Disabled major=marksweep-fixed-par support in SGEN.]) +fi + +if test "x$mono_feature_disable_sgen_copying" = "xyes"; then + AC_DEFINE(DISABLE_SGEN_MAJOR_COPYING, 1, [Disable major=copying support in SGEN.]) + AC_MSG_NOTICE([Disabled major=copying support in SGEN.]) +fi + AC_ARG_ENABLE(executables, [ --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes) AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno) +AC_ARG_ENABLE(extension-module, [ --enable-extension-module enables usage of the extension module], has_extension_module=$enableval, has_extension_module=no) +AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno]) + +if test x$has_extension_module != xno ; then + AC_DEFINE([ENABLE_EXTENSION_MODULE], 1, [Extension module enabled]) + AC_MSG_NOTICE([Enabling mono extension module.]) +fi + + AC_MSG_CHECKING(for visibility __attribute__) AC_COMPILE_IFELSE([ AC_LANG_SOURCE([[ @@ -1014,6 +1077,8 @@ AC_TRY_COMPILE([ AC_DEFINE_UNQUOTED(MONO_ZERO_LEN_ARRAY, 1, [Length of zero length arrays]) ]) +AC_CHECK_HEADERS(nacl/nacl_dyncode.h) + if test x$target_win32 = xno; then dnl hires monotonic clock support @@ -1160,6 +1225,14 @@ if test x$target_win32 = xno; then dnl ***************************** AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket") + case "$host" in + *-*-*freebsd*) + dnl ***************************** + dnl *** Checks for libinotify *** + dnl ***************************** + AC_CHECK_LIB(inotify, inotify_init, LIBS="$LIBS -linotify") + esac + dnl ******************************* dnl *** Checks for MSG_NOSIGNAL *** dnl ******************************* @@ -1175,6 +1248,51 @@ if test x$target_win32 = xno; then AC_MSG_RESULT(no) ]) + dnl ***************************** + dnl *** Checks for IPPROTO_IP *** + dnl ***************************** + AC_MSG_CHECKING(for IPPROTO_IP) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_IP; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_IP, 1, [Have IPPROTO_IP]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ******************************* + dnl *** Checks for IPPROTO_IPV6 *** + dnl ******************************* + AC_MSG_CHECKING(for IPPROTO_IPV6) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_IPV6; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_IPV6, 1, [Have IPPROTO_IPV6]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + + dnl ****************************** + dnl *** Checks for IPPROTO_TCP *** + dnl ****************************** + AC_MSG_CHECKING(for IPPROTO_TCP) + AC_TRY_COMPILE([#include ], [ + int level = IPPROTO_TCP; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPPROTO_TCP, 1, [Have IPPROTO_TCP]) + ], [ + # We'll have to use getprotobyname + AC_MSG_RESULT(no) + ]) + dnl ***************************** dnl *** Checks for SOL_IP *** dnl ***************************** @@ -1224,7 +1342,7 @@ if test x$target_win32 = xno; then dnl *** Checks for IP_PKTINFO *** dnl ***************************** AC_MSG_CHECKING(for IP_PKTINFO) - AC_TRY_COMPILE([#include ], [ + AC_TRY_COMPILE([#include ], [ int level = IP_PKTINFO; ], [ # Yes, we have it... @@ -1248,11 +1366,25 @@ if test x$target_win32 = xno; then AC_MSG_RESULT(no) ]) + dnl ********************************** + dnl *** Checks for IP_DONTFRAG *** + dnl ********************************** + AC_MSG_CHECKING(for IP_DONTFRAG) + AC_TRY_COMPILE([#include ], [ + int level = IP_DONTFRAG; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IP_DONTFRAG, 1, [Have IP_DONTFRAG]) + ], [ + AC_MSG_RESULT(no) + ]) + dnl ********************************** dnl *** Checks for IP_DONTFRAGMENT *** dnl ********************************** AC_MSG_CHECKING(for IP_DONTFRAGMENT) - AC_TRY_COMPILE([#include ], [ + AC_TRY_COMPILE([#include ], [ int level = IP_DONTFRAGMENT; ], [ # Yes, we have it... @@ -1266,7 +1398,7 @@ if test x$target_win32 = xno; then dnl *** Checks for IP_MTU_DISCOVER *** dnl ********************************** AC_MSG_CHECKING(for IP_MTU_DISCOVER) - AC_TRY_COMPILE([#include ], [ + AC_TRY_COMPILE([#include ], [ int level = IP_MTU_DISCOVER; ], [ # Yes, we have it... @@ -1276,6 +1408,20 @@ if test x$target_win32 = xno; then AC_MSG_RESULT(no) ]) + dnl ********************************** + dnl *** Checks for IP_PMTUDISC_DO *** + dnl ********************************** + AC_MSG_CHECKING(for IP_PMTUDISC_DO) + AC_TRY_COMPILE([#include ], [ + int level = IP_PMTUDISC_DO; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IP_PMTUDISC_DO, 1, [Have IP_PMTUDISC_DO]) + ], [ + AC_MSG_RESULT(no) + ]) + dnl ********************************* dnl *** Check for struct ip_mreqn *** dnl ********************************* @@ -1389,6 +1535,7 @@ if test x$target_win32 = xno; then ;; esac 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) AC_CHECK_FUNCS(pthread_kill) @@ -1546,11 +1693,11 @@ if test x$target_win32 = xno; then return 0; } - for (i = 0; i < 3; ++i) { - sleep (1); + for (i = 0; i < 300; ++i) { waitpid (son, &status, WNOHANG); if (WIFEXITED (status) && WEXITSTATUS (status) == 0) return 0; + usleep (10000); } kill (son, SIGKILL); @@ -1642,19 +1789,33 @@ if test x$target_win32 = xno; then dnl ********************************** dnl *** epoll *** dnl ********************************** - 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]) + 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 fi havekqueue=no AC_CHECK_FUNCS(kqueue, , AC_MSG_CHECKING(for kqueue in sys/event.h) AC_TRY_LINK([#include ], - [ kqueue(); ], - AC_DEFINE(HAVE_KQUEUE, 1, [Have kqueue]) AC_MSG_RESULT(yes), - AC_MSG_RESULT(no))) + [ kqueue(); ],[havekqueue=yes],[])) + + dnl ************************************** + dnl * Darwin has a race that prevents us from using reliably: + dnl * http://lists.apple.com/archives/darwin-dev/2011/Jun/msg00016.html + dnl * Since kqueue is mostly used for scaling large web servers, + dnl * and very few folks run Mono on large web servers on OSX, falling + dnl * back + dnl ************************************** + if test x$havekqueue = xyes; then + if x$platform_darwin = xno; then + AC_DEFINE(USE_KQUEUE_FOR_THREADPOOL, 1, [Use kqueue for the threadpool]) + fi + fi + dnl ****************************** dnl *** Checks for SIOCGIFCONF *** dnl ****************************** @@ -1805,6 +1966,9 @@ if test x$target_win32 = xno; then AC_CHECK_FUNCS(lockf) AC_CHECK_FUNCS(swab) AC_CHECK_FUNCS(setusershell endusershell) + AC_CHECK_FUNCS(futimens utimensat) + AC_CHECK_FUNCS(fstatat mknodat readlinkat) + AC_CHECK_FUNCS(readv writev preadv pwritev) AC_CHECK_SIZEOF(size_t) AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , [#include @@ -1819,6 +1983,8 @@ if test x$target_win32 = xno; then AC_CHECK_TYPES([struct flock], [AC_DEFINE(HAVE_STRUCT_FLOCK)], , [#include #include ]) + AC_CHECK_TYPES([struct iovec], [AC_DEFINE(HAVE_STRUCT_IOVEC)], , + [#include ]) AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], , [#include ]) AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], , @@ -1848,6 +2014,11 @@ if test x$target_win32 = xno; then [struct statfs.f_flags],,, [#include #include ]) + AC_CHECK_MEMBERS( + [struct stat.st_atim, struct stat.st_mtim, struct stat.st_ctim],,, + [#include + #include + #include ]) dnl Favour xattr through glibc, but use libattr if we have to AC_CHECK_FUNC(lsetxattr, , @@ -1871,6 +2042,11 @@ if test x$target_win32 = xno; then AC_CHECK_HEADERS(sys/param.h) AC_CHECK_HEADERS(dirent.h) + dnl ****************************************** + dnl *** Checks for OSX and iOS compilation *** + dnl ****************************************** + AC_CHECK_HEADERS(CommonCrypto/CommonDigest.h) + dnl ********************************* dnl *** Check for Console 2.0 I/O *** dnl ********************************* @@ -2135,6 +2311,16 @@ AC_ARG_ENABLE(nacl_codegen, [ --enable-nacl-codegen Enable Native Client c 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 CPPFLAGS="$CPPFLAGS -D__native_client_codegen__" @@ -2161,13 +2347,21 @@ if test "x$enable_llvm" = "xyes"; then AC_MSG_ERROR([llvm-config not found.]) fi + llvm_codegen="x86codegen" + case "$target" in + arm*) + llvm_codegen="armcodegen" + ;; + esac + + # 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 # from LLVM classes. LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti" LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` - LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit x86codegen` + LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen` LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++" # Should be something like '2.6' or '2.7svn' @@ -2295,6 +2489,10 @@ case "$host" in TARGET=AMD64; arch_target=amd64; JIT_SUPPORTED=yes + if test "x$ac_cv_sizeof_void_p" = "x4"; then + AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) + sizeof_register=8 + fi case $host_os in linux*) sgen_supported=true @@ -2345,37 +2543,11 @@ case "$host" in fi sgen_supported=true ;; - alpha*-*-linux* | alpha*-*-osf*) - TARGET=ALPHA; - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - arch_target=alpha; - CFLAGS="$CFLAGS -mieee -O0" - case $host_os in - linux*) - LIBC="libc.so.6.1" - INTL="libc.so.6.1" - esac - ;; *-mingw*|*-*-cygwin*) # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4) have_visibility_hidden=no INTL="intl" ;; - hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00) - TARGET=HPPA; - arch_target=hppa; - LIBC="libc.sl" - ACCESS_UNALIGNED="no" - INTERP_SUPPORTED=yes - interp_wanted=true - ;; - hppa*linux*) - TARGET=HPPA; - arch_target=hppa; - ACCESS_UNALIGNED="no" - JIT_SUPPORTED=yes - ;; macppc-*-openbsd* | powerpc*-*-linux* | powerpc-*-openbsd* | \ powerpc-*-sysv* | powerpc-*-darwin* | powerpc-*-netbsd* | powerpc-*-freebsd* ) if test "x$ac_cv_sizeof_void_p" = "x8"; then @@ -2411,7 +2583,21 @@ case "$host" in JIT_SUPPORTED=yes sgen_supported=true AOT_SUPPORTED="yes" + if test "x$cross_compiling" != "xno"; then + # Provide sane defaults when cross-compiling + CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1" + NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6" + fi ;; +# TODO: make proper support for NaCl host. +# arm*-*nacl) +# TARGET=ARM; +# arch_target=arm; +# ACCESS_UNALIGNED="no" +# JIT_SUPPORTED=yes +# sgen_supported=true +# AOT_SUPPORTED="no" +# ;; s390-*-linux*) TARGET=S390; arch_target=s390; @@ -2437,6 +2623,17 @@ 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 case "$target" in + arm*-darwin*) + TARGET=ARM; + arch_target=arm; + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1" + jit_wanted=true + # Can't use tls, since it depends on the runtime detection of tls offsets + # in mono-compiler.h + with_tls=pthread + ;; powerpc64-ps3-linux-gnu) TARGET=POWERPC64 arch_target=powerpc64 @@ -2465,13 +2662,35 @@ if test "x$host" != "x$target"; then AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers]) sizeof_register=8 ;; - *-*-nacl) +# TODO: make proper support for NaCl target. +# arm*-*nacl) +# TARGET=ARM +# arch_target=arm +# AC_DEFINE(TARGET_ARM, 1, [...]) +# ACCESS_UNALIGNED="no" +# JIT_SUPPORTED=yes +# sizeof_register=4 +# CPPFLAGS="$CPPFLAGS \ +# -DARM_FPU_VFP=1 -D__ARM_EABI__ \ +# -D__arm__ \ +# -D__portable_native_client__ \ +# -DARM_FPU_VFP=1 \ +# -Dtimezone=_timezone \ +# -DDISABLE_SOCKETS \ +# -DDISABLE_ATTACH \ +# -DUSE_NEWLIB" +# jit_wanted=true + # 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*-unknown-linux-gnueabi*) + arm*-unknown-linux-*) TARGET=ARM; arch_target=arm; AC_DEFINE(TARGET_ARM, 1, [...]) @@ -2526,6 +2745,26 @@ MIPS) esac if test "x$target_mach" = "xyes"; then + if test "x$TARGET" = "xARM"; 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" + else + AC_TRY_COMPILE([#include "TargetConditionals.h"],[ + #if TARGET_IPHONE_SIMULATOR == 1 || TARGET_OS_IPHONE == 1 + #error fail this for ios + #endif + return 0; + ], [ + 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" + ], [ + 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" + ]) + fi AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms]) fi @@ -2565,7 +2804,7 @@ SGEN_DEFINES= AC_ARG_WITH(sgen, [ --with-sgen=yes,no Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=$build_sgen_default]) if test x$buildsgen = xyes; then if $sgen_supported; then - SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -DHAVE_WRITE_BARRIERS" + SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR" gc_msg="sgen and $gc_msg" else buildsgen=no @@ -2668,7 +2907,7 @@ fi mono_debugger_supported=no AC_ARG_ENABLE(mono-debugger, [ --disable-mono-debugger disable support for the mdb debugger], try_mono_debugger=$enableval, try_mono_debugger=yes) if test "x$try_mono_debugger" = "xyes"; then - if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xALPHA" -o "x$TARGET" = "xS390x"; then + if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xS390x"; then if test x$use_included_gc = xyes; then case "$host" in *-*-*linux*) @@ -2713,6 +2952,11 @@ if test "x$icall_tables" = "xno"; then AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled]) fi +if test "x$mono_cv_clang" = "xyes"; then + # FIXME: This causes many compilation errors + with_tls=pthread +fi + if test "x$with_tls" = "x__thread"; then AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword]) # Pass the information to libgc @@ -2773,6 +3017,12 @@ if test ${TARGET} = ARM && test x$cross_compiling = xno && test x$enable_mcs_bui 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.") @@ -2809,6 +3059,7 @@ AC_ARG_WITH(profile4, [ --with-profile4=yes,no If you want to install AC_ARG_WITH(profile4_5,[ --with-profile4_5=yes,no If you want to install the 4.5 FX (defaults to yes)], [], [with_profile4_5=yes]) AC_ARG_WITH(monodroid, [ --with-monodroid=yes,no If you want to build the MonoDroid assemblies (defaults to no)], [], [with_monodroid=no]) AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no,only If you want to build the MonoTouch assemblies (defaults to no)], [], [with_monotouch=no]) +AC_ARG_WITH(mobile, [ --with-mobile=yes,no If you want to build the Mobile assemblies (defaults to no)], [], [with_mobile=no]) OPROFILE=no AC_ARG_WITH(oprofile,[ --with-oprofile=no, Enable oprofile support (defaults to no)],[ @@ -2857,6 +3108,12 @@ AC_ARG_WITH(moon_gc, [ --with-moon-gc=boehm,sgen Select the gc to use with Moo fi ], [with_moon_gc=boehm]) +AC_ARG_WITH(lazy_gc_thread_creation, [ --with-lazy-gc-thread-creation=yes|no Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[ + if test x$with_lazy_gc_thread_creation != xno ; then + AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.]) + fi +], [with_lazy_gc_thread_creation=no]) + AC_CHECK_HEADER([malloc.h], [AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], [Define to 1 if you have /usr/include/malloc.h.])],,) @@ -2871,7 +3128,7 @@ fi # When --disable-shared is used, libtool transforms libmono-2.0.la into libmono-2.0.so # instead of libmono-static.a -if test "x$enable_shared" = "xno"; then +if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then LIBMONO_LA=libmini-static.la else LIBMONO_LA=libmono-$API_VER.la @@ -2917,6 +3174,8 @@ AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes]) AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes]) AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" != "xno"]) AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" != "xno"]) +AM_CONDITIONAL(INSTALL_MOBILE, [test "x$with_mobile" = xyes]) +AM_CONDITIONAL(ONLY_MONOTOUCH, [test "x$with_monotouch" = "xonly"]) AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes) AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno) @@ -2924,7 +3183,6 @@ 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(ALPHA, test x$TARGET = xALPHA) AM_CONDITIONAL(IA64, test x$TARGET = xIA64) AM_CONDITIONAL(M68K, test x$TARGET = xM68K) AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS) @@ -2933,10 +3191,10 @@ AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64) AM_CONDITIONAL(ARM, test x$TARGET = xARM) AM_CONDITIONAL(S390, test x$TARGET = xS390) AM_CONDITIONAL(S390x, test x$TARGET = xS390x) -AM_CONDITIONAL(HPPA, test x$TARGET = xHPPA) 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(CROSS_COMPILE, test "x$host" != "x$target") AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes) AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue) @@ -3106,16 +3364,7 @@ AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config], cd $depth ],[LN_S='$LN_S']) -if test x$enable_quiet_build = xyes; then - AC_CONFIG_COMMANDS([quiet], -[ for i in `find mono libgc support -name Makefile`; do - if [ grep -q 'generated by automake' $i ]; then - $srcdir/scripts/patch-quiet.sh $i; - fi; - done -], [shell=$SHELL]) - 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]) -fi +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_OUTPUT([ Makefile @@ -3131,13 +3380,11 @@ mono/cil/Makefile mono/arch/Makefile mono/arch/x86/Makefile mono/arch/amd64/Makefile -mono/arch/hppa/Makefile mono/arch/ppc/Makefile mono/arch/sparc/Makefile mono/arch/s390/Makefile mono/arch/s390x/Makefile mono/arch/arm/Makefile -mono/arch/alpha/Makefile mono/arch/ia64/Makefile mono/arch/mips/Makefile mono/interpreter/Makefile @@ -3150,6 +3397,7 @@ mono/tests/cas/demand/Makefile mono/tests/cas/inheritance/Makefile mono/tests/cas/linkdemand/Makefile mono/tests/cas/threads/Makefile +mono/tests/gc-descriptors/Makefile mono/benchmark/Makefile mono/monograph/Makefile mono/io-layer/Makefile @@ -3185,6 +3433,7 @@ data/system.web.mvc.pc data/system.web.mvc2.pc data/system.web.mvc3.pc data/aspnetwebstack.pc +data/reactive.pc samples/Makefile support/Makefile data/config @@ -3277,6 +3526,10 @@ fi echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make fi + if test x$has_extension_module != xno; then + echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make + fi + default_profile=net_2_0 if test -z "$INSTALL_4_0_TRUE"; then : default_profile=net_4_0