Files
RedBear-OS/local/recipes/libs/vulkan-loader/source/scripts/generate_loader_rc.py
T
vasilito ef3f38da8b feat: port Vulkan headers and ICD loader; wire into kwin
KWin does an unconditional find_package(Vulkan REQUIRED), and CMake's
FindVulkan needs BOTH Vulkan_INCLUDE_DIR and Vulkan_LIBRARY. Mesa already
builds the Vulkan drivers (libvulkan_intel/_radeon/_lvp) but an ICD is not
the API surface a consumer links against, so kwin could not configure.

vulkan-headers: header-only, but VulkanHeadersConfig.cmake is GENERATED at
install time rather than shipped in the tarball, and Vulkan-Loader
hard-requires it -- a hand copy of include/ satisfies FindVulkan and then
fails the loader. Run upstream's cmake install instead.

vulkan-loader: one real port. vk_loader_platform.h gates the whole POSIX
arm (DIRECTORY_SYMBOL, the dlopen wrappers, manifest search) on an OS list
that predates Redox, so the build collapsed with 'DIRECTORY_SYMBOL'
undeclared. Redox provides dlopen/dlsym and POSIX paths via relibc, so it
belongs in the same arm as Linux; that header is the only file under
loader/ doing OS detection. WSI backends are left off: Red Bear is
Wayland-only and the compositor talks to Mesa's ICDs directly.

Both shadow the untested recipes/wip/libs/graphics/{vulkan-headers,
libvulkan} via the local-over-WIP mechanism, per the WIP ownership rule
that the shipping version lives in local/recipes/.

Verified: kwin now reports
  -- Found Vulkan: .../sysroot/lib/libvulkan.so (found version 1.4.321)

kwin also gains its missing kf6-knewstuff dep -- its
find_package(KF6 COMPONENTS NewStuff) is REQUIRED, so without the dep the
framework was never staged into kwin's sysroot.
2026-08-03 09:10:57 +03:00

31 lines
1.1 KiB
Python

#!/usr/bin/env python3
# Copyright 2023 The Khronos Group Inc.
# Copyright 2023 Valve Corporation
# Copyright 2023 LunarG, Inc.
#
# SPDX-License-Identifier: Apache-2.0
import argparse
import sys
def main(argv):
parser = argparse.ArgumentParser(description='Update Loader.rc for official builds')
parser.add_argument('src')
parser.add_argument('dst')
parser.add_argument('--is_official', action='store_true')
parser.set_defaults(is_official=False)
args = parser.parse_args(argv)
with open(args.src, 'r') as src:
with open(args.dst, 'w') as dst:
for line in src:
if args.is_official:
if line.startswith('#define VER_FILE_DESCRIPTION_STR'):
dst.write(line.replace('Dev Build', '0'))
elif line.startswith('#define VER_FILE_VERSION_STR'):
dst.write(line.replace(' - Dev Build', ''))
else:
dst.write(line)
else:
dst.write(line)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))