ef3f38da8b
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.
111 lines
4.0 KiB
Python
111 lines
4.0 KiB
Python
#!/usr/bin/python3 -i
|
|
#
|
|
# Copyright (c) 2015-2017, 2019-2021 The Khronos Group Inc.
|
|
# Copyright (c) 2015-2017, 2019-2021 Valve Corporation
|
|
# Copyright (c) 2015-2017, 2019-2021 LunarG, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
# Author: Mark Lobodzinski <mark@lunarg.com>
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
# Copyright text prefixing all headers (list of strings).
|
|
prefixStrings = [
|
|
'/*',
|
|
'** Copyright (c) 2015-2017, 2019-2021 The Khronos Group Inc.',
|
|
'** Copyright (c) 2015-2017, 2019-2021 Valve Corporation',
|
|
'** Copyright (c) 2015-2017, 2019-2021 LunarG, Inc.',
|
|
'** Copyright (c) 2015-2017, 2019-2021 Google Inc.',
|
|
'**',
|
|
'** Licensed under the Apache License, Version 2.0 (the "License");',
|
|
'** you may not use this file except in compliance with the License.',
|
|
'** You may obtain a copy of the License at',
|
|
'**',
|
|
'** http://www.apache.org/licenses/LICENSE-2.0',
|
|
'**',
|
|
'** Unless required by applicable law or agreed to in writing, software',
|
|
'** distributed under the License is distributed on an "AS IS" BASIS,',
|
|
'** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.',
|
|
'** See the License for the specific language governing permissions and',
|
|
'** limitations under the License.',
|
|
'*/',
|
|
''
|
|
]
|
|
|
|
|
|
platform_dict = {
|
|
'android' : 'VK_USE_PLATFORM_ANDROID_KHR',
|
|
'fuchsia' : 'VK_USE_PLATFORM_FUCHSIA',
|
|
'ggp': 'VK_USE_PLATFORM_GGP',
|
|
'ios' : 'VK_USE_PLATFORM_IOS_MVK',
|
|
'macos' : 'VK_USE_PLATFORM_MACOS_MVK',
|
|
'metal' : 'VK_USE_PLATFORM_METAL_EXT',
|
|
'vi' : 'VK_USE_PLATFORM_VI_NN',
|
|
'wayland' : 'VK_USE_PLATFORM_WAYLAND_KHR',
|
|
'win32' : 'VK_USE_PLATFORM_WIN32_KHR',
|
|
'xcb' : 'VK_USE_PLATFORM_XCB_KHR',
|
|
'xlib' : 'VK_USE_PLATFORM_XLIB_KHR',
|
|
'directfb' : 'VK_USE_PLATFORM_DIRECTFB_EXT',
|
|
'xlib_xrandr' : 'VK_USE_PLATFORM_XLIB_XRANDR_EXT',
|
|
'provisional' : 'VK_ENABLE_BETA_EXTENSIONS',
|
|
'screen' : 'VK_USE_PLATFORM_SCREEN_QNX',
|
|
}
|
|
|
|
#
|
|
# Return appropriate feature protect string from 'platform' tag on feature
|
|
def GetFeatureProtect(interface):
|
|
"""Get platform protection string"""
|
|
platform = interface.get('platform')
|
|
protect = None
|
|
if platform is not None:
|
|
protect = platform_dict[platform]
|
|
return protect
|
|
|
|
# helper to define paths relative to the repo root
|
|
def repo_relative(path):
|
|
return os.path.abspath(os.path.join(os.path.dirname(__file__), '..', path))
|
|
|
|
# Points to the directory containing the top level CMakeLists.txt
|
|
PROJECT_SRC_DIR = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], '..'))
|
|
if not os.path.isfile(f'{PROJECT_SRC_DIR}/CMakeLists.txt'):
|
|
print(f'PROJECT_SRC_DIR invalid! {PROJECT_SRC_DIR}')
|
|
sys.exit(1)
|
|
|
|
# Returns true if we are running in GitHub actions
|
|
# https://docs.github.com/en/actions/learn-github-actions/variables#default-environment-variables
|
|
def IsGHA():
|
|
if 'GITHUB_ACTION' in os.environ:
|
|
return True
|
|
return False
|
|
|
|
# Runs a command in a directory and returns its return code.
|
|
# Directory is project root by default, or a relative path from project root
|
|
def RunShellCmd(command, start_dir = PROJECT_SRC_DIR, env=None, verbose=False):
|
|
# Flush stdout here. Helps when debugging on CI.
|
|
sys.stdout.flush()
|
|
|
|
if start_dir != PROJECT_SRC_DIR:
|
|
start_dir = repo_relative(start_dir)
|
|
cmd_list = command.split(" ")
|
|
|
|
# Helps a lot when debugging CI issues
|
|
if IsGHA():
|
|
verbose = True
|
|
|
|
if verbose:
|
|
print(f'CICMD({cmd_list}, env={env})')
|
|
subprocess.check_call(cmd_list, cwd=start_dir, env=env)
|