mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-10-29 05:40:12 -04:00 
			
		
		
		
	meson: Various improvements
Bumps minimum version to 0.51.0 - Remove all intermediate static libraries. They serve no purpose and are just add a bunch of boilerplate for managing dependencies and options. It's now managed as a list of files which are compiled into libwlroots directly. - Use install_subdir instead of installing headers individually. I've changed my mind since I did that. Listing them out is annoying as hell, and it's easy to forget to do it. - Add not_found_message for all of our optional dependencies that have a meson option. It gives some hints about what option to pass and what the optional dependency is for. - Move all backend subdirectories into their own meson.build. This keeps some of the backend-specific build logic (especially rdp and session) more neatly separated off. - Don't overlink example clients with code they're not using. This was done by merging the protocol dictionaries and setting some variables containing the code and client header file. Example clients now explicitly mention what extension protocols they want to link to. - Split compositor example logic from client example logic. - Minor formatting changes
This commit is contained in:
		
							parent
							
								
									fc6c0ca12e
								
							
						
					
					
						commit
						cff1c2f740
					
				
					 26 changed files with 479 additions and 533 deletions
				
			
		|  | @ -1,103 +1,72 @@ | |||
| wl_protocol_dir = wayland_protos.get_pkgconfig_variable('pkgdatadir') | ||||
| wl_protocol_dir = wayland_protos.get_variable(pkgconfig: 'pkgdatadir') | ||||
| 
 | ||||
| wayland_scanner_dep = dependency('wayland-scanner', required: false, native: true) | ||||
| if wayland_scanner_dep.found() | ||||
| 	wayland_scanner = find_program( | ||||
| 		wayland_scanner_dep.get_pkgconfig_variable('wayland_scanner'), | ||||
| 		wayland_scanner_dep.get_variable(pkgconfig: 'wayland_scanner'), | ||||
| 		native: true, | ||||
| 	) | ||||
| else | ||||
| 	wayland_scanner = find_program('wayland-scanner', native: true) | ||||
| endif | ||||
| 
 | ||||
| protocols = [ | ||||
| 	[wl_protocol_dir, 'stable/presentation-time/presentation-time.xml'], | ||||
| 	[wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/pointer-constraints/pointer-constraints-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/pointer-gestures/pointer-gestures-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/primary-selection/primary-selection-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/relative-pointer/relative-pointer-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/tablet/tablet-unstable-v2.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/text-input/text-input-unstable-v3.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/xdg-output/xdg-output-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/xdg-shell/xdg-shell-unstable-v6.xml'], | ||||
| 	'gtk-primary-selection.xml', | ||||
| 	'idle.xml', | ||||
| 	'input-method-unstable-v2.xml', | ||||
| 	'server-decoration.xml', | ||||
| 	'virtual-keyboard-unstable-v1.xml', | ||||
| 	'wlr-data-control-unstable-v1.xml', | ||||
| 	'wlr-export-dmabuf-unstable-v1.xml', | ||||
| 	'wlr-foreign-toplevel-management-unstable-v1.xml', | ||||
| 	'wlr-gamma-control-unstable-v1.xml', | ||||
| 	'wlr-input-inhibitor-unstable-v1.xml', | ||||
| 	'wlr-layer-shell-unstable-v1.xml', | ||||
| 	'wlr-output-management-unstable-v1.xml', | ||||
| 	'wlr-screencopy-unstable-v1.xml', | ||||
| ] | ||||
| protocols = { | ||||
| 	# Stable upstream protocols | ||||
| 	'xdg-shell': wl_protocol_dir / 'stable/xdg-shell/xdg-shell.xml', | ||||
| 	'presentation-time': wl_protocol_dir / 'stable/presentation-time/presentation-time.xml', | ||||
| 	# Unstable upstream protocols | ||||
| 	'fullscreen-shell-unstable-v1': wl_protocol_dir / 'unstable/fullscreen-shell/fullscreen-shell-unstable-v1.xml', | ||||
| 	'idle-inhibit-unstable-v1': wl_protocol_dir / 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml', | ||||
| 	'linux-dmabuf-unstable-v1': wl_protocol_dir / 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml', | ||||
| 	'pointer-constraints-unstable-v1': wl_protocol_dir / 'unstable/pointer-constraints/pointer-constraints-unstable-v1.xml', | ||||
| 	'pointer-gestures-unstable-v1': wl_protocol_dir / 'unstable/pointer-gestures/pointer-gestures-unstable-v1.xml', | ||||
| 	'primary-selection-unstable-v1': wl_protocol_dir / 'unstable/primary-selection/primary-selection-unstable-v1.xml', | ||||
| 	'relative-pointer-unstable-v1': wl_protocol_dir / 'unstable/relative-pointer/relative-pointer-unstable-v1.xml', | ||||
| 	'tablet-unstable-v2': wl_protocol_dir / 'unstable/tablet/tablet-unstable-v2.xml', | ||||
| 	'text-input-unstable-v3': wl_protocol_dir / 'unstable/text-input/text-input-unstable-v3.xml', | ||||
| 	'xdg-decoration-unstable-v1': wl_protocol_dir / 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml', | ||||
| 	'xdg-output-unstable-v1': wl_protocol_dir / 'unstable/xdg-output/xdg-output-unstable-v1.xml', | ||||
| 	'xdg-shell-unstable-v6': wl_protocol_dir / 'unstable/xdg-shell/xdg-shell-unstable-v6.xml', | ||||
| 	# Other protocols | ||||
| 	'gtk-primary-selection': 'gtk-primary-selection.xml', | ||||
| 	'kde-idle': 'idle.xml', | ||||
| 	'kde-server-decoration': 'server-decoration.xml', | ||||
| 	'input-method-unstable-v2': 'input-method-unstable-v2.xml', | ||||
| 	'virtual-keyboard-unstable-v1': 'virtual-keyboard-unstable-v1.xml', | ||||
| 	'wlr-data-control-unstable-v1': 'wlr-data-control-unstable-v1.xml', | ||||
| 	'wlr-export-dmabuf-unstable-v1': 'wlr-export-dmabuf-unstable-v1.xml', | ||||
| 	'wlr-foreign-toplevel-management-unstable-v1': 'wlr-foreign-toplevel-management-unstable-v1.xml', | ||||
| 	'wlr-gamma-control-unstable-v1': 'wlr-gamma-control-unstable-v1.xml', | ||||
| 	'wlr-input-inhibitor-unstable-v1': 'wlr-input-inhibitor-unstable-v1.xml', | ||||
| 	'wlr-layer-shell-unstable-v1': 'wlr-layer-shell-unstable-v1.xml', | ||||
| 	'wlr-output-management-unstable-v1': 'wlr-output-management-unstable-v1.xml', | ||||
| 	'wlr-screencopy-unstable-v1': 'wlr-screencopy-unstable-v1.xml', | ||||
| } | ||||
| 
 | ||||
| client_protocols = [ | ||||
| 	[wl_protocol_dir, 'stable/presentation-time/presentation-time.xml'], | ||||
| 	[wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/pointer-constraints/pointer-constraints-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/pointer-gestures/pointer-gestures-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/relative-pointer/relative-pointer-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/tablet/tablet-unstable-v2.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/text-input/text-input-unstable-v3.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml'], | ||||
| 	[wl_protocol_dir, 'unstable/xdg-shell/xdg-shell-unstable-v6.xml'], | ||||
| 	'idle.xml', | ||||
| 	'input-method-unstable-v2.xml', | ||||
| 	'wlr-export-dmabuf-unstable-v1.xml', | ||||
| 	'wlr-foreign-toplevel-management-unstable-v1.xml', | ||||
| 	'wlr-gamma-control-unstable-v1.xml', | ||||
| 	'wlr-input-inhibitor-unstable-v1.xml', | ||||
| 	'wlr-layer-shell-unstable-v1.xml', | ||||
| 	'wlr-screencopy-unstable-v1.xml', | ||||
| ] | ||||
| 
 | ||||
| wl_protos_src = [] | ||||
| wl_protos_headers = [] | ||||
| 
 | ||||
| foreach p : protocols | ||||
| 	xml = join_paths(p) | ||||
| 	wl_protos_src += custom_target( | ||||
| 		xml.underscorify() + '_server_c', | ||||
| 		input: xml, | ||||
| foreach name, path : protocols | ||||
| 	code = custom_target( | ||||
| 		name.underscorify() + '_c', | ||||
| 		input: path, | ||||
| 		output: '@BASENAME@-protocol.c', | ||||
| 		command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'], | ||||
| 	) | ||||
| 	wl_protos_headers += custom_target( | ||||
| 		xml.underscorify() + '_server_h', | ||||
| 		input: xml, | ||||
| 	wlr_files += code | ||||
| 
 | ||||
| 	wlr_files += custom_target( | ||||
| 		name.underscorify() + '_server_h', | ||||
| 		input: path, | ||||
| 		output: '@BASENAME@-protocol.h', | ||||
| 		command: [wayland_scanner, 'server-header', '@INPUT@', '@OUTPUT@'], | ||||
| 	) | ||||
| endforeach | ||||
| 
 | ||||
| foreach p : client_protocols | ||||
| 	xml = join_paths(p) | ||||
| 	wl_protos_headers += custom_target( | ||||
| 		xml.underscorify() + '_client_h', | ||||
| 		input: xml, | ||||
| 	header = custom_target( | ||||
| 		name.underscorify() + '_client_h', | ||||
| 		input: path, | ||||
| 		output: '@BASENAME@-client-protocol.h', | ||||
| 		command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@'], | ||||
| 		build_by_default: false, | ||||
| 	) | ||||
| 
 | ||||
| 	set_variable(name.underscorify() + '_c', code) | ||||
| 	set_variable(name.underscorify() + '_h', header) | ||||
| endforeach | ||||
| 
 | ||||
| lib_wl_protos = static_library( | ||||
| 	'wl_protos', | ||||
| 	wl_protos_src + wl_protos_headers, | ||||
| 	dependencies: wayland_client.partial_dependency(compile_args: true), | ||||
| ) | ||||
| 
 | ||||
| wlr_protos = declare_dependency( | ||||
| 	link_with: lib_wl_protos, | ||||
| 	sources: wl_protos_headers, | ||||
| ) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Scott Anderson
						Scott Anderson