X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=fa83802daf358f45b24c775f2ea75c5859d092f4;hb=8d2e3b6a951d80e8c2f85d133ffad5600d2e3294;hp=4f6b66578c5c0c60de5082d10a566b7ced38f8f3;hpb=c5b33960f37ce06ef317d3af8b8dcd7e5026e5a3;p=mono.git diff --git a/configure.in b/configure.in index 4f6b66578c5..fa83802daf3 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,12 @@ 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.99) +AM_INIT_AUTOMAKE(mono,1.1.10) AM_MAINTAINER_MODE AC_PROG_LN_S @@ -20,6 +25,7 @@ dnl gc_headers=no gc=included use_included_gc=no +libgc_configure_args= if test -d $srcdir/libgc ; then gc_default=included @@ -36,6 +42,11 @@ libmono_ldflags="" AC_SUBST(libmono_cflags) AC_SUBST(libmono_ldflags) +# Variable to have relocatable .pc files (lib, or lib64) +reloc_libdir=`basename ${libdir}` +AC_SUBST(reloc_libdir) + + dnl if linker handles the version script no_version_script=no @@ -49,19 +60,21 @@ case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32]) - CC="gcc -mno-cygwin -g" + if test "x$cross_compiling" = "xno"; then + CC="gcc -mno-cygwin -g" + # So libgc configure gets -mno-cygwin + export CC + fi HOST_CC="gcc" - # So libgc configure gets -mno-cygwin - export CC -# latest libgc already defines GC_WIN32_THREADS -# CPPFLAGS="$CPPFLAGS -DGC_WIN32_THREADS -DWIN32_THREADS" - CPPFLAGS="$CPPFLAGS -DWIN32_THREADS" + CPPFLAGS="$CPPFLAGS -DWIN32_THREADS -DFD_SETSIZE=1024" libdl= libgc_threads=win32 gc_default=included with_nptl=default with_sigaltstack=no LN_S=cp + # This forces libgc to use the DllMain based thread registration code on win32 + libgc_configure_args="$libgc_configure_args --enable-win32-dllmain=yes" ;; *-*-*netbsd*) platform_win32=no @@ -95,13 +108,10 @@ case "$host" in AC_DEFINE(PTHREAD_POINTER_ID) libdl= libgc_threads=pthreads -# TLS isn't implemented at all on -STABLE +# TLS isn't implemented at all on 4-STABLE with_nptl=no with_tls=pthread ;; -# older versions of -CURRENT will break with these flags but testing -# indicates these older versions won't run Mono anyway -# *-*-*freebsd5*) platform_win32=no if test "x$PTHREAD_CFLAGS" = "x"; then @@ -112,8 +122,8 @@ case "$host" in libmono_cflags="$PTHREAD_CFLAGS" fi if test "x$PTHREAD_LIBS" = "x"; then - LDFLAGS="$LDFLAGS -lpthread" - libmono_ldflags="-lpthread" + LDFLAGS="$LDFLAGS -pthread" + libmono_ldflags="-pthread" else LDFLAGS="$LDFLAGS $PTHREAD_LIBS" libmono_ldflags="$PTHREAD_LIBS" @@ -121,11 +131,37 @@ case "$host" in need_link_unlink=yes AC_DEFINE(PTHREAD_POINTER_ID) libdl= + with_sigaltstack=yes libgc_threads=pthreads +# TLS is only partially implemented on 5-STABLE (compiler support +# but NOT library support) +# + with_tls=pthread + ;; + *-*-*freebsd6*) + platform_win32=no + if test "x$PTHREAD_CFLAGS" = "x"; then + CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags= + else + CPPFLAGS="$CPPFLAGS $PTHREAD_CFLAGS -DGC_FREEBSD_THREADS" + libmono_cflags="$PTHREAD_CFLAGS" + fi + if test "x$PTHREAD_LIBS" = "x"; then + LDFLAGS="$LDFLAGS -pthread" + libmono_ldflags="-pthread" + else + LDFLAGS="$LDFLAGS $PTHREAD_LIBS" + libmono_ldflags="$PTHREAD_LIBS" + fi + need_link_unlink=yes + AC_DEFINE(PTHREAD_POINTER_ID) + libdl= + libgc_threads=pthreads + with_sigaltstack=yes # TLS is only partially implemented on -CURRENT (compiler support # but NOT library support) # - with_nptl=no with_tls=pthread ;; *-*-*openbsd*) @@ -141,7 +177,7 @@ case "$host" in ;; *-*-linux*) platform_win32=no - CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT" + CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP -DUSE_MUNMAP" libmono_cflags="-D_REENTRANT" libmono_ldflags="-lpthread" libdl="-ldl" @@ -159,7 +195,7 @@ case "$host" in ;; *-*-solaris*) platform_win32=no - CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT" + CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_MMAP -DUSE_MUNMAP" need_link_unlink=yes libmono_cflags="-D_REENTRANT" libgc_threads=pthreads @@ -195,6 +231,7 @@ AC_CHECK_TOOL(CC, gcc, gcc) AC_PROG_CC 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 : ${CCAS='$(CC)'} # Set ASFLAGS if not already set. @@ -221,9 +258,12 @@ AC_SUBST(CC_FOR_BUILD) AC_SUBST(HOST_CC) AC_SUBST(BUILD_EXEEXT) +AM_CONDITIONAL(CROSS_COMPILING, [test x$cross_compiling = xyes]) + # Set STDC_HEADERS AC_HEADER_STDC AC_LIBTOOL_WIN32_DLL +AC_DISABLE_FAST_INSTALL AM_PROG_LIBTOOL # Test whenever ld supports -version-script @@ -235,7 +275,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]) @@ -244,8 +284,37 @@ AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes) # for mono/metadata/debug-symfile.c AC_CHECK_HEADERS(elf.h) +# for support +AC_CHECK_HEADERS(poll.h) +AC_CHECK_HEADERS(sys/poll.h) +AC_CHECK_HEADERS(sys/wait.h) +AC_CHECK_HEADERS(grp.h) +AC_CHECK_HEADERS(syslog.h) + # for mono/dis AC_CHECK_HEADERS(wchar.h) +case "$host" in + *-*-*freebsd6*) + AC_CHECK_HEADERS(ieeefp.h) + ;; + *-*-*freebsd*) + /* Only freebsd6 has a working ieeefp.h */ + ;; + *) + AC_CHECK_HEADERS(ieeefp.h) + ;; +esac +AC_MSG_CHECKING(for isinf) +AC_TRY_LINK([#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) @@ -255,6 +324,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. @@ -276,9 +357,24 @@ fi mcs_topdir='$(top_srcdir)/'$mcsdir mcs_topdir_from_srcdir='$(top_builddir)/'$mcsdir +## Maybe should also disable if mcsdir is invalid. Let's punt the issue for now. +AM_CONDITIONAL(BUILD_MCS, [test x$cross_compiling = xno]) + AC_SUBST([mcs_topdir]) AC_SUBST([mcs_topdir_from_srcdir]) +AC_ARG_WITH([libgdiplus], + [ --with-libgdiplus=installed|sibling| Override the libgdiplus used for System.Drawing tests (defaults to NO)], + [], [with_libgdiplus=installed]) + +case $with_libgdiplus in +no|installed) libgdiplus_loc= ;; +yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;; +/*) libgdiplus_loc=$with_libgdiplus ;; +*) libgdiplus_loc=`pwd`/$with_libgdiplus ;; +esac +AC_SUBST([libgdiplus_loc]) + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test "x$PKG_CONFIG" = "xno"; then AC_MSG_ERROR([You need to install pkg-config]) @@ -291,15 +387,15 @@ BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0` AC_SUBST(BUILD_GLIB_CFLAGS) AC_SUBST(BUILD_GLIB_LIBS) -PKG_PATH= +pkg_config_path= AC_ARG_WITH(crosspkgdir, [ --with-crosspkgdir=/path/to/pkg-config/dir], if test x$with_crosspkgdir = "x"; then if test -s $PKG_CONFIG_PATH; then - PKG_PATH=$PKG_CONFIG_PATH + pkg_config_path=$PKG_CONFIG_PATH fi else - PKG_PATH=$with_crosspkgdir - PKG_CONFIG_PATH=$PKG_PATH + pkg_config_path=$with_crosspkgdir + PKG_CONFIG_PATH=$pkg_config_path export PKG_CONFIG_PATH fi ) @@ -319,7 +415,7 @@ AC_SUBST(GLIB_LIBS) AC_SUBST(GMODULE_CFLAGS) AC_SUBST(GMODULE_LIBS) -if test x$platform_win32 = xyes; then +if test x$cross_compiling$platform_win32 = xnoyes; then AC_MSG_CHECKING(for cygwin glib2-dev package) if [ cygcheck --f /usr/lib/libglib-2.0.dll.a | grep -q glib2-devel ]; then AC_MSG_RESULT(found) @@ -370,8 +466,47 @@ if test "x$enable_static" = "xno"; then with_static_mono=no fi +if test "x$platform_win32" = "xyes"; then + # Boehm GC requires the runtime to be in its own dll + 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= LIBGC_STATIC_LIBS= @@ -435,9 +570,14 @@ case "x$gc" in ;; esac +AC_ARG_WITH(large-heap, [ --with-large-heap=yes,no Enable support for GC heaps larger than 3GB], [large_heap=$withval], [large_heap=no]) +if test "x$large_heap" = "xyes"; then + echo "FOO" + CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG" +fi # tell libgc/configure about what we want -ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads" +ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads=$libgc_threads $libgc_configure_args" AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes) AC_SUBST(LIBGC_CFLAGS) @@ -454,56 +594,17 @@ 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_HEADERS(execinfo.h) AC_CHECK_FUNCS(getgrgid_r) AC_CHECK_FUNCS(getgrnam_r) @@ -512,6 +613,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 *** @@ -522,7 +624,7 @@ if test x$platform_win32 = xno; then # potential compiler bugs. Defines LARGE_FILE_SUPPORT, adds $1 to # CPPFLAGS and sets $large_offt to yes if the test succeeds large_offt=no - AC_DEFUN(LARGE_FILES, [ + AC_DEFUN([LARGE_FILES], [ large_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $1" AC_TRY_RUN([ @@ -639,6 +741,20 @@ if test x$platform_win32 = xno; then AC_MSG_RESULT(no) ]) + dnl ***************************** + dnl *** Checks for IPV6_PKTINFO *** + dnl ***************************** + AC_MSG_CHECKING(for IPV6_PKTINFO) + AC_TRY_COMPILE([#include ], [ + int level = IPV6_PKTINFO; + ], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_IPV6_PKTINFO) + ], [ + AC_MSG_RESULT(no) + ]) + dnl ********************************* dnl *** Check for struct ip_mreqn *** dnl ********************************* @@ -761,6 +877,12 @@ if test x$platform_win32 = xno; then *-*-*freebsd4*) AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") ;; + *-*-*freebsd5*) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") + ;; + *-*-*freebsd6*) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") + ;; *) AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") ;; @@ -790,7 +912,6 @@ if test x$platform_win32 = xno; then else AC_TRY_RUN([ #include - __thread int i; static int res1, res2; @@ -839,7 +960,9 @@ if test x$platform_win32 = xno; then #include #include #include - + #if defined(__FreeBSD__) || defined(__NetBSD__) + #define SA_STACK SA_ONSTACK + #endif static void sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context) { @@ -865,23 +988,23 @@ if test x$platform_win32 = xno; then sa.sa_sigaction = sigsegv_signal_handler; sigemptyset (&sa.sa_mask); - sa.sa_flags = SA_SIGINFO | SA_STACK; + sa.sa_flags = SA_SIGINFO | SA_ONSTACK; if (sigaction (SIGSEGV, &sa, NULL) == -1) { - perror ("lala"); + perror ("sigaction"); return; } sas.ss_sp = malloc (SIGSTKSZ); sas.ss_size = SIGSTKSZ; - sas.ss_flags = SS_ONSTACK; + sas.ss_flags = 0; if (sigaltstack (&sas, NULL) == -1) { - perror ("lala"); + perror ("sigaltstack"); return; } pthread_attr_init (&attr); if (pthread_create(&id, &attr, loop, &attr) != 0) { - printf ("failed\n"); + printf ("pthread_create\n"); return; } @@ -1028,18 +1151,67 @@ if test x$platform_win32 = xno; then AC_DEFINE_UNQUOTED(SIGVAL_PTR,$SIGVAL_PTR,[Pointer field name in 'union sigval']) fi + 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]) + fi + + dnl ****************************** + dnl *** Checks for SIOCGIFCONF *** + dnl ****************************** + AC_CHECK_HEADERS(sys/ioctl.h) + AC_CHECK_HEADERS(net/if.h) + AC_MSG_CHECKING(for ifreq) + AC_TRY_COMPILE([ + #include + #include + ], [ + struct ifconf ifc; + struct ifreq *ifr; + void *x; + ifc.ifc_len = 0; + ifc.ifc_buf = NULL; + x = (void *) &ifr->ifr_addr; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SIOCGIFCONF, 1, [Can get interface list]) + ], [ + AC_MSG_RESULT(no) + ]) dnl ********************************** dnl *** Checks for MonoPosixHelper *** dnl ********************************** - AC_CHECK_FUNCS(posix_fadvise) - AC_CHECK_FUNCS(posix_madvise) - AC_CHECK_FUNCS(posix_fallocate) + AC_CHECK_HEADERS(checklist.h) + AC_CHECK_HEADERS(fstab.h) + AC_CHECK_HEADERS(attr/xattr.h) + AC_CHECK_HEADERS(sys/extattr.h) + AC_CHECK_HEADERS(sys/sendfile.h) + AC_CHECK_HEADERS(sys/statvfs.h) + AC_CHECK_HEADERS(sys/vfstab.h) + AC_CHECK_HEADERS(sys/xattr.h) + AC_CHECK_FUNCS(getdomainname) + AC_CHECK_FUNCS(setdomainname) AC_CHECK_FUNCS(fgetgrent) AC_CHECK_FUNCS(fgetpwent) AC_CHECK_FUNCS(fgetpwent) - AC_CHECK_HEADERS(sys/sendfile.h) + AC_CHECK_FUNCS(getfsstat) + AC_CHECK_FUNCS(mremap) + AC_CHECK_FUNCS(remap_file_pages) + 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) @@ -1048,6 +1220,23 @@ if test x$platform_win32 = xno; then [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, [#include #include ]) + + dnl Favour xattr through glibc, but use libattr if we have to + AC_CHECK_FUNC(lsetxattr, , + AC_CHECK_LIB(attr, lsetxattr, XATTR_LIB="-lattr",) + ) + AC_SUBST(XATTR_LIB) + + 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?)) @@ -1199,44 +1388,22 @@ if test "x$try_shared_handles" != "xyes"; then AC_SUBST(DISABLE_SHARED_HANDLES) fi -# -# ICU -# -ICU_CFLAGS="" -ICU_LIBS="" -enable_icu=no - -probe_icu=true -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 $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" - else - enable_icu="yes. Version: `$ICU_CONFIG --version`" - AC_DEFINE(HAVE_ICU) - ICU_CFLAGS=`$ICU_CONFIG --cppflags` - ICU_LIBS=`$ICU_CONFIG --ldflags` - fi -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" +SQLITE="libsqlite.so.0" +SQLITE3="libsqlite3.so.0" +X11="libX11.so" jit_wanted=false +interp_wanted=false case "$host" in # mips-sgi-irix5.* | mips-sgi-irix6.*) # TARGET=MIPS; @@ -1254,6 +1421,16 @@ case "$host" in JIT_SUPPORTED=yes jit_wanted=true ;; + ia64-*-*) + TARGET=IA64 + arch_target=ia64 + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + jit_wanted=true + LIBC="libc.so.6.1" + AC_CHECK_LIB(unwind, _U_dyn_register, [], [AC_MSG_ERROR(library libunwind not found)]) + libmono_ldflags="-lunwind" + ;; sparc*-*-*) if test "x$ac_cv_sizeof_void_p" = "x8"; then TARGET=SPARC64 @@ -1263,60 +1440,73 @@ case "$host" in arch_target=sparc; JIT_SUPPORTED=yes ACCESS_UNALIGNED="no" - LIBC="libc.so" - INTL="libintl.so" + case $host_os in + linux*) ;; + *) + LIBC="libc.so" + INTL="libintl.so" + esac 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; + case $host_os in + linux*) + LIBC="libc.so.6.1" + INTL="libc.so.6.1" + esac ;; -# ia64-*-linux* | ia64-*-hpux*) -# TARGET=IA64; -# arch_target=ia64; -# JIT_SUPPORTED=no; -# ACCESS_UNALIGNED="no"; -# case "$host_os" in -# linux*) LIBC="libc.so.6.1";; -# hpux*) LIBC="libc.so.1";; -# esac -# ;; -# m68k-*-linux*) -# TARGET=M68K -# ;; + *-*-mingw*|*-*-cygwin*) + 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" + 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 ;; - arm-*-linux-* | armv4l-*-linux-*) + arm*-linux*) TARGET=ARM; arch_target=arm; ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + jit_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 @@ -1331,16 +1521,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 test x$interp_wanted = xtrue; 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) @@ -1348,10 +1554,13 @@ AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue) libsuffix=".so" case "$host" in - powerpc-*-darwin*) + *-*-darwin*) libsuffix=".dylib" LIBC="libc.dylib" INTL="libintl.dylib" + SQLITE="libsqlite.0.dylib" + SQLITE3="libsqlite3.0.dylib" + X11="libX11.dylib" ;; *-*-*netbsd*) LIBC="libc.so.12" @@ -1365,7 +1574,25 @@ case "$host" in LIBC="libc.so" INTL="libintl.so" ;; + *-*-*linux*) + AC_PATH_X + AC_MSG_CHECKING(for the soname of libX11.so) + for i in $x_libraries /usr/lib /usr/lib64; do + for r in 4 5 6; do + if test -f $i/libX11.so.$r; then + X11=libX11.so.$r + AC_MSG_RESULT($X11) + fi + done + 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...]); + fi + ;; esac + + AC_SUBST(libsuffix) if test "x$TARGET" != "xAMD64"; then @@ -1382,8 +1609,8 @@ if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then # rm -f conftest.c conftest.so conftest echo "static __thread int foo; void main () { foo = 5; }" > conftest.c - gcc -fPIC --shared -o conftest.so conftest.c > /dev/null 2>&1 - gcc -o conftest conftest.so > /dev/null 2>&1 + $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 AC_MSG_WARN([Disabling usage of __thread.]); with_tls=pthread @@ -1397,6 +1624,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 @@ -1427,10 +1662,10 @@ if test ${ACCESS_UNALIGNED} = no; then CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS" fi -PREVIEW=no +PREVIEW=yes AC_ARG_WITH(preview, [ --with-preview=yes,no If you want to install the 2.0 FX preview],[ - if test x$with_preview = xyes; then - PREVIEW=yes + if test x$with_preview = xno; then + PREVIEW=no fi ]) @@ -1452,10 +1687,14 @@ 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) AC_SUBST(INTL) +AC_SUBST(SQLITE) +AC_SUBST(SQLITE3) +AC_SUBST(X11) AC_SUBST(arch_target) AC_SUBST(CFLAGS) @@ -1481,6 +1720,8 @@ fi AC_SUBST(mono_cfg_dir) AC_CONFIG_FILES([runtime/mono-wrapper],[chmod +x runtime/mono-wrapper]) +AC_CONFIG_FILES([runtime/monodis-wrapper],[chmod +x runtime/monodis-wrapper]) +AC_CONFIG_FILES([runtime/semdel-wrapper],[chmod +x runtime/semdel-wrapper]) AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config], [ depth=../../../.. @@ -1514,6 +1755,11 @@ AC_OUTPUT([ Makefile mint.pc mono.pc +dotnet.pc +mono-uninstalled.pc +scripts/mono-nunit.pc +scripts/mono-find-provides +scripts/mono-find-requires mono/Makefile mono/utils/Makefile mono/metadata/Makefile @@ -1532,6 +1778,7 @@ mono/arch/s390/Makefile mono/arch/s390x/Makefile mono/arch/arm/Makefile mono/arch/alpha/Makefile +mono/arch/ia64/Makefile mono/interpreter/Makefile mono/tests/Makefile mono/tests/tests-config @@ -1539,11 +1786,10 @@ mono/benchmark/Makefile mono/monoburg/Makefile mono/monograph/Makefile mono/io-layer/Makefile -mono/handles/Makefile mono/mini/Makefile +mono/handles/Makefile mono/profiler/Makefile -ikvm-jni/Makefile -runtime/Makefile +ikvm-native/Makefile scripts/Makefile man/Makefile web/Makefile @@ -1554,19 +1800,66 @@ data/net_2_0/Makefile samples/Makefile support/Makefile data/config -mono.spec tools/Makefile tools/locale-builder/Makefile +runtime/Makefile ]) +if test x$platform_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 + # libtool seems to inherit -mno-cygwin from our CFLAGS, and uses it to compile its executable + # wrapper scripts which use exec(). gcc has no problem compiling+linking this, but the resulting + # executable doesn't work... + sed -e "s,-mno-cygwin,,g" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool +fi + +( + case $prefix in + NONE) prefix=$ac_default_prefix ;; + esac + case $exec_prefix in + NONE) exec_prefix='${prefix}' ;; + esac + + test -w $srcdir/$mcsdir/build || chmod +w $srcdir/$mcsdir/build + + # + # If we are cross compiling, we don't build in the mcs/ tree. Let us not clobber + # any existing config.make. This allows people to share the same source tree + # with different build directories, one native and one cross + # + if test x$cross_compiling = xno; then + echo "prefix=$prefix" > $srcdir/$mcsdir/build/config.make + echo "exec_prefix=$exec_prefix" >> $srcdir/$mcsdir/build/config.make + echo 'mono_libdir=${exec_prefix}/lib' >> $srcdir/$mcsdir/build/config.make + echo 'MCS_FLAGS = $(PLATFORM_DEBUG_FLAGS)' >> $srcdir/$mcsdir/build/config.make + echo 'IL_FLAGS = /debug' >> $srcdir/$mcsdir/build/config.make + echo "RUNTIME = $mono_build_root/runtime/mono-wrapper" >> $srcdir/$mcsdir/build/config.make + echo "ILDISASM = $mono_build_root/runtime/monodis-wrapper" >> $srcdir/$mcsdir/build/config.make + echo "INSTALL = $INSTALL" >> $srcdir/$mcsdir/build/config.make + + export VERSION + [myver=$($AWK 'BEGIN { + split (ENVIRON["VERSION"] ".0.0.0", vsplit, ".") + print vsplit [1] "." vsplit [2] "." vsplit [3] "." vsplit [4] + }')] + + echo "MONO_VERSION = $myver" >> $srcdir/$mcsdir/build/config.make + fi +) + +libgdiplus_msg=${libgdiplus_loc:-assumed to be installed} + echo " mcs source: $mcs_topdir GC: $gc - ICU: $enable_icu TLS: $with_tls SIGALTSTACK: $with_sigaltstack Engine: $jit_status 2.0 Alpha: $PREVIEW JNI support: $jdk_headers_found + libgdiplus: $libgdiplus_msg + $disabled "