Commit b6fff391 authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Add a configure test for the visibility hidden attribute

parent 7267a786
...@@ -35,6 +35,24 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS], ...@@ -35,6 +35,24 @@ AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
]) ])
# FP_VISIBILITY_HIDDEN
# ----------------------------------
# Is the visibility hidden attribute supported?
AC_DEFUN([FP_VISIBILITY_HIDDEN],
[
AC_MSG_CHECKING([whether __attribute__((visibility("hidden"))) is supported])
echo '__attribute__((visibility("hidden"))) void foo(void) {}' > conftest.c
if $CC -Wall -Werror -c conftest.c > /dev/null 2>&1
then
AC_MSG_RESULT([yes])
AC_DEFINE(HAS_VISIBILITY_HIDDEN, 1, [Has visibility hidden])
else
AC_MSG_RESULT([no])
fi
rm -f conftest.c conftest.o
])
# FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN # FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
# ---------------------------------- # ----------------------------------
# Little endian Arm on Linux with some ABIs has big endian word order # Little endian Arm on Linux with some ABIs has big endian word order
......
...@@ -835,6 +835,8 @@ AC_COMPILE_IFELSE( ...@@ -835,6 +835,8 @@ AC_COMPILE_IFELSE(
[AC_MSG_RESULT(no)]) [AC_MSG_RESULT(no)])
CFLAGS="$CFLAGS2" CFLAGS="$CFLAGS2"
FP_VISIBILITY_HIDDEN
dnl ** check for librt dnl ** check for librt
AC_CHECK_LIB(rt, clock_gettime) AC_CHECK_LIB(rt, clock_gettime)
AC_CHECK_FUNCS(clock_gettime timer_create timer_settime) AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
......
...@@ -51,7 +51,7 @@ extern "C" { ...@@ -51,7 +51,7 @@ extern "C" {
// Symbols that are extern, but private to the RTS, are declared // Symbols that are extern, but private to the RTS, are declared
// with visibility "hidden" to hide them outside the RTS shared // with visibility "hidden" to hide them outside the RTS shared
// library. // library.
#if !defined(mingw32_HOST_OS) #if defined(HAS_VISIBILITY_HIDDEN)
#define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden")) #define RTS_PRIVATE GNUC3_ATTRIBUTE(visibility("hidden"))
#else #else
#define RTS_PRIVATE /* disabled: RTS_PRIVATE */ #define RTS_PRIVATE /* disabled: RTS_PRIVATE */
......
...@@ -5,6 +5,6 @@ ...@@ -5,6 +5,6 @@
/* On Windows, with gcc 4.5.0-1, using visibility hidden gives: /* On Windows, with gcc 4.5.0-1, using visibility hidden gives:
error: visibility attribute not supported in this configuration; ignored error: visibility attribute not supported in this configuration; ignored
*/ */
#if __GNUC__ >= 4 && !defined(freebsd_HOST_OS) && !defined(mingw32_HOST_OS) #if defined(HAS_VISIBILITY_HIDDEN) && !defined(freebsd_HOST_OS)
#pragma GCC visibility push(hidden) #pragma GCC visibility push(hidden)
#endif #endif
#if __GNUC__ >= 4 && !defined(freebsd_HOST_OS) && !defined(mingw32_HOST_OS) #if defined(HAS_VISIBILITY_HIDDEN) && !defined(freebsd_HOST_OS)
#pragma GCC visibility pop #pragma GCC visibility pop
#endif #endif
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment