# Process this file with autoconf to produce a configure script.
#AC_PREREQ([2.62])
-AC_INIT(mono, [2.11],
- [http://bugzilla.novell.com/enter_bug.cgi?product=mono])
+AC_INIT(mono, [2.11.2],
+ [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
AC_CONFIG_SRCDIR([README])
AC_CONFIG_MACRO_DIR([m4])
host_win32=yes
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
# to bypass the underscore linker check, can't work when cross-compiling
mono_cv_uscore=yes
+ mono_cv_clang=no
;;
*-*-linux*)
host_win32=no
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
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/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>
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)
], [
# 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([], [
- void main () { }
+ AC_TRY_COMPILE([],[
+ return 0;
], [
AC_MSG_RESULT(yes)
CFLAGS="$ORIG_CFLAGS -Wno-unused-but-set-variable"
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_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
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)
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)
exit (0);
}
+ volatile char*__ptr = NULL;
static void *
loop (void *ignored)
{
- char *ptr = NULL;
-
- *ptr = 0;
+ *__ptr = 0;
return NULL;
}
# 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'
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
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$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
AC_DEFINE(__mono_ilp32__, 1, [64 bit mode with 4 byte longs and pointers])
sizeof_register=8
;;
+ *-*-nacl)
+ TARGET=X86
+ arch_target=x86
+ AC_DEFINE(TARGET_X86, 1, [...])
+ sizeof_register=4
+ ;;
armv7l-unknown-linux-gnueabi*)
# TEGRA
TARGET=ARM;
S390x)
AC_DEFINE(TARGET_S390X, 1, [...])
;;
+MIPS)
+ AC_DEFINE(TARGET_MIPS, 1, [...])
+ ;;
esac
if test "x$sizeof_register" = "x4"; then
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
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([], [
# 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(profile4, [ --with-profile4=yes,no If you want to install the 4.x 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(mobile, [ --with-mobile=yes,no If you want to build the Mobile 2.1 assemblies (defaults to no)], [], [with_mobile=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.])],,)
+# 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=.libs/libmono-static.a
+else
+ LIBMONO_LA=libmono-$API_VER.la
+fi
+AC_SUBST(LIBMONO_LA)
+
dnl
dnl Consistency settings
dnl
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)
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_MOBILE, [test "x$with_mobile" = xyes])
AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
cd $depth
],[LN_S='$LN_S'])
+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'])
+
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])
+ 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_OUTPUT([
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
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
if test x$with_moonlight != xno; then
echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make
fi
+
+ if test x$with_profile4 != xyes; then
+ echo "DEFAULT_PROFILE = net_2_0" >> $srcdir/$mcsdir/build/config.make
+ fi
fi
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)
MonoDroid: $with_monodroid
MonoTouch: $with_monotouch
+ Mobile: $with_mobile
JNI support: $jdk_headers_found
libgdiplus: $libgdiplus_msg
zlib: $zlib_msg