-AC_INIT(README)
+# Process this file with autoconf to produce a configure script.
+#AC_PREREQ([2.62])
+
+AC_INIT(mono, [3.0.1],
+ [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
+
+AC_CONFIG_SRCDIR([README])
+AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_SYSTEM
+AC_CANONICAL_HOST
# Gross hack to enable 'make dist' on automake 1.9+tar 1.14.
# The extra brackets are to foil regex-based scans.
m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
-AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono,2.11)
+AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign])
+AM_CONFIG_HEADER([config.h])
AM_MAINTAINER_MODE
API_VER=2.0
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
host_win32=no
target_win32=no
+platform_android=no
case "$host" in
*-mingw*|*-*-cygwin*)
AC_DEFINE(HOST_WIN32,1,[Host Platform is Win32])
AC_DEFINE(DISABLE_PORTABILITY,1,[Disable the io-portability layer])
AC_DEFINE(PLATFORM_NO_SYMLINKS,1,[This platform does not support symlinks])
host_win32=yes
+ mono_cv_clang=no
if test "x$cross_compiling" = "xno"; then
target_win32=yes
- if test "x$host" == "x$build"; then
+ if test "x$host" == "x$build" -a "x$host" == "x$target"; then
AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
fi
- CC="gcc -mno-cygwin -g"
- CXX="g++ -mno-cygwin -g"
+ #
+ # gcc-3/g++-3 are from the gcc-core/gcc-g++ cygwin packages.
+ # Other gcc packages will not work:
+ # - the gcc-4 packages no longer support -mno-cygwin
+ # - the mingw-gcc packages produce executables which depends on a libgcc<...>
+ # dll, which means we would have to distribute that file too.
+ #
+ if test "x$CC" != "x"; then
+ AC_ERROR(Don't set CC. mono can only be compiled with gcc-3 from the 'gcc-core' package)
+ fi
+ CC="gcc-3.exe -mno-cygwin -g"
+ CXX="g++-3.exe -mno-cygwin -g"
# So libgc configure gets -mno-cygwin
export CC
export CXX
with_sigaltstack=no
use_sigposix=yes
;;
+ *-*-linux-android*)
+ host_win32=no
+ platform_android=yes
+ AC_DEFINE(PLATFORM_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"
+ if test "x$disable_munmap" != "xyes"; then
+ CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+ fi
+ libmono_cflags="-D_REENTRANT"
+ libdl="-ldl"
+ libgc_threads=pthreads
+ use_sigposix=yes
+
+ with_tls=pthread
+ with_sigaltstack=no
+ with_static_mono=no
+
+ # Android doesn't support boehm, as it's missing <link.h>
+ support_boehm=no
+ with_gc=sgen
+
+ # isinf(3) requires -lm; see isinf check below
+ LDFLAGS="$LDFLAGS -lm"
+
+ # Bionic's <pthread.h> sets PTHREAD_STACK_MIN=2*PAGE_SIZE; doesn't define
+ # PAGE_SIZE; breaks mono/io-layer/collection.c
+ # Bionic doesn't provide S_IWRITE; breaks io-layer/io.c
+ CFLAGS="$CFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR"
+ CXXFLAGS="$CXXFLAGS -DPAGE_SIZE=4096 -DS_IWRITE=S_IWUSR"
+
+ # to bypass the underscore linker check, can't work when cross-compiling
+ mono_cv_uscore=yes
+ mono_cv_clang=no
+ ;;
*-*-linux*)
host_win32=no
CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
parallel_mark="Disabled_Currently_Hangs_On_MacOSX"
host_win32=no
platform_darwin=yes
+ target_mach=yes
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"
AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux)
AM_CONDITIONAL(PLATFORM_DARWIN, test x$platform_darwin = xyes)
AM_CONDITIONAL(PLATFORM_SIGPOSIX, test x$use_sigposix = xyes)
+AM_CONDITIONAL(PLATFORM_ANDROID, test x$platform_android = xyes)
AC_CHECK_TOOL(CC, gcc, gcc)
AC_PROG_CC
fi
fi
-AC_CHECK_PROG(BISON, bison,yes,no)
-if test "x$BISON" = "xno";
-then
- AC_MSG_ERROR([You need to install bison])
-fi
-
dnl may require a specific autoconf version
dnl AC_PROG_CC_FOR_BUILD
dnl CC_FOR_BUILD not automatically detected
no_version_script=yes
fi
+AM_ICONV()
+
AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
-AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h)
-AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h)
+AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h sys/param.h libproc.h)
+AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h sys/inotify.h)
+AC_CHECK_HEADERS([linux/netlink.h linux/rtnetlink.h],
+ [], [], [#include <stddef.h>
+ #include <sys/socket.h>
+ #include <linux/socket.h>])
AC_CHECK_HEADERS(sys/user.h, [], [],
[
AC_MSG_RESULT(no)
])
+# for Linux statfs support
+AC_CHECK_HEADERS(linux/magic.h)
# not 64 bit clean in cross-compile
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'
+ WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch-enum'
# The runtime code does not respect ANSI C strict aliasing rules
CFLAGS="$CFLAGS -fno-strict-aliasing"
ORIG_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Wdeclaration-after-statement"
AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc)
- AC_TRY_COMPILE([], [
- void main () { }
+ AC_TRY_COMPILE([],[
+ return 0;
], [
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
CFLAGS=$ORIG_CFLAGS
])
+
+ ORIG_CFLAGS=$CFLAGS
+ # Check for the normal version, since gcc ignores unknown -Wno options
+ CFLAGS="$CFLAGS -Wunused-but-set-variable"
+ AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc)
+ AC_TRY_COMPILE([],[
+ return 0;
+ ], [
+ AC_MSG_RESULT(yes)
+ CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable"
+ ], [
+ AC_MSG_RESULT(no)
+ CFLAGS=$ORIG_CFLAGS
+ ])
else
# The Sun Forte compiler complains about inline functions that access static variables
# so disable all inlining.
CFLAGS="$CFLAGS -g $WARN"
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
+ }
+ ],
+ [mono_cv_clang=yes],
+ [mono_cv_clang=no],
+ [])
+])
+
# Where's the 'mcs' source tree?
if test -d $srcdir/mcs; then
mcsdir=mcs
esac
fi
-## Maybe should also disable if mcsdir is invalid. Let's punt the issue for now.
-AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
-
AC_SUBST([mcs_topdir])
AC_SUBST([mcs_topdir_from_srcdir])
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
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
AC_ARG_ENABLE(mcs-build, [ --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
AC_ARG_WITH(xen_opt, [ --with-xen_opt=yes,no Enable Xen-specific behaviour (defaults to yes)],[],[with_xen_opt=yes])
-if test "x$with_xen_opt" = "xyes"; then
+if test "x$with_xen_opt" = "xyes" -a "x$mono_cv_clang" = "xno"; then
AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour])
ORIG_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -mno-tls-direct-seg-refs"
AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc)
AC_TRY_COMPILE([], [
- void main () { }
+ return 0;
], [
AC_MSG_RESULT(yes)
# Pass it to libgc as well
])
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
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.],
+ reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization, assembly_remapping, shared_perfcounters.],
[
for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
eval "mono_feature_disable_$feature='yes'"
AC_MSG_NOTICE([Disabled Assembly remapping.])
fi
+if test "x$mono_feature_disable_shared_perfcounters" = "xyes"; then
+ AC_DEFINE(DISABLE_SHARED_PERFCOUNTERS, 1, [Disable shared perfcounters.])
+ AC_MSG_NOTICE([Disabled Shared perfcounters.])
+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_MSG_CHECKING(for visibility __attribute__)
-AC_TRY_COMPILE([], [
- void __attribute__ ((visibility ("hidden"))) doit (void) {}
- void main () { doit (); }
+AC_COMPILE_IFELSE([
+ AC_LANG_SOURCE([[
+ void __attribute__ ((visibility ("hidden"))) doit (void) {}
+ int main () { doit (); return 0; }
+ ]])
], [
have_visibility_hidden=yes
AC_MSG_RESULT(yes)
libgc_configure_args="$libgc_configure_args --enable-parallel-mark"
fi
+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)
+
dnl
dnl Boehm GC configuration
dnl
-LIBGC_CFLAGS=
+LIBGC_CPPFLAGS=
LIBGC_LIBS=
LIBGC_STATIC_LIBS=
libgc_dir=
use_included_gc=yes
libgc_dir=libgc
- LIBGC_CFLAGS='-I$(top_srcdir)/libgc/include'
+ LIBGC_CPPFLAGS='-I$(top_srcdir)/libgc/include'
LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la'
LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la'
fi
AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes)
-AC_SUBST(LIBGC_CFLAGS)
+AC_SUBST(LIBGC_CPPFLAGS)
AC_SUBST(LIBGC_LIBS)
AC_SUBST(LIBGC_STATIC_LIBS)
AC_SUBST(libgc_dir)
dnl ****************************************************************
AC_MSG_CHECKING(for sched_setaffinity from glibc < 2.3.4)
AC_TRY_COMPILE([#include <sched.h>], [
- int main() {
int mask = 1;
sched_setaffinity(0, &mask);
- }
+ return 0;
], [
# Yes, we have it...
AC_MSG_RESULT(yes)
AC_DEFUN([LARGE_FILES], [
large_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $1"
- AC_TRY_RUN([
+ AC_TRY_COMPILE([
#include <sys/types.h>
-
- #define BIG_OFF_T (((off_t)1<<62)-1+((off_t)1<<62))
-
- int main(void) {
- int big_off_t=((BIG_OFF_T%2147483629==721) &&
- (BIG_OFF_T%2147483647==1));
- if(big_off_t) {
- exit(0);
- } else {
- exit(1);
- }
- }
+ #include <limits.h>
+ ], [
+ /* Lifted this compile time assert method from: http://www.jaggersoft.com/pubs/CVu11_3.html */
+ #define COMPILE_TIME_ASSERT(pred) \
+ switch(0){case 0:case pred:;}
+ COMPILE_TIME_ASSERT(sizeof(off_t) * CHAR_BIT == 64);
], [
AC_MSG_RESULT(ok)
AC_DEFINE(HAVE_LARGE_FILE_SUPPORT, 1, [Have large file support])
large_offt=yes
], [
AC_MSG_RESULT(no)
- ], "")
+ ])
CPPFLAGS=$large_CPPFLAGS
])
AC_CHECK_HEADERS(pthread.h)
AC_CHECK_FUNCS(pthread_mutex_timedlock)
AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np)
+ AC_CHECK_FUNCS(pthread_kill)
AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
AC_TRY_COMPILE([ #include <pthread.h>], [
pthread_mutexattr_t attr;
exit (0);
}
+ volatile char*__ptr = NULL;
static void *
loop (void *ignored)
{
- char *ptr = NULL;
-
- *ptr = 0;
+ *__ptr = 0;
return NULL;
}
child ()
{
struct sigaction sa;
+ #ifdef __APPLE__
+ stack_t sas;
+ #else
struct sigaltstack sas;
+ #endif
pthread_t id;
pthread_attr_t attr;
return;
}
+ /* x86 darwin deliver segfaults using SIGBUS */
+ if (sigaction (SIGBUS, &sa, NULL) == -1) {
+ perror ("sigaction");
+ return;
+ }
sas.ss_sp = malloc (SIGSTKSZ);
sas.ss_size = SIGSTKSZ;
sas.ss_flags = 0;
AC_DEFINE(HAVE_SOCKADDR_IN6_SIN_LEN, 1, [sockaddr_in6 has sin6_len])
], [
AC_MSG_RESULT(no)
- ])
+ ])
+ dnl **********************************
+ dnl *** Check for getifaddrs ***
+ dnl **********************************
+ AC_MSG_CHECKING(for getifaddrs)
+ AC_TRY_LINK([
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <ifaddrs.h>
+ ], [
+ getifaddrs(NULL);
+ ], [
+ # Yes, we have it...
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_GETIFADDRS, 1, [Have getifaddrs])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+ dnl **********************************
+ dnl *** Check for if_nametoindex ***
+ dnl **********************************
+ AC_MSG_CHECKING(for if_nametoindex)
+ AC_TRY_LINK([
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <net/if.h>
+ ], [
+ if_nametoindex(NULL);
+ ], [
+ # Yes, we have it...
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_IF_NAMETOINDEX, 1, [Have if_nametoindex])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+
dnl **********************************
dnl *** Checks for MonoPosixHelper ***
dnl **********************************
AC_SUBST(DISABLE_SHARED_HANDLES)
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(nunit-tests, [ --enable-nunit-tests Run the nunit tests of the class library on 'make check'])
AM_CONDITIONAL(ENABLE_NUNIT_TESTS, [test x$enable_nunit_tests = xyes])
# from LLVM classes.
LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
- LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit x86codegen`
+ LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit x86codegen`
LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
# Should be something like '2.6' or '2.7svn'
llvm_version=`$LLVM_CONFIG --version`
major_version=`echo $llvm_version | cut -c 1`
minor_version=`echo $llvm_version | cut -c 3`
+ AC_MSG_CHECKING(LLVM version)
+ AC_MSG_RESULT($llvm_version)
if echo $llvm_version | grep -q 'mono'; then
AC_DEFINE(LLVM_MONO_BRANCH, 1, [Whenever we are using the mono branch of LLVM])
LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MONO_BRANCH"
+ else
+ AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.])
fi
AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries])
mips*)
TARGET=MIPS;
arch_target=mips;
+ sgen_supported=true
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
AC_MSG_CHECKING(for mips n32)
- AC_TRY_COMPILE([], [
- void main () {
+ AC_TRY_COMPILE([],[
#if _MIPS_SIM != _ABIN32
#error Not mips n32
#endif
- }
+ return 0;
],[
AC_MSG_RESULT(yes)
sizeof_register=8
# foo.c:6: warning: visibility attribute not supported in this configuration; ignored
# ld: fatal: relocation error: R_386_GOTOFF: file /var/tmp//ccxYR96k.o: symbol astruct: relocation must bind locally
have_visibility_hidden=no
+ sgen_supported=true
;;
cygwin*)
+ sgen_supported=true
have_visibility_hidden=no
;;
haiku*)
sgen_supported=true
AOT_SUPPORTED="yes"
;;
+ darwin*)
+ sgen_supported=true
+ AOT_SUPPORTED="yes"
+ ;;
darwin*|openbsd*|freebsd*)
sgen_supported=true
;;
if test x"$AR" = xfalse; then
AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
fi
+ sgen_supported=true
;;
alpha*-*-linux* | alpha*-*-osf*)
TARGET=ALPHA;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__ -DHAVE_ARMV6=1"
+ # libgc's gc_locks.h depends on this
+ NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
sgen_supported=true
;;
arm*-linux*)
;;
esac
+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
case "$target" in
powerpc64-ps3-linux-gnu)
TARGET=POWERPC64
arch_target=powerpc64
AC_DEFINE(TARGET_PS3, 1, [...])
- AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
# It would be better to just use TARGET_POWERPC64, but lots of code already
# uses this define
AC_DEFINE(__mono_ppc64__, 1, [...])
TARGET=POWERPC64
arch_target=powerpc64
AC_DEFINE(TARGET_XBOX360, 1, [...])
- AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
# It would be better to just use TARGET_POWERPC64, but lots of code already
# uses this define
sizeof_register=8
TARGET=AMD64
arch_target=amd64
AC_DEFINE(TARGET_AMD64, 1, [...])
- AC_DEFINE(MONO_CROSS_COMPILE,1,[The runtime is compiled for cross-compiling mode])
AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
sizeof_register=8
;;
- armv7l-unknown-linux-gnueabi*)
- # TEGRA
- TARGET=ARM;
- arch_target=arm;
- ACCESS_UNALIGNED="no"
- JIT_SUPPORTED=yes
- CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1 -D__ARM_EABI__"
- jit_wanted=true
- # Can't use tls, since it depends on the runtime detection of tls offsets
- # in mono-compiler.h
- with_tls=pthread
+ *-*-nacl)
+ TARGET=X86
+ arch_target=x86
+ AC_DEFINE(TARGET_X86, 1, [...])
+ sizeof_register=4
;;
- armv5tel-unknown-linux-gnueabi*)
+ arm*-unknown-linux-gnueabi*)
TARGET=ARM;
arch_target=arm;
+ AC_DEFINE(TARGET_ARM, 1, [...])
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
# Can't use tls, since it depends on the runtime detection of tls offsets
# in mono-compiler.h
with_tls=pthread
+ target_mach=no
+ case "$target" in
+ armv7l-unknown-linux-gnueabi*)
+ # TEGRA
+ CPPFLAGS="$CPPFLAGS -DARM_FPU_VFP=1"
+ ;;
+ armv5-*-linux-androideabi*)
+ AC_DEFINE(TARGET_ANDROID, 1, [...])
+ CPPFLAGS="$CPPFLAGS -DARM_FPU_NONE"
+ ;;
+ esac
;;
*)
- AC_MSG_WARN([Cross compiling is only supported for targets matching 'powerpc64-{ps3,xbox360}-linux-gnu'])
+ AC_MSG_ERROR([Cross compiling is not supported for target $target])
esac
fi
S390x)
AC_DEFINE(TARGET_S390X, 1, [...])
;;
+MIPS)
+ AC_DEFINE(TARGET_MIPS, 1, [...])
+ ;;
esac
+if test "x$target_mach" = "xyes"; then
+ AC_DEFINE(TARGET_MACH,1,[The JIT/AOT targets Apple platforms])
+fi
+
if test "x$sizeof_register" = "x4"; then
AC_DEFINE(SIZEOF_REGISTER,4,[size of machine integer registers])
elif test "x$sizeof_register" = "x8"; then
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
done
if test "x$X11" = "xlibX11.so"; then
- AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? WinForms may not work...]);
+ AC_MSG_WARN([Could not find X development libs. Do you have the -devel package installed? Assuming libX11.so.6...]);
+ X11=libX11.so.6
fi
;;
esac
# undefined reference to `__tls_get_addr'
#
rm -f conftest.c conftest.so conftest
- echo "static __thread int foo; void main () { foo = 5; }" > conftest.c
+ echo "static __thread int foo; int main () { foo = 5; return 0; }" > conftest.c
$CC -fPIC --shared -o conftest.so conftest.c > /dev/null 2>&1
$CC -o conftest conftest.so > /dev/null 2>&1
if test ! -f conftest; then
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"; then
+ if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86" -o "x$TARGET" = "xALPHA" -o "x$TARGET" = "xS390x"; then
if test x$use_included_gc = xyes; then
case "$host" in
*-*-*linux*)
mono_debugger_supported=no
fi
+# mdb support for sgen is broken, disable it until further notice.
+mono_debugger_supported=no
+
AC_MSG_CHECKING(if the Mono Debugger is supported on this platform)
if test "x$mono_debugger_supported" = "xyes"; then
BOEHM_DEFINES="$BOEHM_DEFINES -DMONO_DEBUGGER_SUPPORTED"
AM_CONDITIONAL(MONO_DEBUGGER_SUPPORTED, test x$mono_debugger_supported = xyes)
AC_MSG_RESULT($mono_debugger_supported)
+AC_ARG_ENABLE(icall-symbol-map,[ --enable-icall-symbol-map Generate tables which map icall functions to their C symbols], icall_symbol_map=$enableval, icall_symbol_map=no)
+if test "x$icall_symbol_map" = "xyes"; then
+ AC_DEFINE(ENABLE_ICALL_SYMBOL_MAP, 1, [Icall symbol map enabled])
+fi
+
+AC_ARG_ENABLE(icall-export,[ --enable-icall-export Export icall functions], icall_export=$enableval, icall_export=no)
+if test "x$icall_export" = "xyes"; then
+ AC_DEFINE(ENABLE_ICALL_EXPORT, 1, [Icall export enabled])
+fi
+
+AC_ARG_ENABLE(icall-tables,[ --disable-icall-tables Disable the runtime lookup of icalls], icall_tables=$enableval, icall_tables=yes)
+if test "x$icall_tables" = "xno"; then
+ AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
+fi
+
if test "x$with_tls" = "x__thread"; then
AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
# Pass the information to libgc
AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
], [
AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
+ # CLANG doesn't support this yet, and it prints warnings about it
+ if test "x$mono_cv_clang" = "xno"; then
+ AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
+ fi
], [
AC_MSG_RESULT(no)
])
dnl ******************************************
AC_MSG_CHECKING(which FPU to use)
- ORIG_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -mfpu=vfp -mfloat-abi=softfp"
- AC_TRY_RUN([
- int main () { __asm__ ("faddd d7, d6, d7"); return 0; }
- ], fpu=VFP, fpu=NONE)
- CFLAGS=$ORIG_CFLAGS
+ fpu=NONE
+ if gcc -v 2>&1 | grep -q -- '--with-float=hard'; then
+ fpu=VFP_HARD
+ fi
+
+ if test x$fpu = xNONE; then
+ ORIG_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -mfpu=vfp -mfloat-abi=softfp"
+ AC_TRY_RUN([
+ int main () { __asm__ ("faddd d7, d6, d7"); return 0; }
+ ], fpu=VFP, fpu=NONE)
+ CFLAGS=$ORIG_CFLAGS
+ fi
if test x$fpu = xNONE; then
AC_TRY_COMPILE([], [
AC_MSG_RESULT($armv6)
if test ${armv6} = yes; then
AC_DEFINE(HAVE_ARMV6, 1, "Host supports ARMV6 instructions")
+ # libgc's gc_locks.h depends on this
+ NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
fi
fi
# The problem with this approach, is that during a reconfigure, the main
# configure scripts gets invoked with these arguments, so we use separate
# variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
- LIBGC_CPPFLAGS="$CPPFLAGS $NESTED_LIBGC_FLAGS"
+ TMP_CPPFLAGS="$CPPFLAGS $NESTED_LIBGC_FLAGS"
if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
- LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
+ TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
fi
# Don't pass -finstrument-for-thread-suspension in,
# if these are instrumented it will be very bad news
# (infinite recursion, undefined parking behavior, etc)
- LIBGC_CPPFLAGS=`echo $LIBGC_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
- ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$LIBGC_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
+ TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-finstrument-for-thread-suspension//g'`
+ ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args \"CPPFLAGS_FOR_LIBGC=$TMP_CPPFLAGS\" \"CFLAGS_FOR_LIBGC=$CFLAGS_FOR_LIBGC\""
AC_CONFIG_SUBDIRS(libgc)
;;
esac
-#AC_ARG_WITH(profile2, [ --with-profile2=yes,no If you want to install the 2.0 FX (defaults to yes)], [], [with_profile2=yes])
-AC_ARG_WITH(profile4, [ --with-profile4=yes,no If you want to install the 4.0 FX (defaults to yes)], [], [with_profile4=yes])
-AC_ARG_WITH(monodroid, [ --with-monodroid=yes,no If you want to build the MonoDroid 2.1 assemblies (defaults to no)], [], [with_monodroid=no])
-AC_ARG_WITH(monotouch, [ --with-monotouch=yes,no If you want to build the MonoTouch 2.1 assemblies (defaults to no)], [], [with_monotouch=no])
+AC_ARG_WITH(profile2, [ --with-profile2=yes,no If you want to install the 2.0/3.5 FX (defaults to yes)], [], [with_profile2=yes])
+AC_ARG_WITH(profile4, [ --with-profile4=yes,no If you want to install the 4.0 FX (defaults to yes)], [], [with_profile4=yes])
+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])
OPROFILE=no
AC_ARG_WITH(oprofile,[ --with-oprofile=no,<oprofile install dir> Enable oprofile support (defaults to no)],[
[AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1],
[Define to 1 if you have /usr/include/malloc.h.])],,)
+if test x"$GCC" = xyes; then
+ # Implicit function declarations are not 64 bit safe
+ # Do this late, since this causes lots of configure tests to fail
+ CFLAGS="$CFLAGS -Werror-implicit-function-declaration"
+ # jay has a lot of implicit declarations
+ JAY_CFLAGS="-Wno-implicit-function-declaration"
+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
+ LIBMONO_LA=libmini-static.la
+else
+ LIBMONO_LA=libmono-$API_VER.la
+fi
+AC_SUBST(LIBMONO_LA)
+
dnl
dnl Consistency settings
dnl
if test x$cross_compiling = xyes -o x$enable_mcs_build = xno; then
DISABLE_MCS_DOCS=yes
+ with_profile2=no
+ with_profile4=no
+ with_profile4_5=no
+ with_monodroid=no
+ with_monotouch=no
fi
if test x$DISABLE_MCS_DOCS = xyes; then
fi
AC_SUBST(docs_dir)
+## Maybe should also disable if mcsdir is invalid. Let's punt the issue for now.
+AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno && test x$enable_mcs_build != xno])
+
AM_CONDITIONAL(HAVE_OPROFILE, test x$OPROFILE = xyes)
AC_SUBST(OPROFILE_CFLAGS)
AC_SUBST(OPROFILE_LIBS)
libmono_ldflags="$libmono_ldflags $LIBS"
AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" != "xno"])
+
AM_CONDITIONAL(ONLY_MOONLIGHT, [test "x$with_moonlight" = "xonly"])
AM_CONDITIONAL(MOONLIGHT_BOEHM, [test "x$with_moon_gc" = "xboehm"])
AM_CONDITIONAL(MOONLIGHT_SGEN, [test "x$with_moon_gc" = "xsgen"])
+AM_CONDITIONAL(INSTALL_2_0, [test "x$with_profile2" = xyes])
AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
-AM_CONDITIONAL(INSTALL_MONODROID, [test "x$with_monodroid" = xyes])
-AM_CONDITIONAL(INSTALL_MONOTOUCH, [test "x$with_monotouch" = 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(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
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(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes)
AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue)
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.in | sed -e 's/Makefile.in/Makefile/g'`; do if test -f $i; then $srcdir/scripts/patch-quiet.sh $i; fi; done], [shell=$SHELL])
- AC_CONFIG_COMMANDS([quiet-libtool], [sed -e 's/$echo "copying selected/$show "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([runtime/etc/mono/4.5/machine.config],
+[ depth=../../../..
+ case $srcdir in
+ [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+ .) reldir=$depth ;;
+ *) reldir=$depth/$srcdir ;;
+ esac
+ $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
+ cd runtime/etc/mono/4.5
+ rm -f machine.config
+ $LN_S $reldir/data/net_4_5/machine.config machine.config
+ cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/web.config],
+[ depth=../../../..
+ case $srcdir in
+ [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+ .) reldir=$depth ;;
+ *) reldir=$depth/$srcdir ;;
+ esac
+ $ac_aux_dir/install-sh -d runtime/etc/mono/4.5
+ cd runtime/etc/mono/4.5
+ rm -f web.config
+ $LN_S $reldir/data/net_4_5/web.config web.config
+ cd $depth
+],[LN_S='$LN_S'])
+
+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
mono/io-layer/Makefile
mono/mini/Makefile
mono/profiler/Makefile
+m4/Makefile
ikvm-native/Makefile
scripts/Makefile
man/Makefile
data/Makefile
data/net_2_0/Makefile
data/net_4_0/Makefile
+data/net_4_5/Makefile
data/net_2_0/Browsers/Makefile
data/mint.pc
data/mono-2.pc
data/system.web.extensions.design_1.0.pc
data/system.web.mvc.pc
data/system.web.mvc2.pc
+data/system.web.mvc3.pc
+data/aspnetwebstack.pc
samples/Makefile
support/Makefile
data/config
po/Makefile
])
+# Update all submodules recursively to ensure everything is checked out
+$srcdir/scripts/update_submodules
+
if test x$host_win32 = xyes; then
# Get rid of 'cyg' prefixes in library names
sed -e "s/\/cyg\//\/\//" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
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 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $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
+ echo "JAY_CFLAGS = $JAY_CFLAGS" >> $mcs_topdir/build/config.make
case $INSTALL in
[[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;;
enable_system_aot=no
fi
- if test x$host_win32 = xno -a x$platform_darwin != xyes -a x$enable_system_aot = xyes; then
+ if test x$host_win32 = xno -a x$enable_system_aot = xyes; then
echo "ENABLE_AOT = 1" >> $mcs_topdir/build/config.make
fi
echo "MOONLIGHT = 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
+ fi
+ if test -z "$INSTALL_MONODROID_TRUE"; then :
+ default_profile=monodroid
+ fi
+ if test -z "$INSTALL_MONOTOUCH_TRUE"; then :
+ default_profile=monotouch
+ fi
+ if test -z "$INSTALL_4_5_TRUE"; then :
+ default_profile=net_4_5
+ fi
+
+ echo "DEFAULT_PROFILE = $default_profile" >> $srcdir/$mcsdir/build/config.make
+
+ if test "x$test_bcl_opt" = "xyes"; then
+ echo "BCL_OPTIMIZE = 1" >> $srcdir/$mcsdir/build/config.make
+ fi
+
fi
# if we have an olive folder, override the default settings
echo "
mcs source: $mcsdir
- olive source: $olive_topdir
Engine:
GC: $gc_msg
oprofile: $OPROFILE
BigArrays: $enable_big_arrays
DTrace: $enable_dtrace
- Parallel Mark: $enable_parallel_mark
LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm)
- Libraries:
- Moon Profile: $with_moonlight ($with_moon_gc)
+ Libraries:
+ .NET 2.0/3.5: $with_profile2
+ .NET 4.0: $with_profile4
+ .NET 4.5: $with_profile4_5
MonoDroid: $with_monodroid
MonoTouch: $with_monotouch
JNI support: $jdk_headers_found