Fix a mixed-decls-and-code warning.
[mono.git] / configure.in
index e1bb5489de56cc665993b765896022d041a4fb1f..60aee64a178ca4e2cd0c839ba8f2a659891c096a 100644 (file)
@@ -1,7 +1,7 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [3.1.0],
+AC_INIT(mono, [3.3.0],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
 AC_CONFIG_SRCDIR([README])
@@ -174,9 +174,8 @@ case "$host" in
                AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
                libdl=
                libgc_threads=pthreads
-               # This doesn't seem to work as of 7.0 on amd64
-               with_sigaltstack=no
                use_sigposix=yes
+               has_dtrace=yes
                ;;
        *-*-*openbsd*)
                host_win32=no
@@ -1151,6 +1150,8 @@ if test x$target_win32 = xno; then
 
        AC_CHECK_HEADERS(execinfo.h)
 
+       AC_CHECK_HEADERS(sys/auxv.h)
+
        AC_CHECK_FUNCS(getgrgid_r)
        AC_CHECK_FUNCS(getgrnam_r)
        AC_CHECK_FUNCS(getpwnam_r)
@@ -2376,14 +2377,18 @@ if test "x$enable_llvm" = "xyes"; then
                ;;
    esac
 
-
    # The output of --cflags seems to include optimizations flags too
    LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
    # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
    # from LLVM classes.
    LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
    LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
-   LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
+   if test "x$host" != "x$target"; then
+      # No need for jit libs
+      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter`
+   else
+      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
+   fi
    LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
 
    # Should be something like '2.6' or '2.7svn'
@@ -2593,9 +2598,9 @@ case "$host" in
                arch_target=arm;
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                # libgc's gc_locks.h depends on this
-           CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6"
+           CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC"
                sgen_supported=true
                ;;
        arm*-linux*)
@@ -2617,7 +2622,7 @@ case "$host" in
 #              AOT_SUPPORTED="no"
 #              ;;
        s390x-*-linux*)
-               TARGET=S390x;
+               TARGET=S390X;
                arch_target=s390x;
                ACCESS_UNALIGNED="yes"
                JIT_SUPPORTED=yes
@@ -2637,7 +2642,7 @@ if test "x$host" != "x$target"; then
                arch_target=arm;
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                jit_wanted=true
                # Can't use tls, since it depends on the runtime detection of tls offsets
                # in mono-compiler.h
@@ -2726,7 +2731,6 @@ if test "x$host" != "x$target"; then
        esac
 fi
 
-# FIXME: Define the others as well
 case "$TARGET" in
 X86)
        AC_DEFINE(TARGET_X86, 1, [...])
@@ -2744,14 +2748,32 @@ POWERPC64)
        AC_DEFINE(TARGET_POWERPC, 1, [...])
        AC_DEFINE(TARGET_POWERPC64, 1, [...])
        ;;
-S390x)
+S390X)
        AC_DEFINE(TARGET_S390X, 1, [...])
        ;;
 MIPS)
        AC_DEFINE(TARGET_MIPS, 1, [...])
        ;;
+IA64)
+       AC_DEFINE(TARGET_IA64, 1, [...])
+       ;;
+SPARC)
+       AC_DEFINE(TARGET_SPARC, 1, [...])
+       ;;
+SPARC64)
+       AC_DEFINE(TARGET_SPARC64, 1, [...])
+       ;;
 esac
 
+dnl Use GCC atomic ops if they work on the target.
+if test x$GCC = "xyes"; then
+       case $TARGET in
+       X86 | AMD64 | ARM | POWERPC | POWERPC64 | MIPS)
+               AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...])
+               ;;
+       esac
+fi
+
 if test "x$target_mach" = "xyes"; then
    if test "x$TARGET" = "xARM"; then
          AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
@@ -2960,11 +2982,6 @@ if test "x$icall_tables" = "xno"; then
    AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
 fi
 
-if test "x$mono_cv_clang" = "xyes"; then
-   # FIXME: This causes many compilation errors
-   with_tls=pthread
-fi
-
 if test "x$with_tls" = "x__thread"; then
        AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
        # Pass the information to libgc
@@ -2973,10 +2990,7 @@ if test "x$with_tls" = "x__thread"; then
        AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
                ], [
                        AC_MSG_RESULT(yes)
-                       # CLANG doesn't support this yet, and it prints warnings about it
-                       if test "x$mono_cv_clang" = "xno"; then
-                               AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
-                       fi
+                       AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tls_model available])
                ], [
                        AC_MSG_RESULT(no)
        ])
@@ -3044,18 +3058,54 @@ if test ${TARGET} = ARM; then
        CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
        unset fpu
 
-       if test x$cross_compiling = xno; then
-               AC_MSG_CHECKING(for ARMV6)
-               AC_TRY_RUN([
-                       int main () { __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory"); return 0; }
-                               ], armv6=yes, armv6=no)
-
-               AC_MSG_RESULT($armv6)
-               if test ${armv6} = yes; then
-                  AC_DEFINE(HAVE_ARMV6, 1, "Host supports ARMV6 instructions")
-                  # libgc's gc_locks.h depends on this
-                  CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6"
-               fi
+       dnl *********************************************
+       dnl *** Check which ARM version(s) we can use ***
+       dnl *********************************************
+       AC_MSG_CHECKING(which ARM version to use)
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__)
+               #error Not on ARM v5.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__)
+               #error Not on ARM v6.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__)
+               #error Not on ARM v7.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+               arm_v7=yes
+       ], [])
+
+       if test x$arm_v5 = xyes; then
+               AC_DEFINE(HAVE_ARMV5, 1, [ARM v5])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1"
+       fi
+
+       if test x$arm_v6 = xyes; then
+               AC_DEFINE(HAVE_ARMV6, 1, [ARM v6])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1"
+       fi
+
+       if test x$arm_v7 = xyes; then
+               AC_DEFINE(HAVE_ARMV7, 1, [ARM v7])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1"
        fi
 fi
 
@@ -3226,12 +3276,11 @@ AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64)
 AM_CONDITIONAL(X86, test x$TARGET = xX86)
 AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
 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(POWERPC64, test x$TARGET = xPOWERPC64)
 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
-AM_CONDITIONAL(S390x, test x$TARGET = xS390x)
+AM_CONDITIONAL(S390X, test x$TARGET = xS390X)
 AM_CONDITIONAL(HOST_X86, test x$HOST = xX86)
 AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64)
 AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM)