aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2022-11-25 17:36:24 +0100
committerAlexander Orzechowski <alex@ozal.ski>2022-12-06 22:39:45 +0000
commit6c897756b6340d098f50eeb0da0d39abda87fdda (patch)
tree9e0f224e37eb9390020c62e65300aa5610939958
parentafe1ae4479a680cebfc5b12d9b5dbafefbd73395 (diff)
build: use a configuration file for internal features
This avoids re-building the whole project when switching one Meson option. This shrinks down the compiler invocation command line, making it more readable and making it easier to inspect which flags are passed in (the generated file can be opened). Additionally this is more consistent with our external feature handling, which uses <wlr/config.h> already.
-rw-r--r--include/backend/x11.h10
-rw-r--r--include/meson.build8
-rw-r--r--include/xwayland/xwm.h4
-rw-r--r--meson.build8
4 files changed, 18 insertions, 12 deletions
diff --git a/include/backend/x11.h b/include/backend/x11.h
index 9c0c1a4d..704d48f1 100644
--- a/include/backend/x11.h
+++ b/include/backend/x11.h
@@ -9,10 +9,6 @@
#include <xcb/xcb.h>
#include <xcb/present.h>
-#if HAS_XCB_ERRORS
-#include <xcb/xcb_errors.h>
-#endif
-
#include <pixman.h>
#include <wlr/backend/x11.h>
#include <wlr/interfaces/wlr_keyboard.h>
@@ -21,6 +17,12 @@
#include <wlr/types/wlr_pointer.h>
#include <wlr/render/drm_format_set.h>
+#include "config.h"
+
+#if HAS_XCB_ERRORS
+#include <xcb/xcb_errors.h>
+#endif
+
#define XCB_EVENT_RESPONSE_TYPE_MASK 0x7f
struct wlr_x11_backend;
diff --git a/include/meson.build b/include/meson.build
index 358aada8..bc91a766 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -30,3 +30,11 @@ install_subdir('wlr',
install_dir: get_option('includedir'),
exclude_files: exclude_files,
)
+
+foreach name, have : internal_features
+ internal_config.set10('HAS_' + name.underscorify().to_upper(), have)
+endforeach
+wlr_files += configure_file(
+ output: 'config.h',
+ configuration: internal_config,
+)
diff --git a/include/xwayland/xwm.h b/include/xwayland/xwm.h
index 391e09ab..7ed97b15 100644
--- a/include/xwayland/xwm.h
+++ b/include/xwayland/xwm.h
@@ -5,10 +5,12 @@
#include <wlr/config.h>
#include <wlr/xwayland.h>
#include <xcb/render.h>
+#include "config.h"
+#include "xwayland/selection.h"
+
#if HAS_XCB_ERRORS
#include <xcb/xcb_errors.h>
#endif
-#include "xwayland/selection.h"
/* This is in xcb/xcb_event.h, but pulling xcb-util just for a constant
* others redefine anyway is meh
diff --git a/meson.build b/meson.build
index fc3f88af..0a584621 100644
--- a/meson.build
+++ b/meson.build
@@ -99,6 +99,7 @@ internal_features = {
'xcb-errors': false,
'egl': false,
}
+internal_config = configuration_data()
wayland_project_options = ['tests=false', 'documentation=false']
wayland_server = dependency('wayland-server',
@@ -158,13 +159,6 @@ subdir('xwayland')
subdir('include')
-foreach name, have : internal_features
- add_project_arguments(
- '-DHAS_@0@=@1@'.format(name.underscorify().to_upper(), have.to_int()),
- language: 'c',
- )
-endforeach
-
wlr_inc = include_directories('include')
proto_inc = include_directories('protocol')