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.
This commit is contained in:
Simon Ser 2022-11-25 17:36:24 +01:00 committed by Alexander Orzechowski
parent afe1ae4479
commit 6c897756b6
4 changed files with 18 additions and 12 deletions

View file

@ -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;

View file

@ -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,
)

View file

@ -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

View file

@ -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')