aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-01-10 14:51:55 +0100
committerSimon Ser <contact@emersion.fr>2022-01-10 15:08:46 +0100
commit0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9 (patch)
treef45fae05026f0cfeaf4ae715f22fc6ccf9d7e905
parenttests: use __typeof__ instead of typeof (diff)
downloadwayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.tar
wayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.tar.gz
wayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.tar.bz2
wayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.tar.lz
wayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.tar.xz
wayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.tar.zst
wayland-0d314c4a04ef1b86a1ea66107b2d1a8d1bcd93b9.zip
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 <contact@emersion.fr>
-rw-r--r--cursor/xcursor.c1
-rw-r--r--meson.build10
-rw-r--r--tests/display-test.c1
-rw-r--r--tests/event-loop-test.c1
-rw-r--r--tests/fixed-test.c1
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 <stdio.h>
#include <stdlib.h>
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 <time.h>')
rt_dep = cc.find_library('rt')
- if not cc.has_function('clock_gettime', prefix: '#include <time.h>', dependencies: rt_dep)
+ if not cc.has_function('clock_gettime', prefix: '#include <time.h>', 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 <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
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 <stdlib.h>
#include <stdint.h>
#include <assert.h>
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 <stdlib.h>
#include <stdio.h>
#include <assert.h>