From 867ec7fbab9d36c8eb0c11ba633bce37a325a13a Mon Sep 17 00:00:00 2001 From: Luke Street Date: Fri, 10 Jul 2026 09:42:25 -0600 Subject: [PATCH] Forward WebGPU exports through Dusklight --- cmake/ModSDK.cmake | 3 --- cmake/SymbolManifest.cmake | 2 +- cmake/WindowsExports.cmake | 11 +++++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/cmake/ModSDK.cmake b/cmake/ModSDK.cmake index b7241e1e22..d08a2ae221 100644 --- a/cmake/ModSDK.cmake +++ b/cmake/ModSDK.cmake @@ -64,9 +64,6 @@ function(add_mod target_name) WINDOWS_EXPORT_ALL_SYMBOLS OFF) target_compile_features(${target_name} PRIVATE cxx_std_20) target_link_libraries(${target_name} PRIVATE dusklight_game_headers) - if (WIN32 AND TARGET dawn::webgpu_dawn) - target_link_libraries(${target_name} PRIVATE dawn::webgpu_dawn) - endif () if (NOT TARGET dusklight) # Apply global compile options for out-of-tree mod builds diff --git a/cmake/SymbolManifest.cmake b/cmake/SymbolManifest.cmake index ffaae9177e..927040a47f 100644 --- a/cmake/SymbolManifest.cmake +++ b/cmake/SymbolManifest.cmake @@ -2,7 +2,7 @@ include_guard(GLOBAL) get_filename_component(_SYMBOL_MANIFEST_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY) -set(_SYMGEN_VERSION "1.1.0") +set(_SYMGEN_VERSION "1.1.1") set(_SYMGEN_RELEASE_BASE_URL "https://github.com/encounter/symgen/releases/download/v${_SYMGEN_VERSION}") set(SYMGEN_PATH "" CACHE FILEPATH "Path to a symgen executable; empty downloads the pinned release") mark_as_advanced(SYMGEN_PATH) diff --git a/cmake/WindowsExports.cmake b/cmake/WindowsExports.cmake index 86dc9414f2..3010c82f25 100644 --- a/cmake/WindowsExports.cmake +++ b/cmake/WindowsExports.cmake @@ -37,6 +37,16 @@ function(setup_windows_exports target) endif () endforeach () + set(_forward_args) + if (TARGET dawn::webgpu_dawn) + get_target_property(_dawn_type dawn::webgpu_dawn TYPE) + if (_dawn_type STREQUAL "SHARED_LIBRARY") + list(APPEND _forward_args + --forward-dll "$" + --forward-sym-prefix wgpu) + endif () + endif () + # Generate curated exports list from the main binary set(_def "${CMAKE_BINARY_DIR}/${_config_subdir}dusklight_exports.def") add_custom_command(TARGET ${target} PRE_LINK @@ -50,6 +60,7 @@ function(setup_windows_exports target) --exclude asan_options --max-exports 58000 ${_sdk_args} + ${_forward_args} COMMENT "Generating dusklight exports" VERBATIM) target_link_options(${target} PRIVATE "/DEF:${_def}")