Use the GCC 4 visibility extension to mark everything in xcbint.h hidden.

This commit is contained in:
TORRI Vincent 2006-03-07 10:25:23 -08:00 committed by Jamey Sharp
parent 5437032c7d
commit 522a6e0eac
3 changed files with 40 additions and 0 deletions

29
acinclude.m4 Normal file
View File

@ -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}
])

View 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])

View File

@ -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