X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=e02a12bd944fd843125eccb5d1b48038238f8d8f;hb=9add510f575c1182219e113cc90c074d25f2ef88;hp=c6ca4f2db3b73d94cabb280fc63648346b1d0a93;hpb=3a4d49a985b4d487335bc6ba55fc05a325ed341c;p=mono.git diff --git a/configure.in b/configure.in index c6ca4f2db3b..e02a12bd944 100644 --- a/configure.in +++ b/configure.in @@ -26,6 +26,7 @@ dnl gc_headers=no gc=included +gc_msg="included Boehm" use_included_gc=no libgc_configure_args= @@ -478,6 +479,16 @@ mcs_topdir=$(cd "$srcdir/$mcsdir" && pwd) mcs_topdir_from_srcdir='$(top_builddir)'/$mcsdir fi +# Convert mcs_topdir* paths to Windows syntax. +if test x$cross_compiling$host_win32 = xnoyes; then + mcs_topdir=$(cygpath -m $mcs_topdir) + case $mcs_topdir_from_srcdir in + /cygdrive/*) + mcs_topdir_from_srcdir=$(cygpath -m $mcs_topdir_from_srcdir) + ;; + 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]) @@ -519,10 +530,7 @@ yes|sibling) libgdiplus_loc=`cd ../libgdiplus && pwd`/src/libgdiplus.la ;; esac AC_SUBST([libgdiplus_loc]) -PKG_PROG_PKG_CONFIG() -if test "x$PKG_CONFIG" = "x"; then - AC_MSG_ERROR([You need to install pkg-config]) -fi +AC_PATH_PROG(PKG_CONFIG, pkg-config, no) pkg_config_path= AC_ARG_WITH(crosspkgdir, [ --with-crosspkgdir=/path/to/pkg-config/dir Change pkg-config dir to custom dir], @@ -557,8 +565,11 @@ embedded) eglib_dir=eglib ;; system) - echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" - echo "cross_compiling=$cross_compiling" + if test "x$PKG_CONFIG" = "xno"; then + AC_MSG_ERROR([You need to install pkg-config]) + fi + echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" + echo "cross_compiling=$cross_compiling" BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0` BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0` @@ -568,6 +579,9 @@ system) dnl dnl No, you will not replace this check with a pkg.m4 check dnl + if test "x$PKG_CONFIG" = "xno"; then + AC_MSG_ERROR([You need to install pkg-config]) + fi if $PKG_CONFIG --atleast-version=$GLIB_REQUIRED_VERSION glib-2.0; then GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0` GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0` @@ -611,7 +625,7 @@ if test x$cross_compiling$host_win32 = xnoyes; then AC_MSG_RESULT(ok) fi -AC_ARG_WITH(gc, [ --with-gc=boehm,included,none Defaults to included],[gc=$with_gc],[gc=$gc_default]) +AC_ARG_WITH(gc, [ --with-gc=boehm,included,none Controls the Boehm GC config, default=included],[gc=$with_gc],[gc=$gc_default]) # Enable support for fast thread-local storage # Some systems have broken support, so we allow to disable it. @@ -822,6 +836,9 @@ if test x$enable_parallel_mark = xyes; then libgc_configure_args="$libgc_configure_args --enable-parallel-mark" fi +dnl +dnl Boehm GC configuration +dnl LIBGC_CFLAGS= LIBGC_LIBS= LIBGC_STATIC_LIBS= @@ -838,29 +855,28 @@ case "x$gc" in AC_MSG_ERROR("GC requested but header files not found! You may need to install them by hand.") fi - AC_DEFINE(HAVE_BOEHM_GC, 1, [Have Boehm GC]) - AC_SUBST(HAVE_BOEHM_GC) LIBGC_LIBS="-lgc $libdl" LIBGC_STATIC_LIBS="$LIBGC_LIBS" libmono_ldflags="$libmono_ldflags -lgc" + BOEHM_DEFINES="-DHAVE_BOEHM_GC" # AC_CHECK_FUNCS does not work for some reason... AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl) if test "x$found_gcj_malloc" = "xyes"; then - AC_DEFINE(HAVE_GC_GCJ_MALLOC, 1, [Have GC_gcj_malloc]) - AC_DEFINE_UNQUOTED(USED_GC_NAME, "System Boehm (with typed GC)", [GC description]) + BOEHM_DEFINES="-DHAVE_GC_GCJ_MALLOC $BOEHM_DEFINES" + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (with typed GC)", [GC description]) + gc_msg="System Boehm with typed GC" else - AC_DEFINE_UNQUOTED(USED_GC_NAME, "System Boehm (no typed GC)", [GC description]) + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "System Boehm (no typed GC)", [GC description]) + gc_msg="System Boehm (without typed GC)" fi AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl) if test "x$found_gc_enable" = "xyes"; then - AC_DEFINE(HAVE_GC_ENABLE, 1, [Have 'GC_enable']) + BOEHM_DEFINES="-DHAVE_GC_ENABLE $BOEHM_DEFINES" fi ;; xincluded) - found_boehm=yes - gc_headers=yes use_included_gc=yes libgc_dir=libgc @@ -868,35 +884,24 @@ case "x$gc" in LIBGC_LIBS='$(top_builddir)/libgc/libmonogc.la' LIBGC_STATIC_LIBS='$(top_builddir)/libgc/libmonogc-static.la' - AC_DEFINE(HAVE_BOEHM_GC, 1, [Have Boehm GC]) - AC_SUBST(HAVE_BOEHM_GC) + BOEHM_DEFINES="-DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE" - AC_DEFINE(HAVE_GC_H, 1, [Have gc.h]) - AC_DEFINE(USE_INCLUDED_LIBGC, 1, [Use included libgc]) - - # The included libgc contains GCJ support - AC_DEFINE(HAVE_GC_GCJ_MALLOC, 1, [Have GC_gcj_malloc]) - AC_DEFINE(HAVE_GC_ENABLE, 1, [Have GC_enable]) + gc_msg="bundled Boehm GC with typed GC" if test x$enable_parallel_mark = xyes; then - AC_DEFINE_UNQUOTED(USED_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description]) + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description]) + gc_msg="$gc_msg and parallel mark" else - AC_DEFINE_UNQUOTED(USED_GC_NAME, "Included Boehm (with typed GC)", [GC description]) + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC)", [GC description]) fi ;; xsgen) - found_boehm=no - gc_headers=no - use_included_gc=no - AC_DEFINE(HAVE_SGEN_GC,1,[Using the simple generational GC.]) - AC_DEFINE(HAVE_MOVING_COLLECTOR,1,[The GC can move objects.]) - AC_DEFINE(HAVE_WRITE_BARRIERS,1,[The GC needs write barriers.]) - AC_DEFINE_UNQUOTED(USED_GC_NAME, "Simple generational", [GC description]) + AC_MSG_WARN("Use --with-sgen instead, --with-gc= controls Boehm configuration") ;; xnone) AC_MSG_WARN("Compiling mono without GC.") - AC_DEFINE_UNQUOTED(USED_GC_NAME, "none", [GC description]) + AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "none", [GC description]) AC_DEFINE(HAVE_NULL_GC,1,[No GC support.]) ;; *) @@ -906,7 +911,6 @@ esac AC_ARG_WITH(large-heap, [ --with-large-heap=yes,no Enable support for GC heaps larger than 3GB (defaults to no)], [large_heap=$withval], [large_heap=no]) if test "x$large_heap" = "xyes"; then - echo "FOO" CPPFLAGS="$CPPFLAGS -DLARGE_CONFIG" fi @@ -915,6 +919,7 @@ AC_SUBST(LIBGC_CFLAGS) AC_SUBST(LIBGC_LIBS) AC_SUBST(LIBGC_STATIC_LIBS) AC_SUBST(libgc_dir) +AC_SUBST(BOEHM_DEFINES) dnl dnl End of libgc checks @@ -1530,7 +1535,7 @@ if test x$target_win32 = xno; then AC_CHECK_FUNCS(finite, , AC_MSG_CHECKING(for finite in math.h) AC_TRY_LINK([#include ], [ finite(0.0); ], - AC_DEFINE(HAVE_FINITE, 1, [Have finite]) AC_MSG_RESULT(yes), + AC_DEFINE(HAVE_FINITE, 1, [Have finite in -lm]) AC_MSG_RESULT(yes), AC_MSG_RESULT(no))) fi AC_CHECK_FUNCS(isfinite, , AC_MSG_CHECKING(for isfinite in math.h) @@ -2000,6 +2005,7 @@ dnl *** LLVM *** dnl ************** AC_ARG_ENABLE(llvm,[ --enable-llvm Enable the experimental LLVM back-end], enable_llvm=$enableval, enable_llvm=no) +AC_ARG_ENABLE(loadedllvm,[ --enable-loadedllvm Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no) if test "x$enable_llvm" = "xyes"; then AC_PATH_PROG(LLVM_CONFIG, llvm-config, no) @@ -2020,9 +2026,14 @@ if test "x$enable_llvm" = "xyes"; then llvm_version=`$LLVM_CONFIG --version` major_version=`echo $llvm_version | cut -c 1` minor_version=`echo $llvm_version | cut -c 3` + if echo $llvm_version | grep -q 'mono'; then + AC_DEFINE(LLVM_MONO_BRANCH, 1, [Whenever we are using the mono branch of LLVM]) + LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MONO_BRANCH" + fi AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries]) AC_DEFINE_UNQUOTED(LLVM_MINOR_VERSION, $minor_version, [Minor version of LLVM libraries]) + AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties]) # Have to pass these on the command line since mini-llvm-cpp.h already includes # llvm's config.h @@ -2036,6 +2047,10 @@ if test "x$enable_llvm" = "xyes"; then fi AM_CONDITIONAL(ENABLE_LLVM, [test x$enable_llvm = xyes]) +if test "x$enable_loadedllvm" = "xyes"; then + AC_DEFINE(MONO_LLVM_LOADED, 1, [The LLVM back end is dynamically loaded]) +fi +AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes]) TARGET="unknown" ACCESS_UNALIGNED="yes" @@ -2052,6 +2067,7 @@ sizeof_register="SIZEOF_VOID_P" jit_wanted=false interp_wanted=false +sgen_supported=false case "$host" in # mips-sgi-irix5.* | mips-sgi-irix6.*) # TARGET=MIPS; @@ -2110,6 +2126,9 @@ case "$host" in haiku*) LIBC=libroot.so ;; + linux*|darwin*) + sgen_supported=true + ;; esac ;; x86_64-*-* | amd64-*-*) @@ -2117,6 +2136,11 @@ case "$host" in arch_target=amd64; JIT_SUPPORTED=yes jit_wanted=true + case $host_os in + linux*|darwin*) + sgen_supported=true + ;; + esac ;; ia64-*-*) TARGET=IA64 @@ -2199,6 +2223,11 @@ case "$host" in arch_target=ppc; JIT_SUPPORTED=yes jit_wanted=true + case $host_os in + linux*|darwin*) + sgen_supported=true + ;; + esac ;; arm*-darwin*) TARGET=ARM; @@ -2207,6 +2236,7 @@ case "$host" in JIT_SUPPORTED=yes CPPFLAGS="$CPPFLAGS -DARM_FPU_NONE=1" jit_wanted=true + sgen_supported=true ;; arm*-linux*) TARGET=ARM; @@ -2214,6 +2244,7 @@ case "$host" in ACCESS_UNALIGNED="no" JIT_SUPPORTED=yes jit_wanted=true + sgen_supported=true ;; s390-*-linux*) TARGET=S390; @@ -2221,6 +2252,7 @@ case "$host" in ACCESS_UNALIGNED="yes" JIT_SUPPORTED=yes jit_wanted=true + sgen_supported=true # Required CFLAGS for s390[x]. USE_STRING_INLINES is automatic with gcc 4.1 CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES" ;; @@ -2230,6 +2262,7 @@ case "$host" in ACCESS_UNALIGNED="yes" JIT_SUPPORTED=yes jit_wanted=true + sgen_supported=true CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES" ;; esac @@ -2308,6 +2341,23 @@ if test "x$have_deprecated" = "xyes"; then AC_DEFINE(HAVE_DEPRECATED, 1, [Support for the deprecated attribute]) fi +dnl +dnl Simple Generational checks (sgen) +dnl +SGEN_DEFINES= +AC_ARG_WITH(sgen, [ --with-sgen=yes,no Extra Generational GC, default=yes],[buildsgen=$with_sgen],[buildsgen=yes]) +if test x$buildsgen = xyes; then + if $sgen_supported; then + SGEN_DEFINES="-DHAVE_SGEN_GC -DHAVE_MOVING_COLLECTOR -DHAVE_WRITE_BARRIERS" + gc_msg="sgen and $gc_msg" + else + buildsgen=no + AC_MSG_WARN("Sgen is not supported on this platform") + fi +fi +AC_SUBST(SGEN_DEFINES) +AM_CONDITIONAL(SUPPORT_SGEN, test x$buildsgen = xyes) + AC_ARG_WITH(jit, [ --with-jit=yes,no If you want to build scripts that default to the JIT (defaults to no)],[ if test x$withval = xyes; then jit_wanted=true @@ -2432,10 +2482,11 @@ 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]) + BOEHM_DEFINES="$BOEHM_DEFINES -DMONO_DEBUGGER_SUPPORTED" + NESTED_LIBGC_FLAGS="-DMONO_DEBUGGER_SUPPORTED" fi -AC_MSG_RESULT($mono_debugger_supported) AM_CONDITIONAL(MONO_DEBUGGER_SUPPORTED, test x$mono_debugger_supported = xyes) +AC_MSG_RESULT($mono_debugger_supported) if test "x$with_tls" = "x__thread"; then AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword]) @@ -2484,7 +2535,7 @@ case "x$gc" in # 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 + LIBGC_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'` fi @@ -2899,7 +2950,7 @@ echo " olive source: $olive_topdir Engine: - GC: $gc + GC: $gc_msg GLIB: $with_glib TLS: $with_tls SIGALTSTACK: $with_sigaltstack @@ -2908,7 +2959,7 @@ echo " BigArrays: $enable_big_arrays DTrace: $enable_dtrace Parallel Mark: $enable_parallel_mark - LLVM Back End: $enable_llvm + LLVM Back End: $enable_llvm (dynamically loaded: $enable_loadedllvm) Libraries: Moon Profile: $with_moonlight @@ -2921,18 +2972,3 @@ echo " if test x$with_static_mono = xno -a "x$host_win32" != "xyes"; then AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexpected bugs) fi - -if test x$gc = xsgen; then - echo IMPORTANT: - echo IMPORTANT: You have selected an experimental, work-in-progress - echo IMPORTANT: GC engine. This GC engine is currently not supported - echo IMPORTANT: and is not yet ready for use. - echo IMPORTANT: - echo IMPORTANT: There are known problems with it, use at your own risk. -fi - -if test x$enable_llvm = xyes; then - echo IMPORTANT: - echo IMPORTANT: The LLVM Back End is experimental and has known problems. - echo IMPORTANT: -fi