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..17a35f1c70 100644 --- a/ports/dawn/portfile.cmake +++ b/ports/dawn/portfile.cmake @@ -2,7 +2,7 @@ if (VCPKG_TARGET_IS_EMSCRIPTEN) vcpkg_download_distfile(ARCHIVE URLS "https://github.com/google/dawn/releases/download/v${VERSION}/emdawnwebgpu_pkg-v${VERSION}.zip" FILENAME "emdawnwebgpu_pkg-v${VERSION}.zip" - SHA512 615257384ad7df17174c5733c17d8ac0473dfdcddeac69e334d7109501954dc42e77ed54deb666bf44581fcf8e69c2365311626786cd267e52a3d48d7a9441c5 + SHA512 d83240bb4d1076ff0a690b195e684046eaaae907a67359ed0a623b9d0176a2ed0b8b4982c5ee61c152c1d615de3290a32a7fd5dee68347d061273fe2dd0caf85 ) vcpkg_extract_source_archive( SOURCE_PATH @@ -36,71 +36,100 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO google/dawn REF "v${VERSION}" - SHA512 d26d95efd20006f1949804e27c766c31a88183daf7d1c3f42022d856042ea523e1253adb8c90a365bad10a7c3e80acefbae5a3ed6d761f9754573a678283c674 + SHA512 af6667a13a5532fd29f32255b8f607f0c629f0789ed66c331fc136660a3aea876563b64436ab8c2d6efb0572acc4e36b1c3302405dd380c7afbe9ba1c483d9cd 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 29981f65241605e08b0ede4cfeb999fe3b723c6a + SHA512 3f64c33196ff72c0376311206a38100dbcedd4a414431a1429b5b5b6dcfc9d0e204629444b414b011b426d3f8263cdc2b03ed1d1eed427039b3c57bfd20aa514 + 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 85f222ec591863853ea603ce190ea508c7255568 + SHA512 3a034ee4c2b433ba377feaea14edfaeb49b52ebd81a48c7a248d484b2e376b43db16eaea47c2411136867865645efdd0836c08147d0147271fdd5f14cc140ed2 + 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 b3f67b89929c133403fd95638be4ef96b56ddca0 + SHA512 bd64b9989970f589e1f4ad2ed94cc6180f0549ef19d97a04a5f1e9c7564bd27f8b72fd6d7fe8bd24ed62f4ea2bc2d1c9df12eb55c083696159890638cbcc7af8 + HEAD_REF main ) vcpkg_find_acquire_program(PYTHON3) @@ -126,7 +155,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 +163,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 +187,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..7a5bc2b888 100644 --- a/ports/dawn/vcpkg.json +++ b/ports/dawn/vcpkg.json @@ -1,6 +1,6 @@ { "name": "dawn", - "version": "20260624.223603", + "version": "20260714.215939", "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 +55,7 @@ "features": { "d3d11": { "description": "Direct3D 11 backend support", - "supports": "windows", - "dependencies": [ - "directx-dxc" - ] + "supports": "windows" }, "d3d12": { "description": "Direct3D 12 backend support", diff --git a/versions/baseline.json b/versions/baseline.json index 9152690394..c4a8b469b2 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2433,7 +2433,7 @@ "port-version": 0 }, "dawn": { - "baseline": "20260624.223603", + "baseline": "20260714.215939", "port-version": 0 }, "daxa": { diff --git a/versions/d-/dawn.json b/versions/d-/dawn.json index 0a676ba6d3..53180e7aab 100644 --- a/versions/d-/dawn.json +++ b/versions/d-/dawn.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "7d0383eda09e0e597b0a720364905f5e45cd23b9", + "version": "20260714.215939", + "port-version": 0 + }, { "git-tree": "efdbc0fe07c33f198d9f1f1a914749eb15389fb7", "version": "20260624.223603",