From a979ee239431c4f7e0a373cf343eacc7d4e10d6a Mon Sep 17 00:00:00 2001 From: Weihang Ding <798047000@qq.com> Date: Thu, 9 Jul 2026 06:27:27 +0800 Subject: [PATCH] [directx-dxc] Build from source [dawn] Revise port (#52689) --- ports/dawn/001-fix-linkage.patch | 13 + ...uild.patch => 002-fix-windows-build.patch} | 0 ports/dawn/004-deps.patch | 78 +++-- ports/dawn/010-fix-glslang.patch | 17 - ports/dawn/011-fix-dxc.patch | 34 -- ports/dawn/portfile.cmake | 115 ++++--- ports/dawn/vcpkg.json | 6 +- .../directx-dxc-tblgen/001-fix-linkage.patch | 13 + .../002-fix-gen-version-inc.patch | 47 +++ ports/directx-dxc-tblgen/003-fix-python.patch | 20 ++ ports/directx-dxc-tblgen/portfile.cmake | 119 +++++++ ports/directx-dxc-tblgen/vcpkg.json | 19 ++ ports/directx-dxc/001-fix-linkage.patch | 13 + .../directx-dxc/002-fix-gen-version-inc.patch | 47 +++ ports/directx-dxc/003-fix-python.patch | 20 ++ .../004-fix-cross-compilation.patch | 53 ++++ ports/directx-dxc/directx-dxc-config.cmake.in | 178 +++++++++-- ports/directx-dxc/portfile.cmake | 297 +++++++++++------- ports/directx-dxc/usage | 6 - ports/directx-dxc/vcpkg.json | 12 +- versions/baseline.json | 8 +- versions/d-/dawn.json | 5 + versions/d-/directx-dxc-tblgen.json | 9 + versions/d-/directx-dxc.json | 5 + 24 files changed, 855 insertions(+), 279 deletions(-) create mode 100644 ports/dawn/001-fix-linkage.patch rename ports/dawn/{001-fix-windows-build.patch => 002-fix-windows-build.patch} (100%) delete mode 100644 ports/dawn/010-fix-glslang.patch delete mode 100644 ports/dawn/011-fix-dxc.patch create mode 100755 ports/directx-dxc-tblgen/001-fix-linkage.patch create mode 100755 ports/directx-dxc-tblgen/002-fix-gen-version-inc.patch create mode 100755 ports/directx-dxc-tblgen/003-fix-python.patch create mode 100755 ports/directx-dxc-tblgen/portfile.cmake create mode 100755 ports/directx-dxc-tblgen/vcpkg.json create mode 100644 ports/directx-dxc/001-fix-linkage.patch create mode 100644 ports/directx-dxc/002-fix-gen-version-inc.patch create mode 100644 ports/directx-dxc/003-fix-python.patch create mode 100644 ports/directx-dxc/004-fix-cross-compilation.patch delete mode 100644 ports/directx-dxc/usage create mode 100644 versions/d-/directx-dxc-tblgen.json diff --git a/ports/dawn/001-fix-linkage.patch b/ports/dawn/001-fix-linkage.patch new file mode 100644 index 0000000000..42dee1c298 --- /dev/null +++ b/ports/dawn/001-fix-linkage.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9a90f5b74b..4cc61df653 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -28,6 +28,8 @@ + # As per https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md + cmake_minimum_required(VERSION 3.22) + ++set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) ++ + # - Since we are past CMake 3.12 we can add CONFIGURE_DEPENDS to DawnGenerator to rerun CMake + # in case any of the generator files changes. We should also remove the CACHE "" FORCE stuff to + # override options in third_party dependencies. diff --git a/ports/dawn/001-fix-windows-build.patch b/ports/dawn/002-fix-windows-build.patch similarity index 100% rename from ports/dawn/001-fix-windows-build.patch rename to ports/dawn/002-fix-windows-build.patch diff --git a/ports/dawn/004-deps.patch b/ports/dawn/004-deps.patch index c7ded79afd..62fe939bd7 100644 --- a/ports/dawn/004-deps.patch +++ b/ports/dawn/004-deps.patch @@ -1,19 +1,3 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 9a90f5b74b..6ca0175556 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -484,6 +484,11 @@ set(TINT_SPIRV_TOOLS_DIR ${DAWN_SPIRV_TOOLS_DIR}) - ################################################################################ - # Run on all subdirectories - ################################################################################ -+find_package(absl CONFIG REQUIRED) -+if (DAWN_ENABLE_VULKAN) -+ find_package(VulkanHeaders CONFIG REQUIRED) -+ find_package(VulkanUtilityLibraries CONFIG REQUIRED) -+endif() - add_subdirectory(third_party) - - # TODO(crbug.com/tint/455): Tint does not currently build with CMake when diff --git a/src/cmake/BundleLibraries.cmake b/src/cmake/BundleLibraries.cmake index 1ea9cfb4ee..1f971241cb 100644 --- a/src/cmake/BundleLibraries.cmake @@ -60,7 +44,7 @@ index 8bfeda55bc..a0f9858530 100644 + include ("${CMAKE_CURRENT_LIST_DIR}/DawnTargets.cmake") diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt -index 9332ff3c71..5f8da13fe0 100644 +index 9332ff3c71..ed6ca7f401 100644 --- a/src/dawn/native/CMakeLists.txt +++ b/src/dawn/native/CMakeLists.txt @@ -668,11 +668,17 @@ if (DAWN_ENABLE_SPIRV_VALIDATION) @@ -82,19 +66,37 @@ index 9332ff3c71..5f8da13fe0 100644 "--supported-extensions" "${Dawn_SOURCE_DIR}/src/dawn/native/opengl/supported_extensions.json" OUTPUT_HEADERS DAWN_NATIVE_OPENGL_AUTOGEN_HEADERS +@@ -983,7 +989,6 @@ if (DAWN_ENABLE_D3D12) + if (DAWN_USE_BUILT_DXC) + target_compile_definitions(dawn_native PRIVATE "DAWN_USE_BUILT_DXC") + target_compile_definitions(dawn_native_objects PRIVATE "DAWN_USE_BUILT_DXC") +- add_dependencies(dawn_native copy_dxil_dll) + endif() + endif() + +@@ -1084,7 +1089,7 @@ endif () + # They happen because dxcompiler is declared a shared library and bundle_libraries + # doesn't work well with shared libs + if (DAWN_USE_BUILT_DXC) +- target_link_libraries(dawn_native PRIVATE dxcompiler) ++ target_link_libraries(dawn_native PRIVATE Microsoft::DirectXShaderCompiler) + endif() + + # Copy d3dcompiler_47.dll from Windows SDK when not using system component loading diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt -index 8ff1eb05f7..d8ebe7c3e1 100644 +index 8ff1eb05f7..52e426662b 100644 --- a/third_party/CMakeLists.txt +++ b/third_party/CMakeLists.txt -@@ -41,6 +41,7 @@ if (DAWN_FETCH_DEPENDENCIES) +@@ -41,6 +41,8 @@ if (DAWN_FETCH_DEPENDENCIES) ) endif () ++find_package(absl CONFIG REQUIRED GLOBAL) +if(0) set(ABSL_ROOT_DIR ${DAWN_ABSEIL_DIR}) if (NOT TARGET absl::strings) # Recommended setting for compatibility with future abseil releases. -@@ -62,6 +63,7 @@ if (NOT TARGET absl::strings) +@@ -62,6 +64,7 @@ if (NOT TARGET absl::strings) add_subdirectory(${DAWN_ABSEIL_DIR} "${CMAKE_CURRENT_BINARY_DIR}/abseil") endif() @@ -102,7 +104,26 @@ index 8ff1eb05f7..d8ebe7c3e1 100644 if (DAWN_BUILD_PROTOBUF AND EXISTS "${DAWN_PROTOBUF_DIR}/cmake") if (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") AND WIN32) -@@ -182,10 +184,12 @@ endif() +@@ -145,6 +148,10 @@ if (NOT TARGET SPIRV-Tools AND + endif() + + if(NOT TARGET glslang AND (TINT_BUILD_GLSL_WRITER OR TINT_BUILD_GLSL_VALIDATOR) AND TINT_BUILD_CMD_TOOLS) ++ find_package(glslang CONFIG REQUIRED GLOBAL) ++ add_library(glslang ALIAS glslang::glslang) ++ add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) ++ if(0) + set(SKIP_GLSLANG_INSTALL ON CACHE BOOL "" FORCE) + set(ENABLE_OPT OFF CACHE BOOL "" FORCE) + message(STATUS "Dawn: using GLSLang at ${DAWN_GLSLANG_DIR}") +@@ -154,6 +161,7 @@ if(NOT TARGET glslang AND (TINT_BUILD_GLSL_WRITER OR TINT_BUILD_GLSL_VALIDATOR) + set(BUILD_SHARED_LIBS 0) + add_subdirectory("${DAWN_GLSLANG_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/glslang" EXCLUDE_FROM_ALL) + set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_SAVED}) ++ endif() + endif() + + if (NOT TARGET glfw AND DAWN_USE_GLFW) +@@ -182,10 +190,16 @@ endif() if (DAWN_ENABLE_DESKTOP_GL OR DAWN_ENABLE_OPENGLES) # Header-only library for khrplatform.h add_library(dawn_khronos_platform INTERFACE) @@ -113,11 +134,15 @@ index 8ff1eb05f7..d8ebe7c3e1 100644 + target_include_directories(dawn_khronos_platform INTERFACE "${EGL_REGISTRY_INCLUDE_DIRS}") endif() ++if (DAWN_ENABLE_VULKAN) ++ find_package(VulkanHeaders CONFIG REQUIRED GLOBAL) ++ find_package(VulkanUtilityLibraries CONFIG REQUIRED GLOBAL) ++endif() +if(0) if (NOT TARGET Vulkan::Headers AND DAWN_ENABLE_VULKAN) message(STATUS "Dawn: using Vulkan::Headers at ${DAWN_VULKAN_HEADERS_DIR}") -@@ -202,6 +206,7 @@ if (NOT TARGET Vulkan::UtilityHeaders AND DAWN_ENABLE_VULKAN) +@@ -202,6 +216,7 @@ if (NOT TARGET Vulkan::UtilityHeaders AND DAWN_ENABLE_VULKAN) message(STATUS "Dawn: using VulkanUtilityLibraries at ${DAWN_VULKAN_UTILITY_LIBRARIES_DIR}") add_subdirectory(${DAWN_VULKAN_UTILITY_LIBRARIES_DIR} "${CMAKE_CURRENT_BINARY_DIR}/vulkan-utility-libraries/src") endif() @@ -125,3 +150,12 @@ index 8ff1eb05f7..d8ebe7c3e1 100644 if (DAWN_ENABLE_SWIFTSHADER AND NOT TARGET vk_swiftshader) set(SWIFTSHADER_BUILD_TESTS OFF CACHE BOOL "" FORCE) +@@ -359,7 +374,7 @@ function(AddSubdirectoryDXC) + endfunction() + + if (DAWN_USE_BUILT_DXC) +- AddSubdirectoryDXC() ++ find_package(directx-dxc CONFIG REQUIRED GLOBAL) + endif() + + if (TINT_BUILD_TINTD) diff --git a/ports/dawn/010-fix-glslang.patch b/ports/dawn/010-fix-glslang.patch deleted file mode 100644 index 8dffe7fdfd..0000000000 --- a/ports/dawn/010-fix-glslang.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt -index d8ebe7c3e1..1d9cbdb5e4 100644 ---- a/third_party/CMakeLists.txt -+++ b/third_party/CMakeLists.txt -@@ -122,6 +122,12 @@ if (EMSCRIPTEN) - return() - endif() - -+if(NOT TARGET glslang AND (TINT_BUILD_GLSL_WRITER OR TINT_BUILD_GLSL_VALIDATOR) AND TINT_BUILD_CMD_TOOLS) -+ find_package(glslang CONFIG REQUIRED GLOBAL) -+ add_library(glslang ALIAS glslang::glslang) -+ add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) -+endif() -+ - # Force ENABLE_RTTI in spirv-tools and glslang. - set(ENABLE_RTTI ${DAWN_ENABLE_RTTI} CACHE BOOL "" FORCE) - diff --git a/ports/dawn/011-fix-dxc.patch b/ports/dawn/011-fix-dxc.patch deleted file mode 100644 index 9828529474..0000000000 --- a/ports/dawn/011-fix-dxc.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/src/dawn/native/CMakeLists.txt b/src/dawn/native/CMakeLists.txt -index 5f8da13fe0..ed6ca7f401 100644 ---- a/src/dawn/native/CMakeLists.txt -+++ b/src/dawn/native/CMakeLists.txt -@@ -989,7 +989,6 @@ if (DAWN_ENABLE_D3D12) - if (DAWN_USE_BUILT_DXC) - target_compile_definitions(dawn_native PRIVATE "DAWN_USE_BUILT_DXC") - target_compile_definitions(dawn_native_objects PRIVATE "DAWN_USE_BUILT_DXC") -- add_dependencies(dawn_native copy_dxil_dll) - endif() - endif() - -@@ -1090,7 +1089,7 @@ endif () - # They happen because dxcompiler is declared a shared library and bundle_libraries - # doesn't work well with shared libs - if (DAWN_USE_BUILT_DXC) -- target_link_libraries(dawn_native PRIVATE dxcompiler) -+ target_link_libraries(dawn_native PRIVATE Microsoft::DirectXShaderCompiler) - endif() - - # Copy d3dcompiler_47.dll from Windows SDK when not using system component loading -diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt -index 1d9cbdb5e4..51777b59a4 100644 ---- a/third_party/CMakeLists.txt -+++ b/third_party/CMakeLists.txt -@@ -370,7 +370,7 @@ function(AddSubdirectoryDXC) - endfunction() - - if (DAWN_USE_BUILT_DXC) -- AddSubdirectoryDXC() -+ find_package(directx-dxc CONFIG REQUIRED GLOBAL) - endif() - - if (TINT_BUILD_TINTD) diff --git a/ports/dawn/portfile.cmake b/ports/dawn/portfile.cmake index 1db2c2b825..5b6f010203 100644 --- a/ports/dawn/portfile.cmake +++ b/ports/dawn/portfile.cmake @@ -32,6 +32,7 @@ if (VCPKG_TARGET_IS_EMSCRIPTEN) return() endif() +# dawn requires specific version of directx-dxc, when update this port, please update directx-dxc as well. vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO google/dawn @@ -39,68 +40,97 @@ vcpkg_from_github( SHA512 d26d95efd20006f1949804e27c766c31a88183daf7d1c3f42022d856042ea523e1253adb8c90a365bad10a7c3e80acefbae5a3ed6d761f9754573a678283c674 HEAD_REF master PATCHES - 001-fix-windows-build.patch + # DAWN_BUILD_MONOLITHIC_LIBRARY SHARED/STATIC requires BUILD_SHARED_LIBS=OFF + 001-fix-linkage.patch + 002-fix-windows-build.patch 003-force-disable-cxx-module.patch 004-deps.patch 005-bsd-support.patch 008-wrong-dxcapi-include.patch 009-fix-tint-install.patch - 010-fix-glslang.patch - 011-fix-dxc.patch ) -function(checkout_in_path PATH URL REF) - cmake_parse_arguments(EXTERNAL "" "" "PATCHES" ${ARGN}) - if(EXISTS "${PATH}") - file(GLOB_RECURSE subdirectory_children "${CURRENT_PACKAGES_DIR}/include/${directory_child}/*") - if(NOT "${subdirectory_children}" STREQUAL "") - return() +function(z_vcpkg_from_github_to_path) + cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUT_SOURCE_PATH;REPO;REF;SHA512;HEAD_REF" "PATCHES") + if(EXISTS "${arg_OUT_SOURCE_PATH}") + file(GLOB children LIST_DIRECTORIES true "${arg_OUT_SOURCE_PATH}/*") + if(NOT "${children}" STREQUAL "") + message(FATAL_ERROR "The path ${arg_OUT_SOURCE_PATH} already exists and is not empty.") else() - file(REMOVE_RECURSE "${PATH}") + file(REMOVE_RECURSE "${arg_OUT_SOURCE_PATH}") endif() + unset(children) endif() - - vcpkg_from_git( - OUT_SOURCE_PATH DEP_SOURCE_PATH - URL "${URL}" - REF "${REF}" - PATCHES ${EXTERNAL_PATCHES} + vcpkg_from_github( + OUT_SOURCE_PATH out_source_path + REPO "${arg_REPO}" + REF "${arg_REF}" + SHA512 "${arg_SHA512}" + HEAD_REF "${arg_HEAD_REF}" + PATCHES ${arg_PATCHES} ) - file(RENAME "${DEP_SOURCE_PATH}" "${PATH}") - file(REMOVE_RECURSE "${DEP_SOURCE_PATH}") + file(RENAME "${out_source_path}" "${arg_OUT_SOURCE_PATH}") + file(REMOVE_RECURSE "${out_source_path}") endfunction() -checkout_in_path( - "${SOURCE_PATH}/third_party/jinja2" - "https://chromium.googlesource.com/chromium/src/third_party/jinja2" - "c3027d884967773057bf74b957e3fea87e5df4d7" +function(z_vcpkg_from_git_to_path) + cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUT_SOURCE_PATH;URL;REF" "PATCHES") + if(EXISTS "${arg_OUT_SOURCE_PATH}") + file(GLOB children LIST_DIRECTORIES true "${arg_OUT_SOURCE_PATH}/*") + if(NOT "${children}" STREQUAL "") + message(FATAL_ERROR "The path ${arg_OUT_SOURCE_PATH} already exists and is not empty.") + else() + file(REMOVE_RECURSE "${arg_OUT_SOURCE_PATH}") + endif() + unset(children) + endif() + vcpkg_from_git( + OUT_SOURCE_PATH out_source_path + URL "${arg_URL}" + REF "${arg_REF}" + PATCHES ${arg_PATCHES} + ) + file(RENAME "${out_source_path}" "${arg_OUT_SOURCE_PATH}") + file(REMOVE_RECURSE "${out_source_path}") +endfunction() + +z_vcpkg_from_git_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/third_party/jinja2" + URL "https://chromium.googlesource.com/chromium/src/third_party/jinja2" + REF c3027d884967773057bf74b957e3fea87e5df4d7 ) -checkout_in_path( - "${SOURCE_PATH}/third_party/markupsafe" - "https://chromium.googlesource.com/chromium/src/third_party/markupsafe" - "4256084ae14175d38a3ff7d739dca83ae49ccec6" +z_vcpkg_from_git_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/third_party/markupsafe" + URL "https://chromium.googlesource.com/chromium/src/third_party/markupsafe" + REF 4256084ae14175d38a3ff7d739dca83ae49ccec6 ) -checkout_in_path( - "${SOURCE_PATH}/third_party/spirv-headers/src" - "https://github.com/KhronosGroup/SPIRV-Headers" - "c63848ecf2200425511319fd8bf2c17b751e501e" +z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/third_party/spirv-headers/src" + REPO KhronosGroup/SPIRV-Headers + REF c63848ecf2200425511319fd8bf2c17b751e501e + SHA512 076a575a00c1cdd2e02d0b3b5805b05b3a855eef301d9d6a0f8334d9cd79b31367e69c0cb8fceea4d9398bc7a012ea3baa23259fc2c5d63f48fe4df4007f6945 + HEAD_REF main ) -checkout_in_path( - "${SOURCE_PATH}/third_party/spirv-tools/src" - "https://github.com/KhronosGroup/SPIRV-Tools" - "58fe144fdc8847b303be51d4f8fcc9e7da17056e" +z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/third_party/spirv-tools/src" + REPO KhronosGroup/SPIRV-Tools + REF 58fe144fdc8847b303be51d4f8fcc9e7da17056e + SHA512 37af62c52ff296f64e745f58a7abad16d218e0323329bb6eec36aa4abdfbca3f0806b7e3b76a7bba0dd273519ecc4ba86eba0d2c5e1103669c00aec6dfb08bd4 + HEAD_REF main PATCHES # Dawn sets SPIRV_WERROR to OFF when building SPIRV-Tools, but https://github.com/KhronosGroup/SPIRV-Tools/commit/337fdb6a284fe7f7e374a14271f8e20e579f3263 ignores that CMake variable and forces /WX 800-msvc-spirv-tools-disable-warnaserror.patch ) -checkout_in_path( - "${SOURCE_PATH}/third_party/webgpu-headers/src" - "https://github.com/webgpu-native/webgpu-headers" - "a11ef4462405c4506ad7284e5b1edeff2750bb54" +z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/third_party/webgpu-headers/src" + REPO webgpu-native/webgpu-headers + REF a11ef4462405c4506ad7284e5b1edeff2750bb54 + SHA512 54d51b3fda588d0d99c2b3b369456cc4291ab344d91a7d050e65b5ce5258263b8e39be36d9ca80d6f93e97a3d22a1468cb247800eae29e77c217e695b392faf6 + HEAD_REF main ) vcpkg_find_acquire_program(PYTHON3) @@ -126,7 +156,7 @@ vcpkg_check_features( ) set(DAWN_USE_BUILT_DXC OFF) -if(DAWN_ENABLE_D3D11 OR DAWN_ENABLE_D3D12) +if(DAWN_ENABLE_D3D12) set(DAWN_USE_BUILT_DXC ON) endif() set(DAWN_USE_TINT_SPV OFF) @@ -134,10 +164,6 @@ if(DAWN_ENABLE_VULKAN) set(DAWN_USE_TINT_SPV ON) endif() -# DAWN_BUILD_MONOLITHIC_LIBRARY SHARED/STATIC requires BUILD_SHARED_LIBS=OFF -set(VCPKG_LIBRARY_LINKAGE_BACKUP ${VCPKG_LIBRARY_LINKAGE}) -set(VCPKG_LIBRARY_LINKAGE static) - vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS @@ -162,9 +188,6 @@ vcpkg_cmake_configure( vcpkg_cmake_install() vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/Dawn) -# Restore the original library linkage -set(VCPKG_LIBRARY_LINKAGE ${VCPKG_LIBRARY_LINKAGE_BACKUP}) - list(APPEND DAWN_ABSL_REQUIRES absl_flat_hash_set absl_flat_hash_map diff --git a/ports/dawn/vcpkg.json b/ports/dawn/vcpkg.json index 499c506417..f77e6ec6a7 100644 --- a/ports/dawn/vcpkg.json +++ b/ports/dawn/vcpkg.json @@ -1,6 +1,7 @@ { "name": "dawn", "version": "20260624.223603", + "port-version": 1, "description": "Dawn is an open-source and cross-platform implementation of the WebGPU standard.", "homepage": "https://dawn.googlesource.com/dawn", "license": "BSD-3-Clause", @@ -55,10 +56,7 @@ "features": { "d3d11": { "description": "Direct3D 11 backend support", - "supports": "windows", - "dependencies": [ - "directx-dxc" - ] + "supports": "windows" }, "d3d12": { "description": "Direct3D 12 backend support", diff --git a/ports/directx-dxc-tblgen/001-fix-linkage.patch b/ports/directx-dxc-tblgen/001-fix-linkage.patch new file mode 100755 index 0000000000..f6b0d089ec --- /dev/null +++ b/ports/directx-dxc-tblgen/001-fix-linkage.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 521071800..49f35983c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,8 @@ + # See docs/CMake.html for instructions about how to build LLVM with CMake. + cmake_minimum_required(VERSION 3.17.2) # HLSL Change - Require CMake 3.17.2. + ++set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) ++ + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + diff --git a/ports/directx-dxc-tblgen/002-fix-gen-version-inc.patch b/ports/directx-dxc-tblgen/002-fix-gen-version-inc.patch new file mode 100755 index 0000000000..f639dfca55 --- /dev/null +++ b/ports/directx-dxc-tblgen/002-fix-gen-version-inc.patch @@ -0,0 +1,47 @@ +diff --git a/utils/GetCommitInfo.py b/utils/GetCommitInfo.py +index bbb4675ad..726bd53d5 100644 +--- a/utils/GetCommitInfo.py ++++ b/utils/GetCommitInfo.py +@@ -5,6 +5,7 @@ import subprocess + + + def git_get_commit_hash(): ++ return "e39cf36f5" + try: + return subprocess.check_output( + ['git', 'rev-parse', '--short=8', 'HEAD']).decode('ascii').strip() +@@ -13,6 +14,7 @@ def git_get_commit_hash(): + + + def git_get_commit_count(): ++ return 5376 + try: + return subprocess.check_output( + ['git', 'rev-list', '--count', 'HEAD']).decode('ascii').strip() +diff --git a/utils/version/gen_version.py b/utils/version/gen_version.py +index 97856d42b..6433b4f62 100644 +--- a/utils/version/gen_version.py ++++ b/utils/version/gen_version.py +@@ -40,6 +40,7 @@ def is_dirty(): + return len(diff.strip()) != 0 + + def get_last_commit_sha(): ++ return "e39cf36f5-dirty" + try: + sha = get_output_of(["git", "rev-parse", "--short", "HEAD"]) + if is_dirty(): +@@ -49,12 +50,14 @@ def get_last_commit_sha(): + return "00000000" + + def get_current_branch(): ++ return "HEAD" + try: + return get_output_of(["git", "rev-parse", "--abbrev-ref", "HEAD"]) + except subprocess.CalledProcessError: + return "private" + + def get_commit_count(sha): ++ return 5376 + try: + return get_output_of(["git", "rev-list", "--count", sha]) + except subprocess.CalledProcessError: diff --git a/ports/directx-dxc-tblgen/003-fix-python.patch b/ports/directx-dxc-tblgen/003-fix-python.patch new file mode 100755 index 0000000000..f591dee076 --- /dev/null +++ b/ports/directx-dxc-tblgen/003-fix-python.patch @@ -0,0 +1,20 @@ +diff --git a/cmake/modules/CrossCompile.cmake b/cmake/modules/CrossCompile.cmake +index 76a3078a5..5cb0aa0a6 100644 +--- a/cmake/modules/CrossCompile.cmake ++++ b/cmake/modules/CrossCompile.cmake +@@ -18,6 +18,7 @@ function(llvm_create_cross_target_internal target_name toochain buildtype) + + add_custom_command(OUTPUT ${LLVM_${target_name}_BUILD}/CMakeCache.txt + COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ++ "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" + ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} + DEPENDS ${LLVM_${target_name}_BUILD} +@@ -42,6 +43,7 @@ function(llvm_create_cross_target_internal target_name toochain buildtype) + endif() + execute_process(COMMAND ${CMAKE_COMMAND} ${build_type_flags} + -G "${CMAKE_GENERATOR}" -DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD} ++ "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" + ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} ) + endif(NOT IS_DIRECTORY ${LLVM_${target_name}_BUILD}) diff --git a/ports/directx-dxc-tblgen/portfile.cmake b/ports/directx-dxc-tblgen/portfile.cmake new file mode 100755 index 0000000000..d6569cb09c --- /dev/null +++ b/ports/directx-dxc-tblgen/portfile.cmake @@ -0,0 +1,119 @@ +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +set(VCPKG_BUILD_TYPE release) # host tool for building directx-dxc + +# Stay up to date with directx-dxc +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO microsoft/DirectXShaderCompiler + REF e39cf36f5b2a171000a3a1134dadc9f454ff54cf + SHA512 143f560ec7d8753ea1795fe7b2922823a6f1dcaf2becbd1a88b1a3fd9ce2da006072d8d1c318b834ea4b6344d3ec71d8d8f5b8870e06282fbb5352d16d7ca1cb + HEAD_REF main + PATCHES + 001-fix-linkage.patch + # Update this patch file when update version + 002-fix-gen-version-inc.patch + 003-fix-python.patch +) + +function(z_vcpkg_from_github_to_path) + cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUT_SOURCE_PATH;REPO;REF;SHA512;HEAD_REF" "PATCHES") + if(EXISTS "${arg_OUT_SOURCE_PATH}") + file(GLOB children LIST_DIRECTORIES true "${arg_OUT_SOURCE_PATH}/*") + if(NOT "${children}" STREQUAL "") + message(FATAL_ERROR "The path ${arg_OUT_SOURCE_PATH} already exists and is not empty.") + else() + file(REMOVE_RECURSE "${arg_OUT_SOURCE_PATH}") + endif() + unset(children) + endif() + vcpkg_from_github( + OUT_SOURCE_PATH out_source_path + REPO "${arg_REPO}" + REF "${arg_REF}" + SHA512 "${arg_SHA512}" + HEAD_REF "${arg_HEAD_REF}" + PATCHES ${arg_PATCHES} + ) + file(RENAME "${out_source_path}" "${arg_OUT_SOURCE_PATH}") + file(REMOVE_RECURSE "${out_source_path}") +endfunction() + +if(NOT VCPKG_TARGET_IS_WINDOWS) + z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/external/DirectX-Headers" + REPO microsoft/DirectX-Headers + REF 980971e835876dc0cde415e8f9bc646e64667bf7 + SHA512 a570068d3c25c68eba34a2653108e2019f888a7392a803f97da9a401713b14bf4235520f0adc37c2f6ffb27cfb118ca7bb0fc8e446b342a7393c9c64afd84ed8 + HEAD_REF main + ) + z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/external/SPIRV-Headers" + REPO KhronosGroup/SPIRV-Headers + REF ad9184e76a66b1001c29db9b0a3e87f646c64de0 + SHA512 7d422d2a37617bd05e050000caab431dd35aae86d0925becbe22ea22cbf4be96ecbc429f5442d3b9386026496a91f44e8d1a6867725ee60f4ea3a23d4e2ad969 + HEAD_REF main + ) + z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/external/SPIRV-Tools" + REPO KhronosGroup/SPIRV-Tools + REF 0539c81f69a3daeb706fd3477dca61435b475156 + SHA512 d620f1875c8a12201ca90af7a4a2cb53bd174ade53e898dae325095b50440b59fb6996e4bd0650c49b1ee5fcd6fbca8fd38dd5089b82030864494e95b29f7c76 + HEAD_REF main + ) +endif() + +vcpkg_find_acquire_program(PYTHON3) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + "-DPython3_EXECUTABLE=${PYTHON3}" + -DHLSL_OPTIONAL_PROJS_IN_DEFAULT=OFF + -DHLSL_ENABLE_ANALYZE=OFF + -DHLSL_OFFICIAL_BUILD=OFF + -DHLSL_ENABLE_FIXED_VER=OFF + -DHLSL_BUILD_DXILCONV=OFF + -DHLSL_INCLUDE_TESTS=OFF + -DHLSL_ENABLE_DEBUG_ITERATORS=ON + -DENABLE_SPIRV_CODEGEN=OFF + -DSPIRV_BUILD_TESTS=OFF + -DLLVM_BUILD_INSTRUMENTED_COVERAGE=OFF + -DLLVM_BUILD_RUNTIME=ON + -DLLVM_BUILD_EXAMPLES=OFF + -DLLVM_BUILD_TESTS=OFF + -DLLVM_INCLUDE_TESTS=OFF + -DLLVM_INCLUDE_DOCS=OFF + -DLLVM_INCLUDE_EXAMPLES=OFF + -DLLVM_OPTIMIZED_TABLEGEN=OFF + -DLLVM_APPEND_VC_REV=OFF + -DLLVM_ENABLE_RTTI=ON + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_TERMINFO=OFF + -DLLVM_TARGETS_TO_BUILD=None + -DLLVM_DEFAULT_TARGET_TRIPLE=dxil-ms-dx + -DCLANG_CL=OFF + -DCLANG_ENABLE_STATIC_ANALYZER=OFF + -DCLANG_ENABLE_ARCMT=OFF + -DCLANG_BUILD_EXAMPLES=OFF + -DCLANG_INCLUDE_TESTS=OFF + -DLIBCLANG_BUILD_STATIC=ON + MAYBE_UNUSED_VARIABLES + CLANG_CL +) + +vcpkg_cmake_build(TARGET "llvm-tblgen;clang-tblgen") + +set(BUILD_REL_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel") + +if(NOT EXISTS "${BUILD_REL_DIR}") + message(FATAL_ERROR "${BUILD_REL_DIR} is not exists") +endif() + +file(INSTALL + "${BUILD_REL_DIR}/bin/llvm-tblgen${VCPKG_HOST_EXECUTABLE_SUFFIX}" + "${BUILD_REL_DIR}/bin/clang-tblgen${VCPKG_HOST_EXECUTABLE_SUFFIX}" + DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" + USE_SOURCE_PERMISSIONS +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.TXT") diff --git a/ports/directx-dxc-tblgen/vcpkg.json b/ports/directx-dxc-tblgen/vcpkg.json new file mode 100755 index 0000000000..ed75ae5aaf --- /dev/null +++ b/ports/directx-dxc-tblgen/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "directx-dxc-tblgen", + "version-date": "2026-06-24", + "description": "Host tool llvm-tblgen and clang-tblgen for directx-dxc build", + "homepage": "https://github.com/microsoft/DirectXShaderCompiler", + "documentation": "https://github.com/microsoft/DirectXShaderCompiler/wiki", + "license": null, + "supports": "native & ((windows & !arm32 & !uwp & !xbox) | (linux & x64))", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-get-python-packages", + "host": true + } + ] +} diff --git a/ports/directx-dxc/001-fix-linkage.patch b/ports/directx-dxc/001-fix-linkage.patch new file mode 100644 index 0000000000..f6b0d089ec --- /dev/null +++ b/ports/directx-dxc/001-fix-linkage.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 521071800..49f35983c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,6 +1,8 @@ + # See docs/CMake.html for instructions about how to build LLVM with CMake. + cmake_minimum_required(VERSION 3.17.2) # HLSL Change - Require CMake 3.17.2. + ++set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) ++ + set(CMAKE_CXX_STANDARD 17) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + diff --git a/ports/directx-dxc/002-fix-gen-version-inc.patch b/ports/directx-dxc/002-fix-gen-version-inc.patch new file mode 100644 index 0000000000..f639dfca55 --- /dev/null +++ b/ports/directx-dxc/002-fix-gen-version-inc.patch @@ -0,0 +1,47 @@ +diff --git a/utils/GetCommitInfo.py b/utils/GetCommitInfo.py +index bbb4675ad..726bd53d5 100644 +--- a/utils/GetCommitInfo.py ++++ b/utils/GetCommitInfo.py +@@ -5,6 +5,7 @@ import subprocess + + + def git_get_commit_hash(): ++ return "e39cf36f5" + try: + return subprocess.check_output( + ['git', 'rev-parse', '--short=8', 'HEAD']).decode('ascii').strip() +@@ -13,6 +14,7 @@ def git_get_commit_hash(): + + + def git_get_commit_count(): ++ return 5376 + try: + return subprocess.check_output( + ['git', 'rev-list', '--count', 'HEAD']).decode('ascii').strip() +diff --git a/utils/version/gen_version.py b/utils/version/gen_version.py +index 97856d42b..6433b4f62 100644 +--- a/utils/version/gen_version.py ++++ b/utils/version/gen_version.py +@@ -40,6 +40,7 @@ def is_dirty(): + return len(diff.strip()) != 0 + + def get_last_commit_sha(): ++ return "e39cf36f5-dirty" + try: + sha = get_output_of(["git", "rev-parse", "--short", "HEAD"]) + if is_dirty(): +@@ -49,12 +50,14 @@ def get_last_commit_sha(): + return "00000000" + + def get_current_branch(): ++ return "HEAD" + try: + return get_output_of(["git", "rev-parse", "--abbrev-ref", "HEAD"]) + except subprocess.CalledProcessError: + return "private" + + def get_commit_count(sha): ++ return 5376 + try: + return get_output_of(["git", "rev-list", "--count", sha]) + except subprocess.CalledProcessError: diff --git a/ports/directx-dxc/003-fix-python.patch b/ports/directx-dxc/003-fix-python.patch new file mode 100644 index 0000000000..f591dee076 --- /dev/null +++ b/ports/directx-dxc/003-fix-python.patch @@ -0,0 +1,20 @@ +diff --git a/cmake/modules/CrossCompile.cmake b/cmake/modules/CrossCompile.cmake +index 76a3078a5..5cb0aa0a6 100644 +--- a/cmake/modules/CrossCompile.cmake ++++ b/cmake/modules/CrossCompile.cmake +@@ -18,6 +18,7 @@ function(llvm_create_cross_target_internal target_name toochain buildtype) + + add_custom_command(OUTPUT ${LLVM_${target_name}_BUILD}/CMakeCache.txt + COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" ++ "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" + ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} + DEPENDS ${LLVM_${target_name}_BUILD} +@@ -42,6 +43,7 @@ function(llvm_create_cross_target_internal target_name toochain buildtype) + endif() + execute_process(COMMAND ${CMAKE_COMMAND} ${build_type_flags} + -G "${CMAKE_GENERATOR}" -DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD} ++ "-DPython3_EXECUTABLE=${Python3_EXECUTABLE}" + ${CROSS_TOOLCHAIN_FLAGS_${target_name}} ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${LLVM_${target_name}_BUILD} ) + endif(NOT IS_DIRECTORY ${LLVM_${target_name}_BUILD}) diff --git a/ports/directx-dxc/004-fix-cross-compilation.patch b/ports/directx-dxc/004-fix-cross-compilation.patch new file mode 100644 index 0000000000..0d9af308ce --- /dev/null +++ b/ports/directx-dxc/004-fix-cross-compilation.patch @@ -0,0 +1,53 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 49f35983c..171ff6fef 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -627,9 +627,11 @@ include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR}) + include_directories( ${LLVM_INCLUDE_DIR}/dxc/Tracing) # HLSL Change + + # when crosscompiling import the executable targets from a file ++if(DXC_ENABLE_HOST_TOOLS) + if(LLVM_USE_HOST_TOOLS) + include(CrossCompile) + endif(LLVM_USE_HOST_TOOLS) ++endif() + + if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") + # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM +diff --git a/cmake/modules/TableGen.cmake b/cmake/modules/TableGen.cmake +index 85d720e91..2a872491a 100644 +--- a/cmake/modules/TableGen.cmake ++++ b/cmake/modules/TableGen.cmake +@@ -92,6 +92,7 @@ macro(add_tablegen target project) + set(${project}_TABLEGEN_EXE ${${project}_TABLEGEN} PARENT_SCOPE) + set(${project}_TABLEGEN_TARGET ${${project}_TABLEGEN} PARENT_SCOPE) + ++ if(DXC_ENABLE_HOST_TOOLS) + if(LLVM_USE_HOST_TOOLS) + if( ${${project}_TABLEGEN} STREQUAL "${target}" ) + if (NOT CMAKE_CONFIGURATION_TYPES) +@@ -110,6 +111,7 @@ macro(add_tablegen target project) + set(${project}_TABLEGEN_TARGET ${project}-tablegen-host PARENT_SCOPE) + endif() + endif() ++ endif() + + if( MINGW ) + if(CMAKE_SIZEOF_VOID_P MATCHES "8") +diff --git a/tools/llvm-config/CMakeLists.txt b/tools/llvm-config/CMakeLists.txt +index edbd8c950..1d2e3e658 100644 +--- a/tools/llvm-config/CMakeLists.txt ++++ b/tools/llvm-config/CMakeLists.txt +@@ -37,6 +37,7 @@ add_definitions(-DCMAKE_CFG_INTDIR="${CMAKE_CFG_INTDIR}") + # Add the dependency on the generation step. + add_file_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/llvm-config.cpp ${BUILDVARIABLES_OBJPATH}) + ++if(DXC_ENABLE_HOST_TOOLS) + if(CMAKE_CROSSCOMPILING) + set(${project}_LLVM_CONFIG_EXE "${LLVM_NATIVE_BUILD}/bin/llvm-config") + set(${project}_LLVM_CONFIG_EXE ${${project}_LLVM_CONFIG_EXE} PARENT_SCOPE) +@@ -51,3 +52,4 @@ if(CMAKE_CROSSCOMPILING) + + add_dependencies(llvm-config ${project}NativeLLVMConfig) + endif(CMAKE_CROSSCOMPILING) ++endif() diff --git a/ports/directx-dxc/directx-dxc-config.cmake.in b/ports/directx-dxc/directx-dxc-config.cmake.in index ef7fc524e8..98cf5d6877 100644 --- a/ports/directx-dxc/directx-dxc-config.cmake.in +++ b/ports/directx-dxc/directx-dxc-config.cmake.in @@ -1,28 +1,158 @@ -get_filename_component(_dxc_root "${CMAKE_CURRENT_LIST_DIR}" PATH) -get_filename_component(_dxc_root "${_dxc_root}" PATH) +get_filename_component(Z_VCPKG_DXC_ROOT "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(Z_VCPKG_DXC_ROOT "${Z_VCPKG_DXC_ROOT}" PATH) +get_filename_component(Z_VCPKG_DXC_ROOT "${Z_VCPKG_DXC_ROOT}" PATH) +if(Z_VCPKG_DXC_ROOT STREQUAL "/") + set(Z_VCPKG_DXC_ROOT "") +endif() -set(DIRECTX_DXC_TOOL "${_dxc_root}/@tool_path@" CACHE PATH "Location of the dxc tool") +find_program(DIRECTX_DXC_TOOL + NAMES dxc dxc.exe + PATHS "${Z_VCPKG_DXC_ROOT}/tools/@PORT@" + NO_DEFAULT_PATH + REQUIRED +) mark_as_advanced(DIRECTX_DXC_TOOL) -add_library(Microsoft::DirectXShaderCompiler SHARED IMPORTED) -set_target_properties(Microsoft::DirectXShaderCompiler PROPERTIES - IMPORTED_CONFIGURATIONS "Debug;Release" - IMPORTED_LOCATION_DEBUG "${_dxc_root}/@dll_debug_dir@/@dll_name_dxc@" - IMPORTED_LOCATION_RELEASE "${_dxc_root}/@dll_dir@/@dll_name_dxc@" - IMPORTED_IMPLIB "${_dxc_root}/lib/@lib_name@" - IMPORTED_SONAME "@lib_name@" - INTERFACE_INCLUDE_DIRECTORIES "${_dxc_root}/include/directx-dxc" - INTERFACE_LINK_LIBRARIES "Microsoft::DXIL" - IMPORTED_LINK_INTERFACE_LANGUAGES "C") +if(NOT TARGET Microsoft::DXIL) + add_library(Microsoft::DXIL SHARED IMPORTED) + find_library(Z_VCPKG_DXIL_LIBRARY_RELEASE + NAMES dxil + PATHS "${Z_VCPKG_DXC_ROOT}/lib" + NO_DEFAULT_PATH + REQUIRED + ) + find_library(Z_VCPKG_DXIL_LIBRARY_DEBUG + NAMES dxil + PATHS "${Z_VCPKG_DXC_ROOT}/debug/lib" + NO_DEFAULT_PATH + ) + if(@Z_VCPKG_DXC_TARGET_IS_WINDOWS@) + find_file(Z_VCPKG_DXIL_DLL_RELEASE + NAMES dxil.dll + PATHS "${Z_VCPKG_DXC_ROOT}/bin" + NO_DEFAULT_PATH + REQUIRED + ) + find_file(Z_VCPKG_DXIL_DLL_DEBUG + NAMES dxil.dll + PATHS "${Z_VCPKG_DXC_ROOT}/debug/bin" + NO_DEFAULT_PATH + ) + if(Z_VCPKG_DXIL_LIBRARY_DEBUG AND Z_VCPKG_DXIL_DLL_DEBUG) + set_target_properties(Microsoft::DXIL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Debug;Release" + IMPORTED_IMPLIB_DEBUG "${Z_VCPKG_DXIL_LIBRARY_DEBUG}" + IMPORTED_LOCATION_DEBUG "${Z_VCPKG_DXIL_DLL_DEBUG}" + IMPORTED_IMPLIB_RELEASE "${Z_VCPKG_DXIL_LIBRARY_RELEASE}" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXIL_DLL_RELEASE}" + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + else() + set_target_properties(Microsoft::DXIL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Release" + IMPORTED_IMPLIB_RELEASE "${Z_VCPKG_DXIL_LIBRARY_RELEASE}" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXIL_DLL_RELEASE}" + MAP_IMPORTED_CONFIG_DEBUG Release + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + endif() + else() + if(Z_VCPKG_DXIL_LIBRARY_DEBUG) + set_target_properties(Microsoft::DXIL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Debug;Release" + IMPORTED_LOCATION_DEBUG "${Z_VCPKG_DXIL_LIBRARY_DEBUG}" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXIL_LIBRARY_RELEASE}" + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + else() + set_target_properties(Microsoft::DXIL PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Release" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXIL_LIBRARY_RELEASE}" + MAP_IMPORTED_CONFIG_DEBUG Release + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + endif() + endif() +endif() -add_library(Microsoft::DXIL SHARED IMPORTED) -set_target_properties(Microsoft::DXIL PROPERTIES - IMPORTED_CONFIGURATIONS "Debug;Release" - IMPORTED_LOCATION_DEBUG "${_dxc_root}/@dll_debug_dir@/@dll_name_dxil@" - IMPORTED_LOCATION_RELASE "${_dxc_root}/@dll_dir@/@dll_name_dxil@" - IMPORTED_IMPLIB "${_dxc_root}/lib/@lib_name@" - IMPORTED_NO_SONAME TRUE - INTERFACE_INCLUDE_DIRECTORIES "${_dxc_root}/include/directx-dxc" - IMPORTED_LINK_INTERFACE_LANGUAGES "C") - -unset(_dxc_root) +if(NOT TARGET Microsoft::DirectXShaderCompiler) + add_library(Microsoft::DirectXShaderCompiler SHARED IMPORTED) + find_library(Z_VCPKG_DXCOMPILER_LIBRARY_RELEASE + NAMES dxcompiler + PATHS "${Z_VCPKG_DXC_ROOT}/lib" + NO_DEFAULT_PATH + REQUIRED + ) + find_library(Z_VCPKG_DXCOMPILER_LIBRARY_DEBUG + NAMES dxcompiler + PATHS "${Z_VCPKG_DXC_ROOT}/debug/lib" + NO_DEFAULT_PATH + ) + if(@Z_VCPKG_DXC_TARGET_IS_WINDOWS@) + find_file(Z_VCPKG_DXCOMPILER_DLL_RELEASE + NAMES dxcompiler.dll + PATHS "${Z_VCPKG_DXC_ROOT}/bin" + NO_DEFAULT_PATH + REQUIRED + ) + find_file(Z_VCPKG_DXCOMPILER_DLL_DEBUG + NAMES dxcompiler.dll + PATHS "${Z_VCPKG_DXC_ROOT}/debug/bin" + NO_DEFAULT_PATH + ) + if(Z_VCPKG_DXCOMPILER_LIBRARY_DEBUG AND Z_VCPKG_DXCOMPILER_DLL_DEBUG) + set_target_properties(Microsoft::DirectXShaderCompiler PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Debug;Release" + IMPORTED_IMPLIB_DEBUG "${Z_VCPKG_DXCOMPILER_LIBRARY_DEBUG}" + IMPORTED_LOCATION_DEBUG "${Z_VCPKG_DXCOMPILER_DLL_DEBUG}" + IMPORTED_IMPLIB_RELEASE "${Z_VCPKG_DXCOMPILER_LIBRARY_RELEASE}" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXCOMPILER_DLL_RELEASE}" + INTERFACE_LINK_LIBRARIES "Microsoft::DXIL" + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + else() + set_target_properties(Microsoft::DirectXShaderCompiler PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Release" + IMPORTED_IMPLIB_RELEASE "${Z_VCPKG_DXCOMPILER_LIBRARY_RELEASE}" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXCOMPILER_DLL_RELEASE}" + INTERFACE_LINK_LIBRARIES "Microsoft::DXIL" + MAP_IMPORTED_CONFIG_DEBUG Release + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + endif() + else() + if(Z_VCPKG_DXCOMPILER_LIBRARY_DEBUG) + set_target_properties(Microsoft::DirectXShaderCompiler PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Debug;Release" + IMPORTED_LOCATION_DEBUG "${Z_VCPKG_DXCOMPILER_LIBRARY_DEBUG}" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXCOMPILER_LIBRARY_RELEASE}" + INTERFACE_LINK_LIBRARIES "Microsoft::DXIL" + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + else() + set_target_properties(Microsoft::DirectXShaderCompiler PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${Z_VCPKG_DXC_ROOT}/include/dxc" + IMPORTED_CONFIGURATIONS "Release" + IMPORTED_LOCATION_RELEASE "${Z_VCPKG_DXCOMPILER_LIBRARY_RELEASE}" + INTERFACE_LINK_LIBRARIES "Microsoft::DXIL" + MAP_IMPORTED_CONFIG_DEBUG Release + MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release + MAP_IMPORTED_CONFIG_MINSIZEREL Release + ) + endif() + endif() +endif() diff --git a/ports/directx-dxc/portfile.cmake b/ports/directx-dxc/portfile.cmake index e26e46bfac..a807dfc419 100644 --- a/ports/directx-dxc/portfile.cmake +++ b/ports/directx-dxc/portfile.cmake @@ -1,133 +1,194 @@ set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) -set(DIRECTX_DXC_TAG v1.9.2602.24) -set(DIRECTX_DXC_VERSION 2026_05_27) -set(DIRECTX_DXC_VERSION_WSL 2026_05_26) +# Stay up to date with directx-dxc-tblgen +# dawn requires specific version of directx-dxc, when update this port, please check dawn's requirements +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO microsoft/DirectXShaderCompiler + REF e39cf36f5b2a171000a3a1134dadc9f454ff54cf + SHA512 143f560ec7d8753ea1795fe7b2922823a6f1dcaf2becbd1a88b1a3fd9ce2da006072d8d1c318b834ea4b6344d3ec71d8d8f5b8870e06282fbb5352d16d7ca1cb + HEAD_REF main + PATCHES + 001-fix-linkage.patch + # Update this patch file when update version + 002-fix-gen-version-inc.patch + 003-fix-python.patch + 004-fix-cross-compilation.patch +) -if (NOT VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - message(STATUS "Note: ${PORT} always requires dynamic library linkage at runtime.") -endif() - -if (VCPKG_TARGET_IS_LINUX) - vcpkg_download_distfile(ARCHIVE - URLS "https://github.com/microsoft/DirectXShaderCompiler/releases/download/${DIRECTX_DXC_TAG}/linux_dxc_${DIRECTX_DXC_VERSION_WSL}.x86_64.tar.gz" - FILENAME "linux_dxc_${DIRECTX_DXC_VERSION_WSL}.tar.gz" - SHA512 3da18b4b32899c65881276315411092fa1a076e25bbea20606bc247c5fa93c83f948785969e007115dc72afcd433ab76e54c392de6d37c11d93d8614a829e40a +function(z_vcpkg_from_github_to_path) + cmake_parse_arguments(PARSE_ARGV 0 arg "" "OUT_SOURCE_PATH;REPO;REF;SHA512;HEAD_REF" "PATCHES") + if(EXISTS "${arg_OUT_SOURCE_PATH}") + file(GLOB children LIST_DIRECTORIES true "${arg_OUT_SOURCE_PATH}/*") + if(NOT "${children}" STREQUAL "") + message(FATAL_ERROR "The path ${arg_OUT_SOURCE_PATH} already exists and is not empty.") + else() + file(REMOVE_RECURSE "${arg_OUT_SOURCE_PATH}") + endif() + unset(children) + endif() + vcpkg_from_github( + OUT_SOURCE_PATH out_source_path + REPO "${arg_REPO}" + REF "${arg_REF}" + SHA512 "${arg_SHA512}" + HEAD_REF "${arg_HEAD_REF}" + PATCHES ${arg_PATCHES} ) -else() - vcpkg_download_distfile(ARCHIVE - URLS "https://github.com/microsoft/DirectXShaderCompiler/releases/download/${DIRECTX_DXC_TAG}/dxc_${DIRECTX_DXC_VERSION}.zip" - FILENAME "dxc_${DIRECTX_DXC_VERSION}.zip" - SHA512 cf331112f1753fca68525c85bb4964714d85dbf7cb5e41af4720bbdffefdfddad1878c7a1a74898e2105dff32957a526d188d9ee3f18f0df310ec8548827a374 + file(RENAME "${out_source_path}" "${arg_OUT_SOURCE_PATH}") + file(REMOVE_RECURSE "${out_source_path}") +endfunction() + +if(NOT VCPKG_TARGET_IS_WINDOWS) + z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/external/DirectX-Headers" + REPO microsoft/DirectX-Headers + REF 980971e835876dc0cde415e8f9bc646e64667bf7 + SHA512 a570068d3c25c68eba34a2653108e2019f888a7392a803f97da9a401713b14bf4235520f0adc37c2f6ffb27cfb118ca7bb0fc8e446b342a7393c9c64afd84ed8 + HEAD_REF main + ) + z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/external/SPIRV-Headers" + REPO KhronosGroup/SPIRV-Headers + REF ad9184e76a66b1001c29db9b0a3e87f646c64de0 + SHA512 7d422d2a37617bd05e050000caab431dd35aae86d0925becbe22ea22cbf4be96ecbc429f5442d3b9386026496a91f44e8d1a6867725ee60f4ea3a23d4e2ad969 + HEAD_REF main + ) + z_vcpkg_from_github_to_path( + OUT_SOURCE_PATH "${SOURCE_PATH}/external/SPIRV-Tools" + REPO KhronosGroup/SPIRV-Tools + REF 0539c81f69a3daeb706fd3477dca61435b475156 + SHA512 d620f1875c8a12201ca90af7a4a2cb53bd174ade53e898dae325095b50440b59fb6996e4bd0650c49b1ee5fcd6fbca8fd38dd5089b82030864494e95b29f7c76 + HEAD_REF main ) endif() -vcpkg_download_distfile( - LICENSE_TXT - URLS "https://raw.githubusercontent.com/microsoft/DirectXShaderCompiler/${DIRECTX_DXC_TAG}/LICENSE.TXT" - FILENAME "LICENSE.${DIRECTX_DXC_VERSION}" - SHA512 9feaa85ca6d42d5a2d6fe773706bbab8241e78390a9d61ea9061c8f0eeb5a3e380ff07c222e02fbf61af7f2b2f6dd31c5fc87247a94dae275dc0a20cdfcc8c9d +vcpkg_find_acquire_program(PYTHON3) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DDXC_ENABLE_HOST_TOOLS=OFF + "-DLLVM_TABLEGEN=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/directx-dxc-tblgen/llvm-tblgen${VCPKG_HOST_EXECUTABLE_SUFFIX}" + "-DCLANG_TABLEGEN=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/directx-dxc-tblgen/clang-tblgen${VCPKG_HOST_EXECUTABLE_SUFFIX}" + "-DPython3_EXECUTABLE=${PYTHON3}" + -DHLSL_OPTIONAL_PROJS_IN_DEFAULT=OFF + -DHLSL_ENABLE_ANALYZE=OFF + -DHLSL_OFFICIAL_BUILD=OFF + -DHLSL_ENABLE_FIXED_VER=OFF + -DHLSL_BUILD_DXILCONV=OFF + -DHLSL_INCLUDE_TESTS=OFF + -DHLSL_ENABLE_DEBUG_ITERATORS=ON + -DENABLE_SPIRV_CODEGEN=OFF + -DSPIRV_BUILD_TESTS=OFF + -DLLVM_BUILD_INSTRUMENTED_COVERAGE=OFF + -DLLVM_BUILD_RUNTIME=ON + -DLLVM_BUILD_EXAMPLES=OFF + -DLLVM_BUILD_TESTS=OFF + -DLLVM_INCLUDE_TESTS=OFF + -DLLVM_INCLUDE_DOCS=OFF + -DLLVM_INCLUDE_EXAMPLES=OFF + -DLLVM_OPTIMIZED_TABLEGEN=OFF + -DLLVM_APPEND_VC_REV=OFF + -DLLVM_ENABLE_RTTI=ON + -DLLVM_ENABLE_EH=ON + -DLLVM_ENABLE_TERMINFO=OFF + -DLLVM_TARGETS_TO_BUILD=None + -DLLVM_DEFAULT_TARGET_TRIPLE=dxil-ms-dx + -DCLANG_CL=OFF + -DCLANG_ENABLE_STATIC_ANALYZER=OFF + -DCLANG_ENABLE_ARCMT=OFF + -DCLANG_BUILD_EXAMPLES=OFF + -DCLANG_INCLUDE_TESTS=OFF + -DLIBCLANG_BUILD_STATIC=ON + MAYBE_UNUSED_VARIABLES + CLANG_CL ) -vcpkg_extract_source_archive( - PACKAGE_PATH - ARCHIVE ${ARCHIVE} - NO_REMOVE_ONE_LEVEL -) +vcpkg_cmake_build(TARGET "dxildll;dxcompiler;dxc;dxv") -if (VCPKG_TARGET_IS_LINUX) - file(INSTALL - "${PACKAGE_PATH}/include/dxc/dxcapi.h" - "${PACKAGE_PATH}/include/dxc/dxcerrors.h" - "${PACKAGE_PATH}/include/dxc/dxcisense.h" - "${PACKAGE_PATH}/include/dxc/WinAdapter.h" - DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}") +set(BUILD_DBG_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg") +set(BUILD_REL_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel") - file(INSTALL - "${PACKAGE_PATH}/lib/libdxcompiler.so" - "${PACKAGE_PATH}/lib/libdxil.so" - DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - - if(NOT DEFINED VCPKG_BUILD_TYPE) - file(INSTALL - "${PACKAGE_PATH}/lib/libdxcompiler.so" - "${PACKAGE_PATH}/lib/libdxil.so" - DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - endif() - - file(INSTALL - "${PACKAGE_PATH}/bin/dxc" - DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/" - FILE_PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE) - - set(dll_name_dxc "libdxcompiler.so") - set(dll_name_dxil "libdxil.so") - set(dll_dir "lib") - if(NOT DEFINED VCPKG_BUILD_TYPE) - set(dll_debug_dir "debug/lib") - else() - set(dll_debug_dir "lib") - endif() - set(lib_name "libdxcompiler.so") - set(tool_path "tools/${PORT}/dxc") -else() - # VCPKG_TARGET_IS_WINDOWS - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(DXC_ARCH arm64) - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(DXC_ARCH x86) - else() - set(DXC_ARCH x64) - endif() - - file(INSTALL - "${PACKAGE_PATH}/inc/dxcapi.h" - "${PACKAGE_PATH}/inc/dxcerrors.h" - "${PACKAGE_PATH}/inc/dxcisense.h" - "${PACKAGE_PATH}/inc/d3d12shader.h" - DESTINATION "${CURRENT_PACKAGES_DIR}/include/${PORT}") - - file(INSTALL "${PACKAGE_PATH}/lib/${DXC_ARCH}/dxcompiler.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/lib") - if(NOT DEFINED VCPKG_BUILD_TYPE) - file(INSTALL "${PACKAGE_PATH}/lib/${DXC_ARCH}/dxcompiler.lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib") - endif() - - file(INSTALL - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxcompiler.dll" - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxil.dll" - DESTINATION "${CURRENT_PACKAGES_DIR}/bin") - - if(NOT DEFINED VCPKG_BUILD_TYPE) - file(INSTALL - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxcompiler.dll" - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxil.dll" - DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") - endif() - - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/${PORT}/") - - file(INSTALL - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxc.exe" - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxcompiler.dll" - "${PACKAGE_PATH}/bin/${DXC_ARCH}/dxil.dll" - DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}/") - - set(dll_name_dxc "dxcompiler.dll") - set(dll_name_dxil "dxil.dll") - set(dll_dir "bin") - set(dll_debug_dir "bin") - set(lib_name "dxcompiler.lib") - set(tool_path "tools/${PORT}/dxc.exe") +if(NOT EXISTS "${BUILD_REL_DIR}") + message(FATAL_ERROR "${BUILD_REL_DIR} is not exists") endif() -vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}") +file(INSTALL + "${SOURCE_PATH}/include/dxc/dxcapi.h" + "${SOURCE_PATH}/include/dxc/dxcerrors.h" + "${SOURCE_PATH}/include/dxc/dxcisense.h" + "${SOURCE_PATH}/include/dxc/dxcpix.h" + DESTINATION "${CURRENT_PACKAGES_DIR}/include/dxc" +) +if(VCPKG_TARGET_IS_WINDOWS) + set(Z_VCPKG_DXC_TARGET_IS_WINDOWS ON) -configure_file("${CMAKE_CURRENT_LIST_DIR}/directx-dxc-config.cmake.in" - "${CURRENT_PACKAGES_DIR}/share/${PORT}/${PORT}-config.cmake" - @ONLY) + if(EXISTS "${BUILD_DBG_DIR}") + file(INSTALL + "${BUILD_DBG_DIR}/bin/dxil.dll" + "${BUILD_DBG_DIR}/bin/dxil.pdb" + "${BUILD_DBG_DIR}/bin/dxcompiler.dll" + "${BUILD_DBG_DIR}/bin/dxcompiler.pdb" + DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin" + ) + file(INSTALL + "${BUILD_DBG_DIR}/lib/dxil.lib" + "${BUILD_DBG_DIR}/lib/dxcompiler.lib" + DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib" + ) + endif() -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") -vcpkg_install_copyright(FILE_LIST "${LICENSE_TXT}") + file(INSTALL + "${BUILD_REL_DIR}/bin/dxil.dll" + "${BUILD_REL_DIR}/bin/dxil.pdb" + "${BUILD_REL_DIR}/bin/dxcompiler.dll" + "${BUILD_REL_DIR}/bin/dxcompiler.pdb" + DESTINATION "${CURRENT_PACKAGES_DIR}/bin" + ) + file(INSTALL + "${BUILD_REL_DIR}/lib/dxil.lib" + "${BUILD_REL_DIR}/lib/dxcompiler.lib" + DESTINATION "${CURRENT_PACKAGES_DIR}/lib" + ) + + file(INSTALL + "${BUILD_REL_DIR}/bin/dxil.dll" + "${BUILD_REL_DIR}/bin/dxcompiler.dll" + "${BUILD_REL_DIR}/bin/dxc.exe" + "${BUILD_REL_DIR}/bin/dxv.exe" + DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}" + ) +else() + set(Z_VCPKG_DXC_TARGET_IS_WINDOWS OFF) + + file(INSTALL + "${SOURCE_PATH}/include/dxc/WinAdapter.h" + DESTINATION "${CURRENT_PACKAGES_DIR}/include/dxc" + ) + + if(EXISTS "${BUILD_DBG_DIR}") + file(INSTALL + "${BUILD_DBG_DIR}/lib/libdxil.so" + "${BUILD_DBG_DIR}/lib/libdxcompiler.so" + DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib" + ) + endif() + + file(INSTALL + "${BUILD_REL_DIR}/lib/libdxil.so" + "${BUILD_REL_DIR}/lib/libdxcompiler.so" + DESTINATION "${CURRENT_PACKAGES_DIR}/lib" + ) + + file(INSTALL + "${BUILD_REL_DIR}/bin/dxc" + "${BUILD_REL_DIR}/bin/dxv" + DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}" + USE_SOURCE_PERMISSIONS + ) +endif() + +configure_file("${CMAKE_CURRENT_LIST_DIR}/directx-dxc-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/directx-dxc-config.cmake" @ONLY) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.TXT") diff --git a/ports/directx-dxc/usage b/ports/directx-dxc/usage deleted file mode 100644 index 2b919ee321..0000000000 --- a/ports/directx-dxc/usage +++ /dev/null @@ -1,6 +0,0 @@ -The DirectX Shader Compiler package provides CMake targets: - - find_package(directx-dxc CONFIG REQUIRED) - target_link_libraries(main PRIVATE Microsoft::DirectXShaderCompiler) - -The CMake variable DIRECTX_DXC_TOOL is also set to point to the appropriate DXC command-line tool. diff --git a/ports/directx-dxc/vcpkg.json b/ports/directx-dxc/vcpkg.json index 2bfe8f9b59..7c4b2b786e 100644 --- a/ports/directx-dxc/vcpkg.json +++ b/ports/directx-dxc/vcpkg.json @@ -1,23 +1,23 @@ { "name": "directx-dxc", - "version-date": "2026-05-27", + "version-date": "2026-06-24", "description": "DirectX Shader Compiler (LLVM/Clang)", "homepage": "https://github.com/microsoft/DirectXShaderCompiler", "documentation": "https://github.com/microsoft/DirectXShaderCompiler/wiki", "license": null, "supports": "(windows & !arm32 & !uwp & !xbox) | (linux & x64)", "dependencies": [ + { + "name": "directx-dxc-tblgen", + "host": true + }, { "name": "vcpkg-cmake", "host": true }, { - "name": "vcpkg-cmake-config", + "name": "vcpkg-get-python-packages", "host": true - }, - { - "name": "zlib", - "platform": "linux & !static" } ] } diff --git a/versions/baseline.json b/versions/baseline.json index ffc9f3eda7..ef0296d045 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2430,7 +2430,7 @@ }, "dawn": { "baseline": "20260624.223603", - "port-version": 0 + "port-version": 1 }, "daxa": { "baseline": "3.3.1", @@ -2513,7 +2513,11 @@ "port-version": 0 }, "directx-dxc": { - "baseline": "2026-05-27", + "baseline": "2026-06-24", + "port-version": 0 + }, + "directx-dxc-tblgen": { + "baseline": "2026-06-24", "port-version": 0 }, "directx-headers": { diff --git a/versions/d-/dawn.json b/versions/d-/dawn.json index 7319cc6ffe..0a676ba6d3 100644 --- a/versions/d-/dawn.json +++ b/versions/d-/dawn.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "efdbc0fe07c33f198d9f1f1a914749eb15389fb7", + "version": "20260624.223603", + "port-version": 1 + }, { "git-tree": "674181babc69b624fec7a64ce61f46fb11ecada3", "version": "20260624.223603", diff --git a/versions/d-/directx-dxc-tblgen.json b/versions/d-/directx-dxc-tblgen.json new file mode 100644 index 0000000000..b66f74dd59 --- /dev/null +++ b/versions/d-/directx-dxc-tblgen.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "cada08e80cc77cc15de5515bf4e3429b1d588b35", + "version-date": "2026-06-24", + "port-version": 0 + } + ] +} diff --git a/versions/d-/directx-dxc.json b/versions/d-/directx-dxc.json index d474a39050..f6525e22a9 100644 --- a/versions/d-/directx-dxc.json +++ b/versions/d-/directx-dxc.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "eb44fc70e424469759405d7ecc0681c0050dd0c6", + "version-date": "2026-06-24", + "port-version": 0 + }, { "git-tree": "9755705e5026eecae165fcb535c00ba89e027cd6", "version-date": "2026-05-27",