summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-02-12 13:00:36 +0200
committerMarius Vlad <marius.vlad@collabora.com>2020-03-04 12:18:41 +0200
commitb352cee6f8113e63864ac644502ace3bd75bfae1 (patch)
tree698cb0fd575902cbc34be8e43efbee3d22311608
parent93523a7f38bfe1ad5466fee50f1c7d73c4cafcd2 (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.build20
-rw-r--r--src/main.c10
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)
diff --git a/src/main.c b/src/main.c
index f63cdaf..e1ebab5 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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,