diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-03-05 18:28:33 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:52:15 -0500 |
commit | 8ef42b1fab5e7608a8f90f303ec4c1d3524627d9 (patch) | |
tree | 029c1856fc9338aa81bb8e4a7d5099cce86ec3dd | |
parent | 3bec2022eb610342de4a023205996b3872035da7 (diff) | |
download | samba-8ef42b1fab5e7608a8f90f303ec4c1d3524627d9.tar.gz samba-8ef42b1fab5e7608a8f90f303ec4c1d3524627d9.tar.bz2 samba-8ef42b1fab5e7608a8f90f303ec4c1d3524627d9.zip |
r13847: Fix some portability issues with the visibility attribute.
(This used to be commit fe5eae0e983d1c8634dd9b7caf19cd103c641223)
-rw-r--r-- | source4/build/m4/check_cc.m4 | 16 | ||||
-rw-r--r-- | source4/include/includes.h | 10 |
2 files changed, 15 insertions, 11 deletions
diff --git a/source4/build/m4/check_cc.m4 b/source4/build/m4/check_cc.m4 index a2d2bae79b..219dc6ad37 100644 --- a/source4/build/m4/check_cc.m4 +++ b/source4/build/m4/check_cc.m4 @@ -124,14 +124,16 @@ if test x"$GCC" = x"yes" ; then fi if test -n "$VISIBILITY_CFLAGS"; then OLD_CFLAGS="${CFLAGS}" - CFLAGS="${CFLAGS} ${VISIBILITY_CFLAGS} -D_PUBLIC_=__attribute__((visibility(\"default\")))" - VISIBILITY_CFLAGS="${VISIBILITY_CFLAGS} -D_PUBLIC_=\"__attribute__((visibility(\\\"default\\\")))\"" - AC_MSG_CHECKING([that the C compiler can use the VISIBILITY_CFLAGS]) + CFLAGS="${CFLAGS} ${VISIBILITY_CFLAGS}" + AC_MSG_CHECKING([whether the C compiler supports the visibility attribute]) AC_TRY_RUN([ - _PUBLIC_ void vis_foo1(void) {} - __attribute__((visibility("default"))) void vis_foo2(void) {} - #include "${srcdir-.}/build/tests/trivial.c" - ], AC_MSG_RESULT(yes), [AC_MSG_RESULT(no);VISIBILITY_CFLAGS=""]) +#pragma GCC visibility push(hidden) +void vis_foo1(void) {} +__attribute__((visibility("default"))) void vis_foo2(void) {} +#include "${srcdir-.}/build/tests/trivial.c" +], [AC_MSG_RESULT(yes); +AC_DEFINE(HAVE_VISIBILITY_ATTR,1,[Whether the C compiler supports the visibility attribute])], +[AC_MSG_RESULT(no);VISIBILITY_CFLAGS=""]) CFLAGS="${OLD_CFLAGS}" fi diff --git a/source4/include/includes.h b/source4/include/includes.h index 83bc9569cb..32dda4a302 100644 --- a/source4/include/includes.h +++ b/source4/include/includes.h @@ -36,6 +36,12 @@ /** Feel free to add definitions for other compilers here. */ #endif +#ifdef HAVE_VISIBILITY_ATTR +# define _PUBLIC_ __attribute__((visibility("default"))) +#else +# define _PUBLIC_ +#endif + #ifndef PRINTF_ATTRIBUTE #if !defined(NO_PRINTF_ATTRIBUTE) && (__GNUC__ >= 3) /** Use gcc attribute to check printf fns. a1 is the 1-based index of @@ -158,8 +164,4 @@ extern int DEBUGLEVEL; #define discard_const(ptr) ((void *)((intptr_t)(ptr))) #define discard_const_p(type, ptr) ((type *)discard_const(ptr)) -#ifndef _PUBLIC_ -#define _PUBLIC_ -#endif - #endif /* _INCLUDES_H */ |