5e79dd4892
This creates the color-lcms plugin that in the future will be using Little CMS as the color matching module, processing ICC profiles, and producing HDR tone mappings. Right now, this new plugin is functionally equivalent to the no-op color manager, except it already links to lcms2 and checks that the renderer supports color operations. Color-lcms is a libweston plugin that is loaded with explicit weston_compositor API. This does not currently allow loading alternative color manager plugins. External color manager plugins might be considered in the future when the libweston APIs around color management stabilize. This libweston plugin uses the same build option as the old cms-static Weston plugins, as they both need lcms2. The minimum version for lcms2 was chosen by what Debian Buster provides today and for no other reason. This plugin intends to support the Wayland CM&HDR protocol extension and hence sets supports_client_protocol to true. This will expose the protocol extension to clients when it gets implemented. Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
257 lines
6.8 KiB
Meson
257 lines
6.8 KiB
Meson
deps_libweston = [
|
|
dep_wayland_server,
|
|
dep_pixman,
|
|
dep_libm,
|
|
dep_libdl,
|
|
dep_libdrm_headers,
|
|
dep_xkbcommon,
|
|
dep_matrix_c
|
|
]
|
|
srcs_libweston = [
|
|
git_version_h,
|
|
'animation.c',
|
|
'bindings.c',
|
|
'clipboard.c',
|
|
'color.c',
|
|
'color-noop.c',
|
|
'compositor.c',
|
|
'content-protection.c',
|
|
'data-device.c',
|
|
'drm-formats.c',
|
|
'input.c',
|
|
'linux-dmabuf.c',
|
|
'linux-explicit-synchronization.c',
|
|
'linux-sync-file.c',
|
|
'log.c',
|
|
'noop-renderer.c',
|
|
'pixel-formats.c',
|
|
'pixman-renderer.c',
|
|
'plugin-registry.c',
|
|
'screenshooter.c',
|
|
'timeline.c',
|
|
'touch-calibration.c',
|
|
'weston-log-wayland.c',
|
|
'weston-log-file.c',
|
|
'weston-log-flight-rec.c',
|
|
'weston-log.c',
|
|
'weston-direct-display.c',
|
|
'zoom.c',
|
|
linux_dmabuf_unstable_v1_protocol_c,
|
|
linux_dmabuf_unstable_v1_server_protocol_h,
|
|
linux_explicit_synchronization_unstable_v1_protocol_c,
|
|
linux_explicit_synchronization_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,
|
|
weston_content_protection_protocol_c,
|
|
weston_content_protection_server_protocol_h,
|
|
viewporter_protocol_c,
|
|
viewporter_server_protocol_h,
|
|
xdg_output_unstable_v1_protocol_c,
|
|
xdg_output_unstable_v1_server_protocol_h,
|
|
weston_debug_protocol_c,
|
|
weston_debug_server_protocol_h,
|
|
weston_direct_display_protocol_c,
|
|
weston_direct_display_server_protocol_h,
|
|
]
|
|
|
|
if get_option('renderer-gl')
|
|
dep_egl = dependency('egl', required: false)
|
|
if not dep_egl.found()
|
|
error('libweston + gl-renderer requires egl which was not found. Or, you can use \'-Drenderer-gl=false\'.')
|
|
endif
|
|
deps_libweston += dep_egl
|
|
endif
|
|
|
|
lib_weston = shared_library(
|
|
'weston-@0@'.format(libweston_major),
|
|
srcs_libweston,
|
|
include_directories: common_inc,
|
|
install: true,
|
|
version: '0.0.@0@'.format(libweston_revision),
|
|
link_whole: lib_libshared,
|
|
dependencies: deps_libweston
|
|
)
|
|
|
|
deps_for_libweston_users = [
|
|
dep_wayland_server,
|
|
dep_pixman,
|
|
dep_xkbcommon,
|
|
]
|
|
|
|
# For external users, like Weston.
|
|
dep_libweston_public = declare_dependency(
|
|
link_with: lib_weston,
|
|
include_directories: public_inc,
|
|
dependencies: deps_for_libweston_users
|
|
)
|
|
|
|
# For internal users, like the backends.
|
|
dep_libweston_private = declare_dependency(
|
|
link_with: lib_weston,
|
|
include_directories: [ include_directories('.'), public_inc ],
|
|
dependencies: deps_for_libweston_users
|
|
)
|
|
|
|
# XXX: We should be able to use dep_libweston_private.partial_dependency() instead
|
|
# of this, but a Meson bug makes it not work. It will be fixed with
|
|
# https://github.com/mesonbuild/meson/pull/5167
|
|
# in hopefully Meson 0.51.
|
|
dep_libweston_private_h_deps = []
|
|
foreach d : deps_for_libweston_users
|
|
dep_libweston_private_h_deps += d.partial_dependency(compile_args: true)
|
|
endforeach
|
|
dep_libweston_private_h = declare_dependency(
|
|
include_directories: [ include_directories('.'), public_inc ],
|
|
dependencies: dep_libweston_private_h_deps
|
|
)
|
|
|
|
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: deps_for_libweston_users,
|
|
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 = [ dep_libweston_private_h ]
|
|
|
|
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
|
|
if get_option('launcher-libseat')
|
|
libseat_dep = dependency('libseat', version: '>= 0.4')
|
|
config_h.set('HAVE_LIBSEAT', '1')
|
|
srcs_session_helper += [
|
|
'launcher-libseat.c',
|
|
]
|
|
deps_session_helper += [
|
|
libseat_dep,
|
|
]
|
|
endif
|
|
|
|
lib_session_helper = static_library(
|
|
'session-helper',
|
|
srcs_session_helper,
|
|
include_directories: common_inc,
|
|
dependencies: deps_session_helper,
|
|
install: false
|
|
)
|
|
dep_session_helper = declare_dependency(link_with: lib_session_helper)
|
|
|
|
|
|
lib_libinput_backend = static_library(
|
|
'libinput-backend',
|
|
[
|
|
'libinput-device.c',
|
|
'libinput-seat.c'
|
|
],
|
|
dependencies: [
|
|
dep_libweston_private,
|
|
dep_libinput,
|
|
dependency('libudev', version: '>= 136')
|
|
],
|
|
include_directories: common_inc,
|
|
install: false
|
|
)
|
|
dep_libinput_backend = declare_dependency(
|
|
link_with: lib_libinput_backend,
|
|
include_directories: include_directories('.')
|
|
)
|
|
|
|
dep_vertex_clipping = declare_dependency(
|
|
sources: 'vertex-clipping.c',
|
|
include_directories: include_directories('.')
|
|
)
|
|
|
|
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: common_inc,
|
|
install: true
|
|
)
|
|
|
|
meson.add_install_script('echo', 'REMINDER: You are installing weston-launch, please make it setuid-root.')
|
|
endif
|
|
|
|
subdir('color-lcms')
|
|
subdir('renderer-gl')
|
|
subdir('backend-drm')
|
|
subdir('backend-fbdev')
|
|
subdir('backend-headless')
|
|
subdir('backend-rdp')
|
|
subdir('backend-wayland')
|
|
subdir('backend-x11')
|