r13847: Fix some portability issues with the visibility attribute.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 5 Mar 2006 18:28:33 +0000 (18:28 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:52:15 +0000 (13:52 -0500)
(This used to be commit fe5eae0e983d1c8634dd9b7caf19cd103c641223)

source4/build/m4/check_cc.m4
source4/include/includes.h

index a2d2bae79b89d992bde87f39e8a0001994681d6a..219dc6ad37bbfcfbf880ba70d270865b6a3ae643 100644 (file)
@@ -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
 
index 83bc9569cb5b7de8b7c3fab8b3d6d11f3c98a18b..32dda4a302b8cc208b4546cd4ae3db8d1784c167 100644 (file)
 /** 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 */