aboutsummaryrefslogtreecommitdiffstats
path: root/src/scanner.c
diff options
context:
space:
mode:
authorEmil Velikov <emil.velikov@collabora.com>2018-02-16 16:22:32 +0000
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2018-02-22 11:56:57 +0200
commitbd92689382e5f401c6de26bdb8856cc3584f5c3a (patch)
tree11015d77ad468916aff8764068ef0a14566d57d9 /src/scanner.c
parentbuild: use public-code when using the local wayland-scanner (diff)
downloadwayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar
wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar.gz
wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar.bz2
wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar.lz
wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar.xz
wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar.zst
wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.zip
scanner: make use of __has_attribute()
A more generic way to evaluating various attributes, __has_attribute is available with gcc, clang, even the Oracle/Sun compiler. Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk> Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Diffstat (limited to 'src/scanner.c')
-rw-r--r--src/scanner.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/scanner.c b/src/scanner.c
index 679e006..c93070c 100644
--- a/src/scanner.c
+++ b/src/scanner.c
@@ -1744,7 +1744,11 @@ emit_code(struct protocol *protocol, enum visibility vis)
* we want to have the symbols hidden. */
if (vis == PRIVATE) {
symbol_visibility = "WL_PRIVATE";
- printf("#if defined(__GNUC__) && __GNUC__ >= 4\n"
+ printf("#ifndef __has_attribute\n"
+ "# define __has_attribute(x) 0 /* Compatibility with non-clang compilers. */\n"
+ "#endif\n\n");
+
+ printf("#if (__has_attribute(visibility) || defined(__GNUC__) && __GNUC__ >= 4\n"
"#define WL_PRIVATE __attribute__ ((visibility(\"hidden\")))\n"
"#else\n"
"#define WL_PRIVATE\n"