aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/spirv-tools
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/spirv-tools
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/spirv-tools')
-rw-r--r--vcpkg/ports/spirv-tools/cmake-config-dir.diff13
-rw-r--r--vcpkg/ports/spirv-tools/fix-tool-deps.diff18
-rw-r--r--vcpkg/ports/spirv-tools/portfile.cmake56
-rw-r--r--vcpkg/ports/spirv-tools/spirv-tools-shared.diff35
-rw-r--r--vcpkg/ports/spirv-tools/usage22
-rw-r--r--vcpkg/ports/spirv-tools/vcpkg.json24
6 files changed, 168 insertions, 0 deletions
diff --git a/vcpkg/ports/spirv-tools/cmake-config-dir.diff b/vcpkg/ports/spirv-tools/cmake-config-dir.diff
new file mode 100644
index 0000000..65a9e39
--- /dev/null
+++ b/vcpkg/ports/spirv-tools/cmake-config-dir.diff
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 75830b44..367fe889 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -270,7 +270,7 @@ else()
+ endif()
+
+ if(ENABLE_SPIRV_TOOLS_INSTALL)
+- if(WIN32 AND NOT MINGW)
++ if(0)
+ macro(spvtools_config_package_dir TARGET PATH)
+ set(${PATH} ${TARGET}/cmake)
+ endmacro()
diff --git a/vcpkg/ports/spirv-tools/fix-tool-deps.diff b/vcpkg/ports/spirv-tools/fix-tool-deps.diff
new file mode 100644
index 0000000..e842277
--- /dev/null
+++ b/vcpkg/ports/spirv-tools/fix-tool-deps.diff
@@ -0,0 +1,18 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 75830b44..9c9e7ba8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -281,8 +281,13 @@ if(ENABLE_SPIRV_TOOLS_INSTALL)
+ endif()
+
+ macro(spvtools_generate_config_file TARGET)
++ set(sgcf_find_extra "")
++ if(NOT "${TARGET}" STREQUAL "SPIRV-Tools-opt")
++ set(sgcf_find_extra "find_dependency(SPIRV-Tools-opt)\n")
++ endif()
+ file(WRITE ${CMAKE_BINARY_DIR}/${TARGET}Config.cmake
+ "include(CMakeFindDependencyMacro)\n"
++ ${sgcf_find_extra}
+ "find_dependency(${SPIRV_TOOLS})\n"
+ "include(\${CMAKE_CURRENT_LIST_DIR}/${TARGET}Targets.cmake)\n"
+ "set(${TARGET}_LIBRARIES ${TARGET})\n"
diff --git a/vcpkg/ports/spirv-tools/portfile.cmake b/vcpkg/ports/spirv-tools/portfile.cmake
new file mode 100644
index 0000000..b38bebf
--- /dev/null
+++ b/vcpkg/ports/spirv-tools/portfile.cmake
@@ -0,0 +1,56 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO KhronosGroup/SPIRV-Tools
+ REF "vulkan-sdk-${VERSION}"
+ SHA512 aa8163ad79eb5e60b8b373cbb49f1a140426f6346d5cb8e8a9aa2c72d6feaa528a9d690e0c52b44f3e4b2f60206050601441351f777752d6bf6c1b143f55589d
+ PATCHES
+ cmake-config-dir.diff
+ spirv-tools-shared.diff
+ fix-tool-deps.diff
+)
+
+vcpkg_find_acquire_program(PYTHON3)
+get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY)
+vcpkg_add_to_path("${PYTHON3_DIR}")
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ INVERTED_FEATURES
+ tools SPIRV_SKIP_EXECUTABLES
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ "-DSPIRV-Headers_SOURCE_DIR=${CURRENT_INSTALLED_DIR}"
+ -DSPIRV_SKIP_TESTS=ON
+ -DSPIRV_TOOLS_BUILD_STATIC=ON
+ -DSPIRV_WERROR=OFF
+ OPTIONS_DEBUG
+ -DSPIRV_SKIP_EXECUTABLES=ON
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/SPIRV-Tools PACKAGE_NAME spirv-tools DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/SPIRV-Tools-link PACKAGE_NAME spirv-tools-link DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/SPIRV-Tools-lint PACKAGE_NAME spirv-tools-lint DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/SPIRV-Tools-opt PACKAGE_NAME spirv-tools-opt DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/SPIRV-Tools-reduce PACKAGE_NAME spirv-tools-reduce) # now delete
+vcpkg_fixup_pkgconfig()
+
+if("tools" IN_LIST FEATURES)
+ file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/bin/spirv-lesspipe.sh" "${CURRENT_PACKAGES_DIR}/tools/${PORT}/spirv-lesspipe.sh")
+ file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/bin/spirv-lesspipe.sh")
+ set(tools spirv-as spirv-cfg spirv-dis spirv-link spirv-lint spirv-objdump spirv-opt spirv-reduce spirv-val)
+ vcpkg_copy_tools(TOOL_NAMES ${tools} AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+)
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/spirv-tools/spirv-tools-shared.diff b/vcpkg/ports/spirv-tools/spirv-tools-shared.diff
new file mode 100644
index 0000000..e2bf13c
--- /dev/null
+++ b/vcpkg/ports/spirv-tools/spirv-tools-shared.diff
@@ -0,0 +1,35 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 75830b44..39cc039e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -390,10 +390,14 @@ add_custom_target(spirv-tools-shared-pkg-config ALL
+
+ # Install pkg-config file
+ if (ENABLE_SPIRV_TOOLS_INSTALL)
++ set(shared_pc "")
++ if(BUILD_SHARED_LIBS)
++ set(shared_pc "${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc")
++ endif()
+ install(
+ FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc
+- ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc
++ ${shared_pc}
+ DESTINATION
+ ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+ endif()
+diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
+index acfa0c12..b3286db3 100644
+--- a/source/CMakeLists.txt
++++ b/source/CMakeLists.txt
+@@ -425,6 +425,10 @@ if (ANDROID)
+ endif()
+
+ if(ENABLE_SPIRV_TOOLS_INSTALL)
++ if(NOT BUILD_SHARED_LIBS)
++ set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES EXCLUDE_FROM_ALL 1)
++ list(REMOVE_ITEM SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-shared)
++ endif()
+ install(TARGETS ${SPIRV_TOOLS_TARGETS} EXPORT ${SPIRV_TOOLS}Targets)
+ export(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake)
+
diff --git a/vcpkg/ports/spirv-tools/usage b/vcpkg/ports/spirv-tools/usage
new file mode 100644
index 0000000..1890e6d
--- /dev/null
+++ b/vcpkg/ports/spirv-tools/usage
@@ -0,0 +1,22 @@
+spirv-tools provides CMake targets:
+
+ find_package(SPIRV-Tools CONFIG REQUIRED)
+ # The static libary is always available.
+ # It offers full public symbol visibility.
+ target_link_libraries(main PRIVATE SPIRV-Tools-static)
+ # In triplets with dynamic library linkage, there is also a shared libary.
+ target_link_libraries(main PRIVATE SPIRV-Tools-shared)
+
+ # The following libraries are static and depend on SPIRV-Tools-static.
+
+ find_package(SPIRV-Tools-link CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE SPIRV-Tools-link)
+
+ find_package(SPIRV-Tools-lint CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE SPIRV-Tools-lint)
+
+ find_package(SPIRV-Tools-opt CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE SPIRV-Tools-opt)
+
+ find_package(SPIRV-Tools-reduce CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE SPIRV-Tools-reduce)
diff --git a/vcpkg/ports/spirv-tools/vcpkg.json b/vcpkg/ports/spirv-tools/vcpkg.json
new file mode 100644
index 0000000..d1f9db7
--- /dev/null
+++ b/vcpkg/ports/spirv-tools/vcpkg.json
@@ -0,0 +1,24 @@
+{
+ "name": "spirv-tools",
+ "version": "1.4.309.0",
+ "description": "API and commands for processing SPIR-V modules",
+ "homepage": "https://github.com/KhronosGroup/SPIRV-Tools",
+ "license": "Apache-2.0",
+ "dependencies": [
+ "spirv-headers",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "tools": {
+ "description": "Build tools.",
+ "supports": "!android & !ios"
+ }
+ }
+}