X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=66bcacc9596c0299f156a8aaa2d11f8ac446d4c9;hb=a8d9ca9c379b2d87b8d39c573bedc328d3af2fc0;hp=f41c9a561cacbab93302c1f729eee1769a3123d9;hpb=24c15a5dd1af5a324ff0db179d31e2a62f38cb40;p=mono.git diff --git a/configure.in b/configure.in index f41c9a561ca..66bcacc9596 100644 --- a/configure.in +++ b/configure.in @@ -1,11 +1,23 @@ AC_INIT(README) AC_CANONICAL_SYSTEM + +# 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,1.1.2) +AM_INIT_AUTOMAKE(mono,1.1.5) AM_MAINTAINER_MODE AC_PROG_LN_S +# 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 +*cygwin* ) LN_S='cp -p';; +esac + + dnl dnl libgc checks dnl @@ -228,7 +240,7 @@ fi AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes) -AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h) +AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h linux/rtc.h) AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no]) @@ -239,6 +251,18 @@ AC_CHECK_HEADERS(elf.h) # for mono/dis AC_CHECK_HEADERS(wchar.h) +AC_CHECK_HEADERS(ieeefp.h) +AC_MSG_CHECKING(for isinf) +AC_TRY_COMPILE([#include ], [ + int f = isinf (1); +], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ISINF, 1, [isinf available]) +], [ + # We'll have to use signals + AC_MSG_RESULT(no) +]) + # not 64 bit clean in cross-compile AC_CHECK_SIZEOF(void *, 4) @@ -248,6 +272,18 @@ if test x"$GCC" = xyes; then WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wcast-align -Wwrite-strings' # 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_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + CFLAGS=$ORIG_CFLAGS + ]) else # The Sun Forte compiler complains about inline functions that access static variables # so disable all inlining. @@ -357,13 +393,47 @@ fi # This does not work on some platforms (bug #55253) AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack],[],[with_sigaltstack=no]) -# assembly bundle support, see metadata/make-bundle.pl for more info -AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[ - BUNDLE_FILE=$with_bundle - AC_SUBST(BUNDLE_FILE) - AC_DEFINE(WITH_BUNDLE) -],[with_bundle=no]) -AM_CONDITIONAL(WITH_BUNDLE, test x$with_bundle != xno) +AC_ARG_WITH(static_mono, [ --with-static_mono=yes,no link mono statically to libmono (faster)],[],[with_static_mono=yes]) + +if test "x$enable_static" = "xno"; then + with_static_mono=no +fi + +AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno) + +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.], +[ + for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do + eval "mono_feature_disable_$feature='yes'" + AC_MSG_NOTICE([Disabled support for feature: $feature]) + done + disabled="Disabled: $enable_minimal" +],[]) + +if test "x$mono_feature_disable_aot" = "xyes"; then + AC_DEFINE(DISABLE_AOT, 1, [Disable AOT support]) +fi + +if test "x$mono_feature_disable_profiler" = "xyes"; then + AC_DEFINE(DISABLE_PROFILER, 1, [Disable default profiler support]) +fi + +if test "x$mono_feature_disable_decimal" = "xyes"; then + AC_DEFINE(DISABLE_DECIMAL, 1, [Disable System.Decimal support]) +fi + +if test "x$mono_feature_disable_pinvoke" = "xyes"; then + AC_DEFINE(DISABLE_PINVOKE, 1, [Disable P/Invoke support]) +fi + +if test "x$mono_feature_disable_debug" = "xyes"; then + AC_DEFINE(DISABLE_DEBUG, 1, [Disable runtime debugging support]) +fi + +if test "x$mono_feature_disable_reflection_emit" = "xyes"; then + AC_DEFINE(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support]) +fi LIBGC_CFLAGS= LIBGC_LIBS= @@ -447,56 +517,15 @@ if test x$platform_win32 = xno; then dnl ****************************************************************** dnl *** Checks for the IKVM JNI interface library *** dnl ****************************************************************** - AC_ARG_WITH(ikvm-jni, [ --with-ikvm-jni=yes,no build the IKVM JNI interface library],[with_ikvm_jni=$withval],[with_ikvm_jni=yes]) - AC_ARG_WITH(jdk, [ --with-jdk=DIRECTORY Use JDK from DIRECTORY],[with_jdk_dir=$withval],[with_jdk_dir=]) - - ikvm_jni_dir= - if test x$with_ikvm_jni = xyes; then - AC_MSG_CHECKING([JDK headers]) + AC_ARG_WITH(ikvm-native, [ --with-ikvm-native=yes,no build the IKVM JNI interface library],[with_ikvm_native=$withval],[with_ikvm_native=yes]) - if test x$with_jdk_dir = x; then - # Try JAVA_HOME variable - if test x$JAVA_HOME != x; then - with_jdk_dir=$JAVA_HOME - fi - fi - - jdk_platform= - if test -d $with_jdk_dir/include; then - jdk_headers_found=yes - - if test -d $with_jdk_dir/include/linux; then - jdk_platform=linux - else - if test -d $with_jdk_dir/include/solaris; then - jdk_platform=solaris - else - if test -f $with_jdk_dir/include/jni_md.h; then - # GNU Classpath sources - jdk_platform= - else - jdk_headers_found=no - fi - fi - fi - else - jdk_headers_found=no - fi - - if test x$jdk_headers_found = xyes; then - AC_MSG_RESULT($with_jdk_dir/include $with_jdk_dir/include/$jdk_platform) - else - AC_MSG_RESULT(not found) - fi - - if test x$jdk_headers_found = xyes; then - ikvm_jni_dir=ikvm-jni - IKVM_JNI_CFLAGS="-I$with_jdk_dir/include -I$with_jdk_dir/include/$jdk_platform" - fi + ikvm_native_dir= + if test x$with_ikvm_native = xyes; then + ikvm_native_dir=ikvm-native + jdk_headers_found="IKVM Native" fi - AC_SUBST(ikvm_jni_dir) - AC_SUBST(IKVM_JNI_CFLAGS) + AC_SUBST(ikvm_native_dir) AC_CHECK_FUNCS(getgrgid_r) AC_CHECK_FUNCS(getgrnam_r) @@ -505,6 +534,7 @@ if test x$platform_win32 = xno; then AC_CHECK_FUNCS(getresuid) AC_CHECK_FUNCS(setresuid) AC_CHECK_FUNCS(kqueue) + AC_CHECK_FUNCS(backtrace_symbols) dnl ****************************************************************** dnl *** Check for large file support *** @@ -1020,6 +1050,50 @@ if test x$platform_win32 = xno; then fi AC_DEFINE_UNQUOTED(SIGVAL_PTR,$SIGVAL_PTR,[Pointer field name in 'union sigval']) fi + + dnl ********************************** + dnl *** Checks for MonoPosixHelper *** + dnl ********************************** + AC_CHECK_HEADERS(checklist.h) + AC_CHECK_HEADERS(fstab.h) + AC_CHECK_HEADERS(sys/sendfile.h) + AC_CHECK_HEADERS(sys/statvfs.h) + AC_CHECK_HEADERS(sys/vfstab.h) + AC_CHECK_FUNCS(getdomainname) + AC_CHECK_FUNCS(setdomainname) + AC_CHECK_FUNCS(fgetgrent) + AC_CHECK_FUNCS(fgetpwent) + AC_CHECK_FUNCS(fgetpwent) + AC_CHECK_FUNCS(getfsstat) + AC_CHECK_FUNCS(posix_fadvise) + AC_CHECK_FUNCS(posix_fallocate) + AC_CHECK_FUNCS(posix_madvise) + AC_CHECK_FUNCS(vsnprintf) + AC_CHECK_FUNCS(sendfile) + AC_CHECK_FUNCS(sethostid) + AC_CHECK_FUNCS(statfs) + AC_CHECK_FUNCS(fstatfs) + AC_CHECK_FUNCS(statvfs) + AC_CHECK_FUNCS(fstatvfs) + AC_CHECK_FUNCS(stime) + AC_CHECK_FUNCS(strerror_r) + AC_CHECK_FUNCS(ttyname_r) + AC_CHECK_SIZEOF(size_t) + AC_CHECK_MEMBERS( + [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, + [#include + #include ]) + + dnl ********************************* + dnl *** Check for Console 2.0 I/O *** + dnl ********************************* + AC_CHECK_HEADERS([curses.h]) + AC_CHECK_HEADERS([term.h], [], [], + [#if HAVE_CURSES_H + #include + #endif + ]) + AC_CHECK_HEADERS([termios.h]) else jdk_headers_found=no AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?)) @@ -1176,23 +1250,25 @@ fi # ICU_CFLAGS="" ICU_LIBS="" -enable_icu=no +enable_glob="normal; default" -probe_icu=true +probe_icu=false AC_ARG_WITH(icu, [ --with-icu=yes/no], if test x$with_icu = xno; then probe_icu=false; AC_MSG_RESULT(Will not probe for ICU) fi + if test x$with_icu = xyes; then + probe_icu=true; + fi ) if $probe_icu; then AC_PATH_PROG(ICU_CONFIG, icu-config, no) if test "x$ICU_CONFIG" = "xno" -o ! -x "$ICU_CONFIG"; then - AC_MSG_WARN([Only invariant locale available; install ICU for I18N support]) - enable_icu="no, if you want full i18n support download it from: http://oss.software.ibm.com/icu/index.html" + enable_glob="ICU not found, using non-ICU globalization code." else - enable_icu="yes. Version: `$ICU_CONFIG --version`" + enable_glob="ICU, unsupported. Version: `$ICU_CONFIG --version`" AC_DEFINE(HAVE_ICU) ICU_CFLAGS=`$ICU_CONFIG --cppflags` ICU_LIBS=`$ICU_CONFIG --ldflags` @@ -1201,14 +1277,19 @@ fi AC_SUBST(ICU_CFLAGS) AC_SUBST(ICU_LIBS) +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]) + TARGET="unknown" ACCESS_UNALIGNED="yes" JIT_SUPPORTED=no +INTERP_SUPPORTED=no LIBC="libc.so.6" INTL="libc.so.6" jit_wanted=false +interp_wanted=false case "$host" in # mips-sgi-irix5.* | mips-sgi-irix6.*) # TARGET=MIPS; @@ -1238,13 +1319,21 @@ case "$host" in LIBC="libc.so" INTL="libintl.so" jit_wanted=true + if test x"$GCC" = xyes; then + CFLAGS="$CFLAGS -Wno-cast-align" + fi ;; alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA; ACCESS_UNALIGNED="no" JIT_SUPPORTED=no + INTERP_SUPPORTED=yes + interp_wanted=true arch_target=alpha; ;; + *-*-mingw*|*-*-cygwin*) + INTL="intl" + ;; # ia64-*-linux* | ia64-*-hpux*) # TARGET=IA64; # arch_target=ia64; @@ -1263,15 +1352,20 @@ case "$host" in 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" + INTERP_SUPPORTED=yes + interp_wanted=true ;; macppc-*-openbsd* | powerpc-*-linux* | powerpc-*-openbsd* | \ powerpc-*-sysv* | powerpc-*-darwin*) TARGET=POWERPC; + AC_DEFINE(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters]) arch_target=ppc; JIT_SUPPORTED=yes jit_wanted=true @@ -1280,15 +1374,19 @@ case "$host" in TARGET=ARM; arch_target=arm; ACCESS_UNALIGNED="no" + INTERP_SUPPORTED=yes + interp_wanted=true ;; s390-*-linux*) TARGET=S390; + AC_DEFINE(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters]) arch_target=s390; ACCESS_UNALIGNED="no" JIT_SUPPORTED=yes ;; s390x-*-linux*) TARGET=S390x; + AC_DEFINE(MONO_ARCH_REGPARMS,1,[Architecture uses registers for Parameters]) arch_target=s390x; ACCESS_UNALIGNED="no" JIT_SUPPORTED=yes @@ -1303,16 +1401,32 @@ AC_ARG_WITH(jit, [ --with-jit=yes,no If you want to build scripts that de fi ]) +AC_ARG_WITH(interp, [ --with-interp=yes,no If you want to build scripts that default to the interpreter],[ + if test x$withval = xyes; then + interp_wanted=true + else + interp_wanted=false + fi +]) + USEJIT=false if test x$JIT_SUPPORTED = xyes; then if $jit_wanted; then USEJIT=true jit_status="Building and using the JIT" else - jit_status="Building the JIT, defaulting to the interpreter" + if $interp_wanted; then + jit_status="Building the JIT, defaulting to the interpreter" + else + AC_ERROR(No JIT or interpreter support available or selected.) + fi fi else - jit_status="interpreter" + if $interp_wanted; then + jit_status="interpreter" + else + AC_ERROR(No JIT or interpreter support available or selected.) + fi fi AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue) @@ -1369,6 +1483,14 @@ if test "x$with_tls" = "x__thread"; then # Pass the information to libgc CPPFLAGS="$CPPFLAGS -DUSE_COMPILER_TLS" export CPPFLAGS + AC_MSG_CHECKING(if the tls_model attribute is supported) + 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]) + ], [ + AC_MSG_RESULT(no) + ]) fi if test ${TARGET} = ARM; then @@ -1424,6 +1546,7 @@ AM_CONDITIONAL(S390x, test x$TARGET = xS390x) AM_CONDITIONAL(HPPA, test x$TARGET = xHPPA) AM_CONDITIONAL(JIT_SUPPORTED, test x$JIT_SUPPORTED = xyes) +AM_CONDITIONAL(INTERP_SUPPORTED, test x$interp_wanted = xtrue) AM_CONDITIONAL(INCLUDED_LIBGC, test x$gc = xincluded) AC_SUBST(LIBC) @@ -1434,10 +1557,59 @@ AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) +mono_build_root=`pwd` +AC_SUBST(mono_build_root) + +if test x$USEJIT = xtrue; then + mono_runtime=mono/mini/mono +else + mono_runtime=mono/interpreter/mint +fi +AC_SUBST(mono_runtime) + +mono_cfg_root=$mono_build_root/runtime +if test x$platform_win32 = xyes; then + mono_cfg_dir=`cygpath -w -a $mono_cfg_root`\\etc +else + mono_cfg_dir=$mono_cfg_root/etc +fi +AC_SUBST(mono_cfg_dir) + +AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper]) + +AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config], +[ depth=../../../.. + case $srcdir in + [\\/$]* | ?:[\\/]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/1.0 + cd runtime/etc/mono/1.0 + rm -f machine.config + $LN_S $reldir/data/net_1_1/machine.config machine.config + cd $depth +],[LN_S='$LN_S']) + +AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config], +[ depth=../../../.. + case $srcdir in + [\\/$]* | ?:[\\/]* ) reldir=$srcdir ;; + .) reldir=$depth ;; + *) reldir=$depth/$srcdir ;; + esac + $ac_aux_dir/install-sh -d runtime/etc/mono/2.0 + cd runtime/etc/mono/2.0 + rm -f machine.config + $LN_S $reldir/data/net_2_0/machine.config machine.config + cd $depth +],[LN_S='$LN_S']) + AC_OUTPUT([ Makefile mint.pc mono.pc +scripts/mono-nunit.pc mono/Makefile mono/utils/Makefile mono/metadata/Makefile @@ -1466,10 +1638,7 @@ mono/io-layer/Makefile mono/handles/Makefile mono/mini/Makefile mono/profiler/Makefile -ikvm-jni/Makefile -runtime/Makefile -runtime/net_1_1/Makefile -runtime/net_2_0/Makefile +ikvm-native/Makefile scripts/Makefile man/Makefile web/Makefile @@ -1483,16 +1652,32 @@ data/config mono.spec tools/Makefile tools/locale-builder/Makefile +runtime/Makefile ]) +( + case $prefix in + NONE) prefix=/usr/local ;; + esac + case $exec_prefix in + NONE | '${prefix}') exec_prefix=$prefix ;; + esac + + echo "prefix=$prefix" > $srcdir/$mcsdir/build/config.make + echo "exec_prefix=$exec_prefix" >> $srcdir/$mcsdir/build/config.make + echo "libdir=$libdir" >> $srcdir/$mcsdir/build/config.make + echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$mcsdir/build/config.make +) + echo " mcs source: $mcs_topdir GC: $gc - ICU: $enable_icu + Globalization: $enable_glob TLS: $with_tls SIGALTSTACK: $with_sigaltstack Engine: $jit_status 2.0 Alpha: $PREVIEW JNI support: $jdk_headers_found + $disabled "