#!/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=env.Run( r"wayland-scanner -c client-header < ${SOURCE} | " r"sed 's:wayland-client-core\.h:../dynwrappers/wayland-client-core-so_wrap\.h:' > ${TARGET}", ), single_source=True, ), "WAYLAND_API_CODE": Builder( action=env.Run( r"wayland-scanner -c private-code < ${SOURCE} | " r"sed 's:wayland-util\.h:../dynwrappers/wayland-client-core-so_wrap\.h:' > ${TARGET}", ), single_source=True, ), } env.Append(BUILDERS=WAYLAND_BUILDERS_SOWRAP) else: WAYLAND_BUILDERS = { "WAYLAND_API_HEADER": Builder( action=env.Run(r"wayland-scanner -c client-header < ${SOURCE} > ${TARGET}"), single_source=True, ), "WAYLAND_API_CODE": Builder( action=env.Run(r"wayland-scanner -c private-code < ${SOURCE} > ${TARGET}"), single_source=True, ), } env.Append(BUILDERS=WAYLAND_BUILDERS) env.NoCache( env.WAYLAND_API_HEADER("protocol/wayland.gen.h", "#thirdparty/wayland/protocol/wayland.xml"), env.WAYLAND_API_CODE("protocol/wayland.gen.c", "#thirdparty/wayland/protocol/wayland.xml"), env.WAYLAND_API_HEADER( "protocol/viewporter.gen.h", "#thirdparty/wayland-protocols/stable/viewporter/viewporter.xml" ), env.WAYLAND_API_CODE("protocol/viewporter.gen.c", "#thirdparty/wayland-protocols/stable/viewporter/viewporter.xml"), env.WAYLAND_API_HEADER( "protocol/fractional_scale.gen.h", "#thirdparty/wayland-protocols/staging/fractional-scale/fractional-scale-v1.xml", ), env.WAYLAND_API_CODE( "protocol/fractional_scale.gen.c", "#thirdparty/wayland-protocols/staging/fractional-scale/fractional-scale-v1.xml", ), env.WAYLAND_API_HEADER("protocol/xdg_shell.gen.h", "#thirdparty/wayland-protocols/stable/xdg-shell/xdg-shell.xml"), env.WAYLAND_API_CODE("protocol/xdg_shell.gen.c", "#thirdparty/wayland-protocols/stable/xdg-shell/xdg-shell.xml"), env.WAYLAND_API_HEADER( "protocol/xdg_decoration.gen.h", "#thirdparty/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/xdg_decoration.gen.c", "#thirdparty/wayland-protocols/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/xdg_activation.gen.h", "#thirdparty/wayland-protocols/staging/xdg-activation/xdg-activation-v1.xml", ), env.WAYLAND_API_CODE( "protocol/xdg_activation.gen.c", "#thirdparty/wayland-protocols/staging/xdg-activation/xdg-activation-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/relative_pointer.gen.h", "#thirdparty/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/relative_pointer.gen.c", "#thirdparty/wayland-protocols/unstable/relative-pointer/relative-pointer-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/pointer_constraints.gen.h", "#thirdparty/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/pointer_constraints.gen.c", "#thirdparty/wayland-protocols/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/pointer_gestures.gen.h", "#thirdparty/wayland-protocols/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/pointer_gestures.gen.c", "#thirdparty/wayland-protocols/unstable/pointer-gestures/pointer-gestures-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/primary_selection.gen.h", "#thirdparty/wayland-protocols/unstable/primary-selection/primary-selection-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/primary_selection.gen.c", "#thirdparty/wayland-protocols/unstable/primary-selection/primary-selection-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/idle_inhibit.gen.h", "#thirdparty/wayland-protocols/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/idle_inhibit.gen.c", "#thirdparty/wayland-protocols/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/tablet.gen.h", "#thirdparty/wayland-protocols/unstable/tablet/tablet-unstable-v2.xml", ), env.WAYLAND_API_CODE( "protocol/tablet.gen.c", "#thirdparty/wayland-protocols/unstable/tablet/tablet-unstable-v2.xml", ), env.WAYLAND_API_HEADER( "protocol/text_input.gen.h", "#thirdparty/wayland-protocols/unstable/text-input/text-input-unstable-v3.xml", ), env.WAYLAND_API_CODE( "protocol/text_input.gen.c", "#thirdparty/wayland-protocols/unstable/text-input/text-input-unstable-v3.xml", ), env.WAYLAND_API_HEADER( "protocol/xdg_foreign_v1.gen.h", "#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v1.xml", ), env.WAYLAND_API_CODE( "protocol/xdg_foreign_v1.gen.c", "#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v1.xml", ), env.WAYLAND_API_HEADER( "protocol/xdg_foreign_v2.gen.h", "#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v2.xml", ), env.WAYLAND_API_CODE( "protocol/xdg_foreign_v2.gen.c", "#thirdparty/wayland-protocols/unstable/xdg-foreign/xdg-foreign-unstable-v2.xml", ), env.WAYLAND_API_HEADER( "protocol/xdg_system_bell.gen.h", "#thirdparty/wayland-protocols/staging/xdg-system-bell/xdg-system-bell-v1.xml", ), env.WAYLAND_API_CODE( "protocol/xdg_system_bell.gen.c", "#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")