[directx-dxc] Build from source [dawn] Revise port (#52689)

This commit is contained in:
Weihang Ding 2026-07-09 06:27:27 +08:00 committed by GitHub
parent 7341989f0b
commit a979ee2394
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 855 additions and 279 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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",

View File

@ -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)

View File

@ -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:

View File

@ -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})

View File

@ -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")

View File

@ -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
}
]
}

View File

@ -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)

View File

@ -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:

View File

@ -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})

View File

@ -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()

View File

@ -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()

View File

@ -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")

View File

@ -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.

View File

@ -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"
}
]
}

View File

@ -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": {

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "efdbc0fe07c33f198d9f1f1a914749eb15389fb7",
"version": "20260624.223603",
"port-version": 1
},
{
"git-tree": "674181babc69b624fec7a64ce61f46fb11ecada3",
"version": "20260624.223603",

View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "cada08e80cc77cc15de5515bf4e3429b1d588b35",
"version-date": "2026-06-24",
"port-version": 0
}
]
}

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "eb44fc70e424469759405d7ecc0681c0050dd0c6",
"version-date": "2026-06-24",
"port-version": 0
},
{
"git-tree": "9755705e5026eecae165fcb535c00ba89e027cd6",
"version-date": "2026-05-27",