summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac22
-rw-r--r--va/sysdeps.h8
2 files changed, 30 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 9f37d90..1f958a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -171,6 +171,28 @@ if test "$enable_docs" = "yes"; then
fi
AM_CONDITIONAL(ENABLE_DOCS, test "$enable_docs" = "yes")
+# Check for __attribute__((visibility()))
+AC_CACHE_CHECK([whether __attribute__((visibility())) is supported],
+ ac_cv_have_gnuc_visibility_attribute,
+ [cat > conftest.c <<EOF
+int foo __attribute__ ((visibility ("hidden"))) = 1;
+int bar __attribute__ ((visibility ("protected"))) = 1;
+EOF
+ ac_cv_have_gnuc_visibility_attribute="no"
+ if ${CC-cc} -Werror -S conftest.c -o conftest.s >/dev/null 2>&1; then
+ if grep '\.hidden.*foo' conftest.s >/dev/null; then
+ if grep '\.protected.*bar' conftest.s >/dev/null; then
+ ac_cv_have_gnuc_visibility_attribute="yes"
+ fi
+ fi
+ fi
+ rm -f conftest.[cs]
+])
+if test "$ac_cv_have_gnuc_visibility_attribute" = "yes"; then
+ AC_DEFINE([HAVE_GNUC_VISIBILITY_ATTRIBUTE], [1],
+ [Defined to 1 if GCC visibility attribute is supported])
+fi
+
# Check for X11
USE_X11="no"
if test "$enable_x11" = "yes"; then
diff --git a/va/sysdeps.h b/va/sysdeps.h
index 0752b17..d864721 100644
--- a/va/sysdeps.h
+++ b/va/sysdeps.h
@@ -41,4 +41,12 @@
# define False 0
#endif
+#if defined __GNUC__ && defined HAVE_GNUC_VISIBILITY_ATTRIBUTE
+# define DLL_HIDDEN __attribute__((visibility("hidden")))
+# define DLL_EXPORT __attribute__((visibility("default")))
+#else
+# define DLL_HIDDEN
+# define DLL_EXPORT
+#endif
+
#endif /* SYSDEPS_H */