X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=6cd2572ca5bd534d052cf569f82bf8ca4d3015f8;hb=b2be5db48a1ab501c8116e8a547568332d8fd09a;hp=62675cb37cfc5ea5e2d8b17d30441acfd61537d5;hpb=37123e347e573dff2932cbb6b7be93f8873df599;p=mono.git diff --git a/configure.in b/configure.in index 62675cb37cf..6cd2572ca5b 100644 --- a/configure.in +++ b/configure.in @@ -1,11 +1,18 @@ AC_INIT(README) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(mono,1.0) +AM_INIT_AUTOMAKE(mono,1.1.2.99) 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 @@ -42,7 +49,7 @@ case "$host" in *-*-mingw*|*-*-cygwin*) platform_win32=yes AC_DEFINE(PLATFORM_WIN32,1,[Platform is Win32]) - CC="gcc -mno-cygwin" + CC="gcc -mno-cygwin -g" HOST_CC="gcc" # So libgc configure gets -mno-cygwin export CC @@ -51,11 +58,10 @@ case "$host" in CPPFLAGS="$CPPFLAGS -DWIN32_THREADS" libdl= libgc_threads=win32 - gc_default=boehm - with_nptl=no + gc_default=included + with_nptl=default with_sigaltstack=no LN_S=cp - ;; *-*-*netbsd*) platform_win32=no @@ -69,7 +75,7 @@ case "$host" in ;; # these flags will work for all versions of -STABLE # - *-*-*freebsd4) + *-*-*freebsd4*) platform_win32=no if test "x$PTHREAD_CFLAGS" = "x"; then CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_FREEBSD_THREADS" @@ -91,11 +97,12 @@ case "$host" in libgc_threads=pthreads # TLS isn't implemented at all on -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) + *-*-*freebsd5*) platform_win32=no if test "x$PTHREAD_CFLAGS" = "x"; then CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS" @@ -119,6 +126,7 @@ case "$host" in # but NOT library support) # with_nptl=no + with_tls=pthread ;; *-*-*openbsd*) platform_win32=no @@ -229,8 +237,9 @@ 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) -# for mono/mini/tramp-x86.c -AC_CHECK_HEADERS(valgrind/memcheck.h) +AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no]) + +AM_CONDITIONAL(HAVE_ZLIB, test x$have_zlib = xyes) # for mono/metadata/debug-symfile.c AC_CHECK_HEADERS(elf.h) @@ -257,6 +266,19 @@ else fi CFLAGS="$CFLAGS -g $WARN" +# Where's the 'mcs' source tree? +if test -d $srcdir/mcs; then + mcsdir=mcs +else + mcsdir=../mcs +fi + +mcs_topdir='$(top_srcdir)/'$mcsdir +mcs_topdir_from_srcdir='$(top_builddir)/'$mcsdir + +AC_SUBST([mcs_topdir]) +AC_SUBST([mcs_topdir_from_srcdir]) + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) if test "x$PKG_CONFIG" = "xno"; then AC_MSG_ERROR([You need to install pkg-config]) @@ -297,6 +319,27 @@ AC_SUBST(GLIB_LIBS) AC_SUBST(GMODULE_CFLAGS) AC_SUBST(GMODULE_LIBS) +if test x$platform_win32 = xyes; 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) + AC_MSG_ERROR([Mono cannot be built with the cygwin glib2-devel package installed, because that package doesn't work with -mno-cygwin. Please uninstall it then re-run configure.]) + else + AC_MSG_RESULT(not found, ok) + fi + + AC_MSG_CHECKING(for broken gwin32.h) + glib_include=`$PKG_CONFIG --cflags-only-I glib-2.0 | sed -e 's/ -I.*//g' | sed -e 's/-I//g'` + if test -f $glib_include/glib/gwin32.h; then + if [ grep ftruncate $glib_include/glib/gwin32.h | grep -q define ]; then + AC_MSG_RESULT(failed) + hashmark='#' + AC_MSG_ERROR([Your version of gwin32.h is broken and will cause compilation errors when building mono. Please fix it by deleting the line: '$hashmark define ftruncate...' from '$glib_include/glib/gwin32.h' then re-run configure.]) + fi + fi + AC_MSG_RESULT(ok) +fi + AC_ARG_WITH(gc, [ --with-gc=boehm,included,none],[gc=$with_gc],[gc=$gc_default]) # Enable support for fast thread-local storage @@ -321,6 +364,14 @@ 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]) +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) + # assembly bundle support, see metadata/make-bundle.pl for more info AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[ BUNDLE_FILE=$with_bundle @@ -331,6 +382,7 @@ AM_CONDITIONAL(WITH_BUNDLE, test x$with_bundle != xno) LIBGC_CFLAGS= LIBGC_LIBS= +LIBGC_STATIC_LIBS= libgc_dir= case "x$gc" in xboehm|xbohem|xyes) @@ -347,6 +399,7 @@ case "x$gc" in AC_DEFINE(HAVE_BOEHM_GC) AC_SUBST(HAVE_BOEHM_GC) LIBGC_LIBS="-lgc $libdl" + LIBGC_STATIC_LIBS="$LIBGC_LIBS" # AC_CHECK_FUNCS does not work for some reason... AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl) @@ -369,6 +422,7 @@ case "x$gc" in LIBGC_CFLAGS='-I$(top_srcdir)/libgc/include' LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la' + LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la' AC_DEFINE(HAVE_BOEHM_GC) AC_SUBST(HAVE_BOEHM_GC) @@ -396,6 +450,7 @@ ac_configure_args="$ac_configure_args --disable-embed-check --with-libgc-threads AM_CONDITIONAL(INCLUDED_LIBGC, test x$use_included_gc = xyes) AC_SUBST(LIBGC_CFLAGS) AC_SUBST(LIBGC_LIBS) +AC_SUBST(LIBGC_STATIC_LIBS) AC_SUBST(libgc_dir) dnl @@ -464,6 +519,7 @@ if test x$platform_win32 = xno; then AC_CHECK_FUNCS(getpwuid_r) AC_CHECK_FUNCS(getresuid) AC_CHECK_FUNCS(setresuid) + AC_CHECK_FUNCS(kqueue) dnl ****************************************************************** dnl *** Check for large file support *** @@ -706,7 +762,17 @@ if test x$platform_win32 = xno; then dnl ***************************** dnl *** Checks for libpthread *** dnl ***************************** - AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") +# on FreeBSD -STABLE, the pthreads functions all reside in libc_r +# and libpthread does not exist +# + case "${host}" in + *-*-*freebsd4*) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread") + ;; + *) + AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread") + ;; + esac AC_CHECK_HEADERS(pthread.h) AC_CHECK_FUNCS(pthread_mutex_timedlock) AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np) @@ -761,9 +827,9 @@ if test x$platform_win32 = xno; then } ], [ AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_KW_THREAD) ], [ AC_MSG_RESULT(no) + with_tls=pthread ]) fi @@ -969,10 +1035,32 @@ 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_FUNCS(posix_fadvise) + AC_CHECK_FUNCS(posix_madvise) + AC_CHECK_FUNCS(posix_fallocate) + AC_CHECK_FUNCS(fgetgrent) + AC_CHECK_FUNCS(fgetpwent) + AC_CHECK_FUNCS(fgetpwent) + AC_CHECK_HEADERS(sys/sendfile.h) + AC_CHECK_FUNCS(sendfile) + AC_CHECK_FUNCS(sethostid) + 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 ]) else jdk_headers_found=no AC_CHECK_LIB(ws2_32, main, LIBS="$LIBS -lws2_32", AC_ERROR(bad mingw install?)) AC_CHECK_LIB(psapi, main, LIBS="$LIBS -lpsapi", AC_ERROR(bad mingw install?)) + AC_CHECK_LIB(ole32, main, LIBS="$LIBS -lole32", AC_ERROR(bad mingw install?)) dnl ********************************* dnl *** Check for struct ip_mreqn *** @@ -1018,6 +1106,18 @@ ac_cv_c_socklen_t=yes AC_MSG_RESULT(no) ]) +AC_MSG_CHECKING(for array element initalizer support) +AC_TRY_COMPILE([#include ], [ + const int array[] = {[1] = 2,}; +], [ + # Yes, we have it... + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_ARRAY_ELEM_INIT,1,[Supports C99 array initialization]) +], [ + # We'll have to use signals + AC_MSG_RESULT(no) +]) + AC_CHECK_FUNCS(trunc, , AC_MSG_CHECKING(for trunc in math.h) # Simply calling trunc (0.0) is no good since gcc will optimize the call away AC_TRY_LINK([#include ], @@ -1159,7 +1259,8 @@ case "$host" in x86_64-*-* | amd64-*-*) TARGET=AMD64; arch_target=amd64; - JIT_SUPPORTED=no + JIT_SUPPORTED=yes + jit_wanted=true ;; sparc*-*-*) if test "x$ac_cv_sizeof_void_p" = "x8"; then @@ -1222,10 +1323,20 @@ case "$host" in ACCESS_UNALIGNED="no" JIT_SUPPORTED=yes ;; + s390x-*-linux*) + TARGET=S390x; + arch_target=s390x; + ACCESS_UNALIGNED="no" + JIT_SUPPORTED=yes + ;; esac AC_ARG_WITH(jit, [ --with-jit=yes,no If you want to build scripts that default to the JIT],[ - jit_wanted=true + if test x$withval = xyes; then + jit_wanted=true + else + jit_wanted=false + fi ]) USEJIT=false @@ -1254,9 +1365,48 @@ case "$host" in LIBC="libc.so.12" INTL="libintl.so.0" ;; + *-*-*freebsd*) + LIBC="libc.so" + INTL="libintl.so" + ;; + *-*-*openbsd*) + LIBC="libc.so" + INTL="libintl.so" + ;; esac AC_SUBST(libsuffix) +if test "x$TARGET" != "xAMD64"; then + # valgrind headers don't compile under x86-64 + AC_CHECK_HEADERS(valgrind/memcheck.h) +fi + +if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then + if test "x$with_tls" = "x__thread"; then + # + # On some linux distributions, TLS works in executables, but linking + # against a shared library containing TLS fails with: + # undefined reference to `__tls_get_addr' + # + 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 + if test ! -f conftest; then + AC_MSG_WARN([Disabling usage of __thread.]); + with_tls=pthread + fi + rm -f conftest.c conftest.so conftest + fi +fi + +if test "x$with_tls" = "x__thread"; then + AC_DEFINE(HAVE_KW_THREAD) + # Pass the information to libgc + CPPFLAGS="$CPPFLAGS -DUSE_COMPILER_TLS" + export CPPFLAGS +fi + if test ${TARGET} = ARM; then dnl ****************************************** dnl *** Check to see what FPU is available *** @@ -1306,9 +1456,11 @@ AM_CONDITIONAL(M68K, test x$TARGET = xM68K) AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC) AM_CONDITIONAL(ARM, test x$TARGET = xARM) AM_CONDITIONAL(S390, test x$TARGET = xS390) +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(INCLUDED_LIBGC, test x$gc = xincluded) AC_SUBST(LIBC) AC_SUBST(INTL) @@ -1318,6 +1470,54 @@ 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 @@ -1337,6 +1537,7 @@ mono/arch/hppa/Makefile mono/arch/ppc/Makefile mono/arch/sparc/Makefile mono/arch/s390/Makefile +mono/arch/s390x/Makefile mono/arch/arm/Makefile mono/arch/alpha/Makefile mono/interpreter/Makefile @@ -1351,13 +1552,13 @@ mono/mini/Makefile mono/profiler/Makefile ikvm-jni/Makefile runtime/Makefile -runtime/net_1_1/Makefile -runtime/net_2_0/Makefile scripts/Makefile man/Makefile web/Makefile docs/Makefile data/Makefile +data/net_1_1/Makefile +data/net_2_0/Makefile samples/Makefile support/Makefile data/config @@ -1367,7 +1568,7 @@ tools/locale-builder/Makefile ]) echo " - + mcs source: $mcs_topdir GC: $gc ICU: $enable_icu TLS: $with_tls