if get_option ( 'resize-pool' )
config_h . set ( 'USE_RESIZE_POOL' , '1' )
endif
srcs_toytoolkit = [
'window.c' ,
xdg_shell_client_protocol_h ,
xdg_shell_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 : common_inc ,
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_client_protocol_h ,
xdg_shell_protocol_c ,
fullscreen_shell_unstable_v1_client_protocol_h ,
fullscreen_shell_unstable_v1_protocol_c ,
] ,
'dep_objs' : [ dep_wayland_client , dep_libshared ]
} ,
{
'name' : 'dmabuf-egl' ,
'sources' : [
'simple-dmabuf-egl.c' ,
linux_dmabuf_unstable_v1_client_protocol_h ,
linux_dmabuf_unstable_v1_protocol_c ,
linux_explicit_synchronization_unstable_v1_client_protocol_h ,
linux_explicit_synchronization_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 ,
dep_libm
] ,
'deps' : [ 'egl' , 'glesv2' , 'gbm' ] ,
'options' : [ 'renderer-gl' ]
} ,
{
'name' : 'dmabuf-v4l' ,
'sources' : [
'simple-dmabuf-v4l.c' ,
linux_dmabuf_unstable_v1_client_protocol_h ,
linux_dmabuf_unstable_v1_protocol_c ,
xdg_shell_client_protocol_h ,
xdg_shell_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_client_protocol_h ,
xdg_shell_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' ] ,
'options' : [ 'renderer-gl' ]
} ,
# weston-simple-im is handled specially separately due to install_dir and odd window.h usage
{
'name' : 'shm' ,
'sources' : [
'simple-shm.c' ,
xdg_shell_client_protocol_h ,
xdg_shell_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
foreach optname : t . get ( 'options' , [ ] )
if not get_option ( optname )
error ( '@0@ requires option @1@ which is not enabled. If you rather not build this, drop "@2@" from simple-clients option.' . format ( t_name , optname , t . get ( 'name' ) ) )
endif
endforeach
executable (
t_name , t . get ( 'sources' ) ,
include_directories : common_inc ,
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 : common_inc ,
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' ] ,
'deps' : [ dep_toytoolkit , dep_matrix_c ] ,
} ,
{
'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' ,
weston_touch_calibration_client_protocol_h ,
weston_touch_calibration_protocol_c ,
] ,
'deps' : [ dep_toytoolkit , dep_matrix_c ] ,
} ,
]
foreach t : tools_list
if tools_enabled . contains ( t . get ( 'name' ) )
executable (
'weston-@0@' . format ( t . get ( 'name' ) ) ,
t . get ( 'sources' ) ,
include_directories : common_inc ,
dependencies : t . get ( 'deps' , [ ] ) ,
install : true
)
endif
endforeach
demo_clients = [
{ 'basename' : 'clickdot' } ,
{
'basename' : 'cliptest' ,
'dep_objs' : dep_vertex_clipping
} ,
{ 'basename' : 'confine' } ,
{
'basename' : 'content_protection' ,
'add_sources' : [
weston_content_protection_client_protocol_h ,
weston_content_protection_protocol_c ,
]
} ,
{ 'basename' : 'dnd' } ,
{
'basename' : 'editor' ,
'add_sources' : [
text_input_unstable_v1_client_protocol_h ,
text_input_unstable_v1_protocol_c ,
] ,
'deps' : [ 'pangocairo' , 'gobject-2.0' ]
} ,
{ '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' ,
'deps' : [ 'egl' , 'glesv2' , 'wayland-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 ( '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, set \'-Ddemo-clients=false\'.' . format ( t_name , depname ) )
endif
t_deps + = dep
endforeach
executable (
t_name , t_srcs ,
include_directories : common_inc ,
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 : false )
if dep . found ( )
simple_dmabuf_drm_deps + = dep
config_h . set ( 'HAVE_LIBDRM_' + driver . to_upper ( ) , 1 )
elif required
error ( 'simple-dmabuf-drm is configured to use @0@ but it was not found. Or, you can remove @1@ from \'-Dsimple-dmabuf-drm\' list.' . format ( 'libdrm_' + driver , driver ) )
endif
endif
endforeach
if simple_dmabuf_drm_deps . length ( ) > 0
executable (
'weston-simple-dmabuf-drm' ,
'simple-dmabuf-drm.c' ,
xdg_shell_client_protocol_h ,
xdg_shell_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 : common_inc ,
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 : common_inc ,
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 : common_inc ,
dependencies : dep_toytoolkit ,
install_dir : get_option ( 'bindir' ) ,
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 : common_inc ,
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 : common_inc ,
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