diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2020-02-12 13:00:36 +0200 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2020-03-04 12:18:41 +0200 |
commit | b352cee6f8113e63864ac644502ace3bd75bfae1 (patch) | |
tree | 698cb0fd575902cbc34be8e43efbee3d22311608 | |
parent | 93523a7f38bfe1ad5466fee50f1c7d73c4cafcd2 (diff) |
meson.build: Build X11 backend optionally
libweston6 built and installed the x11 backend unconditionally, but this
is no longer the case with newer version of weston. Also, poky-agl
configuration specifically removes any distro features that contain x11.
Users wanting to test the compositor under a x11 backend need to
compile their own libweston version this shouldn't be a problem.
Unfortunatelly, meson does not have a easy way to determine if a header
is installed or not so after glancing over the documentation we need to
use the compilers' 'has_header' function to determine if the x11 header
was installed or not by the weston recipe.
This makes sure that if we're building out-of-tree it finds the proper
header as well.
Bug-AGL: SPEC-3180
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I3dce7c1beaf5bfab31fb88bc0462c7eb8320cfc8
-rw-r--r-- | meson.build | 20 | ||||
-rw-r--r-- | src/main.c | 10 |
2 files changed, 29 insertions, 1 deletions
diff --git a/meson.build b/meson.build index a6c9269..e1ba3c1 100644 --- a/meson.build +++ b/meson.build @@ -105,10 +105,11 @@ endif dir_data = join_paths(prefix_path, get_option('datadir')) dir_data_agl_compositor = join_paths('agl-compositor', 'protocols') dir_data_pc = join_paths(dir_data, 'pkgconfig') +libweston_dep = dependency('libweston-7') deps_libweston = [ dependency('wayland-server'), - dependency('libweston-7'), + libweston_dep, dependency('libweston-desktop-7'), local_dep, ] @@ -125,6 +126,23 @@ srcs_agl_compositor = [ xdg_shell_protocol_c, ] +# From meson documentation: +# In order to look for headers in a specific directory you can use args : +# '-I/extra/include/dir, but this should only be used in exceptional cases for +# includes that can't be detected via pkg-config and passed via dependencies. +if libweston_dep.found() + if not prefix_path.contains('/usr') + dir_path_x11_backend = join_paths(prefix_path, 'include', 'libweston-7', 'libweston', 'backend-x11.h') + else + dir_path_x11_backend = join_paths('libweston-7', 'libweston', 'backend-x11.h') + endif + + # do the test + if cc.has_header(dir_path_x11_backend) + config_h.set('HAVE_BACKEND_X11', 1) + endif +endif + if dep_libsystemd.found() config_h.set('HAVE_SYSTEMD', 1) @@ -38,7 +38,9 @@ #include <libweston/backend-drm.h> #include <libweston/backend-wayland.h> +#ifdef HAVE_BACKEND_X11 #include <libweston/backend-x11.h> +#endif #include <libweston/libweston.h> #include <libweston/windowed-output-api.h> #include <libweston/config-parser.h> @@ -710,6 +712,7 @@ load_wayland_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) return windowed_create_outputs(ivi, output_count, "WL", "wayland"); } +#ifdef HAVE_BACKEND_X11 static int load_x11_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) { @@ -747,6 +750,13 @@ load_x11_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) return windowed_create_outputs(ivi, output_count, "X", "screen"); } +#else +static int +load_x11_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) +{ + return -1; +} +#endif static int load_backend(struct ivi_compositor *ivi, const char *backend, |