meson.build: Build X11 backend optionally 64/24164/1
authorMarius Vlad <marius.vlad@collabora.com>
Wed, 12 Feb 2020 11:00:36 +0000 (13:00 +0200)
committerMarius Vlad <marius.vlad@collabora.com>
Wed, 4 Mar 2020 10:18:41 +0000 (12:18 +0200)
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

meson.build
src/main.c

index a6c9269..e1ba3c1 100644 (file)
@@ -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)
 
index f63cdaf..e1ebab5 100644 (file)
@@ -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,