Add Meson build system
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>
This commit is contained in:
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