-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use upstream interface for SPIRV-Headers
- Loading branch information
1 parent
c3cfcb3
commit 0412407
Showing
13 changed files
with
256 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Dependencies | ||
|
||
# LLVM / WASM | ||
|
||
These are our build wrappers for LLVM and WASM code. | ||
|
||
# SPIR-V | ||
|
||
This folder contains a copy of the officially released v1.6 ANSI-C header | ||
file for [SPIR-V], obtained from the `sdk-1.3.231` branch | ||
of https://github.com/KhronosGroup/SPIRV-Headers. | ||
|
||
The directory structure within this folder matches that of the official | ||
version's install tree, plus the upstream LICENSE notice. | ||
|
||
The `update-spirv.sh` script will automatically acquire the upstream repo, | ||
build it, and extract the necessary headers and CMake configuration files. | ||
It takes a single argument, the name of the branch to clone. | ||
|
||
[SPIR-V]: https://www.khronos.org/registry/spir-v/ |
This file was deleted.
Oops, something went wrong.
File renamed without changes.
This file was deleted.
Oops, something went wrong.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
28 changes: 28 additions & 0 deletions
28
dependencies/spirv/share/cmake/SPIRV-Headers/SPIRV-HeadersConfig.cmake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
|
||
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### | ||
####### Any changes to this file will be overwritten by the next CMake run #### | ||
####### The input file was Config.cmake.in ######## | ||
|
||
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) | ||
|
||
macro(set_and_check _var _file) | ||
set(${_var} "${_file}") | ||
if(NOT EXISTS "${_file}") | ||
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") | ||
endif() | ||
endmacro() | ||
|
||
macro(check_required_components _NAME) | ||
foreach(comp ${${_NAME}_FIND_COMPONENTS}) | ||
if(NOT ${_NAME}_${comp}_FOUND) | ||
if(${_NAME}_FIND_REQUIRED_${comp}) | ||
set(${_NAME}_FOUND FALSE) | ||
endif() | ||
endif() | ||
endforeach() | ||
endmacro() | ||
|
||
#################################################################################### | ||
|
||
include("${CMAKE_CURRENT_LIST_DIR}/SPIRV-HeadersTargets.cmake") | ||
check_required_components("SPIRV-Headers") |
54 changes: 54 additions & 0 deletions
54
dependencies/spirv/share/cmake/SPIRV-Headers/SPIRV-HeadersConfigVersion.cmake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
# This is a basic version file for the Config-mode of find_package(). | ||
# It is used by write_basic_package_version_file() as input file for configure_file() | ||
# to create a version-file which can be installed along a config.cmake file. | ||
# | ||
# The created file sets PACKAGE_VERSION_EXACT if the current version string and | ||
# the requested version string are exactly the same and it sets | ||
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, | ||
# but only if the requested major version is the same as the current one. | ||
# The variable CVF_VERSION must be set before calling configure_file(). | ||
|
||
|
||
set(PACKAGE_VERSION "1.5.5") | ||
|
||
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
else() | ||
|
||
if("1.5.5" MATCHES "^([0-9]+)\\.") | ||
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") | ||
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0) | ||
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}") | ||
endif() | ||
else() | ||
set(CVF_VERSION_MAJOR "1.5.5") | ||
endif() | ||
|
||
if(PACKAGE_FIND_VERSION_RANGE) | ||
# both endpoints of the range must have the expected major version | ||
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1") | ||
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR | ||
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR) | ||
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT))) | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR | ||
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX) | ||
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX))) | ||
set(PACKAGE_VERSION_COMPATIBLE TRUE) | ||
else() | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
endif() | ||
else() | ||
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) | ||
set(PACKAGE_VERSION_COMPATIBLE TRUE) | ||
else() | ||
set(PACKAGE_VERSION_COMPATIBLE FALSE) | ||
endif() | ||
|
||
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) | ||
set(PACKAGE_VERSION_EXACT TRUE) | ||
endif() | ||
endif() | ||
endif() | ||
|
||
|
106 changes: 106 additions & 0 deletions
106
dependencies/spirv/share/cmake/SPIRV-Headers/SPIRV-HeadersTargets.cmake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
# Generated by CMake | ||
|
||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) | ||
message(FATAL_ERROR "CMake >= 2.8.0 required") | ||
endif() | ||
if(CMAKE_VERSION VERSION_LESS "3.0.0") | ||
message(FATAL_ERROR "CMake >= 3.0.0 required") | ||
endif() | ||
cmake_policy(PUSH) | ||
cmake_policy(VERSION 3.0.0...3.27) | ||
#---------------------------------------------------------------- | ||
# Generated CMake target import file. | ||
#---------------------------------------------------------------- | ||
|
||
# Commands may need to know the format version. | ||
set(CMAKE_IMPORT_FILE_VERSION 1) | ||
|
||
# Protect against multiple inclusion, which would fail when already imported targets are added once more. | ||
set(_cmake_targets_defined "") | ||
set(_cmake_targets_not_defined "") | ||
set(_cmake_expected_targets "") | ||
foreach(_cmake_expected_target IN ITEMS SPIRV-Headers::SPIRV-Headers) | ||
list(APPEND _cmake_expected_targets "${_cmake_expected_target}") | ||
if(TARGET "${_cmake_expected_target}") | ||
list(APPEND _cmake_targets_defined "${_cmake_expected_target}") | ||
else() | ||
list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") | ||
endif() | ||
endforeach() | ||
unset(_cmake_expected_target) | ||
if(_cmake_targets_defined STREQUAL _cmake_expected_targets) | ||
unset(_cmake_targets_defined) | ||
unset(_cmake_targets_not_defined) | ||
unset(_cmake_expected_targets) | ||
unset(CMAKE_IMPORT_FILE_VERSION) | ||
cmake_policy(POP) | ||
return() | ||
endif() | ||
if(NOT _cmake_targets_defined STREQUAL "") | ||
string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") | ||
string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") | ||
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") | ||
endif() | ||
unset(_cmake_targets_defined) | ||
unset(_cmake_targets_not_defined) | ||
unset(_cmake_expected_targets) | ||
|
||
|
||
# Compute the installation prefix relative to this file. | ||
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) | ||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | ||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | ||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) | ||
if(_IMPORT_PREFIX STREQUAL "/") | ||
set(_IMPORT_PREFIX "") | ||
endif() | ||
|
||
# Create imported target SPIRV-Headers::SPIRV-Headers | ||
add_library(SPIRV-Headers::SPIRV-Headers INTERFACE IMPORTED) | ||
|
||
set_target_properties(SPIRV-Headers::SPIRV-Headers PROPERTIES | ||
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" | ||
) | ||
|
||
# Load information for each installed configuration. | ||
file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/SPIRV-HeadersTargets-*.cmake") | ||
foreach(_cmake_config_file IN LISTS _cmake_config_files) | ||
include("${_cmake_config_file}") | ||
endforeach() | ||
unset(_cmake_config_file) | ||
unset(_cmake_config_files) | ||
|
||
# Cleanup temporary variables. | ||
set(_IMPORT_PREFIX) | ||
|
||
# Loop over all imported files and verify that they actually exist | ||
foreach(_cmake_target IN LISTS _cmake_import_check_targets) | ||
if(CMAKE_VERSION VERSION_LESS "3.28" | ||
OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target} | ||
OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}") | ||
foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") | ||
if(NOT EXISTS "${_cmake_file}") | ||
message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file | ||
\"${_cmake_file}\" | ||
but this file does not exist. Possible reasons include: | ||
* The file was deleted, renamed, or moved to another location. | ||
* An install or uninstall procedure did not complete successfully. | ||
* The installation package was faulty and contained | ||
\"${CMAKE_CURRENT_LIST_FILE}\" | ||
but not all the files it references. | ||
") | ||
endif() | ||
endforeach() | ||
endif() | ||
unset(_cmake_file) | ||
unset("_cmake_import_check_files_for_${_cmake_target}") | ||
endforeach() | ||
unset(_cmake_target) | ||
unset(_cmake_import_check_targets) | ||
|
||
# This file does not depend on other imported targets which have | ||
# been exported from the same project but in a separate export set. | ||
|
||
# Commands beyond this point should not need to know the version. | ||
set(CMAKE_IMPORT_FILE_VERSION) | ||
cmake_policy(POP) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
#!/bin/bash | ||
|
||
set -eo pipefail | ||
|
||
cd -- "$(dirname -- "$0")" || exit 1 | ||
|
||
GIT_BRANCH="$1" | ||
if [ -z "$GIT_BRANCH" ]; then | ||
echo "error: usage: $0 <git-branch>" | ||
echo "remark: the current <git-branch> is sdk-1.3.231" | ||
exit 1 | ||
fi | ||
|
||
mkdir -p spirv | ||
|
||
cleanup () { | ||
rm -rf SPIRV-Headers | ||
} | ||
|
||
trap cleanup SIGINT SIGTERM EXIT | ||
|
||
git clone https://github.com/KhronosGroup/SPIRV-Headers.git --branch "$GIT_BRANCH" | ||
cmake -S SPIRV-Headers -B SPIRV-Headers/build -DCMAKE_BUILD_TYPE=Release "-DCMAKE_INSTALL_PREFIX=$PWD/SPIRV-Headers/_local" | ||
cmake --build SPIRV-Headers/build --target install | ||
|
||
# Copy license information | ||
cp SPIRV-Headers/LICENSE spirv/ | ||
|
||
# Copy headers we care about | ||
mkdir -p spirv/include/spirv/unified1/ | ||
cp SPIRV-Headers/_local/include/spirv/unified1/GLSL.std.450.h spirv/include/spirv/unified1/ | ||
cp SPIRV-Headers/_local/include/spirv/unified1/spirv.h spirv/include/spirv/unified1/ | ||
|
||
# Copy CMake config | ||
mkdir -p spirv/share/ | ||
cp -R SPIRV-Headers/_local/share/cmake spirv/share/ | ||
|
||
git add -f spirv/ | ||
|
||
echo "Updated SPIRV-Headers to branch $GIT_BRANCH!" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters