summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2014-02-19 15:56:50 +0100
committerThierry Reding <treding@nvidia.com>2014-07-30 16:58:14 +0200
commit5d8357976a84396ebe10ed5a0d6ba1b79ccdcf2e (patch)
tree5986dd94ff3b108a5aa9fd7fdb51f9656200ed7e /configure.ac
parentd6861609b2b887612d652bb2be7c39f199802937 (diff)
configure: Support symbol visibility when available
Checks whether or not the compiler supports the -fvisibility option. If so it sets the VISIBILITY_CFLAGS variable which can be added to the per directory AM_CFLAGS where appropriate. By default all symbols will be hidden via the VISIBILITY_CFLAGS. The drm_public macro can be used to mark symbols that should be exported. Reviewed-by: Maarten Lankhorst <maarten.lankhorst@canonical.com> Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac20
1 files changed, 20 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 5e9cb6c7..bb0559a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -366,6 +366,26 @@ AC_ARG_WITH([kernel-source],
[kernel_source="$with_kernel_source"])
AC_SUBST(kernel_source)
+dnl Add flags for gcc and g++
+if test "x$GCC" = xyes; then
+ # Enable -fvisibility=hidden if using a gcc that supports it
+ save_CFLAGS="$CFLAGS"
+ AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
+ VISIBILITY_CFLAGS="-fvisibility=hidden"
+ CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
+ [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]);
+
+ # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
+ CFLAGS=$save_CFLAGS
+
+ if test "x$VISIBILITY_CFLAGS" != x; then
+ AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler has -fvisibility support])
+ fi
+
+ AC_SUBST([VISIBILITY_CFLAGS])
+fi
+
AC_SUBST(WARN_CFLAGS)
AC_CONFIG_FILES([
Makefile