From 0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 10 Jan 2022 14:51:55 +0100 Subject: [PATCH] build: don't rely on implicit GNU extensions Currently libwayland assumes GNU extensions will be available, but doesn't define the C standard to use. Instead, let's unconditionally enable POSIX extensions, and enable GNU extensions on a case-by-case basis as needed. Signed-off-by: Simon Ser Signed-off-by: James Hilliard [james.hilliard1@gmail.com: backport from upstream commit 0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9] --- cursor/xcursor.c | 1 + meson.build | 10 ++++++++-- tests/display-test.c | 1 + tests/event-loop-test.c | 1 + tests/fixed-test.c | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cursor/xcursor.c b/cursor/xcursor.c index 0506680..188be7c 100644 --- a/cursor/xcursor.c +++ b/cursor/xcursor.c @@ -23,6 +23,7 @@ * SOFTWARE. */ +#define _GNU_SOURCE #include "xcursor.h" #include #include diff --git a/meson.build b/meson.build index 07bbd29..cab267e 100644 --- a/meson.build +++ b/meson.build @@ -14,6 +14,12 @@ config_h = configuration_data() config_h.set_quoted('PACKAGE', meson.project_name()) config_h.set_quoted('PACKAGE_VERSION', meson.project_version()) +cc_args = [] +if host_machine.system() != 'freebsd' + cc_args += ['-D_POSIX_C_SOURCE=200809L'] +endif +add_project_arguments(cc_args, language: 'c') + compiler_flags = [ '-Wno-unused-parameter', '-Wstrict-prototypes', @@ -79,7 +85,7 @@ if get_option('libraries') ] foreach d: decls - if not cc.has_header_symbol(d['header'], d['symbol'], dependencies: epoll_dep) + if not cc.has_header_symbol(d['header'], d['symbol'], dependencies: epoll_dep, args: cc_args) error('@0@ is needed to compile Wayland libraries'.format(d['symbol'])) endif endforeach @@ -87,7 +93,7 @@ if get_option('libraries') rt_dep = [] if not cc.has_function('clock_gettime', prefix: '#include ') rt_dep = cc.find_library('rt') - if not cc.has_function('clock_gettime', prefix: '#include ', dependencies: rt_dep) + if not cc.has_function('clock_gettime', prefix: '#include ', dependencies: rt_dep, args: cc_args) error('clock_gettime not found') endif endif diff --git a/tests/display-test.c b/tests/display-test.c index 763adc9..a6f410d 100644 --- a/tests/display-test.c +++ b/tests/display-test.c @@ -24,6 +24,7 @@ * SOFTWARE. */ +#define _GNU_SOURCE #include #include #include diff --git a/tests/event-loop-test.c b/tests/event-loop-test.c index 9d43c91..a51ba8f 100644 --- a/tests/event-loop-test.c +++ b/tests/event-loop-test.c @@ -24,6 +24,7 @@ * SOFTWARE. */ +#define _GNU_SOURCE #include #include #include diff --git a/tests/fixed-test.c b/tests/fixed-test.c index 47a4dae..0b58797 100644 --- a/tests/fixed-test.c +++ b/tests/fixed-test.c @@ -23,6 +23,7 @@ * SOFTWARE. */ +#define _GNU_SOURCE #include #include #include -- 2.25.1