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)
+AM_INIT_AUTOMAKE(mono,1.1.13)
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
gc_headers=no
gc=included
use_included_gc=no
+libgc_configure_args=
if test -d $srcdir/libgc ; then
gc_default=included
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
*-*-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
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=
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
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"
+ fi
+ CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD -DPLATFORM_BSD5"
+ 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
+ CPPFLAGS="$CPPFLAGS -DPLATFORM_BSD -DPLATFORM_BSD6"
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*)
;;
*-*-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"
;;
*-*-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
;;
*-*-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"
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.
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
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])
# 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 <math.h>], [
+ 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)
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.
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
+
+## 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|<path> 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])
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
)
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)
# 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])
-# assembly bundle support, see metadata/make-bundle.pl for more info
-AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[
- BUNDLE_FILE=$with_bundle
- AC_SUBST(BUNDLE_FILE)
- AC_DEFINE(WITH_BUNDLE)
-],[with_bundle=no])
-AM_CONDITIONAL(WITH_BUNDLE, test x$with_bundle != xno)
+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
+
+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_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
+
+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, large_code, logging, com, ssa.],
+[
+ 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
+
+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
LIBGC_CFLAGS=
LIBGC_LIBS=
;;
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)
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)
AC_CHECK_FUNCS(getresuid)
AC_CHECK_FUNCS(setresuid)
AC_CHECK_FUNCS(kqueue)
+ AC_CHECK_FUNCS(backtrace_symbols)
dnl ******************************************************************
dnl *** Check for large file support ***
# 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([
AC_MSG_RESULT(no)
])
+ dnl *****************************
+ dnl *** Checks for IPV6_PKTINFO ***
+ dnl *****************************
+ AC_MSG_CHECKING(for IPV6_PKTINFO)
+ AC_TRY_COMPILE([#include <netdb.h>], [
+ 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 *********************************
*-*-*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")
;;
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 ***
else
AC_TRY_RUN([
#include <pthread.h>
-
__thread int i;
static int res1, res2;
#include <signal.h>
#include <pthread.h>
#include <sys/wait.h>
-
+ #if defined(__FreeBSD__) || defined(__NetBSD__)
+ #define SA_STACK SA_ONSTACK
+ #endif
static void
sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context)
{
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;
}
fi
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 <sys/ioctl.h>
+ #include <net/if.h>
+ ], [
+ 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)
+ 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)
+ AC_CHECK_SIZEOF(size_t)
+ AC_CHECK_MEMBERS(
+ [struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,,
+ [#include <sys/types.h>
+ #include <dirent.h>])
+
+ 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 <curses.h>
+ #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_MSG_RESULT(no)
])
])
+ AC_CHECK_FUNCS(GetProcessId)
fi
dnl socklen_t check
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;
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;
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
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
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
+])
+
+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
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)
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"
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
#
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
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
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
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
])
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)
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_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=../../../..
+ 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
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
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
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
-runtime/net_1_1/Makefile
-runtime/net_2_0/Makefile
+ikvm-native/Makefile
scripts/Makefile
man/Makefile
web/Makefile
samples/Makefile
support/Makefile
data/config
-mono.spec
tools/Makefile
tools/locale-builder/Makefile
+runtime/Makefile
])
-echo "
+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
+
+ 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}
+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
"