You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							391 lines
						
					
					
						
							10 KiB
						
					
					
				
			
		
		
	
	
							391 lines
						
					
					
						
							10 KiB
						
					
					
				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-egl',
 | 
						|
		'sources': [
 | 
						|
			'simple-dmabuf-egl.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
 | 
						|
		],
 | 
						|
		'deps': [ 'egl', 'glesv2', 'gbm' ]
 | 
						|
	},
 | 
						|
	{
 | 
						|
		'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,
 | 
						|
		],
 | 
						|
		'deps': [ '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',
 | 
						|
		'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 ]
 | 
						|
		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: 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('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: 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
 | 
						|
 |