diff options
author | TORRI Vincent <Vincent.Torri@iecn.u-nancy.fr> | 2006-03-07 10:25:23 -0800 |
---|---|---|
committer | Jamey Sharp <jamey@minilop.net> | 2006-03-07 10:25:23 -0800 |
commit | 522a6e0eac9adeaac533a5b700f42d85d46e2dd7 (patch) | |
tree | c7b1a477737bf0a98be7f435061f84ab8e1cf98e | |
parent | 5437032c7dee85da99b612a707fa94d012d40282 (diff) |
Use the GCC 4 visibility extension to mark everything in xcbint.h hidden.
-rw-r--r-- | acinclude.m4 | 29 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/xcbint.h | 9 |
3 files changed, 40 insertions, 0 deletions
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 |