aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVersus Void <versusvoid@gmail.com>2017-10-06 21:50:25 +0000
committerVersus Void <versusvoid@gmail.com>2017-10-06 21:50:25 +0000
commit9cab66f0f914a0194cdfa178377f6413c33ac515 (patch)
tree8d179324b682a64ac4613c4979e7e628d2a14494
parentdecd87043fbe2dfef3b664455298b68604ee0485 (diff)
Make xwayland compile-time optional
-rw-r--r--include/rootston/desktop.h7
-rw-r--r--include/rootston/server.h2
-rw-r--r--include/rootston/view.h4
-rw-r--r--meson.build36
-rw-r--r--meson_options.txt1
-rw-r--r--rootston/desktop.c2
-rw-r--r--rootston/meson.build33
7 files changed, 57 insertions, 28 deletions
diff --git a/include/rootston/desktop.h b/include/rootston/desktop.h
index 0d641848..aa74ad3e 100644
--- a/include/rootston/desktop.h
+++ b/include/rootston/desktop.h
@@ -34,14 +34,17 @@ struct roots_desktop {
struct wlr_compositor *compositor;
struct wlr_wl_shell *wl_shell;
struct wlr_xdg_shell_v6 *xdg_shell_v6;
- struct wlr_xwayland *xwayland;
struct wlr_gamma_control_manager *gamma_control_manager;
struct wl_listener output_add;
struct wl_listener output_remove;
struct wl_listener xdg_shell_v6_surface;
- struct wl_listener xwayland_surface;
struct wl_listener wl_shell_surface;
+
+#ifdef HAS_XWAYLAND
+ struct wlr_xwayland *xwayland;
+ struct wl_listener xwayland_surface;
+#endif
};
struct roots_server;
diff --git a/include/rootston/server.h b/include/rootston/server.h
index 15e3a4ee..a4eacb7f 100644
--- a/include/rootston/server.h
+++ b/include/rootston/server.h
@@ -5,7 +5,9 @@
#include <wlr/backend/session.h>
#include <wlr/types/wlr_data_device_manager.h>
#include <wlr/render.h>
+#ifdef HAS_XWAYLAND
#include <wlr/xwayland.h>
+#endif
#include "rootston/config.h"
#include "rootston/desktop.h"
#include "rootston/input.h"
diff --git a/include/rootston/view.h b/include/rootston/view.h
index 39ff80db..2a90670e 100644
--- a/include/rootston/view.h
+++ b/include/rootston/view.h
@@ -49,12 +49,16 @@ struct roots_view {
union {
struct wlr_wl_shell_surface *wl_shell_surface;
struct wlr_xdg_surface_v6 *xdg_surface_v6;
+#ifdef HAS_XWAYLAND
struct wlr_xwayland_surface *xwayland_surface;
+#endif
};
union {
struct roots_wl_shell_surface *roots_wl_shell_surface;
struct roots_xdg_surface_v6 *roots_xdg_surface_v6;
+#ifdef HAS_XWAYLAND
struct roots_xwayland_surface *roots_xwayland_surface;
+#endif
};
struct wlr_surface *wlr_surface;
// TODO: This would probably be better as a field that's updated on a
diff --git a/meson.build b/meson.build
index 57c26b0f..e3205aae 100644
--- a/meson.build
+++ b/meson.build
@@ -20,7 +20,6 @@ add_project_link_arguments(
)
wlr_inc = include_directories('include')
-install_subdir('include/wlr', install_dir: 'include')
cc = meson.get_compiler('c')
@@ -68,13 +67,36 @@ if elogind.found() and get_option('enable_elogind')
add_project_arguments('-DHAS_ELOGIND', language: 'c')
endif
+exclude_files = []
+wlr_parts = []
+conf_data = configuration_data()
+if get_option('enable_xwayland')
+ add_project_arguments('-DHAS_XWAYLAND', language: 'c')
+ subdir('xwayland')
+ wlr_parts += [lib_wlr_xwayland]
+ conf_data.set('WLR_HAS_XWAYLAND', true)
+else
+ exclude_files += ['xwayland.h']
+endif
+configure_file(output: 'config.h', install_dir: 'include/wlr', configuration: conf_data)
+install_subdir('include/wlr', install_dir: 'include', exclude_files: exclude_files)
+
+
subdir('protocol')
subdir('backend')
subdir('render')
subdir('types')
subdir('util')
subdir('xcursor')
-subdir('xwayland')
+
+wlr_parts += [
+ lib_wl_protos,
+ lib_wlr_backend,
+ lib_wlr_render,
+ lib_wlr_types,
+ lib_wlr_util,
+ lib_wlr_xcursor,
+]
wlr_deps = [
wayland_server,
@@ -100,15 +122,7 @@ wlr_deps = [
lib_wlr = library(
'wlroots',
files('dummy.c'),
- link_whole: [
- lib_wl_protos,
- lib_wlr_backend,
- lib_wlr_render,
- lib_wlr_types,
- lib_wlr_util,
- lib_wlr_xcursor,
- lib_wlr_xwayland,
- ],
+ link_whole: wlr_parts,
dependencies: wlr_deps,
include_directories: wlr_inc,
install: true,
diff --git a/meson_options.txt b/meson_options.txt
index a3f9ca45..b1e64bd9 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,4 @@
option('enable_libcap', type: 'boolean', value: true, description: 'Enable support for capabilities')
option('enable_systemd', type: 'boolean', value: true, description: 'Enable support for logind')
option('enable_elogind', type: 'boolean', value: true, description: 'Enable support for logind')
+option('enable_xwayland', type: 'boolean', value: true, description: 'Enable support X11 applications')
diff --git a/rootston/desktop.c b/rootston/desktop.c
index 5e85fb32..f0f8320d 100644
--- a/rootston/desktop.c
+++ b/rootston/desktop.c
@@ -159,6 +159,7 @@ struct roots_desktop *desktop_create(struct roots_server *server,
&desktop->wl_shell_surface);
desktop->wl_shell_surface.notify = handle_wl_shell_surface;
+#ifdef HAS_XWAYLAND
if (config->xwayland) {
desktop->xwayland = wlr_xwayland_create(server->wl_display,
desktop->compositor);
@@ -166,6 +167,7 @@ struct roots_desktop *desktop_create(struct roots_server *server,
&desktop->xwayland_surface);
desktop->xwayland_surface.notify = handle_xwayland_surface;
}
+#endif
desktop->gamma_control_manager = wlr_gamma_control_manager_create(
server->wl_display);
diff --git a/rootston/meson.build b/rootston/meson.build
index 1eb0704d..7ff79f8e 100644
--- a/rootston/meson.build
+++ b/rootston/meson.build
@@ -1,17 +1,20 @@
+sources = [
+ 'config.c',
+ 'cursor.c',
+ 'desktop.c',
+ 'ini.c',
+ 'input.c',
+ 'keyboard.c',
+ 'main.c',
+ 'output.c',
+ 'pointer.c',
+ 'tablet_tool.c',
+ 'xdg_shell_v6.c',
+ 'wl_shell.c',
+]
+if get_option('enable_xwayland')
+ sources += ['xwayland.c']
+endif
executable(
- 'rootston', [
- 'config.c',
- 'cursor.c',
- 'desktop.c',
- 'ini.c',
- 'input.c',
- 'keyboard.c',
- 'main.c',
- 'output.c',
- 'pointer.c',
- 'tablet_tool.c',
- 'xdg_shell_v6.c',
- 'xwayland.c',
- 'wl_shell.c',
- ], dependencies: wlroots
+ 'rootston', sources, dependencies: wlroots
)