[PATCH wayland 3/4] scanner: make use of __has_attribute()
Emil Velikov
emil.l.velikov at gmail.com
Fri Feb 16 16:22:32 UTC 2018
From: Emil Velikov <emil.velikov at collabora.com>
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 at collabora.com>
---
src/scanner.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
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"
--
2.16.0
More information about the wayland-devel
mailing list