Use the GCC 4 visibility extension to mark everything in xcbint.h hidden.
authorTORRI Vincent <Vincent.Torri@iecn.u-nancy.fr>
Tue, 7 Mar 2006 18:25:23 +0000 (10:25 -0800)
committerJamey Sharp <jamey@minilop.net>
Tue, 7 Mar 2006 18:25:23 +0000 (10:25 -0800)
acinclude.m4 [new file with mode: 0644]
configure.ac
src/xcbint.h

diff --git a/acinclude.m4 b/acinclude.m4
new file mode 100644 (file)
index 0000000..46a82b9
--- /dev/null
@@ -0,0 +1,29 @@
+dnl Detection and configuration of the visibility feature of gcc
+dnl Vincent Torri 2006-02-11
+dnl
+dnl GCC_CHECK_VISIBILITY([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Check the visibility feature of gcc
+dnl
+AC_DEFUN([GCC_CHECK_VISIBILITY],
+   [AC_MSG_CHECKING([whether ${CC} supports visibility feature])
+    save_CFLAGS=${CFLAGS}
+    CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+    AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[
+#pragma GCC visibility push(hidden)
+extern void f(int);
+#pragma GCC visibility pop
+          ]],
+          [[]]
+        )],
+       [AC_DEFINE(
+           GCC_HAS_VISIBILITY,
+           [],
+           [Defined if GCC supports the vilibility feature])
+        m4_if([$1], [], [:], [$1])
+        AC_MSG_RESULT(yes)],
+       [m4_if([$2], [], [:], [$2])
+        AC_MSG_RESULT(no)])
+    CFLAGS=${save_CFLAGS}
+   ])
index 5e4405c..b022b4c 100644 (file)
@@ -99,6 +99,8 @@ CWARNFLAGS="-Wall -pedantic -Wpointer-arith \
        -Wstrict-prototypes -Wmissing-declarations -Wnested-externs"
 AC_SUBST(CWARNFLAGS)
 
+GCC_CHECK_VISIBILITY()
+
 AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile])
 AC_CONFIG_FILES([xcb.pc])
 
index f3830f9..7c8f331 100644 (file)
 #include "config.h"
 #endif
 
+#ifdef GCC_HAS_VISIBILITY
+#pragma GCC visibility push(hidden)
+#endif
+
 enum workarounds {
     WORKAROUND_NONE,
     WORKAROUND_GLX_GET_FB_CONFIGS_BUG
@@ -154,4 +158,9 @@ struct XCBConnection {
 };
 
 int _xcb_conn_wait(XCBConnection *c, const int should_write, pthread_cond_t *cond);
+
+#ifdef GCC_HAS_VISIBILITY
+#pragma GCC visibility pop
+#endif
+
 #endif