summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac39
1 files changed, 28 insertions, 11 deletions
diff --git a/configure.ac b/configure.ac
index 993b5d5cb0a..7792ae5bad3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -525,17 +525,6 @@ if test "$GCC" = yes -a "$ICC" = no; then
# Optimization flags for specific files that benefit from vectorization
PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTORIZE, [-ftree-vectorize])
#
- # If the compiler knows how to hide symbols add the switch needed for that
- # to CFLAGS_SL_MODULE and define HAVE_VISIBILITY_ATTRIBUTE.
- PGAC_PROG_CC_VAR_OPT(CFLAGS_SL_MODULE, [-fvisibility=hidden])
- if test "$pgac_cv_prog_CC_cflags__fvisibility_hidden" = yes; then
- AC_DEFINE([HAVE_VISIBILITY_ATTRIBUTE], 1,
- [Define to 1 if your compiler knows the visibility("hidden") attribute.])
- fi
- # For C++ we additionally want -fvisibility-inlines-hidden
- PGAC_PROG_VARCXX_VARFLAGS_OPT(CXX, CXXFLAGS_SL_MODULE, [-fvisibility=hidden])
- PGAC_PROG_VARCXX_VARFLAGS_OPT(CXX, CXXFLAGS_SL_MODULE, [-fvisibility-inlines-hidden])
- #
# The following tests want to suppress various unhelpful warnings by adding
# -Wno-foo switches. But gcc won't complain about unrecognized -Wno-foo
# switches, so we have to test for the positive form and if that works,
@@ -582,6 +571,34 @@ elif test "$PORTNAME" = "aix"; then
PGAC_PROG_CXX_CFLAGS_OPT([-qlonglong])
fi
+# If the compiler knows how to hide symbols, add the switch needed for that to
+# CFLAGS_SL_MODULE and define HAVE_VISIBILITY_ATTRIBUTE.
+#
+# This is done separately from the above because -fvisibility is supported by
+# quite a few different compilers, making the required repetition bothersome.
+#
+# We might need to add a separate test to check if
+# __attribute__((visibility("hidden"))) is supported, if we encounter a
+# compiler that supports one of the supported variants of -fvisibility=hidden
+# but uses a different syntax to mark a symbol as exported.
+if test "$GCC" = yes -o "$SUN_STUDIO_CC" = yes ; then
+ PGAC_PROG_CC_VAR_OPT(CFLAGS_SL_MODULE, [-fvisibility=hidden])
+ # For C++ we additionally want -fvisibility-inlines-hidden
+ PGAC_PROG_VARCXX_VARFLAGS_OPT(CXX, CXXFLAGS_SL_MODULE, [-fvisibility=hidden])
+ PGAC_PROG_VARCXX_VARFLAGS_OPT(CXX, CXXFLAGS_SL_MODULE, [-fvisibility-inlines-hidden])
+ have_visibility_attribute=$pgac_cv_prog_CC_cflags__fvisibility_hidden
+elif test "$PORTNAME" = "aix"; then
+ # Note that xlc accepts -fvisibility=hidden as a file.
+ PGAC_PROG_CC_VAR_OPT(CFLAGS_SL_MODULE, [-qvisibility=hidden])
+ PGAC_PROG_VARCXX_VARFLAGS_OPT(CXX, CXXFLAGS_SL_MODULE, [-qvisibility=hidden])
+ have_visibility_attribute=$pgac_cv_prog_CC_cflags__qvisibility_hidden
+fi
+
+if test "$have_visibility_attribute" = "yes"; then
+ AC_DEFINE([HAVE_VISIBILITY_ATTRIBUTE], 1,
+ [Define to 1 if your compiler knows the visibility("hidden") attribute.])
+fi
+
AC_SUBST(CFLAGS_UNROLL_LOOPS)
AC_SUBST(CFLAGS_VECTORIZE)
AC_SUBST(CFLAGS_SL_MODULE)