91d0f08bce
Since the Meson install step is not written to try to set the suid bit automatically, remind the user that weston-launch needs to be setuid-root to work. Signed-off-by: Pekka Paalanen <pq@iki.fi>
482 lines
12 KiB
Meson
482 lines
12 KiB
Meson
deps_libweston = [
|
|
dep_wayland_server,
|
|
dep_pixman,
|
|
dep_libm,
|
|
dep_libdl,
|
|
dep_libdrm_headers,
|
|
dep_libshared,
|
|
dep_xkbcommon,
|
|
]
|
|
srcs_libweston = [
|
|
git_version_h,
|
|
'animation.c',
|
|
'bindings.c',
|
|
'clipboard.c',
|
|
'compositor.c',
|
|
'data-device.c',
|
|
'input.c',
|
|
'linux-dmabuf.c',
|
|
'log.c',
|
|
'noop-renderer.c',
|
|
'pixel-formats.c',
|
|
'pixman-renderer.c',
|
|
'plugin-registry.c',
|
|
'screenshooter.c',
|
|
'timeline.c',
|
|
'touch-calibration.c',
|
|
'weston-debug.c',
|
|
'zoom.c',
|
|
'../shared/matrix.c',
|
|
linux_dmabuf_unstable_v1_protocol_c,
|
|
linux_dmabuf_unstable_v1_server_protocol_h,
|
|
input_method_unstable_v1_protocol_c,
|
|
input_method_unstable_v1_server_protocol_h,
|
|
input_timestamps_unstable_v1_protocol_c,
|
|
input_timestamps_unstable_v1_server_protocol_h,
|
|
presentation_time_protocol_c,
|
|
presentation_time_server_protocol_h,
|
|
pointer_constraints_unstable_v1_protocol_c,
|
|
pointer_constraints_unstable_v1_server_protocol_h,
|
|
relative_pointer_unstable_v1_protocol_c,
|
|
relative_pointer_unstable_v1_server_protocol_h,
|
|
weston_screenshooter_protocol_c,
|
|
weston_screenshooter_server_protocol_h,
|
|
text_cursor_position_protocol_c,
|
|
text_cursor_position_server_protocol_h,
|
|
text_input_unstable_v1_protocol_c,
|
|
text_input_unstable_v1_server_protocol_h,
|
|
weston_touch_calibration_protocol_c,
|
|
weston_touch_calibration_server_protocol_h,
|
|
viewporter_protocol_c,
|
|
viewporter_server_protocol_h,
|
|
weston_debug_protocol_c,
|
|
weston_debug_server_protocol_h,
|
|
]
|
|
|
|
install_headers(
|
|
'compositor.h',
|
|
'plugin-registry.h',
|
|
'timeline-object.h',
|
|
'windowed-output-api.h',
|
|
'../shared/config-parser.h',
|
|
'../shared/matrix.h',
|
|
'../shared/zalloc.h',
|
|
subdir: dir_include_libweston
|
|
)
|
|
|
|
lib_weston = shared_library(
|
|
'weston-@0@'.format(libweston_major),
|
|
srcs_libweston,
|
|
include_directories: include_directories('..', '../shared'),
|
|
link_args: [ '-export-dynamic' ],
|
|
install: true,
|
|
version: '0.0.@0@'.format(libweston_revision),
|
|
dependencies: deps_libweston
|
|
)
|
|
|
|
dep_libweston = declare_dependency(
|
|
link_with: lib_weston,
|
|
include_directories: include_directories('.'),
|
|
dependencies: deps_libweston
|
|
)
|
|
|
|
pkgconfig.generate(
|
|
lib_weston,
|
|
filebase: 'libweston-@0@'.format(libweston_major),
|
|
name: 'libweston API',
|
|
version: version_weston,
|
|
description: 'Header files for libweston compositors development',
|
|
requires_private: [ dep_wayland_server, dep_pixman, dep_xkbcommon ],
|
|
subdirs: dir_include_libweston
|
|
)
|
|
|
|
pkgconfig.generate(
|
|
filebase: 'libweston-@0@-protocols'.format(libweston_major),
|
|
name: 'libWeston Protocols',
|
|
version: version_weston,
|
|
description: 'libWeston protocol files',
|
|
variables: [
|
|
'datarootdir=' + join_paths('${prefix}', get_option('datadir')),
|
|
'pkgdatadir=' + join_paths('${pc_sysrootdir}${datarootdir}', dir_protocol_libweston)
|
|
],
|
|
install_dir: dir_data_pc
|
|
)
|
|
|
|
srcs_session_helper = [
|
|
'launcher-direct.c',
|
|
'launcher-util.c',
|
|
'launcher-weston-launch.c',
|
|
]
|
|
deps_session_helper = [
|
|
# for compositor.h needing pixman.h
|
|
dep_pixman.partial_dependency(compile_args: true)
|
|
]
|
|
|
|
if get_option('backend-drm')
|
|
deps_session_helper += dep_libdrm
|
|
endif
|
|
|
|
systemd_dep = dependency('', required: false)
|
|
if get_option('launcher-logind')
|
|
systemd_dep = dependency('libsystemd', version: '>= 209', required: false)
|
|
if systemd_dep.found()
|
|
config_h.set('HAVE_SYSTEMD_LOGIN_209', '1')
|
|
else
|
|
systemd_dep = dependency('libsystemd-login', version: '>= 198', required: false)
|
|
if not systemd_dep.found()
|
|
error('logind support requires libsystemd or libsystemd-login but neither was found. Or, you can use \'-Dlauncher-logind=false\'')
|
|
endif
|
|
endif
|
|
|
|
dbus_dep = dependency('dbus-1', version: '>= 1.6', required: false)
|
|
if not dbus_dep.found()
|
|
error('logind support requires dbus-1 >= 1.6 which was not found. Or, you can use \'-Dlauncher-logind=false\'')
|
|
endif
|
|
|
|
config_h.set('HAVE_DBUS', '1')
|
|
config_h.set('HAVE_SYSTEMD_LOGIN', '1')
|
|
|
|
srcs_session_helper += [
|
|
'dbus.c',
|
|
'launcher-logind.c',
|
|
]
|
|
deps_session_helper += [
|
|
dbus_dep,
|
|
systemd_dep,
|
|
]
|
|
endif
|
|
|
|
lib_session_helper = static_library(
|
|
'session-helper',
|
|
srcs_session_helper,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_session_helper,
|
|
install: false
|
|
)
|
|
dep_session_helper = declare_dependency(link_with: lib_session_helper)
|
|
|
|
|
|
if get_option('backend-drm')
|
|
config_h.set('BUILD_DRM_COMPOSITOR', '1')
|
|
|
|
srcs_drm = [
|
|
'compositor-drm.c',
|
|
'libbacklight.c',
|
|
'libinput-device.c',
|
|
'libinput-seat.c',
|
|
linux_dmabuf_unstable_v1_protocol_c,
|
|
linux_dmabuf_unstable_v1_server_protocol_h,
|
|
presentation_time_server_protocol_h,
|
|
]
|
|
|
|
deps_drm = [
|
|
dep_libweston,
|
|
dep_session_helper,
|
|
dep_libdrm,
|
|
dep_libinput,
|
|
dependency('libudev', version: '>= 136'),
|
|
]
|
|
|
|
if get_option('renderer-gl')
|
|
dep_gbm = dependency('gbm', required: false)
|
|
if not dep_gbm.found()
|
|
error('drm-backend + gl-renderer requires gbm which was not found. Or, you can use \'-Dbackend-drm=false\' or \'-Drenderer-gl=false\'.')
|
|
endif
|
|
if dep_gbm.version().version_compare('>= 17.1')
|
|
config_h.set('HAVE_GBM_MODIFIERS', '1')
|
|
endif
|
|
if dep_gbm.version().version_compare('>= 17.2')
|
|
config_h.set('HAVE_GBM_FD_IMPORT', '1')
|
|
endif
|
|
deps_drm += dep_gbm
|
|
endif
|
|
|
|
if get_option('backend-drm-screencast-vaapi')
|
|
foreach name : [ 'libva', 'libva-drm' ]
|
|
d = dependency(name, version: '>= 0.34.0', required: false)
|
|
if not d.found()
|
|
error('VA-API recorder requires @0@ >= 0.34.0 which was not found. Or, you can use \'-Dbackend-drm-screencast-vaapi=false\'.'.format(name))
|
|
endif
|
|
deps_drm += d
|
|
endforeach
|
|
|
|
srcs_drm += 'vaapi-recorder.c'
|
|
deps_drm += dependency('threads')
|
|
config_h.set('BUILD_VAAPI_RECORDER', '1')
|
|
endif
|
|
|
|
if dep_libdrm.version().version_compare('>= 2.4.71')
|
|
config_h.set('HAVE_DRM_ADDFB2_MODIFIERS', '1')
|
|
endif
|
|
|
|
if dep_libdrm.version().version_compare('>= 2.4.78')
|
|
config_h.set('HAVE_DRM_ATOMIC', '1')
|
|
endif
|
|
|
|
if dep_libdrm.version().version_compare('>= 2.4.83')
|
|
config_h.set('HAVE_DRM_FORMATS_BLOB', '1')
|
|
endif
|
|
|
|
plugin_drm = shared_library(
|
|
'drm-backend',
|
|
srcs_drm,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_drm,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston
|
|
)
|
|
env_modmap += 'drm-backend.so=@0@;'.format(plugin_drm.full_path())
|
|
|
|
install_headers('compositor-drm.h', subdir: dir_include_libweston)
|
|
endif
|
|
|
|
|
|
if get_option('backend-headless')
|
|
config_h.set('BUILD_HEADLESS_COMPOSITOR', '1')
|
|
|
|
srcs_headless = [
|
|
'compositor-headless.c',
|
|
presentation_time_server_protocol_h,
|
|
]
|
|
plugin_headless = shared_library(
|
|
'headless-backend',
|
|
srcs_headless,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: dep_libweston,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston,
|
|
)
|
|
env_modmap += 'headless-backend.so=@0@;'.format(plugin_headless.full_path())
|
|
install_headers('compositor-headless.h', subdir: dir_include_libweston)
|
|
endif
|
|
|
|
|
|
if get_option('backend-rdp')
|
|
config_h.set('BUILD_RDP_COMPOSITOR', '1')
|
|
|
|
dep_frdp = dependency('freerdp2', version: '>= 2.0.0', required: false)
|
|
if not dep_frdp.found()
|
|
dep_frdp = dependency('freerdp', version: '>= 1.1.0', required: false)
|
|
endif
|
|
if not dep_frdp.found()
|
|
error('RDP-backend requires freerdp which was not found. Or, you can use \'-Dbackend-rdp=false\'.')
|
|
endif
|
|
|
|
if cc.has_header('freerdp/version.h', dependencies: dep_frdp)
|
|
config_h.set('HAVE_FREERDP_VERSION_H', '1')
|
|
endif
|
|
|
|
if cc.has_member(
|
|
'SURFACE_BITS_COMMAND', 'bmp',
|
|
dependencies : dep_frdp,
|
|
prefix : '#include <freerdp/update.h>'
|
|
)
|
|
config_h.set('HAVE_SURFACE_BITS_BMP', '1')
|
|
endif
|
|
|
|
deps_rdp = [
|
|
dep_libweston,
|
|
dep_frdp,
|
|
]
|
|
plugin_rdp = shared_library(
|
|
'rdp-backend',
|
|
'compositor-rdp.c',
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_rdp,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston
|
|
)
|
|
env_modmap += 'rdp-backend.so=@0@;'.format(plugin_rdp.full_path())
|
|
install_headers('compositor-rdp.h', subdir: dir_include_libweston)
|
|
endif
|
|
|
|
|
|
if get_option('backend-wayland')
|
|
config_h.set('BUILD_WAYLAND_COMPOSITOR', '1')
|
|
|
|
srcs_wlwl = [
|
|
'compositor-wayland.c',
|
|
fullscreen_shell_unstable_v1_client_protocol_h,
|
|
fullscreen_shell_unstable_v1_protocol_c,
|
|
presentation_time_protocol_c,
|
|
presentation_time_server_protocol_h,
|
|
xdg_shell_unstable_v6_client_protocol_h,
|
|
xdg_shell_unstable_v6_protocol_c,
|
|
]
|
|
|
|
deps_wlwl = [
|
|
dependency('wayland-client'),
|
|
dependency('wayland-cursor'),
|
|
dep_pixman,
|
|
dep_libweston,
|
|
dep_lib_cairo_shared,
|
|
]
|
|
|
|
if get_option('renderer-gl')
|
|
d = dependency('wayland-egl', required: false)
|
|
if not d.found()
|
|
error('wayland-backend + gl-renderer requires wayland-egl which was not found. Or, you can use \'-Dbackend-wayland=false\' or \'-Drenderer-gl=false\'.')
|
|
endif
|
|
deps_wlwl += d
|
|
endif
|
|
|
|
plugin_wlwl = shared_library(
|
|
'wayland-backend',
|
|
srcs_wlwl,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_wlwl,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston
|
|
)
|
|
env_modmap += 'wayland-backend.so=@0@;'.format(plugin_wlwl.full_path())
|
|
install_headers('compositor-wayland.h', subdir: dir_include_libweston)
|
|
endif
|
|
|
|
|
|
if get_option('backend-x11')
|
|
config_h.set('BUILD_X11_COMPOSITOR', '1')
|
|
|
|
srcs_x11 = [
|
|
'compositor-x11.c',
|
|
presentation_time_server_protocol_h,
|
|
]
|
|
|
|
dep_x11_xcb = dependency('xcb', version: '>= 1.8', required: false)
|
|
if not dep_x11_xcb.found()
|
|
error('x11-backend requires xcb >= 1.8 which was not found. Or, you can use \'-Dbackend-x11=false\'.')
|
|
endif
|
|
|
|
deps_x11 = [
|
|
dep_x11_xcb,
|
|
dep_lib_cairo_shared,
|
|
dep_pixman,
|
|
]
|
|
|
|
foreach name : [ 'xcb-shm', 'x11', 'x11-xcb' ]
|
|
d = dependency(name, required: false)
|
|
if not d.found()
|
|
error('x11-backend requires @0@ which was not found. Or, you can use \'-Dbackend-x11=false\'.'.format(name))
|
|
endif
|
|
deps_x11 += d
|
|
endforeach
|
|
|
|
dep_xcb_xkb = dependency('xcb-xkb', version: '>= 1.9', required: false)
|
|
if dep_xcb_xkb.found()
|
|
deps_x11 += dep_xcb_xkb
|
|
config_h.set('HAVE_XCB_XKB', '1')
|
|
endif
|
|
|
|
if get_option('renderer-gl')
|
|
d = dependency('egl', required: false)
|
|
if not d.found()
|
|
error('x11-backend + gl-renderer requires egl which was not found. Or, you can use \'-Dbackend-x11=false\' or \'-Drenderer-gl=false\'.')
|
|
endif
|
|
deps_x11 += d
|
|
endif
|
|
|
|
plugin_x11 = shared_library(
|
|
'x11-backend',
|
|
srcs_x11,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_x11,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston
|
|
)
|
|
env_modmap += 'x11-backend.so=@0@;'.format(plugin_x11.full_path())
|
|
|
|
install_headers('compositor-x11.h', subdir: dir_include_libweston)
|
|
endif
|
|
|
|
|
|
if get_option('backend-fbdev')
|
|
config_h.set('BUILD_FBDEV_COMPOSITOR', '1')
|
|
|
|
srcs_fbdev = [
|
|
'compositor-fbdev.c',
|
|
'libinput-device.c',
|
|
'libinput-seat.c',
|
|
presentation_time_server_protocol_h,
|
|
]
|
|
|
|
deps_fbdev = [
|
|
dep_libweston,
|
|
dep_session_helper,
|
|
dep_libinput,
|
|
dependency('libudev', version: '>= 136'),
|
|
]
|
|
|
|
plugin_fbdev = shared_library(
|
|
'fbdev-backend',
|
|
srcs_fbdev,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_fbdev,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston
|
|
)
|
|
env_modmap += 'fbdev-backend.so=@0@;'.format(plugin_fbdev.full_path())
|
|
|
|
install_headers('compositor-fbdev.h', subdir: dir_include_libweston)
|
|
endif
|
|
|
|
|
|
if get_option('renderer-gl')
|
|
config_h.set('ENABLE_EGL', '1')
|
|
|
|
srcs_renderer_gl = [
|
|
'gl-renderer.c',
|
|
'vertex-clipping.c',
|
|
'../shared/matrix.c',
|
|
linux_dmabuf_unstable_v1_protocol_c,
|
|
linux_dmabuf_unstable_v1_server_protocol_h,
|
|
]
|
|
|
|
deps_renderer_gl = [
|
|
dep_pixman,
|
|
dep_libweston,
|
|
dep_libdrm_headers,
|
|
]
|
|
|
|
foreach name : [ 'egl', 'glesv2' ]
|
|
d = dependency(name, required: false)
|
|
if not d.found()
|
|
error('gl-renderer requires @0@ which was not found. Or, you can use \'-Drenderer-gl=false\'.'.format(name))
|
|
endif
|
|
deps_renderer_gl += d
|
|
endforeach
|
|
|
|
plugin_gl = shared_library(
|
|
'gl-renderer',
|
|
srcs_renderer_gl,
|
|
include_directories: include_directories('..', '../shared'),
|
|
dependencies: deps_renderer_gl,
|
|
name_prefix: '',
|
|
install: true,
|
|
install_dir: dir_module_libweston
|
|
)
|
|
env_modmap += 'gl-renderer.so=@0@;'.format(plugin_gl.full_path())
|
|
endif
|
|
|
|
if get_option('weston-launch')
|
|
dep_pam = cc.find_library('pam')
|
|
|
|
if not cc.has_function('pam_open_session', dependencies: dep_pam)
|
|
error('pam_open_session not found for weston-launch')
|
|
endif
|
|
|
|
executable(
|
|
'weston-launch',
|
|
'weston-launch.c',
|
|
dependencies: [dep_pam, systemd_dep, dep_libdrm],
|
|
include_directories: include_directories('..'),
|
|
install: true
|
|
)
|
|
|
|
meson.add_install_script('echo', 'REMINDER: You are installing weston-launch, please make it setuid-root.')
|
|
endif
|