2018-08-24 09:35:02 +02:00
|
|
|
xwayland_libs = []
|
|
|
|
xwayland_required = [
|
|
|
|
'xcb',
|
|
|
|
'xcb-composite',
|
2021-03-29 12:03:35 +02:00
|
|
|
'xcb-icccm',
|
2018-08-24 09:35:02 +02:00
|
|
|
'xcb-render',
|
2021-04-17 04:27:12 +02:00
|
|
|
'xcb-res',
|
2018-08-24 09:35:02 +02:00
|
|
|
'xcb-xfixes',
|
|
|
|
]
|
2019-11-22 08:11:15 +01:00
|
|
|
xwayland_optional = {
|
|
|
|
'xcb-errors': 'Required for printing X11 errors.',
|
|
|
|
}
|
|
|
|
|
|
|
|
msg = []
|
|
|
|
if get_option('xwayland').enabled()
|
|
|
|
msg += 'Install "@0@" or pass "-Dxwayland=disabled".'
|
|
|
|
endif
|
|
|
|
if not get_option('xwayland').disabled()
|
|
|
|
msg += 'Required for Xwayland support.'
|
|
|
|
endif
|
2018-08-24 09:35:02 +02:00
|
|
|
|
2022-06-12 09:01:53 +02:00
|
|
|
xwayland = dependency('xwayland', required: get_option('xwayland'))
|
2021-02-04 17:31:12 +01:00
|
|
|
if not xwayland.found()
|
2022-06-12 09:01:53 +02:00
|
|
|
subdir_done()
|
2021-02-04 17:31:12 +01:00
|
|
|
endif
|
|
|
|
|
2018-08-24 09:35:02 +02:00
|
|
|
foreach lib : xwayland_required
|
2019-11-22 08:11:15 +01:00
|
|
|
dep = dependency(lib,
|
|
|
|
required: get_option('xwayland'),
|
|
|
|
not_found_message: '\n'.join(msg).format(lib),
|
|
|
|
)
|
2018-08-24 09:35:02 +02:00
|
|
|
if not dep.found()
|
|
|
|
subdir_done()
|
|
|
|
endif
|
|
|
|
|
|
|
|
xwayland_libs += dep
|
|
|
|
endforeach
|
|
|
|
|
2019-11-22 08:11:15 +01:00
|
|
|
foreach lib, desc : xwayland_optional
|
|
|
|
msg = []
|
|
|
|
if get_option(lib).enabled()
|
|
|
|
msg += 'Install "@0@" or pass "-D@0@=disabled".'
|
|
|
|
endif
|
|
|
|
if not get_option(lib).disabled()
|
|
|
|
msg += desc
|
|
|
|
endif
|
|
|
|
|
|
|
|
dep = dependency(lib,
|
|
|
|
required: get_option(lib),
|
|
|
|
not_found_message: '\n'.join(msg).format(lib),
|
|
|
|
)
|
2021-04-06 11:59:57 +02:00
|
|
|
|
|
|
|
internal_features += { lib: dep.found() }
|
|
|
|
xwayland_libs += dep
|
2018-08-24 09:35:02 +02:00
|
|
|
endforeach
|
|
|
|
|
2022-11-25 18:05:17 +01:00
|
|
|
xwayland_feature_names = [
|
|
|
|
'listenfd',
|
|
|
|
'no_touch_pointer_emulation',
|
|
|
|
'force_xrandr_emulation',
|
|
|
|
'terminate_delay',
|
|
|
|
]
|
|
|
|
|
2022-06-12 09:01:53 +02:00
|
|
|
internal_config.set_quoted('XWAYLAND_PATH', xwayland.get_variable('xwayland'))
|
|
|
|
foreach name : xwayland_feature_names
|
|
|
|
have = xwayland.get_variable('have_' + name, default_value: 'false') == 'true'
|
2022-11-25 18:05:17 +01:00
|
|
|
internal_config.set10('HAVE_XWAYLAND_' + name.to_upper(), have)
|
|
|
|
endforeach
|
|
|
|
|
2019-11-22 08:11:15 +01:00
|
|
|
wlr_files += files(
|
|
|
|
'selection/dnd.c',
|
|
|
|
'selection/incoming.c',
|
|
|
|
'selection/outgoing.c',
|
|
|
|
'selection/selection.c',
|
2020-05-05 10:24:08 +02:00
|
|
|
'server.c',
|
2022-10-14 17:44:49 +02:00
|
|
|
'shell.c',
|
2019-11-22 08:11:15 +01:00
|
|
|
'sockets.c',
|
|
|
|
'xwayland.c',
|
|
|
|
'xwm.c',
|
2017-08-30 20:30:47 +02:00
|
|
|
)
|
2019-11-22 08:11:15 +01:00
|
|
|
wlr_deps += xwayland_libs
|
2021-02-08 15:16:10 +01:00
|
|
|
features += { 'xwayland': true }
|
2021-06-25 13:49:47 +02:00
|
|
|
|
|
|
|
have = cc.has_function('xcb_xfixes_set_client_disconnect_mode', dependencies: xwayland_libs)
|
2022-12-08 02:04:58 +01:00
|
|
|
internal_config.set10('HAVE_XCB_XFIXES_SET_CLIENT_DISCONNECT_MODE', have)
|