diff options
author | Emil Velikov <emil.velikov@collabora.com> | 2018-02-16 16:22:32 +0000 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2018-02-22 11:56:57 +0200 |
commit | bd92689382e5f401c6de26bdb8856cc3584f5c3a (patch) | |
tree | 11015d77ad468916aff8764068ef0a14566d57d9 | |
parent | ab6b156920ced7dfac94e01cada216171b619891 (diff) | |
download | wayland-bd92689382e5f401c6de26bdb8856cc3584f5c3a.tar.gz |
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>
-rw-r--r-- | src/scanner.c | 6 |
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" |