mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	 65c28ed31d
			
		
	
	
		65c28ed31d
		
	
	
	
	
		
			
			The v1 version is deprecated and bound to be removed in the future from all compositors. This patch adds a v1/v2 designator to everything related to the protocol and prefers the v2 protocol if both are available. Additionally, renames the event handler to follow the Wayland interface name, for consistency with the rest of the codebase.
		
			
				
	
	
		
			243 lines
		
	
	
	
		
			8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			243 lines
		
	
	
	
		
			8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| from misc.utility.scons_hints import *
 | |
| 
 | |
| Import("env")
 | |
| 
 | |
| # TODO: Add warning to headers and code about their autogenerated status.
 | |
| if env["use_sowrap"]:
 | |
|     # We have to implement separate builders for so wrappers as the
 | |
|     # autogenerated Wayland protocol wrapper must include them instead of the
 | |
|     # native libraries.
 | |
| 
 | |
|     WAYLAND_BUILDERS_SOWRAP = {
 | |
|         "WAYLAND_API_HEADER": Builder(
 | |
|             action=Action(
 | |
|                 r"wayland-scanner -c client-header < ${SOURCE} | sed 's:wayland-client-core\.h:../dynwrappers/wayland-client-core-so_wrap\.h:' > ${TARGET}",
 | |
|                 'Generating Wayland client header: "${TARGET}"',
 | |
|             ),
 | |
|             single_source=True,
 | |
|         ),
 | |
|         "WAYLAND_API_CODE": Builder(
 | |
|             action=Action(
 | |
|                 r"wayland-scanner -c private-code < ${SOURCE} | sed 's:wayland-util\.h:../dynwrappers/wayland-client-core-so_wrap\.h:' > ${TARGET}",
 | |
|                 'Generating Wayland protocol marshaling code: "${TARGET}"',
 | |
|             ),
 | |
|             single_source=True,
 | |
|         ),
 | |
|     }
 | |
|     env.Append(BUILDERS=WAYLAND_BUILDERS_SOWRAP)
 | |
| else:
 | |
|     WAYLAND_BUILDERS = {
 | |
|         "WAYLAND_API_HEADER": Builder(
 | |
|             action=Action(
 | |
|                 r"wayland-scanner -c client-header < ${SOURCE} > ${TARGET}",
 | |
|                 'Generating Wayland client header: "${TARGET}"',
 | |
|             ),
 | |
|             single_source=True,
 | |
|         ),
 | |
|         "WAYLAND_API_CODE": Builder(
 | |
|             action=Action(
 | |
|                 r"wayland-scanner -c private-code < ${SOURCE} > ${TARGET}",
 | |
|                 'Generating Wayland protocol marshaling code: "${TARGET}"',
 | |
|             ),
 | |
|             single_source=True,
 | |
|         ),
 | |
|     }
 | |
|     env.Append(BUILDERS=WAYLAND_BUILDERS)
 | |
| 
 | |
| env.WAYLAND_API_HEADER(target="protocol/wayland.gen.h", source="#thirdparty/wayland/protocol/wayland.xml")
 | |
| env.WAYLAND_API_CODE(target="protocol/wayland.gen.c", source="#thirdparty/wayland/protocol/wayland.xml")
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/viewporter.gen.h", source="#thirdparty/wayland-protocols/stable/viewporter/viewporter.xml"
 | |
| )
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/viewporter.gen.c", source="#thirdparty/wayland-protocols/stable/viewporter/viewporter.xml"
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/fractional_scale.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/staging/fractional-scale/fractional-scale-v1.xml",
 | |
| )
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/fractional_scale.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/staging/fractional-scale/fractional-scale-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/xdg_shell.gen.h", source="#thirdparty/wayland-protocols/stable/xdg-shell/xdg-shell.xml"
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/xdg_shell.gen.c", source="#thirdparty/wayland-protocols/stable/xdg-shell/xdg-shell.xml"
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/xdg_decoration.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/xdg_decoration.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/xdg_activation.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/staging/xdg-activation/xdg-activation-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/xdg_activation.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/staging/xdg-activation/xdg-activation-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/relative_pointer.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/relative_pointer.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/pointer_constraints.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/pointer_constraints.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/pointer_gestures.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/pointer_gestures.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/primary_selection.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/primary-selection/primary-selection-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/primary_selection.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/primary-selection/primary-selection-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/idle_inhibit.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/idle_inhibit.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/tablet.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/tablet/tablet-unstable-v2.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/tablet.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/tablet/tablet-unstable-v2.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/text_input.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/text-input/text-input-unstable-v3.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/text_input.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/text-input/text-input-unstable-v3.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/xdg_foreign_v1.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/xdg_foreign_v1.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/xdg_foreign_v2.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v2.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/xdg_foreign_v2.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v2.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_HEADER(
 | |
|     target="protocol/xdg_system_bell.gen.h",
 | |
|     source="#thirdparty/wayland-protocols/staging/xdg-system-bell/xdg-system-bell-v1.xml",
 | |
| )
 | |
| 
 | |
| env.WAYLAND_API_CODE(
 | |
|     target="protocol/xdg_system_bell.gen.c",
 | |
|     source="#thirdparty/wayland-protocols/staging/xdg-system-bell/xdg-system-bell-v1.xml",
 | |
| )
 | |
| 
 | |
| source_files = [
 | |
|     "protocol/wayland.gen.c",
 | |
|     "protocol/viewporter.gen.c",
 | |
|     "protocol/fractional_scale.gen.c",
 | |
|     "protocol/xdg_shell.gen.c",
 | |
|     "protocol/xdg_system_bell.gen.c",
 | |
|     "protocol/xdg_foreign_v1.gen.c",
 | |
|     "protocol/xdg_foreign_v2.gen.c",
 | |
|     "protocol/xdg_decoration.gen.c",
 | |
|     "protocol/xdg_activation.gen.c",
 | |
|     "protocol/relative_pointer.gen.c",
 | |
|     "protocol/pointer_constraints.gen.c",
 | |
|     "protocol/pointer_gestures.gen.c",
 | |
|     "protocol/primary_selection.gen.c",
 | |
|     "protocol/idle_inhibit.gen.c",
 | |
|     "protocol/tablet.gen.c",
 | |
|     "protocol/text_input.gen.c",
 | |
|     "display_server_wayland.cpp",
 | |
|     "wayland_thread.cpp",
 | |
|     "key_mapping_xkb.cpp",
 | |
|     "detect_prime_egl.cpp",
 | |
| ]
 | |
| 
 | |
| if env["use_sowrap"]:
 | |
|     source_files.append(
 | |
|         [
 | |
|             "dynwrappers/wayland-cursor-so_wrap.c",
 | |
|             "dynwrappers/wayland-client-core-so_wrap.c",
 | |
|             "dynwrappers/wayland-egl-core-so_wrap.c",
 | |
|         ]
 | |
|     )
 | |
| 
 | |
|     if env["libdecor"]:
 | |
|         source_files.append("dynwrappers/libdecor-so_wrap.c")
 | |
| 
 | |
| 
 | |
| if env["vulkan"]:
 | |
|     source_files.append("rendering_context_driver_vulkan_wayland.cpp")
 | |
| 
 | |
| if env["opengl3"]:
 | |
|     source_files.append("egl_manager_wayland.cpp")
 | |
|     source_files.append("egl_manager_wayland_gles.cpp")
 | |
| 
 | |
| objects = []
 | |
| 
 | |
| for source_file in source_files:
 | |
|     objects.append(env.Object(source_file))
 | |
| 
 | |
| Return("objects")
 |