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.2)
AM_MAINTAINER_MODE
AC_PROG_LN_S
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 -DFD_SETSIZE=1024"
+ libmono_cflags="-mno-cygwin"
+ libmono_ldflags="-mno-cygwin"
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 4-STABLE
- with_nptl=no
with_tls=pthread
;;
*-*-*freebsd5*)
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=
;;
*-*-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"
libgc_threads=pthreads
;;
- *-*-hpux*)
- platform_win32=no
+ *-*-hpux*)
+ platform_win32=no
CPPFLAGS="$CPPFLAGS -DGC_HPUX_THREADS -D_HPUX_SOURCE -D_XOPEN_SOURCE_EXTENDED -D_REENTRANT"
CFLAGS="$CFLAGS +ESdbgasm"
LDFLAGS="$LDFLAGS -z"
libmono_ldflags="-lpthread"
libgc_threads=pthreads
need_link_unlink=yes
- ;;
+ ;;
*-*-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
+ # This doesn't seem to work on solaris/x86, but the configure test runs
+ with_tls=pthread
;;
*-*-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 -DUSE_MMAP -DUSE_MUNMAP"
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 linux/rtc.h)
+AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h)
AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
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 && test x$enable_mcs_build != xno])
+
AC_SUBST([mcs_topdir])
AC_SUBST([mcs_topdir_from_srcdir])
AC_MSG_ERROR([You need to install pkg-config])
fi
-dnl for use on the build system
-dnl pkg-config is stupid
-BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
-BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
-AC_SUBST(BUILD_GLIB_CFLAGS)
-AC_SUBST(BUILD_GLIB_LIBS)
-
pkg_config_path=
AC_ARG_WITH(crosspkgdir, [ --with-crosspkgdir=/path/to/pkg-config/dir],
if test x$with_crosspkgdir = "x"; then
fi
)
-## Versions of dependencies
-GLIB_REQUIRED_VERSION=1.3.11
-
-PKG_CHECK_MODULES(BASE_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION)
-
-GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
-GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
-GMODULE_CFLAGS=`$PKG_CONFIG --cflags gmodule-2.0`
-GMODULE_LIBS=`$PKG_CONFIG --libs gmodule-2.0`
-
+AC_ARG_WITH([glib],
+ [ --with-glib=embedded|system Choose glib API: system or embedded (default to system)],
+ [], [with_glib=system])
+
+case $with_glib in
+embedded)
+ GLIB_CFLAGS='-I$(top_srcdir)/eglib/src'
+ GLIB_LIBS='-L$(top_builddir)/eglib/src -leglib -lm'
+ BUILD_GLIB_CFLAGS="$GLIB_CFLAGS"
+ BUILD_GLIB_LIBS="$GLIB_LIBS"
+ AC_CONFIG_SUBDIRS(eglib)
+ ;;
+system)
+ BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
+ BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
+
+ ## Versions of dependencies
+ GLIB_REQUIRED_VERSION=1.3.11
+
+ PKG_CHECK_MODULES(BASE_DEPENDENCIES, glib-2.0 >= $GLIB_REQUIRED_VERSION)
+
+ GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
+ GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
+ GMODULE_CFLAGS=`$PKG_CONFIG --cflags gmodule-2.0`
+ GMODULE_LIBS=`$PKG_CONFIG --libs gmodule-2.0`
+ ;;
+*)
+ AC_MSG_ERROR([Invalid argument to --with-glib.])
+esac
+AM_CONDITIONAL(EGLIB_BUILD, test x$with_glib = xembedded)
+
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
AC_SUBST(GMODULE_CFLAGS)
AC_SUBST(GMODULE_LIBS)
+AC_SUBST(BUILD_GLIB_CFLAGS)
+AC_SUBST(BUILD_GLIB_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)
# Some systems have broken support, so we allow to disable it.
AC_ARG_WITH(tls, [ --with-tls=__thread,pthread select Thread Local Storage implementation],[],[with_tls=__thread])
-# Kept for compatibility
-AC_ARG_WITH(nptl, [ --with-nptl=yes,no deprecated, use --with-tls instead],[],[with_nptl=default])
-
-if test "x$with_nptl" != "xdefault"; then
- if test "x$with_nptl" = "xyes"; then
- AC_MSG_WARN([--with-nptl=yes is deprecated, use --with-tls=__thread option instead.])
- with_tls=__thread
- fi
- if test "x$with_nptl" = "xno"; then
- AC_MSG_WARN([--with-nptl=no is deprecated, use --with-tls=pthread option instead.])
- with_tls=pthread
- fi
-fi
-
# Enable support for using sigaltstack for SIGSEGV and stack overflow handling
# 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])
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(mcs-build, [ --disable-mcs-build disable the build of the mcs directory], try_mcs_build=$enableval, enable_mcs_build=yes)
+
+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
xincluded)
AC_CONFIG_SUBDIRS(libgc)
+ # Pass CPPFLAGS to libgc configure
+ # Maybe we should use a separate variable for this to avoid passing useless and
+ # potentially problematic defines to libgc (like -D_FILE_OFFSET_BITS=64)
+ export CPPFLAGS
+
found_boehm=yes
gc_headers=yes
use_included_gc=yes
# 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])
+ ;;
+
+ 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])
;;
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.])
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)
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_CHECK_FUNCS(setresuid)
AC_CHECK_FUNCS(kqueue)
AC_CHECK_FUNCS(backtrace_symbols)
+ AC_CHECK_FUNCS(mkstemp)
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 *********************************
dnl *****************************
dnl *** Checks for libnsl ***
dnl *****************************
- AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl")
+ AC_CHECK_FUNC(gethostbyaddr, , AC_CHECK_LIB(nsl, gethostbyaddr, LIBS="$LIBS -lnsl"))
AC_CHECK_FUNCS(inet_pton inet_aton)
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 ***
AC_MSG_RESULT(no)
])
- dnl *********************
- dnl *** Check for AIO ***
- dnl *********************
- AC_MSG_CHECKING([for SIGEV_THREAD definition])
- dnl Some systems (FreeBSD at least) may have aio_read
- dnl but don't support/define SIGEV_THREAD.
- AC_TRY_COMPILE([
- #include <sys/signal.h>
- ],[
- int x = SIGEV_THREAD;
- ],[
- ac_cv_c_sigev_thread=yes
- AC_MSG_RESULT(yes)
- ],[
- AC_MSG_RESULT(no)
- ])
-
- if test "$ac_cv_c_sigev_thread" = "yes" ; then
- AC_CHECK_HEADERS(aio.h sys/aio.h)
- AC_CHECK_LIB(rt, aio_read, [ LIBS="$LIBS -lrt" ],)
- SIGVAL_PTR="undefined"
- if test "$ac_cv_header_aio_h" = "yes" -o "$ac_cv_header_sys_aio_h" = "yes" ; then
- AC_CHECK_MEMBER(union sigval.sigval_ptr,SIGVAL_PTR="sigval_ptr",, [
- #include <sys/signal.h>
- ])
- AC_CHECK_MEMBER(union sigval.sival_ptr,SIGVAL_PTR="sival_ptr",, [
- #include <sys/signal.h>
- ])
- if test "$SIGVAL_PTR" = "undefined" ; then
- AC_MSG_ERROR([Unable to detect field name in 'union sigval'])
- fi
- fi
- AC_DEFINE_UNQUOTED(SIGVAL_PTR,$SIGVAL_PTR,[Pointer field name in 'union sigval'])
- fi
-
dnl **********************************
dnl *** epoll ***
dnl **********************************
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_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(strerror_r)
AC_CHECK_FUNCS(ttyname_r)
AC_CHECK_SIZEOF(size_t)
+ AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], ,
+ [#include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>])
+ AC_CHECK_TYPES([blkcnt_t], [AC_DEFINE(HAVE_BLKCNT_T)], ,
+ [#include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>])
+ AC_CHECK_TYPES([suseconds_t], [AC_DEFINE(HAVE_SUSECONDS_T)], ,
+ [#include <sys/time.h>])
+ AC_CHECK_TYPES([struct pollfd], [AC_DEFINE(HAVE_STRUCT_POLLFD)], ,
+ [#include <sys/poll.h>])
+ AC_CHECK_TYPES([struct stat], [AC_DEFINE(HAVE_STRUCT_STAT)], ,
+ [#include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>])
+ AC_CHECK_TYPES([struct timeval], [AC_DEFINE(HAVE_STRUCT_TIMEVAL)], ,
+ [#include <sys/time.h>
+ #include <sys/types.h>
+ #include <utime.h>])
+ AC_CHECK_TYPES([struct timezone], [AC_DEFINE(HAVE_STRUCT_TIMEZONE)], ,
+ [#include <sys/time.h>])
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 *********************************
#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
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
# TARGET=MIPS;
# ACCESS_UNALIGNED="no"
# ;;
+ mips*)
+ TARGET=MIPS;
+ arch_target=mips;
+ ACCESS_UNALIGNED="no"
+ JIT_SUPPORTED=yes
+ jit_wanted=true
+ ;;
i*86-*-*)
TARGET=X86;
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
+
+ libmono_ldflags="$libmono_ldflags $LIBS"
+ 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"
+ libmono_ldflags="$libmono_ldflags $LIBS"
+ 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*)
TARGET=ALPHA;
ACCESS_UNALIGNED="no"
- JIT_SUPPORTED=no
- INTERP_SUPPORTED=yes
- interp_wanted=true
+ JIT_SUPPORTED=yes
+ jit_wanted=true
arch_target=alpha;
+ CFLAGS="$CFLAGS -mieee"
+ case $host_os in
+ linux*)
+ LIBC="libc.so.6.1"
+ INTL="libc.so.6.1"
+ esac
;;
*-*-mingw*|*-*-cygwin*)
+ # When this is enabled, it leads to very strange crashes at runtime (gcc-3.4.4)
+ have_visibility_hidden=no
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;
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;
arch_target=s390;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
+ jit_wanted=true
+ # Required CFLAGS for s390[x]. USE_STRING_INLINES is automatic with gcc 4.1
+ CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
;;
s390x-*-linux*)
TARGET=S390x;
arch_target=s390x;
ACCESS_UNALIGNED="no"
JIT_SUPPORTED=yes
+ jit_wanted=true
+ CFLAGS="$CFLAGS -mbackchain -D__USE_STRING_INLINES"
;;
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
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.)
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
+ 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
+ # 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($fpu)
- CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu"
+ CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
unset fpu
fi
AM_CONDITIONAL(ALPHA, test x$TARGET = xALPHA)
AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
+AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
AM_CONDITIONAL(ARM, test x$TARGET = xARM)
AM_CONDITIONAL(S390, test x$TARGET = xS390)
AC_SUBST(LIBC)
AC_SUBST(INTL)
+AC_SUBST(SQLITE)
+AC_SUBST(SQLITE3)
+AC_SUBST(X11)
AC_SUBST(arch_target)
AC_SUBST(CFLAGS)
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=$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
+scripts/mono-find-provides
+scripts/mono-find-requires
mono/Makefile
mono/utils/Makefile
mono/metadata/Makefile
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/arch/s390x/Makefile
mono/arch/arm/Makefile
mono/arch/alpha/Makefile
+mono/arch/ia64/Makefile
+mono/arch/mips/Makefile
mono/interpreter/Makefile
mono/tests/Makefile
mono/tests/tests-config
+mono/tests/cas/Makefile
+mono/tests/cas/assembly/Makefile
+mono/tests/cas/demand/Makefile
+mono/tests/cas/inheritance/Makefile
+mono/tests/cas/linkdemand/Makefile
+mono/tests/cas/threads/Makefile
mono/benchmark/Makefile
mono/monoburg/Makefile
mono/monograph/Makefile
mono/io-layer/Makefile
mono/mini/Makefile
-mono/handles/Makefile
mono/profiler/Makefile
ikvm-native/Makefile
scripts/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 && test x$enable_mcs_build != 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
- Globalization: $enable_glob
TLS: $with_tls
SIGALTSTACK: $with_sigaltstack
Engine: $jit_status
$disabled
"
+if test x$with_static_mono = xno -a "x$platform_win32" != "xyes"; then
+ AC_MSG_WARN(Turning off static Mono is a risk, you might run into unexepcted bugs)
+fi
+
+if test x$have_zlib = xno; then
+ AC_MSG_WARN(ZLib devel files not available, compression file support in 2.0 won't work.)
+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