diff options
Diffstat (limited to 'configure.ac')
| -rw-r--r-- | configure.ac | 39 |
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) |
