mirror of
https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git
synced 2025-05-14 16:58:43 +00:00

This code was being generated in both Vulkan-ValidationLayers and Vulkan-ExtensionLayer. Further uses are on the horizon so lets stop the copypasta. Also, add functions to manipulate extension lists and pNext chains, since many client layers have been doing that themselves.
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
#!/usr/bin/python3 -i
|
|
#
|
|
# Copyright (c) 2015-2024 The Khronos Group Inc.
|
|
# Copyright (c) 2015-2024 Valve Corporation
|
|
# Copyright (c) 2015-2024 LunarG, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import platform
|
|
|
|
# Use Ninja for all platforms for performance/simplicity
|
|
os.environ['CMAKE_GENERATOR'] = "Ninja"
|
|
|
|
# helper to define paths relative to the repo root
|
|
def RepoRelative(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 = RepoRelative(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)
|
|
|
|
#
|
|
# Check if the system is Windows
|
|
def IsWindows(): return 'windows' == platform.system().lower()
|