From 522a6e0eac9adeaac533a5b700f42d85d46e2dd7 Mon Sep 17 00:00:00 2001 From: TORRI Vincent Date: Tue, 7 Mar 2006 10:25:23 -0800 Subject: [PATCH] Use the GCC 4 visibility extension to mark everything in xcbint.h hidden. --- acinclude.m4 | 29 +++++++++++++++++++++++++++++ configure.ac | 2 ++ src/xcbint.h | 9 +++++++++ 3 files changed, 40 insertions(+) create mode 100644 acinclude.m4 diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 0000000..46a82b9 --- /dev/null +++ b/acinclude.m4 @@ -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} + ]) diff --git a/configure.ac b/configure.ac index 5e4405c..b022b4c 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/src/xcbint.h b/src/xcbint.h index f3830f9..7c8f331 100644 --- a/src/xcbint.h +++ b/src/xcbint.h @@ -32,6 +32,10 @@ #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 -- 2.34.1