weston/libweston/meson.build
Stefan Agner 12f7665310 backend-vnc: add VNC support using Neat VNC library
This adds basic VNC protocol support using the Neat VNC library
(https://github.com/any1/neatvnc). Neat VNC depends on the AML main
loop library. The backend makes use of AML's integrated epoll backend
and connects AML via file descriptor with the Wayland event loop.

This implementation does not support authentication and hardcodes the
pixel format currently.

Co-authored-by: Philipp Zabel <p.zabel@pengutronix.de>
Co-authored-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
Signed-off-by: Stefan Agner <stefan@agner.ch>
[r.czerwinski@pengutronix.de:
 - use new (as of 0.5.0) Neat VNC buffer API, with a buffer pool]
Signed-off-by: Rouven Czerwinski <r.czerwinski@pengutronix.de>
[p.zabel@pengutronix.de:
 - transform repaint damage to output coordinates
 - transform pointer coordinates into global space
 - check that outputs and heads are in fact ours, see aab722bb1785..060ef82d9360
 - track damage across multiple frame buffers
 - choose pixel format by drm_fourcc, see 8b6c3fe0ad
 - enable ctrl and alt modifiers
 - fix frame timing to achieve a constant repaint rate
 - pass initial size explicitly, see f4559b0760
 - use resize_output with pixman-renderer, see 55d08f9634e8..84b5d0eb4bee
 - allow configuring the refresh rate]
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
2022-10-18 07:31:42 +02:00

237 lines
6.3 KiB
Meson

deps_libweston = [
dep_wayland_server,
dep_pixman,
dep_libm,
dep_libdl,
dep_libdrm,
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',
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,
single_pixel_buffer_v1_protocol_c,
single_pixel_buffer_v1_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,
]
subdir('desktop')
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-util.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('deprecated-launcher-logind')
systemd_dep = dependency('libsystemd', version: '>= 209', required: false)
if not systemd_dep.found()
error('logind support requires libsystemd >= 209. Or, you can use \'-Ddeprecated-launcher-logind=false\'')
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 \'-Ddeprecated-launcher-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,
]
warning('deprecated-launcher-logind is enabled. This will go away, see https://gitlab.freedesktop.org/wayland/weston/-/issues/488')
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('.')
)
subdir('color-lcms')
subdir('renderer-gl')
subdir('backend-drm')
subdir('backend-headless')
subdir('backend-rdp')
subdir('backend-vnc')
subdir('backend-wayland')
subdir('backend-x11')