configure.ac: split -fvisibility and __attribute__((visibility)) checks
authorEmil Velikov <emil.l.velikov@gmail.com>
Mon, 9 Mar 2015 12:18:32 +0000 (12:18 +0000)
committerEmil Velikov <emil.l.velikov@gmail.com>
Tue, 28 Apr 2015 10:18:43 +0000 (11:18 +0100)
The former does not imply the latter and vice-versa. One such example is
the Sun compiler.

v2: Add missing closing brakets. (Alan)

Cc: Alan Coopersmith <alan.coopersmith@oracle.com>
Cc: Thierry Reding <treding@nvidia.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
configure.ac

index 155d577..76cf91e 100644 (file)
@@ -415,12 +415,17 @@ if test "x$GCC" = xyes; then
 
     # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
     CFLAGS=$save_CFLAGS
+    AC_SUBST([VISIBILITY_CFLAGS])
+fi
 
-    if test "x$VISIBILITY_CFLAGS" != x; then
-        AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler has -fvisibility support])
-    fi
+AC_MSG_CHECKING([whether $CC supports __attribute__((visibility))])
+AC_LINK_IFELSE([AC_LANG_PROGRAM([
+    int foo_default( void ) __attribute__((visibility("default")));
+    int foo_hidden( void ) __attribute__((visibility("hidden")));
+])], HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]));
 
-    AC_SUBST([VISIBILITY_CFLAGS])
+if test "x$HAVE_ATTRIBUTE_VISIBILITY" = xyes; then
+    AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler supports __attribute__((visibility))])
 fi
 
 AC_SUBST(WARN_CFLAGS)