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.
		
		
		
		
		
			
		
			
				
					
					
						
							464 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
	
	
							464 lines
						
					
					
						
							12 KiB
						
					
					
				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', required: false)
 | 
						|
		if not systemd_dep.found()
 | 
						|
			error('logind support requires libsystemd or libsystemd-login but neither was found. Or, you can use \'-Dlauncher-logind=false\'')
 | 
						|
		endif
 | 
						|
	endif
 | 
						|
 | 
						|
	dbus_dep = dependency('dbus-1', version: '>= 1.6', required: false)
 | 
						|
	if not dbus_dep.found()
 | 
						|
		error('logind support requires dbus-1 >= 1.6 which was not found. Or, you can use \'-Dlauncher-logind=false\'')
 | 
						|
	endif
 | 
						|
 | 
						|
	config_h.set('HAVE_DBUS', '1')
 | 
						|
	config_h.set('HAVE_SYSTEMD_LOGIN', '1')
 | 
						|
 | 
						|
	srcs_session_helper += [
 | 
						|
		'dbus.c',
 | 
						|
		'launcher-logind.c',
 | 
						|
	]
 | 
						|
	deps_session_helper += [
 | 
						|
		dbus_dep,
 | 
						|
		systemd_dep,
 | 
						|
	]
 | 
						|
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', required: false)
 | 
						|
	endif
 | 
						|
	if not dep_frdp.found()
 | 
						|
		error('RDP-backend requires freerdp which was not found. Or, you can use \'-Dbackend-rdp=false\'.')
 | 
						|
	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,
 | 
						|
	]
 | 
						|
 | 
						|
	dep_x11_xcb = dependency('xcb', version: '>= 1.8', required: false)
 | 
						|
	if not dep_x11_xcb.found()
 | 
						|
		error('x11-backend requires xcb >= 1.8 which was not found. Or, you can use \'-Dbackend-x11=false\'.')
 | 
						|
	endif
 | 
						|
 | 
						|
	deps_x11 = [
 | 
						|
		dep_x11_xcb,
 | 
						|
		dep_lib_cairo_shared,
 | 
						|
		dep_pixman,
 | 
						|
	]
 | 
						|
 | 
						|
	foreach name : [ 'xcb-shm', 'x11', 'x11-xcb' ]
 | 
						|
		d = dependency(name, required: false)
 | 
						|
		if not d.found()
 | 
						|
			error('x11-backend requires @0@ which was not found. Or, you can use \'-Dbackend-x11=false\'.'.format(name))
 | 
						|
		endif
 | 
						|
		deps_x11 += d
 | 
						|
	endforeach
 | 
						|
 | 
						|
	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')
 | 
						|
 | 
						|
	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_pixman,
 | 
						|
		dep_libweston,
 | 
						|
		dep_libdrm_headers,
 | 
						|
	]
 | 
						|
 | 
						|
	foreach name : [ 'egl', 'glesv2' ]
 | 
						|
		d = dependency(name, required: false)
 | 
						|
		if not d.found()
 | 
						|
			error('gl-renderer requires @0@ which was not found. Or, you can use \'-Drenderer-gl=false\'.'.format(name))
 | 
						|
		endif
 | 
						|
		deps_renderer_gl += d
 | 
						|
	endforeach
 | 
						|
 | 
						|
	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
 | 
						|
 |