aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/meson.build20
-rw-r--r--backend/x11/meson.build44
-rw-r--r--examples/meson.build154
-rwxr-xr-xglgen.sh1
-rw-r--r--include/wlr/backend/meson.build16
-rw-r--r--include/wlr/backend/session/meson.build1
-rw-r--r--include/wlr/config.h.in19
-rw-r--r--include/wlr/interfaces/meson.build10
-rw-r--r--include/wlr/meson.build20
-rw-r--r--include/wlr/render/meson.build9
-rw-r--r--include/wlr/types/meson.build42
-rw-r--r--include/wlr/util/meson.build6
-rw-r--r--include/wlr/version.h.in16
-rw-r--r--meson.build118
-rw-r--r--meson_options.txt18
-rw-r--r--protocol/meson.build59
-rw-r--r--render/meson.build6
-rw-r--r--rootston/meson.build13
-rw-r--r--xwayland/meson.build40
19 files changed, 227 insertions, 385 deletions
diff --git a/backend/meson.build b/backend/meson.build
index dd1f4df3..52abe64d 100644
--- a/backend/meson.build
+++ b/backend/meson.build
@@ -1,4 +1,3 @@
-backend_parts = []
backend_files = files(
'backend.c',
'drm/atomic.c',
@@ -45,17 +44,28 @@ else
backend_files += files('session/direct.c')
endif
-if logind.found()
+if conf_data.get('WLR_HAS_SYSTEMD', false)
backend_files += files('session/logind.c')
- backend_deps += logind
+ backend_deps += systemd
endif
-subdir('x11')
+if conf_data.get('WLR_HAS_X11_BACKEND', false)
+ backend_files += files(
+ 'x11/backend.c',
+ 'x11/input_device.c',
+ 'x11/output.c',
+ )
+ backend_deps += xcb_xkb
+endif
+
+if conf_data.get('WLR_HAS_ELOGIND', false)
+ backend_files += files('session/logind.c')
+ backend_deps += elogind
+endif
lib_wlr_backend = static_library(
'wlr_backend',
backend_files,
include_directories: wlr_inc,
- link_whole: backend_parts,
dependencies: backend_deps,
)
diff --git a/backend/x11/meson.build b/backend/x11/meson.build
deleted file mode 100644
index 1164df1e..00000000
--- a/backend/x11/meson.build
+++ /dev/null
@@ -1,44 +0,0 @@
-x11_libs = []
-x11_required = [
- 'xcb',
- 'x11-xcb',
-]
-x11_optional = [
- 'xcb-xkb',
-]
-
-foreach lib : x11_required
- dep = dependency(lib, required: get_option('x11-backend'))
- if not dep.found()
- subdir_done()
- endif
-
- x11_libs += dep
-endforeach
-
-foreach lib : x11_optional
- dep = dependency(lib, required: get_option(lib))
- if dep.found()
- x11_libs += dep
- conf_data.set('WLR_HAS_' + lib.underscorify().to_upper(), true)
- endif
-endforeach
-
-lib_wlr_backend_x11 = static_library(
- 'wlr_backend_x11',
- files(
- 'backend.c',
- 'input_device.c',
- 'output.c',
- ),
- include_directories: wlr_inc,
- dependencies: [
- wayland_server,
- pixman,
- xkbcommon,
- x11_libs,
- ],
-)
-
-backend_parts += lib_wlr_backend_x11
-conf_data.set('WLR_HAS_X11_BACKEND', true)
diff --git a/examples/meson.build b/examples/meson.build
index 0fb37a9e..25ad7566 100644
--- a/examples/meson.build
+++ b/examples/meson.build
@@ -1,102 +1,80 @@
threads = dependency('threads')
wayland_cursor = dependency('wayland-cursor')
+
libpng = dependency('libpng', required: false)
+
# These versions correspond to ffmpeg 4.0
libavutil = dependency('libavutil', version: '>=56.14.100', required: false)
libavcodec = dependency('libavcodec', version: '>=58.18.100', required: false)
libavformat = dependency('libavformat', version: '>=58.12.100', required: false)
-# Small hack until https://github.com/mesonbuild/meson/pull/3386/ is merged
-foreach dep : ['libpng', 'libavutil', 'libavcodec', 'libavformat']
- if not get_variable(dep).found()
- set_variable(dep, disabler())
- endif
-endforeach
-
if not cc.has_header('libavutil/hwcontext_drm.h', dependencies: libavutil)
- libavutil = disabler()
+ libavutil = disabler()
endif
-examples = {
- 'simple': {
- 'src': 'simple.c',
- 'dep': wlroots,
- },
- 'pointer': {
- 'src': 'pointer.c',
- 'dep': wlroots,
- },
- 'touch': {
- 'src': ['touch.c', 'cat.c'],
- 'dep': wlroots,
- },
- 'tablet': {
- 'src': 'tablet.c',
- 'dep': wlroots,
- },
- 'rotation': {
- 'src': ['rotation.c', 'cat.c'],
- 'dep': wlroots,
- },
- 'multi-pointer': {
- 'src': 'multi-pointer.c',
- 'dep': wlroots,
- },
- 'output-layout': {
- 'src': ['output-layout.c', 'cat.c'],
- 'dep': wlroots,
- },
- 'screenshot': {
- 'src': 'screenshot.c',
- 'dep': [wayland_client, wlr_protos, wlroots],
- },
- 'idle': {
- 'src': 'idle.c',
- 'dep': [wayland_client, wlr_protos, wlroots, threads],
- },
- 'idle-inhibit': {
- 'src': 'idle-inhibit.c',
- 'dep': [wayland_client, wlr_protos, wlroots],
- },
- 'layer-shell': {
- 'src': 'layer-shell.c',
- 'dep': [wayland_client, wayland_cursor, wlr_protos, wlroots],
- },
- 'input-inhibitor': {
- 'src': 'input-inhibitor.c',
- 'dep': [wayland_client, wayland_cursor, wlr_protos, wlroots],
- },
- 'gamma-control': {
- 'src': 'gamma-control.c',
- 'dep': [wayland_client, wayland_cursor, wlr_protos, wlroots],
- },
- 'dmabuf-capture': {
- 'src': 'dmabuf-capture.c',
- 'dep': [
- libavcodec,
- libavformat,
- libavutil,
- threads,
- wayland_client,
- wlr_protos,
- wlroots,
- ],
- },
- 'screencopy': {
- 'src': 'screencopy.c',
- 'dep': [libpng, wayland_client, wlr_protos, wlroots],
- },
- 'toplevel-decoration': {
- 'src': 'toplevel-decoration.c',
- 'dep': [wayland_client, wlr_protos, wlroots],
- },
-}
+executable('simple', 'simple.c', dependencies: wlroots)
+executable('pointer', 'pointer.c', dependencies: wlroots)
+executable('touch', 'touch.c', 'cat.c', dependencies: wlroots)
+executable('tablet', 'tablet.c', dependencies: wlroots)
+executable('rotation', 'rotation.c', 'cat.c', dependencies: wlroots)
+executable('multi-pointer', 'multi-pointer.c', dependencies: wlroots)
+executable('output-layout', 'output-layout.c', 'cat.c', dependencies: wlroots)
+
+executable(
+ 'screenshot',
+ 'screenshot.c',
+ dependencies: [wayland_client, wlr_protos, wlroots]
+)
+
+executable(
+ 'idle',
+ 'idle.c',
+ dependencies: [wayland_client, wlr_protos, wlroots, threads]
+)
+
+executable(
+ 'idle-inhibit',
+ 'idle-inhibit.c',
+ dependencies: [wayland_client, wlr_protos, wlroots, threads]
+)
+
+executable(
+ 'layer-shell',
+ 'layer-shell.c',
+ dependencies: [wayland_cursor, wayland_client, wlr_protos, wlroots]
+)
+
+executable(
+ 'input-inhibitor',
+ 'input-inhibitor.c',
+ dependencies: [wayland_cursor, wayland_client, wlr_protos, wlroots]
+)
-foreach name, info : examples
+executable(
+ 'gamma-control',
+ 'gamma-control.c',
+ dependencies: [wayland_cursor, wayland_client, wlr_protos, wlroots]
+)
+
+if libavutil.found() and libavcodec.found() and libavformat.found()
executable(
- name,
- info.get('src'),
- dependencies: info.get('dep'),
- build_by_default: get_option('examples'),
+ 'dmabuf-capture',
+ 'dmabuf-capture.c',
+ dependencies: [wayland_client, wlr_protos, libavutil, libavcodec,
+ libavformat, wlroots, threads ]
)
-endforeach
+endif
+
+if libpng.found()
+ executable(
+ 'screencopy',
+ 'screencopy.c',
+ dependencies: [wayland_client, wlr_protos, wlroots, libpng]
+ )
+endif
+
+executable(
+ 'toplevel-decoration',
+ 'toplevel-decoration.c',
+ dependencies: [wayland_client, wlr_protos, wlroots]
+)
diff --git a/glgen.sh b/glgen.sh
index b27750e4..0356cf98 100755
--- a/glgen.sh
+++ b/glgen.sh
@@ -66,6 +66,7 @@ cat > $OUT_H << EOF
#include <EGL/egl.h>
#include <EGL/eglext.h>
+#include <EGL/eglmesaext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
diff --git a/include/wlr/backend/meson.build b/include/wlr/backend/meson.build
deleted file mode 100644
index e005b854..00000000
--- a/include/wlr/backend/meson.build
+++ /dev/null
@@ -1,16 +0,0 @@
-install_headers(
- 'drm.h',
- 'headless.h',
- 'interface.h',
- 'libinput.h',
- 'multi.h',
- 'session.h',
- 'wayland.h',
- subdir: 'wlr/backend',
-)
-
-if conf_data.get('WLR_HAS_X11_BACKEND', false)
- install_headers('x11.h', subdir: 'wlr/backend')
-endif
-
-subdir('session')
diff --git a/include/wlr/backend/session/meson.build b/include/wlr/backend/session/meson.build
deleted file mode 100644
index 21b5a96b..00000000
--- a/include/wlr/backend/session/meson.build
+++ /dev/null
@@ -1 +0,0 @@
-install_headers('interface.h', subdir: 'wlr/backend/session')
diff --git a/include/wlr/config.h.in b/include/wlr/config.h.in
deleted file mode 100644
index 750ad3b7..00000000
--- a/include/wlr/config.h.in
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef WLR_CONFIG_H
-#define WLR_CONFIG_H
-
-#mesondefine WLR_HAS_LIBCAP
-
-#mesondefine WLR_HAS_SYSTEMD
-#mesondefine WLR_HAS_ELOGIND
-
-#mesondefine WLR_HAS_X11_BACKEND
-
-#mesondefine WLR_HAS_XWAYLAND
-
-#mesondefine WLR_HAS_XCB_ERRORS
-#mesondefine WLR_HAS_XCB_ICCCM
-#mesondefine WLR_HAS_XCB_XKB
-
-#mesondefine WLR_HAS_POSIX_FALLOCATE
-
-#endif
diff --git a/include/wlr/interfaces/meson.build b/include/wlr/interfaces/meson.build
deleted file mode 100644
index 207896b5..00000000
--- a/include/wlr/interfaces/meson.build
+++ /dev/null
@@ -1,10 +0,0 @@
-install_headers(
- 'wlr_input_device.h',
- 'wlr_keyboard.h',
- 'wlr_output.h',
- 'wlr_pointer.h',
- 'wlr_tablet_pad.h',
- 'wlr_tablet_tool.h',
- 'wlr_touch.h',
- subdir: 'wlr/interfaces',
-)
diff --git a/include/wlr/meson.build b/include/wlr/meson.build
index 43b5aec9..6259c311 100644
--- a/include/wlr/meson.build
+++ b/include/wlr/meson.build
@@ -4,23 +4,11 @@ version_data.set_quoted('WLR_VERSION_STR', meson.project_version())
version_data.set('WLR_VERSION_MAJOR', version_array[0])
version_data.set('WLR_VERSION_MINOR', version_array[1])
version_data.set('WLR_VERSION_MICRO', version_array[2])
+version_data.set('WLR_VERSION_NUM', '(WLR_VERSION_MAJOR << 16) | (WLR_VERSION_MINOR << 8) | WLR_VERSION_MICRO')
version_data.set('WLR_VERSION_API_CURRENT', so_version[0])
version_data.set('WLR_VERSION_API_REVISION', so_version[1])
version_data.set('WLR_VERSION_API_AGE', so_version[2])
-install_headers(
- configure_file(input: 'config.h.in', output: 'config.h',configuration: conf_data),
- configure_file(input: 'version.h.in', output: 'version.h', configuration: version_data),
- 'backend.h',
- 'xcursor.h',
- subdir: 'wlr'
-)
-if conf_data.get('WLR_HAS_XWAYLAND', false)
- install_headers('xwayland.h', subdir: 'wlr')
-endif
-
-subdir('backend')
-subdir('interfaces')
-subdir('render')
-subdir('types')
-subdir('util')
+wlr_inc_dest = join_paths(get_option('includedir'), 'wlr')
+configure_file(output: 'config.h', install_dir: wlr_inc_dest, configuration: conf_data)
+configure_file(output: 'version.h', install_dir: wlr_inc_dest, configuration: version_data)
diff --git a/include/wlr/render/meson.build b/include/wlr/render/meson.build
deleted file mode 100644
index 05127bb7..00000000
--- a/include/wlr/render/meson.build
+++ /dev/null
@@ -1,9 +0,0 @@
-install_headers(
- 'dmabuf.h',
- 'egl.h',
- 'gles2.h',
- 'interface.h',
- 'wlr_renderer.h',
- 'wlr_texture.h',
- subdir: 'wlr/render'
-)
diff --git a/include/wlr/types/meson.build b/include/wlr/types/meson.build
deleted file mode 100644
index 8c81cb0e..00000000
--- a/include/wlr/types/meson.build
+++ /dev/null
@@ -1,42 +0,0 @@
-install_headers(
- 'wlr_box.h',
- 'wlr_buffer.h',
- 'wlr_compositor.h',
- 'wlr_cursor.h',
- 'wlr_data_device.h',
- 'wlr_export_dmabuf_v1.h',
- 'wlr_gamma_control.h',
- 'wlr_gamma_control_v1.h',
- 'wlr_idle.h',
- 'wlr_idle_inhibit_v1.h',
- 'wlr_input_device.h',
- 'wlr_input_inhibitor.h',
- 'wlr_keyboard.h',
- 'wlr_layer_shell.h',
- 'wlr_linux_dmabuf_v1.h',
- 'wlr_list.h',
- 'wlr_matrix.h',
- 'wlr_output.h',
- 'wlr_output_damage.h',
- 'wlr_output_layout.h',
- 'wlr_pointer.h',
- 'wlr_primary_selection.h',
- 'wlr_region.h',
- 'wlr_screencopy_v1.h',
- 'wlr_screenshooter.h',
- 'wlr_seat.h',
- 'wlr_server_decoration.h',
- 'wlr_surface.h',
- 'wlr_tablet_pad.h',
- 'wlr_tablet_tool.h',
- 'wlr_tablet_v2.h',
- 'wlr_touch.h',
- 'wlr_virtual_keyboard_v1.h',
- 'wlr_wl_shell.h',
- 'wlr_xcursor_manager.h',
- 'wlr_xdg_decoration_v1.h',
- 'wlr_xdg_output.h',
- 'wlr_xdg_shell.h',
- 'wlr_xdg_shell_v6.h',
- subdir: 'wlr/types',
-)
diff --git a/include/wlr/util/meson.build b/include/wlr/util/meson.build
deleted file mode 100644
index ee72cbd6..00000000
--- a/include/wlr/util/meson.build
+++ /dev/null
@@ -1,6 +0,0 @@
-install_headers(
- 'edges.h',
- 'log.h',
- 'region.h',
- subdir: 'wlr/util',
-)
diff --git a/include/wlr/version.h.in b/include/wlr/version.h.in
deleted file mode 100644
index cdc0fd75..00000000
--- a/include/wlr/version.h.in
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef WLR_VERSION_H
-#define WLR_VERSION_H
-
-#mesondefine WLR_VERSION_STR
-
-#mesondefine WLR_VERSION_MAJOR
-#mesondefine WLR_VERSION_MINOR
-#mesondefine WLR_VERSION_MICRO
-
-#define WLR_VERSION_NUM ((WLR_VERSION_MAJOR << 16) | (WLR_VERSION_MINOR << 8) | WLR_VERSION_MICRO)
-
-#mesondefine WLR_VERSION_API_CURRENT
-#mesondefine WLR_VERSION_API_REVISION
-#mesondefine WLR_VERSION_API_AGE
-
-#endif
diff --git a/meson.build b/meson.build
index 8458a66c..655eb52d 100644
--- a/meson.build
+++ b/meson.build
@@ -3,7 +3,7 @@ project(
'c',
version: '0.0.1',
license: 'MIT',
- meson_version: '>=0.47.0',
+ meson_version: '>=0.44.0',
default_options: [
'c_std=c11',
'warning_level=2',
@@ -18,7 +18,15 @@ so_version = ['0', '0', '0']
add_project_arguments('-Wno-unused-parameter', language: 'c')
add_project_arguments(
- '-DWLR_SRC_DIR="@0@"'.format(meson.current_source_dir()),
+ '-DWLR_SRC_DIR="@0@"'.format(meson.source_root()),
+ language: 'c',
+)
+add_project_arguments(
+ '-I@0@'.format(meson.build_root()),
+ language: 'c',
+)
+add_project_link_arguments(
+ '-Wl,-rpath,@0@'.format(meson.build_root()),
language: 'c',
)
add_project_arguments(
@@ -28,7 +36,7 @@ add_project_arguments(
conf_data = configuration_data()
-wlr_inc = include_directories('.', 'include')
+wlr_inc = include_directories('include')
cc = meson.get_compiler('c')
@@ -54,37 +62,90 @@ libinput = dependency('libinput', version: '>=1.7.0')
xkbcommon = dependency('xkbcommon')
udev = dependency('libudev')
pixman = dependency('pixman-1')
-libcap = dependency('libcap', required: get_option('libcap'))
-logind = dependency('lib' + get_option('logind-provider'), required: get_option('logind'))
+libcap = dependency('libcap', required: get_option('enable-libcap') == 'true')
+systemd = dependency('libsystemd', required: get_option('enable-systemd') == 'true')
+elogind = dependency('libelogind', required: get_option('enable-elogind') == 'true')
math = cc.find_library('m', required: false)
+exclude_headers = []
wlr_parts = []
wlr_deps = []
-if libcap.found()
+if libcap.found() and get_option('enable-libcap') != 'false'
conf_data.set('WLR_HAS_LIBCAP', true)
wlr_deps += libcap
endif
-if logind.found()
- conf_data.set('WLR_HAS_' + get_option('logind-provider').to_upper(), true)
- wlr_deps += logind
+if systemd.found() and get_option('enable-systemd') != 'false'
+ conf_data.set('WLR_HAS_SYSTEMD', true)
+ wlr_deps += systemd
+endif
+
+if elogind.found() and get_option('enable-elogind') != 'false'
+ conf_data.set('WLR_HAS_ELOGIND', true)
+endif
+
+if get_option('enable-x11_backend') or get_option('enable-xwayland')
+ xcb = dependency('xcb')
+ xcb_composite = dependency('xcb-composite')
+ xcb_xfixes = dependency('xcb-xfixes')
+ xcb_image = dependency('xcb-image')
+ xcb_render = dependency('xcb-render')
+ x11_xcb = dependency('x11-xcb')
+
+ xcb_icccm = dependency('xcb-icccm', required: false)
+ xcb_xkb = dependency('xcb-xkb', required: false)
+ xcb_errors = dependency('xcb-errors', required: get_option('enable-xcb_errors') == 'true')
+
+ if xcb_icccm.found()
+ conf_data.set('WLR_HAS_XCB_ICCCM', true)
+ endif
+
+ if xcb_xkb.found()
+ conf_data.set('WLR_HAS_XCB_XKB', true)
+ endif
+
+ if xcb_errors.found() and get_option('enable-xcb_errors') != 'false'
+ conf_data.set('WLR_HAS_XCB_ERRORS', true)
+ endif
+
+ wlr_deps += [
+ xcb,
+ xcb_composite,
+ x11_xcb,
+ ]
+else
+ add_project_arguments('-DMESA_EGL_NO_X11_HEADERS', language: 'c')
+endif
+
+if get_option('enable-x11_backend')
+ conf_data.set('WLR_HAS_X11_BACKEND', true)
+endif
+
+if get_option('enable-xwayland')
+ subdir('xwayland')
+ wlr_parts += [lib_wlr_xwayland]
+ conf_data.set('WLR_HAS_XWAYLAND', true)
+else
+ exclude_headers += 'xwayland.h'
endif
if cc.has_header_symbol('fcntl.h', 'posix_fallocate', prefix: '#define _POSIX_C_SOURCE 200112L')
conf_data.set('WLR_HAS_POSIX_FALLOCATE', true)
endif
+includedir = get_option('includedir')
+exclude_headers += 'meson.build'
+install_subdir('include/wlr', install_dir: includedir, exclude_files: exclude_headers)
+
+
+subdir('include')
subdir('protocol')
subdir('render')
-
subdir('backend')
subdir('types')
subdir('util')
subdir('xcursor')
-subdir('xwayland')
-
-subdir('include')
wlr_parts += [
lib_wl_protos,
@@ -121,7 +182,6 @@ lib_wlr = library(
include_directories: wlr_inc,
install: true,
link_args : symbols_flag,
- link_depends: symbols_file,
)
wlroots = declare_dependency(
@@ -130,6 +190,7 @@ wlroots = declare_dependency(
include_directories: wlr_inc,
)
+
summary = [
'',
'----------------',
@@ -147,8 +208,14 @@ summary = [
]
message('\n'.join(summary))
-subdir('examples')
-subdir('rootston')
+
+if get_option('enable-rootston')
+ subdir('rootston')
+endif
+
+if get_option('enable-examples')
+ subdir('examples')
+endif
pkgconfig = import('pkgconfig')
pkgconfig.generate(
@@ -163,31 +230,26 @@ git = find_program('git', required: false)
if git.found()
all_files = run_command(
git,
- '--git-dir=@0@/.git'.format(meson.current_source_dir()),
- 'ls-files',
- ':/*.[ch]',
- )
+ ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
+ 'ls-files',
+ ':/*.[ch]'])
all_files = files(all_files.stdout().split())
etags = find_program('etags', required: false)
if etags.found() and all_files.length() > 0
- custom_target(
- 'etags',
+ custom_target('etags',
build_by_default: true,
input: all_files,
output: 'TAGS',
- command: [etags, '-o', '@OUTPUT@', '@INPUT@'],
- )
+ command: [etags.path(), '-o', 'TAGS'] + all_files)
endif
ctags = find_program('ctags', required: false)
if ctags.found() and all_files.length() > 0
- custom_target(
- 'ctags',
+ custom_target('ctags',
build_by_default: true,
input: all_files,
output: 'tags',
- command: [ctags, '-f', '@OUTPUT@', '@INPUT@'],
- )
+ command: [ctags.path(), '-f', 'tags'] + all_files)
endif
endif
diff --git a/meson_options.txt b/meson_options.txt
index 360c6f6a..e474b8aa 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,10 +1,8 @@
-option('libcap', type: 'feature', value: 'auto', description: 'Enable support for rootless session via capabilities (cap_sys_admin)')
-option('logind', type: 'feature', value: 'auto', description: 'Enable support for rootless session via logind')
-option('logind-provider', type: 'combo', choices: ['systemd', 'elogind'], value: 'systemd', description: 'Provider of logind support library')
-option('xcb-errors', type: 'feature', value: 'auto', description: 'Use xcb-errors util library')
-option('xcb-icccm', type: 'feature', value: 'auto', description: 'Use xcb-icccm util library')
-option('xcb-xkb', type: 'feature', value: 'auto', description: 'Use xcb-xkb util library')
-option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications')
-option('x11-backend', type: 'feature', value: 'auto', description: 'Enable X11 backend')
-option('rootston', type: 'boolean', value: true, description: 'Build the rootston example compositor')
-option('examples', type: 'boolean', value: true, description: 'Build example applications')
+option('enable-libcap', type: 'combo', choices: ['auto', 'true', 'false'], value: 'auto', description: 'Enable support for capabilities')
+option('enable-systemd', type: 'combo', choices: ['auto', 'true', 'false'], value: 'auto', description: 'Enable support for logind')
+option('enable-elogind', type: 'combo', choices: ['auto', 'true', 'false'], value: 'auto', description: 'Enable support for logind')
+option('enable-xcb_errors', type: 'combo', choices: ['auto', 'true', 'false'], value: 'auto', description: 'Use xcb-errors util library')
+option('enable-xwayland', type: 'boolean', value: true, description: 'Enable support X11 applications')
+option('enable-x11_backend', type: 'boolean', value: true, description: 'Enable X11 backend')
+option('enable-rootston', type: 'boolean', value: true, description: 'Build the rootston example compositor')
+option('enable-examples', type: 'boolean', value: true, description: 'Build example applications')
diff --git a/protocol/meson.build b/protocol/meson.build
index 2d2a73ed..73a3156a 100644
--- a/protocol/meson.build
+++ b/protocol/meson.build
@@ -1,15 +1,32 @@
wl_protocol_dir = wayland_protos.get_pkgconfig_variable('pkgdatadir')
-wayland_scanner_dep = dependency('wayland-scanner', required: false, native: true)
-if wayland_scanner_dep.found()
- wayland_scanner = find_program(
- wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner'),
- native: true,
- )
+wayland_scanner = find_program('wayland-scanner')
+
+wayland_scanner_server = generator(
+ wayland_scanner,
+ output: '@BASENAME@-protocol.h',
+ arguments: ['server-header', '@INPUT@', '@OUTPUT@'],
+)
+
+# should check wayland_scanner's version, but it is hard to get
+if wayland_server.version().version_compare('>=1.14.91')
+ code_type = 'private-code'
else
- wayland_scanner = find_program('wayland-scanner', native: true)
+ code_type = 'code'
endif
+wayland_scanner_code = generator(
+ wayland_scanner,
+ output: '@BASENAME@-protocol.c',
+ arguments: [code_type, '@INPUT@', '@OUTPUT@'],
+)
+
+wayland_scanner_client = generator(
+ wayland_scanner,
+ output: '@BASENAME@-client-protocol.h',
+ arguments: ['client-header', '@INPUT@', '@OUTPUT@'],
+)
+
protocols = [
[wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'],
[wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'],
@@ -50,35 +67,17 @@ wl_protos_headers = []
foreach p : protocols
xml = join_paths(p)
- wl_protos_src += custom_target(
- xml.underscorify() + '_server_c',
- input: xml,
- output: '@BASENAME@-protocol.c',
- command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'],
- )
- wl_protos_headers += custom_target(
- xml.underscorify() + '_server_h',
- input: xml,
- output: '@BASENAME@-protocol.h',
- command: [wayland_scanner, 'server-header', '@INPUT@', '@OUTPUT@'],
- )
+ wl_protos_src += wayland_scanner_code.process(xml)
+ wl_protos_headers += wayland_scanner_server.process(xml)
endforeach
foreach p : client_protocols
xml = join_paths(p)
- wl_protos_headers += custom_target(
- xml.underscorify() + '_client_h',
- input: xml,
- output: '@BASENAME@-client-protocol.h',
- command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@'],
- )
+ wl_protos_headers += wayland_scanner_client.process(xml)
endforeach
-lib_wl_protos = static_library(
- 'wl_protos',
- wl_protos_src + wl_protos_headers,
- dependencies: wayland_client.partial_dependency(includes: true),
-)
+lib_wl_protos = static_library('wl_protos', wl_protos_src + wl_protos_headers,
+ dependencies: [wayland_client]) # for the include directory
wlr_protos = declare_dependency(
link_with: lib_wl_protos,
diff --git a/render/meson.build b/render/meson.build
index c5401d22..4b90c229 100644
--- a/render/meson.build
+++ b/render/meson.build
@@ -1,7 +1,6 @@
glgen = find_program('../glgen.sh')
-glapi = custom_target(
- 'glapi',
+glapi = custom_target('glapi',
input: 'glapi.txt',
output: ['@BASENAME@.c', '@BASENAME@.h'],
command: [glgen, '@INPUT@', '@OUTPUT0@', '@OUTPUT1@'],
@@ -20,7 +19,8 @@ lib_wlr_render = static_library(
'wlr_renderer.c',
'wlr_texture.c',
),
- glapi,
+ glapi[0],
+ glapi[1],
include_directories: wlr_inc,
dependencies: [egl, glesv2, pixman, wayland_server],
)
diff --git a/rootston/meson.build b/rootston/meson.build
index 9d1decce..8ab872b5 100644
--- a/rootston/meson.build
+++ b/rootston/meson.build
@@ -11,17 +11,12 @@ sources = [
'seat.c',
'virtual_keyboard.c',
'wl_shell.c',
- 'xdg_shell.c',
'xdg_shell_v6.c',
+ 'xdg_shell.c',
]
-
-if conf_data.get('WLR_HAS_XWAYLAND', false)
- sources += 'xwayland.c'
+if get_option('enable-xwayland')
+ sources += ['xwayland.c']
endif
-
executable(
- 'rootston',
- sources,
- dependencies: [wlroots, wlr_protos, pixman],
- build_by_default: get_option('rootston'),
+ 'rootston', sources, dependencies: [wlroots, wlr_protos, pixman]
)
diff --git a/xwayland/meson.build b/xwayland/meson.build
index 0bd88924..ec486f58 100644
--- a/xwayland/meson.build
+++ b/xwayland/meson.build
@@ -1,32 +1,3 @@
-xwayland_libs = []
-xwayland_required = [
- 'xcb',
- 'xcb-composite',
- 'xcb-render',
- 'xcb-xfixes',
-]
-xwayland_optional = [
- 'xcb-errors',
- 'xcb-icccm',
-]
-
-foreach lib : xwayland_required
- dep = dependency(lib, required: get_option('xwayland'))
- if not dep.found()
- subdir_done()
- endif
-
- xwayland_libs += dep
-endforeach
-
-foreach lib : xwayland_optional
- dep = dependency(lib, required: get_option(lib))
- if dep.found()
- xwayland_libs += dep
- conf_data.set('WLR_HAS_' + lib.underscorify().to_upper(), true)
- endif
-endforeach
-
lib_wlr_xwayland = static_library(
'wlr_xwayland',
files(
@@ -41,11 +12,14 @@ lib_wlr_xwayland = static_library(
include_directories: wlr_inc,
dependencies: [
wayland_server,
- xwayland_libs,
+ xcb,
+ xcb_composite,
+ xcb_xfixes,
+ xcb_image,
+ xcb_render,
+ xcb_icccm,
+ xcb_errors,
xkbcommon,
pixman,
],
)
-
-wlr_parts += lib_wlr_xwayland
-conf_data.set('WLR_HAS_XWAYLAND', true)