AC_INIT(README)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(mono, 0.6)
+AM_INIT_AUTOMAKE(mono, 0.7)
AM_MAINTAINER_MODE
AC_CANONICAL_HOST
AC_CHECK_SIZEOF(void *)
+CFLAGS='-g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations'
+
dnl ***************************
dnl *** Checks for glib 1.2 ***
dnl ***************************
AC_SUBST(GMODULE_CFLAGS)
AC_SUBST(GMODULE_LIBS)
-CFLAGS='-g -Wall -Wunused -Wmissing-prototypes -Wmissing-declarations'
+dnl *****************************
+dnl *** Checks for libpthread ***
+dnl *****************************
+AC_CHECK_LIB(pthread, pthread_create, [
+ THREAD_LIBS=-lpthread
+ AM_CONDITIONAL(THREADS_PTHREAD, true)
+ AC_DEFINE(HAVE_PTHREAD)
+
+ # Need pthread_mutex_timedlock
+ pthread_CFLAGS=""
+ orig_CPPFLAGS=$CPPFLAGS
+ # This is a gcc-specific error, but we already set gcc-specific
+ # options in CFLAGS :)
+ CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
+ AC_MSG_CHECKING(for pthread_mutex_timedlock)
+ AC_TRY_COMPILE([ #include <pthread.h>], [
+ pthread_mutex_t mut=PTHREAD_MUTEX_INITIALIZER;
+ pthread_mutex_timedlock(&mut, NULL);
+ ], [
+ # Works!
+ AC_MSG_RESULT(ok)
+ AC_DEFINE(HAVE_PTHREAD_MUTEX_TIMEDLOCK)
+ ], [
+ AC_MSG_RESULT(no)
+
+ # glibc requires -D_GNU_SOURCE before it will declare
+ # this function
+ AC_MSG_CHECKING(whether _GNU_SOURCE is needed for pthread_mutex_timedlock)
+ CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+ AC_TRY_COMPILE([ #include <pthread.h>], [
+ pthread_mutex_t mut=PTHREAD_MUTEX_INITIALIZER;
+ pthread_mutex_timedlock(&mut, NULL);
+ ], [
+ AC_MSG_RESULT(ok)
+ pthread_CFLAGS="-D_GNU_SOURCE"
+ AC_DEFINE(HAVE_PTHREAD_MUTEX_TIMEDLOCK)
+ ], [
+ AC_MSG_RESULT(no)
+ dnl Add other variants here
+ AC_MSG_WARN(Working around pthread_mutex_timedlock)
+ ])
+ ])
+ CPPFLAGS=$orig_CPPFLAGS
+ CFLAGS="$CFLAGS $pthread_CFLAGS"
+ ], [
+ AC_MSG_RESULT([Cannot find libpthread])
+ # Check for other thread systems here, set THREAD_LIBS to
+ # whatever is needed, and define
+ # AM_CONDITIONAL(THREADS_foo, true), and add it to the
+ # section in mono/metadata/Makefile.am, AC_DEFINE(HAVE_foo),
+ # add that to acconfig.h, add the section for that in
+ # mono/metadata/threads.h
+ ])
+AC_SUBST(THREAD_LIBS)
TARGET="unknown"
+ACCESS_UNALIGNED="yes"
case "$host" in
-#mips-sgi-irix5.* | mips-sgi-irix6.*) TARGET=MIPS;;
+#mips-sgi-irix5.* | mips-sgi-irix6.*) TARGET=MIPS; ACCESS_UNALIGNED="no";;
i*86-*-*) TARGET=X86; arch_target=x86;;
-#sparc-sun-4*) TARGET=SPARC;;
-#sparc-sun-*) TARGET=SPARC;;
-#sparc*-*-linux*) TARGET=SPARC;;
-#alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA;;
+sparc*-*-*) TARGET=SPARC; ACCESS_UNALIGNED="no";;
+#alpha*-*-linux* | alpha*-*-osf*) TARGET=ALPHA; ACCESS_UNALIGNED="no";;
#m68k-*-linux*) TARGET=M68K;;
-#powerpc-*-linux* | powerpc-*-sysv*) TARGET=POWERPC;;
-#arm-*-linux-*) TARGET=ARM;;
+#powerpc-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; ACCESS_UNALIGNED="no";;
+#arm-*-linux-*) TARGET=ARM; ACCESS_UNALIGNED="no";;
esac
if test ${TARGET} = unknown; then
AC_MSG_WARN("mono has not been ported to $host: some things may not work.")
fi
+if test ${ACCESS_UNALIGNED} = no; then
+ CPPFLAGS="$CPPFLAGS -DNO_UNALIGNED_ACCESS"
+fi
+
AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes)
AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno)
AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)