X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=87b91f475d828ecbdb16f5af47e55888c2f8df5c;hb=22a2a3e5ab09ed92111816607a96f003e497c769;hp=93b2e5a2ce9743e29785c2b884323265666ec470;hpb=9bdedfb125e0f8c5af87aa14bfc05f0fd9eca13d;p=mono.git diff --git a/configure.in b/configure.in index 93b2e5a2ce9..87b91f475d8 100644 --- a/configure.in +++ b/configure.in @@ -6,7 +6,7 @@ AC_CANONICAL_SYSTEM m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])]) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(mono,1.1.6.5) +AM_INIT_AUTOMAKE(mono,1.1.13) AM_MAINTAINER_MODE AC_PROG_LN_S @@ -25,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 @@ -41,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 @@ -54,12 +60,12 @@ 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 -DFD_SETSIZE=1024" libdl= libgc_threads=win32 @@ -67,6 +73,8 @@ case "$host" in 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 @@ -169,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" @@ -187,14 +195,14 @@ case "$host" in ;; *-*-solaris*) platform_win32=no - CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS" + 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 ;; *-*-darwin*) platform_win32=no - CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS" + CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE -DGC_MACOSX_THREADS -DPLATFORM_MACOSX" libmono_cflags="-D_THREAD_SAFE" LDFLAGS="$LDFLAGS -pthread" libmono_ldflags="-pthread" @@ -223,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. @@ -240,18 +249,25 @@ dnl may require a specific autoconf version dnl AC_PROG_CC_FOR_BUILD dnl CC_FOR_BUILD not automatically detected CC_FOR_BUILD=$CC +CFLAGS_FOR_BUILD=$CFLAGS BUILD_EXEEXT= if test "x$cross_compiling" = "xyes"; then CC_FOR_BUILD=cc + CFLAGS_FOR_BUILD= BUILD_EXEEXT="" fi AC_SUBST(CC_FOR_BUILD) +AC_SUBST(CFLAGS_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 +# This causes monodis to not link correctly +#AC_DISABLE_FAST_INSTALL AM_PROG_LIBTOOL # Test whenever ld supports -version-script @@ -345,6 +361,9 @@ 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]) @@ -400,7 +419,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) @@ -451,6 +470,11 @@ 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. @@ -557,7 +581,7 @@ if test "x$large_heap" = "xyes"; then 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) @@ -584,6 +608,8 @@ if test x$platform_win32 = xno; then AC_SUBST(ikvm_native_dir) + AC_CHECK_HEADERS(execinfo.h) + AC_CHECK_FUNCS(getgrgid_r) AC_CHECK_FUNCS(getgrnam_r) AC_CHECK_FUNCS(getpwnam_r) @@ -602,7 +628,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([ @@ -719,6 +745,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 ********************************* @@ -1125,21 +1165,56 @@ if test x$platform_win32 = xno; 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_FUNC(setkey, , + AC_CHECK_LIB(crypt, setkey, [ + AC_DEFINE(HAVE_SETKEY, 1, [Define if setkey(3) is available]) + CRYPT_LIBS="-lcrypt" + ]) + ) + AC_SUBST(CRYPT_LIBS) 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_HEADERS(sys/mman.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(lutimes) + 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) @@ -1159,6 +1234,12 @@ if test x$platform_win32 = xno; then [#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 ********************************* @@ -1169,6 +1250,10 @@ if test x$platform_win32 = xno; then #endif ]) AC_CHECK_HEADERS([termios.h]) + + dnl * This is provided in io-layer, but on windows it's only available + dnl * on xp+ + AC_DEFINE(HAVE_GETPROCESSID, 1, [Define if GetProcessId is available]) else jdk_headers_found=no AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?)) @@ -1202,6 +1287,7 @@ else AC_MSG_RESULT(no) ]) ]) + AC_CHECK_FUNCS(GetProcessId) fi dnl socklen_t check @@ -1320,38 +1406,6 @@ if test "x$try_shared_handles" != "xyes"; then AC_SUBST(DISABLE_SHARED_HANDLES) fi -# -# ICU -# -ICU_CFLAGS="" -ICU_LIBS="" -enable_glob="normal; default" - -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 - enable_glob="ICU not found, using non-ICU globalization code." - else - enable_glob="ICU, unsupported. 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]) @@ -1362,6 +1416,9 @@ 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 @@ -1375,6 +1432,11 @@ case "$host" in arch_target=x86; JIT_SUPPORTED=yes jit_wanted=true + case $host_os in + solaris*) + LIBC="libc.so" + INTL="libintl.so" + esac ;; x86_64-*-* | amd64-*-*) TARGET=AMD64; @@ -1382,6 +1444,17 @@ 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" + INTL="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 @@ -1391,8 +1464,12 @@ 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" @@ -1405,23 +1482,15 @@ case "$host" in 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 ;; *-*-mingw*|*-*-cygwin*) INTL="intl" ;; -# 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 -# ;; hppa2.0w-hp-hpux11.00 | hppa64-hp-hpux11.00) TARGET=HPPA; arch_target=hppa; @@ -1445,12 +1514,12 @@ case "$host" in JIT_SUPPORTED=yes jit_wanted=true ;; - arm-*-linux-* | armv4l-*-linux-*) + arm*-linux*) TARGET=ARM; arch_target=arm; ACCESS_UNALIGNED="no" - INTERP_SUPPORTED=yes - interp_wanted=true + JIT_SUPPORTED=yes + jit_wanted=true ;; s390-*-linux*) TARGET=S390; @@ -1497,7 +1566,7 @@ if test x$JIT_SUPPORTED = xyes; then fi fi else - if $interp_wanted; then + if test x$interp_wanted = xtrue; then jit_status="interpreter" else AC_ERROR(No JIT or interpreter support available or selected.) @@ -1509,10 +1578,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" @@ -1526,7 +1598,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 @@ -1543,8 +1633,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 @@ -1553,6 +1643,22 @@ if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then fi fi +mono_debugger_supported=no +if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then + case "$host" in + *-*-*linux*) + mono_debugger_supported=yes + ;; + esac +fi + +AC_MSG_CHECKING(if the Mono Debugger is supported on this platform) +if test "x$mono_debugger_supported" = "xyes"; then + AC_DEFINE(MONO_DEBUGGER_SUPPORTED,1,[The Mono Debugger is supported on this platform]) +fi +AC_MSG_RESULT($mono_debugger_supported) +AM_CONDITIONAL(MONO_DEBUGGER_SUPPORTED, test x$mono_debugger_supported = xyes) + if test "x$with_tls" = "x__thread"; then AC_DEFINE(HAVE_KW_THREAD) # Pass the information to libgc @@ -1626,6 +1732,9 @@ 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) @@ -1652,6 +1761,7 @@ 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=../../../.. @@ -1685,7 +1795,12 @@ AC_OUTPUT([ Makefile mint.pc mono.pc +mono-cairo.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 @@ -1704,6 +1819,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 @@ -1725,24 +1841,59 @@ 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}' ;; + NONE) exec_prefix='${prefix}' ;; esac - 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 + 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 + + case $INSTALL in + [[\\/$]]* | ?:[[\\/]]* ) mcs_INSTALL=$INSTALL ;; + *) mcs_INSTALL=$mono_build_root/$INSTALL ;; + esac + + echo "INSTALL = $mcs_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} @@ -1750,7 +1901,6 @@ libgdiplus_msg=${libgdiplus_loc:-assumed to be installed} echo " mcs source: $mcs_topdir GC: $gc - Globalization: $enable_glob TLS: $with_tls SIGALTSTACK: $with_sigaltstack Engine: $jit_status