Meson is a build system, currently implemented in Python, with multiple output backends, including Ninja and Make. The build file syntax is clean and easy to read unlike autotools. In practise, configuring and building with Meson and Ninja has been observed to be much faster than with autotools. Also cross-building support is excellent. More information at http://mesonbuild.com Since moving to Meson requires some changes from users in any case, we took this opportunity to revamp build options. Most of the build options still exist, some have changed names or more, and a few have been dropped. The option to choose the Cairo flavour is not implemented since for the longest time the Cairo image backend has been the only recommended one. This Meson build should be fully functional and it installs everything an all-enabled autotools build does. Installed pkg-config files have some minor differences that should be insignificant. Building of some developer documentation that was never installed with autotools is missing. It is expected that the autotools build system will be removed soon after the next Weston release. Signed-off-by: Daniel Stone <daniels@collabora.com> Co-authored-by: Pekka Paalanen <pq@iki.fi> Signed-off-by: Pekka Paalanen <pq@iki.fi>dev
parent
ed75c89fd5
commit
8011b0fa03
@ -0,0 +1,367 @@ |
||||
if get_option('resize-pool') |
||||
config_h.set('USE_RESIZE_POOL', '1') |
||||
endif |
||||
|
||||
srcs_toytoolkit = [ |
||||
'window.c', |
||||
xdg_shell_unstable_v6_client_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
text_cursor_position_client_protocol_h, |
||||
text_cursor_position_protocol_c, |
||||
relative_pointer_unstable_v1_client_protocol_h, |
||||
relative_pointer_unstable_v1_protocol_c, |
||||
pointer_constraints_unstable_v1_client_protocol_h, |
||||
pointer_constraints_unstable_v1_protocol_c, |
||||
ivi_application_client_protocol_h, |
||||
ivi_application_protocol_c, |
||||
] |
||||
deps_toytoolkit = [ |
||||
dep_wayland_client, |
||||
dep_lib_cairo_shared, |
||||
dep_xkbcommon, |
||||
dependency('wayland-cursor'), |
||||
cc.find_library('util'), |
||||
] |
||||
lib_toytoolkit = static_library( |
||||
'toytoolkit', |
||||
srcs_toytoolkit, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_toytoolkit, |
||||
install: false, |
||||
) |
||||
dep_toytoolkit = declare_dependency( |
||||
link_with: lib_toytoolkit, |
||||
dependencies: deps_toytoolkit, |
||||
) |
||||
|
||||
simple_clients = [ |
||||
{ |
||||
'name': 'damage', |
||||
'sources': [ |
||||
'simple-damage.c', |
||||
viewporter_client_protocol_h, |
||||
viewporter_protocol_c, |
||||
xdg_shell_unstable_v6_client_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
fullscreen_shell_unstable_v1_client_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
], |
||||
'dep_objs': [ dep_wayland_client, dep_libshared ] |
||||
}, |
||||
{ |
||||
'name': 'dmabuf-v4l', |
||||
'sources': [ |
||||
'simple-dmabuf-v4l.c', |
||||
linux_dmabuf_unstable_v1_client_protocol_h, |
||||
linux_dmabuf_unstable_v1_protocol_c, |
||||
xdg_shell_unstable_v6_client_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
fullscreen_shell_unstable_v1_client_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
], |
||||
'dep_objs': [ dep_wayland_client, dep_libdrm_headers ] |
||||
}, |
||||
{ |
||||
'name': 'egl', |
||||
'sources': [ |
||||
'simple-egl.c', |
||||
xdg_shell_unstable_v6_client_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
ivi_application_client_protocol_h, |
||||
ivi_application_protocol_c, |
||||
], |
||||
'dep_objs': [ dep_wayland_client, dep_libshared, dep_libm ], |
||||
'deps': [ 'egl', 'wayland-egl', 'glesv2', 'wayland-cursor' ] |
||||
}, |
||||
# weston-simple-im is handled specially separately due to install_dir and odd window.h usage |
||||
{ |
||||
'name': 'shm', |
||||
'sources': [ |
||||
'simple-shm.c', |
||||
xdg_shell_unstable_v6_client_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
fullscreen_shell_unstable_v1_client_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
ivi_application_client_protocol_h, |
||||
ivi_application_protocol_c, |
||||
], |
||||
'dep_objs': [ dep_wayland_client, dep_libshared ] |
||||
}, |
||||
{ |
||||
'name': 'touch', |
||||
'sources': [ |
||||
'simple-touch.c', |
||||
], |
||||
'dep_objs': [ dep_wayland_client, dep_libshared ] |
||||
}, |
||||
] |
||||
|
||||
simple_clients_enabled = get_option('simple-clients') |
||||
simple_build_all = simple_clients_enabled.contains('all') |
||||
foreach t : simple_clients |
||||
if simple_build_all or simple_clients_enabled.contains(t.get('name')) |
||||
t_name = 'weston-simple-' + t.get('name') |
||||
t_deps = t.get('dep_objs', []) |
||||
foreach depname : t.get('deps', []) |
||||
dep = dependency(depname, required: false) |
||||
if not dep.found() |
||||
error('@0@ requires @1@ which was not found. If you rather not build this, drop "@2@" from simple-clients option.'.format(t_name, depname, t.get('name'))) |
||||
endif |
||||
t_deps += dep |
||||
endforeach |
||||
|
||||
executable( |
||||
t_name, t.get('sources'), |
||||
include_directories: include_directories('..'), |
||||
dependencies: t_deps, |
||||
install: true |
||||
) |
||||
endif |
||||
endforeach |
||||
|
||||
if simple_build_all or simple_clients_enabled.contains('im') |
||||
executable( |
||||
'weston-simple-im', [ |
||||
'simple-im.c', |
||||
input_method_unstable_v1_client_protocol_h, |
||||
input_method_unstable_v1_protocol_c, |
||||
], |
||||
include_directories: include_directories('..'), |
||||
dependencies: [ |
||||
dep_libshared, |
||||
dep_wayland_client, |
||||
dep_xkbcommon, |
||||
dependency('wayland-cursor'), |
||||
dependency('cairo') |
||||
], |
||||
install: true, |
||||
install_dir: dir_libexec |
||||
) |
||||
endif |
||||
|
||||
tools_enabled = get_option('tools') |
||||
tools_list = [ |
||||
{ |
||||
'name': 'calibrator', |
||||
'sources': [ |
||||
'calibrator.c', |
||||
'../shared/matrix.c', |
||||
], |
||||
'deps': [ dep_toytoolkit ], |
||||
}, |
||||
{ |
||||
'name': 'debug', |
||||
'sources': [ |
||||
'weston-debug.c', |
||||
weston_debug_client_protocol_h, |
||||
weston_debug_protocol_c, |
||||
], |
||||
'deps': [ dep_wayland_client ] |
||||
}, |
||||
{ |
||||
'name': 'info', |
||||
'sources': [ |
||||
'weston-info.c', |
||||
presentation_time_client_protocol_h, |
||||
presentation_time_protocol_c, |
||||
linux_dmabuf_unstable_v1_client_protocol_h, |
||||
linux_dmabuf_unstable_v1_protocol_c, |
||||
tablet_unstable_v2_client_protocol_h, |
||||
tablet_unstable_v2_protocol_c, |
||||
xdg_output_unstable_v1_client_protocol_h, |
||||
xdg_output_unstable_v1_protocol_c, |
||||
], |
||||
'deps': [ dep_wayland_client, dep_libshared ] |
||||
}, |
||||
{ |
||||
'name': 'terminal', |
||||
'sources': [ 'terminal.c' ], |
||||
'deps': [ dep_toytoolkit ], |
||||
}, |
||||
{ |
||||
'name': 'touch-calibrator', |
||||
'sources': [ |
||||
'touch-calibrator.c', |
||||
'../shared/matrix.c', |
||||
weston_touch_calibration_client_protocol_h, |
||||
weston_touch_calibration_protocol_c, |
||||
], |
||||
'deps': [ dep_toytoolkit ], |
||||
}, |
||||
] |
||||
|
||||
foreach t : tools_list |
||||
if tools_enabled.contains(t.get('name')) |
||||
executable( |
||||
'weston-@0@'.format(t.get('name')), |
||||
t.get('sources'), |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: t.get('deps', []), |
||||
install: true |
||||
) |
||||
endif |
||||
endforeach |
||||
|
||||
demo_clients = [ |
||||
{ 'basename': 'clickdot' }, |
||||
{ |
||||
'basename': 'cliptest', |
||||
'add_sources': [ '../libweston/vertex-clipping.c' ] |
||||
}, |
||||
{ 'basename': 'confine' }, |
||||
{ 'basename': 'dnd' }, |
||||
{ |
||||
'basename': 'editor', |
||||
'add_sources': [ |
||||
text_input_unstable_v1_client_protocol_h, |
||||
text_input_unstable_v1_protocol_c, |
||||
], |
||||
'add_deps': [ dependency('pangocairo') ] |
||||
}, |
||||
{ 'basename': 'eventdemo' }, |
||||
{ 'basename': 'flower' }, |
||||
{ |
||||
'basename': 'fullscreen', |
||||
'add_sources': [ |
||||
fullscreen_shell_unstable_v1_client_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
] |
||||
}, |
||||
{ 'basename': 'image' }, |
||||
{ 'basename': 'multi-resource' }, |
||||
{ |
||||
'basename': 'presentation-shm', |
||||
'add_sources': [ |
||||
presentation_time_client_protocol_h, |
||||
presentation_time_protocol_c, |
||||
] |
||||
}, |
||||
{ 'basename': 'resizor' }, |
||||
{ |
||||
'basename': 'scaler', |
||||
'add_sources': [ |
||||
viewporter_client_protocol_h, |
||||
viewporter_protocol_c, |
||||
] |
||||
}, |
||||
{ 'basename': 'smoke' }, |
||||
{ 'basename': 'stacking' }, |
||||
{ |
||||
'basename': 'subsurfaces', |
||||
'add_deps': [ dep_egl, dep_glesv2, dep_wl_egl ] |
||||
}, |
||||
{ 'basename': 'transformed' }, |
||||
] |
||||
|
||||
if get_option('demo-clients') |
||||
foreach t : demo_clients |
||||
t_name = 'weston-' + t.get('basename') |
||||
t_srcs = [ t.get('basename') + '.c' ] + t.get('add_sources', []) |
||||
t_deps = [ dep_toytoolkit ] + t.get('add_deps', []) |
||||
|
||||
executable( |
||||
t_name, t_srcs, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: t_deps, |
||||
install: true |
||||
) |
||||
endforeach |
||||
endif |
||||
|
||||
simple_dmabuf_drm_opts = get_option('simple-dmabuf-drm') |
||||
simple_dmabuf_drm_deps = [] |
||||
foreach driver : [ 'etnaviv', 'intel', 'freedreno' ] |
||||
if simple_dmabuf_drm_opts.contains(driver) |
||||
required = true |
||||
enabled = true |
||||
elif simple_dmabuf_drm_opts.contains('auto') |
||||
required = get_option('auto_features').enabled() |
||||
enabled = not get_option('auto_features').disabled() |
||||
else |
||||
enabled = false |
||||
endif |
||||
|
||||
if enabled |
||||
dep = dependency('libdrm_' + driver, required: required) |
||||
if dep.found() |
||||
simple_dmabuf_drm_deps += dep |
||||
config_h.set('HAVE_LIBDRM_' + driver.to_upper(), 1) |
||||
endif |
||||
endif |
||||
endforeach |
||||
if simple_dmabuf_drm_deps.length() > 0 |
||||
executable( |
||||
'weston-simple-dmabuf-drm', |
||||
'simple-dmabuf-drm.c', |
||||
xdg_shell_unstable_v6_client_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
fullscreen_shell_unstable_v1_client_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
linux_dmabuf_unstable_v1_client_protocol_h, |
||||
linux_dmabuf_unstable_v1_protocol_c, |
||||
include_directories: include_directories('..'), |
||||
dependencies: [ |
||||
dep_wayland_client, |
||||
dep_libdrm, |
||||
simple_dmabuf_drm_deps |
||||
], |
||||
install: true |
||||
) |
||||
endif |
||||
|
||||
if get_option('shell-desktop') |
||||
exe_keyboard = executable( |
||||
'weston-keyboard', |
||||
'keyboard.c', |
||||
text_input_unstable_v1_client_protocol_h, |
||||
text_input_unstable_v1_protocol_c, |
||||
input_method_unstable_v1_client_protocol_h, |
||||
input_method_unstable_v1_protocol_c, |
||||
include_directories: include_directories('..'), |
||||
dependencies: dep_toytoolkit, |
||||
install_dir: get_option('libexecdir'), |
||||
install: true |
||||
) |
||||
env_modmap += 'weston-keyboard=@0@;'.format(exe_keyboard.full_path()) |
||||
|
||||
exe_shooter = executable( |
||||
'weston-screenshooter', |
||||
'screenshot.c', |
||||
weston_screenshooter_client_protocol_h, |
||||
weston_screenshooter_protocol_c, |
||||
include_directories: include_directories('..'), |
||||
dependencies: dep_toytoolkit, |
||||
install_dir: get_option('libexecdir'), |
||||
install: true |
||||
) |
||||
env_modmap += 'weston-screenshooter=@0@;'.format(exe_shooter.full_path()) |
||||
|
||||
exe_shell_desktop = executable( |
||||
'weston-desktop-shell', |
||||
'desktop-shell.c', |
||||
weston_desktop_shell_client_protocol_h, |
||||
weston_desktop_shell_protocol_c, |
||||
include_directories: include_directories('..'), |
||||
dependencies: dep_toytoolkit, |
||||
install_dir: get_option('libexecdir'), |
||||
install: true |
||||
) |
||||
env_modmap += 'weston-desktop-shell=@0@;'.format(exe_shell_desktop.full_path()) |
||||
endif |
||||
|
||||
|
||||
if get_option('shell-ivi') |
||||
exe_shell_ivi_ui = executable( |
||||
'weston-ivi-shell-user-interface', |
||||
'ivi-shell-user-interface.c', |
||||
ivi_hmi_controller_client_protocol_h, |
||||
ivi_hmi_controller_protocol_c, |
||||
ivi_application_client_protocol_h, |
||||
ivi_application_protocol_c, |
||||
include_directories: include_directories('..'), |
||||
dependencies: dep_toytoolkit, |
||||
install: true, |
||||
install_dir: get_option('libexecdir') |
||||
) |
||||
env_modmap += 'weston-ivi-shell-user-interface=@0@;'.format(exe_shell_ivi_ui.full_path()) |
||||
endif |
@ -0,0 +1,146 @@ |
||||
srcs_weston = [ |
||||
git_version_h, |
||||
'main.c', |
||||
'text-backend.c', |
||||
'weston-screenshooter.c', |
||||
text_input_unstable_v1_server_protocol_h, |
||||
text_input_unstable_v1_protocol_c, |
||||
input_method_unstable_v1_server_protocol_h, |
||||
input_method_unstable_v1_protocol_c, |
||||
weston_screenshooter_server_protocol_h, |
||||
weston_screenshooter_protocol_c, |
||||
] |
||||
deps_weston = [ |
||||
dep_libshared, |
||||
dep_libweston, |
||||
dep_libinput, |
||||
dep_libdl, |
||||
dep_threads, |
||||
] |
||||
|
||||
if get_option('xwayland') |
||||
srcs_weston += 'xwayland.c' |
||||
config_h.set_quoted('XSERVER_PATH', get_option('xwayland-path')) |
||||
endif |
||||
|
||||
exe_weston = executable( |
||||
'weston', |
||||
srcs_weston, |
||||
include_directories: include_directories('..', '../shared'), |
||||
link_args: [ '-export-dynamic' ], |
||||
dependencies: deps_weston, |
||||
install: true |
||||
) |
||||
install_headers('weston.h', subdir: 'weston') |
||||
|
||||
pkgconfig.generate( |
||||
filebase: 'weston', |
||||
name: 'Weston Plugin API', |
||||
version: version_weston, |
||||
description: 'Header files for Weston plugin development', |
||||
requires_private: [ lib_weston ], |
||||
variables: [ |
||||
'libexecdir=' + join_paths('${prefix}', get_option('libexecdir')), |
||||
'pkglibexecdir=${libexecdir}/weston' |
||||
], |
||||
subdirs: 'weston' |
||||
) |
||||
|
||||
install_data( |
||||
'weston.desktop', |
||||
install_dir: join_paths(dir_data, 'wayland-sessions') |
||||
) |
||||
|
||||
if get_option('screenshare') |
||||
srcs_screenshare = [ |
||||
'screen-share.c', |
||||
fullscreen_shell_unstable_v1_client_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
] |
||||
deps_screenshare = [ |
||||
dep_libweston, |
||||
dep_wayland_client, |
||||
] |
||||
plugin_screenshare = shared_library( |
||||
'screen-share', |
||||
srcs_screenshare, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_screenshare, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'screen-share.so=@0@;'.format(plugin_screenshare.full_path()) |
||||
endif |
||||
|
||||
if get_option('color-management-lcms') |
||||
config_h.set('HAVE_LCMS', '1') |
||||
|
||||
srcs_lcms = [ |
||||
'cms-static.c', |
||||
'cms-helper.c', |
||||
] |
||||
deps_lcms = [ |
||||
dep_libweston, |
||||
dependency('lcms2'), |
||||
] |
||||
plugin_lcms = shared_library( |
||||
'cms-static', |
||||
srcs_lcms, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_lcms, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'cms-static.so=@0@;'.format(plugin_lcms.full_path()) |
||||
endif |
||||
|
||||
if get_option('color-management-colord') |
||||
if not get_option('color-management-lcms') |
||||
error('LCMS must be enabled to support colord') |
||||
endif |
||||
|
||||
srcs_colord = [ |
||||
'cms-colord.c', |
||||
'cms-helper.c', |
||||
] |
||||
deps_colord = [ |
||||
dep_libweston, |
||||
dependency('colord', version: '>= 0.1.27') |
||||
] |
||||
plugin_colord = shared_library( |
||||
'cms-colord', |
||||
srcs_colord, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_colord, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'cms-colord.so=@0@;'.format(plugin_colord.full_path()) |
||||
endif |
||||
|
||||
if get_option('systemd') |
||||
plugin_systemd_notify = shared_library( |
||||
'systemd-notify', |
||||
'systemd-notify.c', |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: [ dep_libweston, dependency('libsystemd') ], |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'systemd-notify.so=@0@;'.format(plugin_systemd_notify.full_path()) |
||||
endif |
||||
|
||||
weston_ini_config = configuration_data() |
||||
weston_ini_config.set('bindir', dir_bin) |
||||
weston_ini_config.set('libexecdir', dir_libexec) |
||||
weston_ini_config.set('abs_top_srcdir', meson.source_root()) |
||||
weston_ini_config.set('abs_top_builddir', meson.build_root()) |
||||
configure_file( |
||||
input: '../weston.ini.in', |
||||
output: 'weston.ini', |
||||
configuration: weston_ini_config |
||||
) |
@ -0,0 +1,29 @@ |
||||
install_data( |
||||
[ |
||||
'background.png', |
||||
'border.png', |
||||
'fullscreen.png', |
||||
'home.png', |
||||
'icon_editor.png', |
||||
'icon_flower.png', |
||||
'icon_ivi_clickdot.png', |
||||
'icon_ivi_flower.png', |
||||
'icon_ivi_simple-egl.png', |
||||
'icon_ivi_simple-shm.png', |
||||
'icon_ivi_smoke.png', |
||||
'icon_terminal.png', |
||||
'icon_window.png', |
||||
'panel.png', |
||||
'pattern.png', |
||||
'random.png', |
||||
'sidebyside.png', |
||||
'sign_close.png', |
||||
'sign_maximize.png', |
||||
'sign_minimize.png', |
||||
'terminal.png', |
||||
'tiling.png', |
||||
'wayland.png', |
||||
'wayland.svg', |
||||
], |
||||
install_dir: join_paths(dir_data, 'weston') |
||||
) |
@ -0,0 +1,29 @@ |
||||
if get_option('shell-desktop') |
||||
config_h.set_quoted('WESTON_SHELL_CLIENT', get_option('desktop-shell-client-default')) |
||||
|
||||
srcs_shell_desktop = [ |
||||
'shell.c', |
||||
'exposay.c', |
||||
'input-panel.c', |
||||
'../shared/matrix.c', |
||||
weston_desktop_shell_server_protocol_h, |
||||
weston_desktop_shell_protocol_c, |
||||
input_method_unstable_v1_server_protocol_h, |
||||
input_method_unstable_v1_protocol_c, |
||||
] |
||||
deps_shell_desktop = [ |
||||
dep_libshared, |
||||
dep_lib_desktop, |
||||
dep_libweston, |
||||
] |
||||
plugin_shell_desktop = shared_library( |
||||
'desktop-shell', |
||||
srcs_shell_desktop, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_shell_desktop, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'desktop-shell.so=@0@;'.format(plugin_shell_desktop.full_path()) |
||||
endif |
@ -0,0 +1,17 @@ |
||||
if get_option('shell-fullscreen') |
||||
srcs_shell_fullscreen = [ |
||||
'fullscreen-shell.c', |
||||
'../shared/matrix.c', |
||||
fullscreen_shell_unstable_v1_server_protocol_h, |
||||
fullscreen_shell_unstable_v1_protocol_c, |
||||
] |
||||
shared_library( |
||||
'fullscreen-shell', |
||||
srcs_shell_fullscreen, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: dep_libweston, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
endif |
@ -0,0 +1,53 @@ |
||||
if get_option('shell-ivi') |
||||
srcs_shell_ivi = [ |
||||
'ivi-shell.c', |
||||
'ivi-layout.c', |
||||
'ivi-layout-transition.c', |
||||
ivi_application_server_protocol_h, |
||||
ivi_application_protocol_c, |
||||
input_method_unstable_v1_server_protocol_h, |
||||
input_method_unstable_v1_protocol_c, |
||||
] |
||||
plugin_shell_ivi = shared_library( |
||||
'ivi-shell', |
||||
srcs_shell_ivi, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: dep_libweston, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'ivi-shell.so=@0@;'.format(plugin_shell_ivi.full_path()) |
||||
|
||||
install_headers('ivi-layout-export.h', subdir: 'weston') |
||||
|
||||
srcs_ivi_hmi = [ |
||||
'hmi-controller.c', |
||||
ivi_hmi_controller_server_protocol_h, |
||||
ivi_hmi_controller_protocol_c, |
||||
] |
||||
plugin_ivi_hmi = shared_library( |
||||
'hmi-controller', |
||||
srcs_ivi_hmi, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: dep_libweston, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_weston |
||||
) |
||||
env_modmap += 'hmi-controller.so=@0@;'.format(plugin_ivi_hmi.full_path()) |
||||
|
||||
ivi_test_config = configuration_data() |
||||
ivi_test_config.set('bindir', dir_bin) |
||||
ivi_test_config.set('libexecdir', dir_libexec) |
||||
ivi_test_config.set('abs_top_srcdir', meson.current_source_dir()) |
||||
ivi_test_config.set('abs_top_builddir', meson.current_build_dir()) |
||||
ivi_test_config.set('plugin_prefix', meson.current_build_dir()) |
||||
ivi_test_config.set('westondatadir', join_paths(dir_data, 'weston')) |
||||
ivi_test_ini = configure_file( |
||||
input: '../ivi-shell/weston.ini.in', |
||||
output: 'weston-ivi-test.ini', |
||||
install: false, |
||||
configuration: ivi_test_config |
||||
) |
||||
endif |
@ -0,0 +1,35 @@ |
||||
srcs_libdesktop = [ |
||||
'libweston-desktop.c', |
||||
'client.c', |
||||
'seat.c', |
||||
'surface.c', |
||||
'xwayland.c', |
||||
'wl-shell.c', |
||||
'xdg-shell-v6.c', |
||||
xdg_shell_unstable_v6_server_protocol_h, |
||||
xdg_shell_unstable_v6_protocol_c, |
||||
] |
||||
lib_desktop = shared_library( |
||||
'weston-desktop-@0@'.format(libweston_major), |
||||
srcs_libdesktop, |
||||
include_directories: include_directories('..', '../shared'), |
||||
install: true, |
||||
version: '0.0.@0@'.format(libweston_revision), |
||||
dependencies: dep_libweston |
||||
) |
||||
dep_lib_desktop = declare_dependency( |
||||
link_with: lib_desktop, |
||||
dependencies: dep_libweston |
||||
) |
||||
|
||||
install_headers('libweston-desktop.h', subdir: dir_include_libweston) |
||||
|
||||
pkgconfig.generate( |
||||
filebase: 'libweston-desktop-@0@'.format(libweston_major), |
||||
name: 'libweston-desktop', |
||||
version: version_weston, |
||||
description: 'Desktop shells abstraction library for libweston compositors', |
||||
libraries: lib_desktop, |
||||
requires_private: [ lib_weston, dep_wayland_server ], |
||||
subdirs: dir_include_libweston |
||||
) |
@ -0,0 +1 @@ |
||||
#define BUILD_ID "@VCS_TAG@" |
@ -0,0 +1,438 @@ |
||||
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( |
||||
filebase: 'libweston-@0@'.format(libweston_major), |
||||
name: 'libweston API', |
||||
version: version_weston, |
||||
description: 'Header files for libweston compositors development', |
||||
libraries: lib_weston, |
||||
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') |
||||
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 += [ |
||||
dependency('dbus-1', version: '>= 1.6'), |
||||
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') |
||||
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') |
||||
srcs_drm += 'vaapi-recorder.c' |
||||
deps_drm += [ |
||||
dependency('libva', version: '>= 0.34.0'), |
||||
dependency('libva-drm', version: '>= 0.34.0'), |
||||
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') |
||||
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') |
||||
deps_wlwl += dep_wl_egl |
||||
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, |
||||
] |
||||
|
||||
deps_x11 = [ |
||||
dependency('xcb', version: '>= 1.8'), |
||||
dependency('xcb-shm'), |
||||
dependency('x11'), |
||||
dependency('x11-xcb'), |
||||
dep_lib_cairo_shared, |
||||
dep_pixman, |
||||
] |
||||
|
||||
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') |
||||
deps_x11 += dependency('egl') |
||||
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') |
||||
|
||||
if not dep_egl.found() or not dep_glesv2.found() |
||||
error('gl-renderer enabled but EGL/GLESv2 not found') |
||||
endif |
||||
|
||||
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_egl, |
||||
dep_glesv2, |
||||
dep_pixman, |
||||
dep_libweston, |
||||
dep_libdrm_headers, |
||||
] |
||||
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 |
||||
) |
||||
endif |
@ -0,0 +1,53 @@ |
||||
man_conf = configuration_data() |
||||
man_conf.set('weston_native_backend', opt_backend_native) |
||||
man_conf.set('weston_modules_dir', dir_module_weston) |
||||
man_conf.set('libweston_modules_dir', dir_module_libweston) |
||||
man_conf.set('weston_shell_client', get_option('desktop-shell-client-default')) |
||||
man_conf.set('weston_libexecdir', dir_libexec) |
||||
man_conf.set('weston_bindir', dir_bin) |
||||
man_conf.set('xserver_path', get_option('xwayland-path')) |
||||
man_conf.set('version', version_weston) |
||||
|
||||
configure_file( |
||||
input: 'weston.man', |
||||
output: 'weston.1', |
||||
install: true, |
||||
install_dir: join_paths(dir_man, 'man1'), |
||||
configuration: man_conf |
||||
) |
||||
|
||||
configure_file( |
||||
input: 'weston-debug.man', |
||||
output: 'weston-debug.1', |
||||
install: true, |
||||
install_dir: join_paths(dir_man, 'man1'), |
||||
configuration: man_conf |
||||
) |
||||
|
||||
configure_file( |
||||
input: 'weston.ini.man', |
||||
output: 'weston.ini.5', |
||||
install: true, |
||||
install_dir: join_paths(dir_man, 'man5'), |
||||
configuration: man_conf |
||||
) |
||||
|
||||
if get_option('backend-drm') |
||||
configure_file( |
||||
input: 'weston-drm.man', |
||||
output: 'weston-drm.7', |
||||
install: true, |
||||
install_dir: join_paths(dir_man, 'man7'), |
||||
configuration: man_conf |
||||
) |
||||
endif |
||||
|
||||
if get_option('backend-rdp') |
||||
configure_file( |
||||
input: 'weston-rdp.man', |
||||
output: 'weston-rdp.7', |
||||
install: true, |
||||
install_dir: join_paths(dir_man, 'man7'), |
||||
configuration: man_conf |
||||
) |
||||
endif |
@ -0,0 +1,174 @@ |
||||
project('weston', |
||||
'c', |
||||
version: '5.0.90', |
||||
default_options: [ |
||||
'warning_level=2', |
||||
'c_std=gnu99', |
||||
'b_lundef=false', |
||||
], |
||||
meson_version: '>= 0.47', |
||||
license: 'MIT/Expat', |
||||
) |
||||
|
||||
libweston_major = 5 |
||||
|
||||
# libweston_revision is manufactured to follow the autotools build's |
||||
# library file naming, thanks to libtool |
||||
version_weston = meson.project_version() |
||||
version_weston_arr = version_weston.split('.') |
||||
if libweston_major > version_weston_arr[0].to_int() |
||||
if libweston_major > version_weston_arr[0].to_int() + 1 |
||||
error('Bad versions in meson.build: libweston_major is too high') |
||||
endif |
||||
libweston_revision = 0 |
||||
elif libweston_major == version_weston_arr[0].to_int() |
||||
libweston_revision = version_weston_arr[2].to_int() |
||||
else |
||||
error('Bad versions in meson.build: libweston_major is too low') |
||||
endif |
||||
|
||||
dir_prefix = get_option('prefix') |
||||
dir_bin = join_paths(dir_prefix, get_option('bindir')) |
||||
dir_data = join_paths(dir_prefix, get_option('datadir')) |
||||
dir_include = join_paths(dir_prefix, get_option('includedir')) |
||||
dir_include_libweston = 'libweston-@0@'.format(libweston_major) |
||||
dir_lib = join_paths(dir_prefix, get_option('libdir')) |
||||
dir_libexec = join_paths(dir_prefix, get_option('libexecdir')) |
||||
dir_module_weston = join_paths(dir_lib, 'weston') |
||||
dir_module_libweston = join_paths(dir_lib, 'libweston-@0@'.format(libweston_major)) |
||||
dir_data_pc = join_paths(dir_data, 'pkgconfig') |
||||
dir_lib_pc = join_paths(dir_lib, 'pkgconfig') |
||||
dir_man = join_paths(dir_prefix, get_option('mandir')) |
||||
dir_protocol_libweston = 'weston/protocols' # XXX: this should be 'libweston' |
||||
|
||||
pkgconfig = import('pkgconfig') |
||||
|
||||
libweston_version_h = configuration_data() |
||||
libweston_version_h.set('WESTON_VERSION_MAJOR', version_weston_arr[0]) |
||||
libweston_version_h.set('WESTON_VERSION_MINOR', version_weston_arr[1]) |
||||
libweston_version_h.set('WESTON_VERSION_MICRO', version_weston_arr[2]) |
||||
libweston_version_h.set('WESTON_VERSION', version_weston) |
||||
version_h = configure_file( |
||||
input: 'libweston/version.h.in', |
||||
output: 'version.h', |
||||
configuration: libweston_version_h |
||||
) |
||||
install_headers(version_h, subdir: dir_include_libweston) |
||||
git_version_h = vcs_tag( |
||||
input: 'libweston/git-version.h.meson', |
||||
output: 'git-version.h', |
||||
fallback: version_weston |
||||
) |
||||
|
||||
config_h = configuration_data() |
||||
|
||||
cc = meson.get_compiler('c') |
||||
|
||||
global_args = [] |
||||
global_args_maybe = [ |
||||
'-Wno-unused-parameter', |
||||
'-Wno-shift-negative-value', # required due to Pixman |
||||
'-Wno-missing-field-initializers', |
||||
'-fvisibility=hidden', |
||||
'-DIN_WESTON', |
||||
] |
||||
foreach a : global_args_maybe |
||||
if cc.has_argument(a) |
||||
global_args += a |
||||
endif |
||||
endforeach |
||||
add_global_arguments(global_args, language: 'c') |
||||
|
||||
if cc.has_header_symbol('sys/sysmacros.h', 'major') |
||||
config_h.set('MAJOR_IN_SYSMACROS', 1) |
||||
elif cc.has_header_symbol('sys/mkdev.h', 'major') |
||||
config_h.set('MAJOR_IN_MKDEV', 1) |
||||
endif |
||||
|
||||
optional_libc_funcs = [ |
||||
'mkostemp', 'strchrnul', 'initgroups', 'posix_fallocate' |
||||
] |
||||
foreach func : optional_libc_funcs |
||||
if cc.has_function(func) |
||||
config_h.set('HAVE_' + func.to_upper(), 1) |
||||
endif |
||||
endforeach |
||||
|
||||
optional_system_headers = [ |
||||
'linux/sync_file.h' |
||||
] |
||||
foreach hdr : optional_system_headers |
||||
if cc.has_header(hdr) |
||||
config_h.set('HAVE_' + hdr.underscorify().to_upper(), 1) |
||||
endif |
||||
endforeach |
||||
|
||||
env_modmap = '' |
||||
|
||||
config_h.set('_GNU_SOURCE', '1') |
||||
config_h.set('_ALL_SOURCE', '1') |
||||
|
||||
config_h.set_quoted('PACKAGE_STRING', 'weston @0@'.format(version_weston)) |
||||
config_h.set_quoted('PACKAGE_VERSION', version_weston) |
||||
config_h.set_quoted('VERSION', version_weston) |
||||
config_h.set_quoted('PACKAGE_URL', 'https://wayland.freedesktop.org') |
||||
config_h.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.freedesktop.org/wayland/weston/issues/') |
||||
|
||||
config_h.set_quoted('BINDIR', dir_bin) |
||||
config_h.set_quoted('DATADIR', dir_data) |
||||
config_h.set_quoted('LIBEXECDIR', dir_libexec) |
||||
config_h.set_quoted('MODULEDIR', dir_module_weston) |
||||
config_h.set_quoted('LIBWESTON_MODULEDIR', dir_module_libweston) |
||||
|
||||
backend_default = get_option('backend-default') |
||||
if backend_default == 'auto' |
||||
foreach b : [ 'headless', 'fbdev', 'x11', 'wayland', 'drm' ] |
||||
if get_option('backend-' + b) |
||||
backend_default = b |
||||
endif |
||||
endforeach |
||||
endif |
||||
opt_backend_native = backend_default + '-backend.so' |
||||
config_h.set_quoted('WESTON_NATIVE_BACKEND', opt_backend_native) |
||||
message('The default backend is ' + backend_default) |
||||
if not get_option('backend-' + backend_default) |
||||
error('Backend @0@ was chosen as native but is not being built.'.format(backend_default)) |
||||
endif |
||||
|
||||
dep_xkbcommon = dependency('xkbcommon', version: '>= 0.3.0') |
||||
if dep_xkbcommon.version().version_compare('>= 0.5.0') |
||||
config_h.set('HAVE_XKBCOMMON_COMPOSE', '1') |
||||
endif |
||||
|
||||
dep_wayland_server = dependency('wayland-server', version: '>= 1.12.0') |
||||
dep_wayland_client = dependency('wayland-client', version: '>= 1.12.0') |
||||
dep_pixman = dependency('pixman-1', version: '>= 0.25.2') |
||||
dep_libinput = dependency('libinput', version: '>= 0.8.0') |
||||
dep_libm = cc.find_library('m') |
||||
dep_libdl = cc.find_library('dl') |
||||
dep_libdrm = dependency('libdrm', version: '>= 2.4.68') |
||||
dep_libdrm_headers = dep_libdrm.partial_dependency(compile_args: true) |
||||
dep_egl = dependency('egl', required: false) |
||||
dep_wl_egl = dependency('wayland-egl') |
||||
dep_glesv2 = dependency('glesv2', required: false) |
||||
dep_threads = dependency('threads') |
||||
|
||||
subdir('protocol') |
||||
subdir('shared') |
||||
subdir('libweston') |
||||
subdir('libweston-desktop') |
||||
subdir('xwayland') |
||||
subdir('compositor') |
||||
subdir('desktop-shell') |
||||
subdir('fullscreen-shell') |
||||
subdir('ivi-shell') |
||||
subdir('remoting') |
||||
subdir('clients') |
||||
subdir('wcap') |
||||
subdir('tests') |
||||
subdir('data') |
||||
subdir('man') |
||||
|
||||
configure_file(output: 'config.h', install: false, configuration: config_h) |
||||
|
||||
# TODO: process doc/doxygen/*.doxygen.in |
@ -0,0 +1,206 @@ |
||||
# This option is not implemented: |
||||
# --with-cairo=[image|gl|glesv2] Which Cairo renderer to use for the clients |
||||
# It is hardcoded to cairo-image for now. |
||||
|
||||
option( |
||||
'backend-drm', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston backend: DRM/KMS' |
||||
) |
||||
option( |
||||
'backend-drm-screencast-vaapi', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'DRM/KMS backend support for VA-API screencasting' |
||||
) |
||||
option( |
||||
'backend-headless', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston backend: headless (testing)' |
||||
) |
||||
option( |
||||
'backend-rdp', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston backend: RDP remote screensharing' |
||||
) |
||||
option( |
||||
'screenshare', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Compositor: RDP screen-sharing support' |
||||
) |
||||
option( |
||||
'backend-wayland', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston backend: Wayland (nested)' |
||||
) |
||||
option( |
||||
'backend-x11', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston backend: X11 (nested)' |
||||
) |
||||
option( |
||||
'backend-fbdev', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston backend: fbdev' |
||||
) |
||||
option( |
||||
'backend-default', |
||||
type: 'combo', |
||||
choices: [ 'auto', 'drm', 'wayland', 'x11', 'fbdev', 'headless' ], |
||||
value: 'drm', |
||||
description: 'Default backend when no parent display server detected' |
||||
) |
||||
|
||||
option( |
||||
'renderer-gl', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston renderer: EGL / OpenGL ES 2.x' |
||||
) |
||||
|
||||
option( |
||||
'weston-launch', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston launcher for systems without logind' |
||||
) |
||||
|
||||
option( |
||||
'xwayland', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Xwayland: support for X11 clients inside Weston' |
||||
) |
||||
option( |
||||
'xwayland-path', |
||||
type: 'string', |
||||
value: '/usr/bin/Xwayland', |
||||
description: 'Xwayland: path to installed Xwayland binary' |
||||
) |
||||
|
||||
option( |
||||
'systemd', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'systemd service plugin: state notify, watchdog, socket activation' |
||||
) |
||||
|
||||
option( |
||||
'remoting', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Virtual remote output with GStreamer on DRM backend' |
||||
) |
||||
|
||||
option( |
||||
'shell-desktop', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston shell UI: traditional desktop' |
||||
) |
||||
option( |
||||
'shell-fullscreen', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston shell UI: fullscreen/kiosk' |
||||
) |
||||
option( |
||||
'shell-ivi', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Weston shell UI: IVI (automotive)' |
||||
) |
||||
|
||||
option( |
||||
'desktop-shell-client-default', |
||||
type: 'string', |
||||
value: 'weston-desktop-shell', |
||||
description: 'Weston desktop shell: default helper client selection' |
||||
) |
||||
|
||||
option( |
||||
'color-management-lcms', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Compositor color management: lcms' |
||||
) |
||||
option( |
||||
'color-management-colord', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Compositor color management: colord (requires lcms)' |
||||
) |
||||
|
||||
option( |
||||
'launcher-logind', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Compositor: support systemd-logind D-Bus protocol' |
||||
) |
||||
|
||||
option( |
||||
'image-jpeg', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'JPEG loading support' |
||||
) |
||||
option( |
||||
'image-webp', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'WebP loading support' |
||||
) |
||||
|
||||
option( |
||||
'tools', |
||||
type: 'array', |
||||
choices: [ 'calibrator', 'debug', 'info', 'terminal', 'touch-calibrator' ], |
||||
description: 'List of accessory clients to build and install' |
||||
) |
||||
option( |
||||
'simple-dmabuf-drm', |
||||
type: 'array', |
||||
choices: [ 'auto', 'intel', 'freedreno', 'etnaviv' ], |
||||
value: [ 'intel', 'freedreno', 'etnaviv' ], |
||||
description: 'List of DRM drivers to be supported by weston-simple-dmabuf-drm' |
||||
) |
||||
option( |
||||
'demo-clients', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Sample clients: toytoolkit demo programs' |
||||
) |
||||
option( |
||||
'simple-clients', |
||||
type: 'array', |
||||
choices: [ 'all', 'damage', 'im', 'egl', 'shm', 'touch', 'dmabuf-v4l' ], |
||||
value: [ 'all' ], |
||||
description: 'Sample clients: simple test programs' |
||||
) |
||||
|
||||
option( |
||||
'resize-pool', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Sample clients: optimize window resize performance' |
||||
) |
||||
option( |
||||
'wcap-decode', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Tools: screen recording decoder tool' |
||||
) |
||||
|
||||
option( |
||||
'test-junit-xml', |
||||
type: 'boolean', |
||||
value: true, |
||||
description: 'Tests: output JUnit XML results' |
||||
) |
@ -0,0 +1,72 @@ |
||||
dep_scanner = dependency('wayland-scanner', native: true) |
||||
prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner')) |
||||
|
||||
dep_wp = dependency('wayland-protocols', version: '>= 1.14') |
||||
dir_wp_base = dep_wp.get_pkgconfig_variable('pkgdatadir') |
||||
|
||||
install_data( |
||||
[ |
||||
'weston-debug.xml', |
||||
], |
||||
install_dir: join_paths(dir_data, dir_protocol_libweston) |
||||
) |
||||
|
||||
generated_protocols = [ |
||||
[ 'input-method', 'v1' ], |
||||
[ 'input-timestamps', 'v1' ], |
||||
[ 'ivi-application', 'internal' ], |
||||
[ 'ivi-hmi-controller', 'internal' ], |
||||
[ 'fullscreen-shell', 'v1' ], |
||||
[ 'linux-dmabuf', 'v1' ], |
||||
[ 'presentation-time', 'stable' ], |
||||
[ 'pointer-constraints', 'v1' ], |
||||
[ 'relative-pointer', 'v1' ], |
||||
[ 'tablet', 'v2' ], |
||||
[ 'text-cursor-position', 'internal' ], |
||||
[ 'text-input', 'v1' ], |
||||
[ 'viewporter', 'stable' ], |
||||
[ 'weston-debug', 'internal' ], |
||||
[ 'weston-desktop-shell', 'internal' ], |
||||
[ 'weston-screenshooter', 'internal' ], |
||||
[ 'weston-test', 'internal' ], |
||||
[ 'weston-touch-calibration', 'internal' ], |
||||
[ 'xdg-output', 'v1' ], |
||||
[ 'xdg-shell', 'v6' ], |
||||
] |
||||
|
||||
foreach proto: generated_protocols |
||||
proto_name = proto[0] |
||||
if proto[1] == 'internal' |
||||
base_file = proto_name |
||||
xml_path = '@0@.xml'.format(proto_name) |
||||
elif proto[1] == 'stable' |
||||
base_file = proto_name |
||||
xml_path = '@0@/stable/@1@/@1@.xml'.format(dir_wp_base, base_file) |
||||
else |
||||
base_file = '@0@-unstable-@1@'.format(proto_name, proto[1]) |
||||
xml_path = '@0@/unstable/@1@/@2@.xml'.format(dir_wp_base, proto_name, base_file) |
||||
endif |
||||
|
||||
foreach output_type: [ 'client-header', 'server-header', 'private-code' ] |
||||
if output_type == 'client-header' |
||||
output_file = '@0@-client-protocol.h'.format(base_file) |
||||
elif output_type == 'server-header' |
||||
output_file = '@0@-server-protocol.h'.format(base_file) |
||||
else |
||||
output_file = '@0@-protocol.c'.format(base_file) |
||||
if dep_scanner.version().version_compare('< 1.14.91') |
||||
output_type = 'code' |
||||
endif |
||||
endif |
||||
|
||||
var_name = output_file.underscorify() |
||||
target = custom_target( |
||||
'@0@ @1@'.format(base_file, output_type), |
||||
command: [ prog_scanner, output_type, '@INPUT@', '@OUTPUT@' ], |
||||
input: xml_path, |
||||
output: output_file, |
||||
) |
||||
|
||||
set_variable(var_name, target) |
||||
endforeach |
||||
endforeach |
@ -0,0 +1,31 @@ |
||||
if get_option('remoting') |
||||
user_hint = 'If you rather not build this, set "remoting=false".' |
||||
|
||||
if not get_option('backend-drm') |
||||
error('Attempting to build the remoting plugin without the required DRM backend. ' + user_hint) |
||||
endif |
||||
|
||||
depnames = [ |
||||
'gstreamer-1.0', 'gstreamer-allocators-1.0', |
||||
'gstreamer-app-1.0', 'gstreamer-video-1.0' |
||||
] |
||||
deps_remoting = [ dep_libweston ] |
||||
foreach depname : depnames |
||||
dep = dependency(depname, required: false) |
||||
if not dep.found() |
||||
error('Remoting plugin requires @0@ which was not found. '.format(depname) + user_hint) |
||||
endif |
||||
deps_remoting += dep |
||||
endforeach |
||||
|
||||
plugin_remoting = shared_library( |
||||
'remoting-plugin', |
||||
'remoting-plugin.c', |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_remoting, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_libweston |
||||
) |
||||
env_modmap += 'remoting-plugin.so=@0@;'.format(plugin_remoting.full_path()) |
||||
endif |
@ -0,0 +1,65 @@ |
||||
srcs_libshared = [ |
||||
'config-parser.c', |
||||
'option-parser.c', |
||||
'file-util.c', |
||||
'os-compatibility.c', |
||||
'xalloc.c', |
||||
] |
||||
deps_libshared = dep_wayland_client |
||||
|
||||
lib_libshared = static_library( |
||||
'shared', |
||||
srcs_libshared, |
||||
include_directories: include_directories('..'), |
||||
dependencies: deps_libshared, |
||||
install: false |
||||
) |
||||
dep_libshared = declare_dependency( |
||||
link_with: lib_libshared, |
||||
dependencies: deps_libshared |
||||
) |
||||
|
||||
srcs_cairo_shared = [ |
||||
'image-loader.c', |
||||
'cairo-util.c', |
||||
'frame.c', |
||||
] |
||||
|
||||
deps_cairo_shared = [ |
||||
dep_libshared, |
||||
dependency('cairo'), |
||||
dependency('libpng'), |
||||
dep_pixman, |
||||
dep_libm, |
||||
] |
||||
|
||||
dep_pango = dependency('pango', required: false) |
||||
dep_pangocairo = dependency('pangocairo', required: false) |
||||
dep_glib = dependency('glib-2.0', version: '>= 2.36', required: false) |
||||
|
||||
if dep_pango.found() and dep_pangocairo.found() and dep_glib.found() |
||||
deps_cairo_shared += [ dep_pango, dep_pangocairo, dep_glib ] |
||||
config_h.set('HAVE_PANGO', '1') |
||||
endif |
||||
|
||||
if get_option('image-jpeg') |
||||
deps_cairo_shared += cc.find_library('jpeg') |
||||
config_h.set('HAVE_JPEG', '1') |
||||
endif |
||||
|
||||
if get_option('image-webp') |
||||
deps_cairo_shared += dependency('libwebp') |
||||
config_h.set('HAVE_WEBP', '1') |
||||
endif |
||||
|
||||
lib_cairo_shared = static_library( |
||||
'cairo-shared', |
||||
srcs_cairo_shared, |
||||
include_directories: include_directories('..'), |
||||
dependencies: deps_cairo_shared, |
||||
install: false |
||||
) |
||||
dep_lib_cairo_shared = declare_dependency( |
||||
link_with: lib_cairo_shared, |
||||
dependencies: deps_cairo_shared |
||||
) |
@ -0,0 +1,371 @@ |
||||
plugin_test_shell_desktop = shared_library( |
||||
'weston-test-desktop-shell', |
||||
'weston-test-desktop-shell.c', |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: [ dep_lib_desktop, dep_libweston ], |
||||
name_prefix: '', |
||||
install: false |
||||
) |
||||
env_modmap += 'weston-test-desktop-shell.so=@0@;'.format(plugin_test_shell_desktop.full_path()) |
||||
|
||||
lib_test_runner = static_library( |
||||
'test-runner', |
||||
'weston-test-runner.c', |
||||
include_directories: include_directories('..', '../shared'), |
||||
install: false, |
||||
) |
||||
dep_test_runner = declare_dependency(link_with: lib_test_runner) |
||||
|
||||
lib_test_client = static_library( |
||||
'test-client', |
||||
'weston-test-client-helper.c', |
||||
weston_test_client_protocol_h, |
||||
weston_test_protocol_c, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: [ |
||||
dep_libshared, |
||||
dep_wayland_client, |
||||
dep_pixman, |
||||
dependency('cairo'), |
||||
], |
||||
install: false, |
||||
) |
||||
dep_test_client = declare_dependency( |
||||
link_with: lib_test_client, |
||||
dependencies: [ |
||||
dep_test_runner, |
||||
dep_pixman, |
||||
] |
||||
) |
||||
|
||||
exe_plugin_test = shared_library( |
||||
'test-plugin', |
||||
'weston-test.c', |
||||
weston_test_server_protocol_h, |
||||
weston_test_protocol_c, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: [ |
||||
dep_libweston, |
||||
dependency('egl'), |
||||
], |
||||
name_prefix: '', |
||||
install: false, |
||||
) |
||||
|
||||
deps_zuc = [ dep_libshared ] |
||||
if get_option('test-junit-xml') |
||||
deps_zuc += [ dependency('libxml-2.0', version: '>= 2.6') ] |
||||
config_h.set('ENABLE_JUNIT_XML', '1') |
||||
endif |
||||
|
||||
lib_zuc = static_library( |
||||
'zunitc', |
||||
'../tools/zunitc/inc/zunitc/zunitc.h', |
||||
'../tools/zunitc/inc/zunitc/zunitc_impl.h', |
||||
'../tools/zunitc/src/zuc_base_logger.c', |
||||
'../tools/zunitc/src/zuc_base_logger.h', |
||||
'../tools/zunitc/src/zuc_collector.c', |
||||
'../tools/zunitc/src/zuc_collector.h', |
||||
'../tools/zunitc/src/zuc_context.h', |
||||
'../tools/zunitc/src/zuc_event.h', |
||||
'../tools/zunitc/src/zuc_event_listener.h', |
||||
'../tools/zunitc/src/zuc_junit_reporter.c', |
||||
'../tools/zunitc/src/zuc_junit_reporter.h', |
||||
'../tools/zunitc/src/zuc_types.h', |
||||
'../tools/zunitc/src/zunitc_impl.c', |
||||
include_directories: include_directories('..', '../shared', '../tools/zunitc/inc'), |
||||
dependencies: deps_zuc, |
||||
) |
||||
dep_zuc = declare_dependency( |
||||
link_with: lib_zuc, |
||||
dependencies: dep_libshared, |
||||
include_directories: include_directories('../tools/zunitc/inc') |
||||
) |
||||
|
||||
lib_zucmain = static_library( |
||||
'zunitcmain', |
||||
'../tools/zunitc/src/main.c', |
||||
include_directories: include_directories('..', '../shared', '../tools/zunitc/inc'), |
||||
dependencies: [ dep_libshared, dep_zuc ], |
||||
) |
||||
dep_zucmain = declare_dependency( |
||||
link_with: lib_zucmain, |
||||
dependencies: dep_zuc |
||||
) |
||||
|
||||
tests_standalone = [ |
||||
['config-parser', [], [ dep_zucmain ]], |
||||
['matrix', [ '../shared/matrix.c' ], [ dep_libm ]], |
||||
['string'], |
||||
[ |
||||
'vertex-clip', |
||||
[ |
||||
'../libweston/vertex-clipping.c' |
||||
] |
||||
], |
||||
['timespec', [], [ dep_zucmain ]], |
||||
['zuc', |
||||
[ |
||||
'../tools/zunitc/test/fixtures_test.c', |
||||
'../tools/zunitc/test/zunitc_test.c' |
||||
], |
||||
[ dep_zucmain ] |
||||
], |
||||
] |
||||
|
||||
tests_weston = [ |
||||
['bad-buffer'], |
||||
['devices'], |
||||
['event'], |
||||
[ |
||||
'keyboard', |
||||
[ |
||||
'input-timestamps-helper.c', |
||||
input_timestamps_unstable_v1_client_protocol_h, |
||||
input_timestamps_unstable_v1_protocol_c, |
||||
] |
||||
], |
||||
['internal-screenshot'], |
||||
[ |
||||
'presentation', |
||||
[ |
||||
presentation_time_client_protocol_h, |
||||
presentation_time_protocol_c, |
||||
] |
||||
], |
||||
[ |
||||
'pointer', |
||||
[ |
||||
'input-timestamps-helper.c', |
||||
input_timestamps_unstable_v1_client_protocol_h, |
||||
input_timestamps_unstable_v1_protocol_c, |
||||
] |
||||
], |
||||
['roles'], |
||||
['subsurface'], |
||||
['subsurface-shot'], |
||||
[ |
||||
'text', |
||||
[ |
||||
text_input_unstable_v1_client_protocol_h, |
||||
text_input_unstable_v1_protocol_c, |
||||
] |
||||
], |
||||
[ |
||||
'touch', |
||||
[ |
||||
'input-timestamps-helper.c', |
||||
input_timestamps_unstable_v1_client_protocol_h, |
||||
input_timestamps_unstable_v1_protocol_c, |
||||
] |
||||
], |
||||
[ |
||||
'viewporter', |
||||
[ |
||||
viewporter_client_protocol_h, |
||||
viewporter_protocol_c, |
||||
] |
||||
], |
||||
] |
||||
|
||||
if get_option('xwayland') |
||||
tests_weston += [ [ 'xwayland', [], dependency('x11') ] ] |
||||
endif |
||||
|
||||
tests_weston_plugin = [ |
||||
['plugin-registry'], |
||||
['surface'], |
||||
['surface-global'], |
||||
['surface-screenshot'], |
||||
] |
||||
|
||||
if get_option('shell-ivi') |
||||
tests_weston += [ |
||||
[ |
||||
'ivi-shell-app', |
||||
[ |
||||
ivi_application_client_protocol_h, |
||||
ivi_application_protocol_c, |
||||
] |
||||
] |
||||
] |
||||
tests_weston_plugin += [ |
||||
['ivi-layout-internal'], |
||||
[ |
||||
'ivi-layout', |
||||
[ |
||||
'ivi-layout-test-plugin.c', |
||||
weston_test_server_protocol_h, |
||||
weston_test_protocol_c, |
||||
] |
||||
], |
||||
] |
||||
|
||||
exe_ivi_layout_client = executable( |
||||
'ivi-layout-test-client', |
||||
'ivi-layout-test-client.c', |
||||
weston_test_client_protocol_h, |
||||
weston_test_protocol_c, |
||||
ivi_application_client_protocol_h, |
||||
ivi_application_protocol_c, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: dep_test_client, |
||||
install: false |
||||
) |
||||
|
||||
env_modmap += 'ivi-layout-test-client.ivi=@0@;'.format(exe_ivi_layout_client.full_path()) |
||||
endif |
||||
|
||||
env_test_weston = [ |
||||
'WESTON_TEST_REFERENCE_PATH=@0@/reference'.format(meson.current_source_dir()), |
||||
'WESTON_MODULE_MAP=@0@'.format(env_modmap), |
||||
] |
||||
|
||||
# FIXME: the multiple loops is lame. rethink this. |
||||
foreach t : tests_standalone |
||||
if t[0] != 'zuc' |
||||
srcs_t = [ |
||||
'@0@-test.c'.format(t.get(0)), |
||||
weston_test_client_protocol_h, |
||||
] |
||||
else |
||||
srcs_t = [] |
||||
endif |
||||
|
||||
if t.length() > 1 |
||||
srcs_t += t.get(1) |
||||
endif |
||||
|
||||
if t.length() > 2 |
||||
deps_t = t[2] |
||||
else |
||||
deps_t = [ dep_test_client ] |
||||
endif |
||||
|
||||
exe_t = executable( |
||||
'test-@0@'.format(t.get(0)), |
||||
srcs_t, |
||||
c_args: [ '-DUNIT_TEST' ], |
||||
build_by_default: true, |
||||
include_directories: include_directories('..', '../shared', '../libweston'), |
||||
dependencies: deps_t, |
||||
install: false, |
||||
) |
||||
|
||||
# matrix-test is a manual test |
||||
if t[0] != 'matrix' |
||||
test(t.get(0), exe_t) |
||||
endif |
||||
endforeach |
||||
|
||||
foreach t : tests_weston |
||||
srcs_t = [ |
||||
'@0@-test.c'.format(t.get(0)), |
||||
weston_test_client_protocol_h, |
||||
] |
||||
if t.length() > 1 |
||||
srcs_t += t.get(1) |
||||
endif |
||||
|
||||
deps_t = [ |
||||
dep_test_client |
||||
] |
||||
if t.length() > 2 |
||||
deps_t += t.get(2) |
||||
endif |
||||
|
||||
args_t = [ |
||||
'--backend=headless-backend.so', |
||||
'--socket=test-@0@'.format(t.get(0)), |
||||
'--modules=@0@'.format(exe_plugin_test.full_path()), |
||||
'--width=320', |
||||
'--height=240', |
||||
] |
||||
|
||||
if t.get(0) == 'xwayland' |
||||
args_t += '--xwayland' |
||||
endif |
||||
|
||||
# FIXME: Get this from the array ... ? |
||||
if t.get(0) == 'internal-screenshot' |
||||
args_t += [ '--config=@0@/internal-screenshot.ini'.format(meson.current_source_dir()) ] |
||||
args_t += [ '--use-pixman' ] |
||||
args_t += [ '--shell=desktop-shell.so' ] |
||||
elif t[0] == 'subsurface-shot' |
||||
args_t += [ '--no-config' ] |
||||
args_t += [ '--use-pixman' ] |
||||
args_t += [ '--width=320' ] |
||||
args_t += [ '--height=240' ] |
||||
args_t += [ '--shell=weston-test-desktop-shell.so' ] |
||||
elif t.get(0).startswith('ivi-') |
||||
args_t += [ '--config=@0@/../ivi-shell/weston-ivi-test.ini'.format(meson.current_build_dir()) ] |
||||
args_t += [ '--shell=ivi-shell.so' ] |
||||
else |
||||
args_t += [ '--no-config' ] |
||||
args_t += [ '--shell=desktop-shell.so' ] |
||||
endif |
||||
|
||||
exe_t = executable( |
||||
'test-@0@'.format(t.get(0)), |
||||
srcs_t, |
||||
c_args: [ '-DUNIT_TEST' ], |
||||
include_directories: |
||||
include_directories('..', '../shared'), |
||||
dependencies: deps_t, |
||||
install: false, |
||||
) |
||||
|
||||
env_t = [ |
||||
'WESTON_TEST_CLIENT_PATH=@0@'.format(exe_t.full_path()) |
||||
] |
||||
env_t += env_test_weston |
||||
|
||||
test(t.get(0), exe_weston, env: env_t, args: args_t) |
||||
endforeach |
||||
|
||||
foreach t : tests_weston_plugin |
||||
srcs_t = [] |
||||
|
||||
if t.length() > 1 |
||||
srcs_t += t.get(1) |
||||
else |
||||
srcs_t += '@0@-test.c'.format(t.get(0)) |
||||
endif |
||||
|
||||
deps_t = [ |
||||
dep_libweston, |
||||
] |
||||
if t.length() > 2 |
||||
deps_t += t.get(2) |
||||
endif |
||||
|
||||
exe_t = shared_library( |
||||
'test-@0@'.format(t.get(0)), |
||||
srcs_t, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_t, |
||||
name_prefix: '', |
||||
install: false, |
||||
) |
||||
|
||||
args_t = [ |
||||
'--backend=headless-backend.so', |
||||
'--socket=test-@0@'.format(t.get(0)), |
||||
] |
||||
|
||||
# FIXME: Get this from the array ... ? |
||||
if t.get(0).startswith('ivi-') |
||||
args_t += [ '--config=@0@/../ivi-shell/weston-ivi-test.ini'.format(meson.current_build_dir()) ] |
||||
args_t += [ '--modules=@1@,@0@'.format(exe_plugin_test.full_path(),exe_t.full_path()) ] |
||||
args_t += [ '--shell=ivi-shell.so' ] |
||||
else |
||||
args_t += [ '--no-config' ] |
||||
args_t += [ '--shell=desktop-shell.so' ] |
||||
args_t += [ '--modules=@0@'.format(exe_t.full_path()) ] |
||||
endif |
||||
|
||||
# surface-screenshot is a manual test |
||||
if t[0] != 'surface-screenshot' |
||||
test(t.get(0), exe_weston, env: env_test_weston, args: args_t) |
||||
endif |
||||
endforeach |
@ -0,0 +1,21 @@ |
||||
if not get_option('wcap-decode') |
||||
subdir_done() |
||||
endif |
||||
|
||||
srcs_wcap = [ |
||||
'main.c', |
||||
'wcap-decode.c', |
||||
] |
||||
|
||||
deps_wcap = [ |
||||
dep_libm, |
||||
dependency('cairo'), |
||||
] |
||||
|
||||
executable( |
||||
'wcap-decode', |
||||
srcs_wcap, |
||||
include_directories: include_directories('..'), |
||||
dependencies: deps_wcap, |
||||
install: true |
||||
) |
@ -0,0 +1,31 @@ |
||||
if get_option('xwayland') |
||||
srcs_xwayland = [ |
||||
'launcher.c', |
||||
'window-manager.c', |
||||
'selection.c', |
||||
'dnd.c', |
||||
'hash.c', |
||||
] |
||||
deps_xwayland = [ |
||||
dependency('xcb'), |
||||
dependency('xcb-composite'), |
||||
dependency('xcb-shape'), |
||||
dependency('xcb-xfixes'), |
||||
dependency('xcursor'), |
||||
dependency('cairo-xcb'), |
||||
dep_libweston, |
||||
] |
||||
plugin_xwayland = shared_library( |
||||
'xwayland', |
||||
srcs_xwayland, |
||||
link_with: lib_cairo_shared, |
||||
include_directories: include_directories('..', '../shared'), |
||||
dependencies: deps_xwayland, |
||||
name_prefix: '', |
||||
install: true, |
||||
install_dir: dir_module_libweston |
||||
) |
||||
env_modmap += 'xwayland.so=@0@;'.format(plugin_xwayland.full_path()) |
||||
|
||||
install_headers('xwayland-api.h', subdir: dir_include_libweston) |
||||
endif |
Loading…
Reference in new issue