AC_INIT(README)
AC_CANONICAL_SYSTEM
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono,0.30.99)
+AM_INIT_AUTOMAKE(mono,0.31.99)
AM_MAINTAINER_MODE
dnl
esac
AC_MSG_RESULT(ok)
AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
+
AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
AC_CHECK_TOOL(CC, gcc, gcc)
AC_LIBTOOL_WIN32_DLL
AM_PROG_LIBTOOL
+# Test whenever ld supports -version-script
+AC_PROG_LD
+AC_PROG_LD_GNU
+if test "x$lt_cv_prog_gnu_ld" = "xno"; then
+ no_version_script=yes
+fi
+
AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h semaphore.h sys/un.h)
# for mono/mini/tramp-x86.c
# This does not work on some platforms (bug #55253)
AC_ARG_WITH(sigaltstack, [ --with-sigaltstack=yes,no enable/disable support for sigaltstack],[],[with_sigaltstack=yes])
-if test x$with_sigaltstack = "xyes"; then
- AC_DEFINE(HAVE_WORKING_SIGALTSTACK)
-fi
-
# assembly bundle support, see metadata/make-bundle.pl for more info
AC_ARG_WITH(bundle, [ --with-bundle=bundle_template],[
BUNDLE_FILE=$with_bundle
dnl
if test x$platform_win32 = xno; then
+
+ 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])
+
+ 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
+ jdk_headers_found=no
+ 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
+ fi
+
+ AC_SUBST(ikvm_jni_dir)
+ AC_SUBST(IKVM_JNI_CFLAGS)
+
+ AC_CHECK_FUNCS(getpwuid_r)
dnl ******************************************************************
dnl *** Check for large file support ***
dnl *** (If we were using autoconf 2.50 we'd use AC_SYS_LARGEFILE) ***
AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
AC_CHECK_HEADERS(pthread.h)
AC_CHECK_FUNCS(pthread_mutex_timedlock)
+ AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np)
AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
AC_TRY_COMPILE([ #include <pthread.h>], [
pthread_mutexattr_t attr;
dnl *** Checks for working __thread ***
dnl ***********************************
AC_MSG_CHECKING(for working __thread)
- AC_TRY_RUN([
- #include <pthread.h>
-
- __thread int i;
- static int res1, res2;
-
- void thread_main (void *arg)
- {
- i = arg;
- sleep (1);
- if (arg == 1)
- res1 = (i == arg);
- else
- res2 = (i == arg);
- }
+ if test "x$with_nptl" != "xyes"; then
+ AC_MSG_RESULT(disabled)
+ else
+ AC_TRY_RUN([
+ #include <pthread.h>
+
+ __thread int i;
+ static int res1, res2;
+
+ void thread_main (void *arg)
+ {
+ i = arg;
+ sleep (1);
+ if (arg == 1)
+ res1 = (i == arg);
+ else
+ res2 = (i == arg);
+ }
- int main () {
- pthread_t t1, t2;
+ int main () {
+ pthread_t t1, t2;
- i = 5;
+ i = 5;
- pthread_create (&t1, NULL, thread_main, 1);
- pthread_create (&t2, NULL, thread_main, 2);
+ pthread_create (&t1, NULL, thread_main, 1);
+ pthread_create (&t2, NULL, thread_main, 2);
- pthread_join (t1, NULL);
- pthread_join (t2, NULL);
+ pthread_join (t1, NULL);
+ pthread_join (t2, NULL);
- return !(res1 + res2 == 2);
- }
- ], [
- if test "x$with_nptl" != "xyes"; then
- AC_MSG_RESULT(disabled)
- else
+ return !(res1 + res2 == 2);
+ }
+ ], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_KW_THREAD)
- fi
- ], [
- AC_MSG_RESULT(no)
- ])
+ ], [
+ AC_MSG_RESULT(no)
+ ])
+ fi
+
+ dnl **************************************
+ dnl *** Checks for working sigaltstack ***
+ dnl **************************************
+ AC_MSG_CHECKING(for working sigaltstack)
+ if test "x$with_sigaltstack" != "xyes"; then
+ AC_MSG_RESULT(disabled)
+ else
+ AC_TRY_RUN([
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <signal.h>
+ #include <pthread.h>
+ #include <sys/wait.h>
+
+ static void
+ sigsegv_signal_handler (int _dummy, siginfo_t *info, void *context)
+ {
+ exit (0);
+ }
+
+ static void *
+ loop (void *ignored)
+ {
+ char *ptr = NULL;
+
+ *ptr = 0;
+ return NULL;
+ }
+
+ static void
+ child ()
+ {
+ struct sigaction sa;
+ struct sigaltstack sas;
+ pthread_t id;
+ pthread_attr_t attr;
+
+ sa.sa_sigaction = sigsegv_signal_handler;
+ sigemptyset (&sa.sa_mask);
+ sa.sa_flags = SA_SIGINFO | SA_STACK;
+ if (sigaction (SIGSEGV, &sa, NULL) == -1) {
+ perror ("lala");
+ return;
+ }
+
+ sas.ss_sp = malloc (SIGSTKSZ);
+ sas.ss_size = SIGSTKSZ;
+ sas.ss_flags = SS_ONSTACK;
+ if (sigaltstack (&sas, NULL) == -1) {
+ perror ("lala");
+ return;
+ }
+
+ pthread_attr_init (&attr);
+ if (pthread_create(&id, &attr, loop, &attr) != 0) {
+ printf ("failed\n");
+ return;
+ }
+
+ sleep (100);
+ }
+
+ int
+ main ()
+ {
+ pid_t son;
+ int status;
+ int i;
+
+ son = fork ();
+ if (son == -1) {
+ return 1;
+ }
+
+ if (son == 0) {
+ child ();
+ return 0;
+ }
+
+ for (i = 0; i < 3; ++i) {
+ sleep (1);
+ waitpid (son, &status, WNOHANG);
+ if (WIFEXITED (status) && WEXITSTATUS (status) == 0)
+ return 0;
+ }
+
+ kill (son, SIGKILL);
+ return 1;
+ }
+
+ ], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_WORKING_SIGALTSTACK)
+ ], [
+ with_sigaltstack=no
+ AC_MSG_RESULT(no)
+ ])
+ fi
dnl ********************************
dnl *** Checks for semaphore lib ***
JIT_SUPPORTED=no
LIBC="libc.so.6"
+jit_wanted=false
case "$host" in
# mips-sgi-irix5.* | mips-sgi-irix6.*)
# TARGET=MIPS;
TARGET=X86;
arch_target=x86;
JIT_SUPPORTED=yes
+ jit_wanted=true
;;
x86_64-*-* | amd64-*-*)
TARGET=AMD64;
- arch_target=x86-64;
+ arch_target=amd64;
JIT_SUPPORTED=no
;;
sparc*-*-*)
arch_target=sparc;
JIT_SUPPORTED=yes
ACCESS_UNALIGNED="no"
+ jit_wanted=true
;;
# alpha*-*-linux* | alpha*-*-osf*)
# TARGET=ALPHA;
TARGET=S390;
arch_target=s390;
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
+])
+
+USEJIT=false
+if test x$JIT_SUPPORTED = xyes; then
+ if $jit_wanted; then
+ USEJIT=true
+ jit_status="Building and using the JIT"
+ else
+ jit_status="Building the JIT, defaulting to the interpreter"
+ fi
+else
+ jit_status="interpreter"
+fi
+
+AM_CONDITIONAL(USE_JIT, test x$USEJIT = xtrue)
+
libsuffix=".so"
case "$host" in
mono/handles/Makefile
mono/mini/Makefile
mono/profiler/Makefile
+ikvm-jni/Makefile
runtime/Makefile
scripts/Makefile
man/Makefile
docs/Makefile
data/Makefile
samples/Makefile
+support/Makefile
data/config
mono.spec
])
echo "
- GC: $gc
- ICU: $enable_icu
- NPTL: $with_nptl
+ GC: $gc
+ ICU: $enable_icu
+ NPTL: $with_nptl
SIGALTSTACK: $with_sigaltstack
+ Engine: $jit_status
+
"