m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono,1.1.9)
+AM_INIT_AUTOMAKE(mono,1.1.15)
AM_MAINTAINER_MODE
AC_PROG_LN_S
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
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
libmono_cflags="-D_REENTRANT"
LDFLAGS="$LDFLAGS -pthread"
+ CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD"
libmono_ldflags="-pthread"
need_link_unlink=yes
libdl=
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
libmono_ldflags="$PTHREAD_LIBS"
fi
+ CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD -DPLATFORM_BSD4"
need_link_unlink=yes
AC_DEFINE(PTHREAD_POINTER_ID)
libdl=
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
libmono_ldflags="$PTHREAD_LIBS"
fi
+ CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD -DPLATFORM_BSD5"
need_link_unlink=yes
AC_DEFINE(PTHREAD_POINTER_ID)
libdl=
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
libmono_ldflags="$PTHREAD_LIBS"
fi
+ CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD -DPLATFORM_BSD6"
need_link_unlink=yes
AC_DEFINE(PTHREAD_POINTER_ID)
libdl=
;;
*-*-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"
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)
# Set STDC_HEADERS
AC_HEADER_STDC
AC_LIBTOOL_WIN32_DLL
-AC_DISABLE_FAST_INSTALL
+# This causes monodis to not link correctly
+#AC_DISABLE_FAST_INSTALL
AM_PROG_LIBTOOL
# Test whenever ld supports -version-script
AM_CONDITIONAL(STATIC_MONO, test x$with_static_mono != xno)
+AC_ARG_WITH(xen_opt, [ --with-xen_opt=yes,no Enable Xen-specific behaviour],[],[with_xen_opt=yes])
+if test "x$with_xen_opt" = "xyes"; then
+ AC_DEFINE(MONO_XEN_OPT, 1, [Xen-specific behaviour])
+ ORIG_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -mno-tls-direct-seg-refs"
+ AC_MSG_CHECKING(for -mno-tls-direct-seg-refs option to gcc)
+ AC_TRY_COMPILE([], [
+ void main () { }
+ ], [
+ AC_MSG_RESULT(yes)
+ ], [
+ AC_MSG_RESULT(no)
+ CFLAGS=$ORIG_CFLAGS
+ ])
+fi
+
+DISABLED_FEATURES=none
+
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.],
+ LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
+ reflection_emit, large_code, logging, com, ssa, generics.],
[
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_FEATURES=$enable_minimal
disabled="Disabled: $enable_minimal"
],[])
+AC_DEFINE_UNQUOTED(DISABLED_FEATURES, "$DISABLED_FEATURES", [String of disabled features])
+
if test "x$mono_feature_disable_aot" = "xyes"; then
AC_DEFINE(DISABLE_AOT, 1, [Disable AOT support])
fi
AC_DEFINE(DISABLE_REFLECTION_EMIT, 1, [Disable reflection emit support])
fi
+if test "x$mono_feature_disable_large_code" = "xyes"; then
+ AC_DEFINE(DISABLE_LARGE_CODE, 1, [Disable support for huge assemblies])
+fi
+
+if test "x$mono_feature_disable_logging" = "xyes"; then
+ AC_DEFINE(DISABLE_LOGGING, 1, [Disable support debug logging])
+fi
+
+if test "x$mono_feature_disable_com" = "xyes"; then
+ AC_DEFINE(DISABLE_COM, 1, [Disable COM support])
+fi
+
+if test "x$mono_feature_disable_ssa" = "xyes"; then
+ AC_DEFINE(DISABLE_SSA, 1, [Disable advanced SSA JIT optimizations])
+fi
+
+if test "x$mono_feature_disable_generics" = "xyes"; then
+ AC_DEFINE(DISABLE_GENERICS, 1, [Disable generics support])
+fi
+
+AC_MSG_CHECKING(for visibility __attribute__)
+AC_TRY_COMPILE([], [
+ void __attribute__ ((visibility ("hidden"))) doit (void) {}
+ void main () { doit (); }
+], [
+ have_visibility_hidden=yes
+ AC_MSG_RESULT(yes)
+], [
+ have_visibility_hidden=no
+ AC_MSG_RESULT(no)
+])
+
LIBGC_CFLAGS=
LIBGC_LIBS=
LIBGC_STATIC_LIBS=
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)
+ AC_DEFINE_UNQUOTED(USED_GC_NAME, "System Boehm (with typed GC)", [GC description])
+ else
+ AC_DEFINE_UNQUOTED(USED_GC_NAME, "System Boehm (no typed GC)", [GC description])
fi
AC_CHECK_LIB(gc, GC_enable, found_gc_enable="yes",,$libdl)
if test "x$found_gc_enable" = "xyes"; then
# The included libgc contains GCJ support
AC_DEFINE(HAVE_GC_GCJ_MALLOC)
AC_DEFINE(HAVE_GC_ENABLE)
+ AC_DEFINE_UNQUOTED(USED_GC_NAME, "Included Boehm (with typed GC)", [GC description])
;;
+dnl xsgen)
+dnl found_boehm=no
+dnl gc_headers=no
+dnl use_included_gc=no
+dnl AC_DEFINE(HAVE_SGEN_GC,1,[Using the simple generational GC.])
+dnl AC_DEFINE(HAVE_MOVING_COLLECTOR,1,[The GC can move objects.])
+dnl AC_DEFINE(HAVE_WRITE_BARRIERS,1,[The GC needs write barriers.])
+dnl AC_DEFINE_UNQUOTED(USED_GC_NAME, "Simple generational", [GC description])
+dnl ;;
+
xnone)
AC_MSG_WARN("Compiling mono without GC.")
+ AC_DEFINE_UNQUOTED(USED_GC_NAME, "none", [GC description])
+ AC_DEFINE(HAVE_NULL_GC,1,[No GC support.])
;;
*)
AC_MSG_ERROR([Invalid argument to --with-gc.])
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)
AC_DEFINE(USE_MONO_MUTEX)
])
AC_CHECK_FUNCS(pthread_attr_setstacksize)
+ AC_CHECK_FUNCS(pthread_attr_getstack)
+ AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np)
dnl ***********************************
dnl *** Checks for working __thread ***
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/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)
#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?))
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?))
+ AC_CHECK_LIB(oleaut32, main, LIBS="$LIBS -loleaut32", AC_ERROR(bad mingw install?))
dnl *********************************
dnl *** Check for struct ip_mreqn ***
AC_MSG_RESULT(no)
])
])
+ AC_CHECK_FUNCS(GetProcessId)
fi
dnl socklen_t check
arch_target=x86;
JIT_SUPPORTED=yes
jit_wanted=true
+ case $host_os in
+ solaris*)
+ LIBC="libc.so"
+ INTL="libintl.so"
+
+ # On solaris 10 x86, gcc prints a warning saying 'visibility attribute not supported on this configuration; ignored', but linking fails. A test case:
+ # int astruct __attribute__ ((visibility ("hidden")));
+ # void foo ()
+ # {
+ # void *p = &astruct;
+ # }
+ # gcc -fPIC --shared -o libfoo.so foo.c
+ # yields:
+ # foo.c:6: warning: visibility attribute not supported in this configuration; ignored
+ # ld: fatal: relocation error: R_386_GOTOFF: file /var/tmp//ccxYR96k.o: symbol astruct: relocation must bind locally
+ have_visibility_hidden=no
+ esac
;;
x86_64-*-* | amd64-*-*)
TARGET=AMD64;
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"
;;
esac
jit_wanted=true
if test x"$GCC" = xyes; then
- CFLAGS="$CFLAGS -Wno-cast-align"
+ # We don't support v8 cpus
+ CFLAGS="$CFLAGS -Wno-cast-align -mcpu=v9"
+ fi
+ if test x"$AR" = xfalse; then
+ AC_MSG_ERROR([The required utility 'ar' is not found in your PATH. Usually it can be found in /usr/ccs/bin.])
fi
;;
alpha*-*-linux* | alpha*-*-osf*)
arch_target=s390;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
+ jit_wanted=true
;;
s390x-*-linux*)
TARGET=S390x;
arch_target=s390x;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
+ jit_wanted=true
;;
esac
+if test "x$have_visibility_hidden" = "xyes"; then
+ AC_DEFINE(HAVE_VISIBILITY_HIDDEN, 1, [Support for the visibility ("hidden") attribute])
+fi
+
AC_ARG_WITH(jit, [ --with-jit=yes,no If you want to build scripts that default to the JIT],[
if test x$withval = xyes; then
jit_wanted=true
fi
fi
+mono_debugger_supported=no
+if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
+ if test x$use_included_gc = xyes; then
+ case "$host" in
+ *-*-*linux*)
+ mono_debugger_supported=yes
+ ;;
+ esac
+ fi
+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
AC_CONFIG_COMMANDS([runtime/etc/mono/1.0/machine.config],
[ depth=../../../..
case $srcdir in
- [\\/$]* | ?:[\\/]* ) reldir=$srcdir ;;
+ [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
.) reldir=$depth ;;
*) reldir=$depth/$srcdir ;;
esac
AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/machine.config],
[ depth=../../../..
case $srcdir in
- [\\/$]* | ?:[\\/]* ) reldir=$srcdir ;;
+ [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
.) reldir=$depth ;;
*) reldir=$depth/$srcdir ;;
esac
cd $depth
],[LN_S='$LN_S'])
+AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/web.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 web.config
+ $LN_S $reldir/data/net_2_0/web.config web.config
+ cd $depth
+],[LN_S='$LN_S'])
+
AC_OUTPUT([
Makefile
mint.pc
mono.pc
+mono-cairo.pc
dotnet.pc
mono-uninstalled.pc
scripts/mono-nunit.pc
mono/cil/Makefile
mono/arch/Makefile
mono/os/Makefile
-mono/os/win32/Makefile
-mono/os/unix/Makefile
mono/arch/x86/Makefile
mono/arch/amd64/Makefile
mono/arch/hppa/Makefile
mono/monograph/Makefile
mono/io-layer/Makefile
mono/mini/Makefile
-mono/handles/Makefile
mono/profiler/Makefile
ikvm-native/Makefile
scripts/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
(
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
+
+ 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 {