[runtime] Prioritize loading a profiler library from the installation dir over standa...
[mono.git] / configure.ac
index 7b9f3fabe10508c3e852ce213b10ab8c826d64d3..891ccf2a210b9eac036a7e344d5932ad1df1e754 100644 (file)
@@ -526,26 +526,30 @@ AC_CACHE_CHECK([for clang],
        [])
 ])
 
+AC_ARG_ENABLE(visiblity-hidden,
+[  --disable-visibility-hidden    disable usage of -fvisiblity=hidden]
+   disable_visibility_hidden=no, disable_visibility_hidden=yes)
+
 WARN=''
 if test x"$GCC" = xyes; then
         WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
+
+               # We require C99 with some GNU extensions, e.g. `linux` macro
+               CFLAGS="$CFLAGS -std=gnu99"
+
                # The runtime code does not respect ANSI C strict aliasing rules
                CFLAGS="$CFLAGS -fno-strict-aliasing"
 
                # We rely on signed overflow to behave
                CFLAGS="$CFLAGS -fwrapv"
 
-               ORIG_CFLAGS=$CFLAGS
-               CFLAGS="$CFLAGS -Wdeclaration-after-statement"
-               AC_MSG_CHECKING(for -Wdeclaration-after-statement option to gcc)
-               AC_TRY_COMPILE([],[
-                               return 0;
-               ], [
-                  AC_MSG_RESULT(yes)
-               ], [
-                  AC_MSG_RESULT(no)
-                  CFLAGS=$ORIG_CFLAGS
-               ])
+               CFLAGS="$CFLAGS -DMONO_DLL_EXPORT"
+               if test x"$disable_visibility_hidden" = xno; then
+                  # Don't export any symbols by default
+                  SHARED_CFLAGS="-fvisibility=hidden"
+                  CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB -fvisibility=hidden"
+                  CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
+               fi
 
                ORIG_CFLAGS=$CFLAGS
                # Check for the normal version, since gcc ignores unknown -Wno options
@@ -677,6 +681,7 @@ if test x$werror_flag = xyes; then
        WERROR_CFLAGS="-Werror"
 fi
 AC_SUBST([WERROR_CFLAGS])
+AC_SUBST([SHARED_CFLAGS])
 
 ac_configure_args="$ac_configure_args \"CPPFLAGS_FOR_EGLIB=$EGLIB_CPPFLAGS\" \"CFLAGS_FOR_EGLIB=$CFLAGS_FOR_EGLIB\""
 AC_CONFIG_SUBDIRS(eglib)
@@ -1144,6 +1149,12 @@ AC_TRY_COMPILE([
 
 AC_CHECK_HEADERS(nacl/nacl_dyncode.h)
 
+dnl ***********************************
+dnl *** Checks for signals
+dnl ***********************************
+AC_CHECK_HEADERS(signal.h)
+AC_CHECK_FUNCS(sigaction)
+
 if test x$target_win32 = xno; then
 
        dnl hires monotonic clock support
@@ -1704,11 +1715,23 @@ if test x$target_win32 = xno; then
        AC_CHECK_FUNCS(pthread_attr_getstack pthread_attr_getstacksize)
        AC_CHECK_FUNCS(pthread_get_stacksize_np pthread_get_stackaddr_np)
 
-       dnl ***********************************
-       dnl *** Checks for signals
-       dnl ***********************************
-       AC_CHECK_HEADERS(signal.h)
-       AC_CHECK_FUNCS(sigaction)
+       dnl **********************************
+       dnl *** Check for mincore ***
+       dnl **********************************
+       AC_MSG_CHECKING(for mincore)
+               AC_TRY_LINK([
+               #include <stdio.h>
+               #include <sys/types.h>
+               #include <sys/mman.h>
+       ], [
+               mincore(NULL, 0, NULL);
+       ], [
+               # Yes, we have it...
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_MINCORE, 1, [Have mincore])
+       ], [
+               AC_MSG_RESULT(no)
+       ])
 
        dnl ***********************************
        dnl *** Checks for working __thread ***
@@ -2688,7 +2711,9 @@ if test "x$enable_llvm" = "xyes"; then
          -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMExecutionEngine -lLLVMMC -lLLVMCore \
          -lLLVMSupport -lstdc++"
        LLVM_LIBS="$LLVM_LIBS $LLVM_SYSTEM_LIBS"
-       llvm_api_version=1
+
+       llvm_config_path=$with_llvm/include/llvm/Config/llvm-config.h
+       llvm_api_version=`awk '/MONO_API_VERSION/ { print $3 }' $llvm_config_path`
    fi  
 
    if test "x$llvm_api_version" = "x"; then
@@ -3019,6 +3044,18 @@ if test "x$host" != "x$target"; then
                with_tls=pthread
                target_mach=no
                ;;
+   x86_64*-linux-*)
+               TARGET=AMD64;
+               arch_target=amd64;
+               AC_DEFINE(TARGET_AMD64, 1, [...])
+               AC_DEFINE(TARGET_ANDROID, 1, [...])
+               CPPFLAGS="$CPPFLAGS"
+               sgen_supported=true
+               # Can't use tls, since it depends on the runtime detection of tls offsets
+               # in mono-compiler.h
+               with_tls=pthread
+               target_mach=no
+               ;;
    aarch64*-linux-*)
                TARGET=ARM64;
                arch_target=arm64;