From df55a95f80791c6749989823537e016541e4d27d Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 15 Nov 2022 18:17:16 -0500 Subject: [PATCH 01/16] Replace CMAKE_SOURCE_DIR with PROJECT_SOURCE_DIR Bug: 1596 Change-Id: I62285bb912e79323b7bb3fcdaea9ff64b1a4a1b9 --- src/dawn/node/CMakeLists.txt | 2 +- src/dawn/node/binding/CMakeLists.txt | 2 +- src/dawn/node/interop/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dawn/node/CMakeLists.txt b/src/dawn/node/CMakeLists.txt index 8c7cdb65549..ac2a8e304d7 100644 --- a/src/dawn/node/CMakeLists.txt +++ b/src/dawn/node/CMakeLists.txt @@ -72,7 +72,7 @@ set_target_properties(dawn_node PROPERTIES ) target_link_libraries(dawn_node dawn_node_binding dawn_node_interop dawn_native dawncpp dawn_proc) target_include_directories(dawn_node PRIVATE - "${CMAKE_SOURCE_DIR}" + "${PROJECT_SOURCE_DIR}" "${DAWN_THIRD_PARTY_DIR}" "${NODE_API_HEADERS_DIR}/include" "${DAWN_NODE_GEN_DIR}" diff --git a/src/dawn/node/binding/CMakeLists.txt b/src/dawn/node/binding/CMakeLists.txt index cd3fb36db19..7907ae7d724 100644 --- a/src/dawn/node/binding/CMakeLists.txt +++ b/src/dawn/node/binding/CMakeLists.txt @@ -70,7 +70,7 @@ common_compile_options(dawn_node_binding) target_include_directories(dawn_node_binding PRIVATE - "${CMAKE_SOURCE_DIR}" + "${PROJECT_SOURCE_DIR}" "${DAWN_THIRD_PARTY_DIR}" "${NODE_API_HEADERS_DIR}/include" "${DAWN_NODE_GEN_DIR}" diff --git a/src/dawn/node/interop/CMakeLists.txt b/src/dawn/node/interop/CMakeLists.txt index f7742435533..ca5d4b656dc 100644 --- a/src/dawn/node/interop/CMakeLists.txt +++ b/src/dawn/node/interop/CMakeLists.txt @@ -51,7 +51,7 @@ common_compile_options(dawn_node_interop) target_include_directories(dawn_node_interop PRIVATE - "${CMAKE_SOURCE_DIR}" + "${PROJECT_SOURCE_DIR}" "${DAWN_THIRD_PARTY_DIR}" "${NODE_API_HEADERS_DIR}/include" "${DAWN_NODE_GEN_DIR}" From 1b300bf23432b2f4540f6ae6396325f71031195b Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 22 Nov 2022 00:53:34 -0500 Subject: [PATCH 02/16] Vector::Clear: disable "maybe initialized" warning --- src/tint/utils/vector.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tint/utils/vector.h b/src/tint/utils/vector.h index 705817a8c47..193695a8623 100644 --- a/src/tint/utils/vector.h +++ b/src/tint/utils/vector.h @@ -26,6 +26,7 @@ #include "src/tint/castable.h" #include "src/tint/traits.h" #include "src/tint/utils/bitcast.h" +#include "src/tint/utils/compiler_macros.h" namespace tint::utils { @@ -378,10 +379,12 @@ class Vector { /// Clears all elements from the vector, keeping the capacity the same. void Clear() { + TINT_BEGIN_DISABLE_WARNING(MAYBE_UNINITIALIZED); for (size_t i = 0; i < impl_.slice.len; i++) { impl_.slice.data[i].~T(); } impl_.slice.len = 0; + TINT_END_DISABLE_WARNING(MAYBE_UNINITIALIZED); } /// Appends a new element to the vector. From 7c849331aacc9aabc4f535db11b04df64a81361d Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 22 Nov 2022 00:54:31 -0500 Subject: [PATCH 03/16] Remove unknown no-documentation-unknown-command --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c7d0e02a4db..5be9b06ed47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -523,7 +523,6 @@ function(tint_default_compile_options TARGET) -Wall -Werror -Wextra - -Wno-documentation-unknown-command -Wno-padded -Wno-switch-enum -Wno-unknown-pragmas From 3f4c2cea5646674eb161d58a5b3bb3b4c6de1e59 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Tue, 22 Nov 2022 11:08:39 -0500 Subject: [PATCH 04/16] Revert "Remove unknown no-documentation-unknown-command" This reverts commit 7c849331aacc9aabc4f535db11b04df64a81361d. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5be9b06ed47..c7d0e02a4db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -523,6 +523,7 @@ function(tint_default_compile_options TARGET) -Wall -Werror -Wextra + -Wno-documentation-unknown-command -Wno-padded -Wno-switch-enum -Wno-unknown-pragmas From 6ea88601825c1f138badc3022536a29e44cd575e Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Mon, 5 Dec 2022 17:55:50 -0500 Subject: [PATCH 05/16] .gitignore: add .gclient_previous_custom_vars --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index bb0834ef274..563775bdc29 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /.cipd /.gclient /.gclient_entries +/.gclient_previous_custom_vars /.gclient_previous_sync_commits /build /buildtools From 3caf2eee5c44f2c33f67e41ee6e2b62d1f5850b1 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Mon, 5 Dec 2022 18:05:00 -0500 Subject: [PATCH 06/16] Fix unused-but-set-parameter warning --- src/tint/castable.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/tint/castable.h b/src/tint/castable.h index fe820e15dd0..86f11c2db1b 100644 --- a/src/tint/castable.h +++ b/src/tint/castable.h @@ -573,14 +573,12 @@ constexpr int IndexOfDefaultCase() { /// then the case handler is called. /// @returns true if a case handler was found, otherwise false. template -inline bool NonDefaultCases(T* object, +inline bool NonDefaultCases([[maybe_unused]] T* object, const TypeInfo* type, - RETURN_TYPE* result, + [[maybe_unused]] RETURN_TYPE* result, std::tuple&& cases) { using Cases = std::tuple; - (void)result; // Not always used, avoid warning. - static constexpr bool kHasReturnType = !std::is_same_v; static constexpr size_t kNumCases = sizeof...(CASES); From 606b08b48c89c44e74bca9728c39c60d632ee78e Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Mon, 12 Dec 2022 15:00:20 -0500 Subject: [PATCH 07/16] Fix -Werror=unused-but-set-variable --- src/tint/resolver/const_eval.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tint/resolver/const_eval.cc b/src/tint/resolver/const_eval.cc index ce38b1d8066..ddcb1e03a05 100644 --- a/src/tint/resolver/const_eval.cc +++ b/src/tint/resolver/const_eval.cc @@ -1962,7 +1962,7 @@ ConstEval::Result ConstEval::OpShiftRight(const sem::Type* ty, const UT e1u = static_cast(e1); const UT e2u = static_cast(e2); - auto signed_shift_right = [&] { + [[maybe_unused]] auto signed_shift_right = [&] { // In C++, right shift of a signed negative number is implementation-defined. // Although most implementations sign-extend, we do it manually to ensure it works // correctly on all implementations. From d33e860dcbb95f07d1988bda7655e8833ee7e549 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Mon, 9 Jan 2023 21:24:08 -0500 Subject: [PATCH 08/16] Fix NAPI_SYMBOL name substitution in message --- src/dawn/node/NapiSymbols.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dawn/node/NapiSymbols.cpp b/src/dawn/node/NapiSymbols.cpp index 01a184f03bd..212f8a72897 100644 --- a/src/dawn/node/NapiSymbols.cpp +++ b/src/dawn/node/NapiSymbols.cpp @@ -28,7 +28,7 @@ #define NAPI_SYMBOL(NAME) \ __attribute__((weak)) void NAME() { \ UNREACHABLE( \ - "#NAME is a weak stub, and should have been runtime replaced by the node " \ + #NAME " is a weak stub, and should have been runtime replaced by the node "\ "implementation"); \ } From ff440e3bbbe529c3ec4921d9c7badac8aec5b9bb Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Fri, 27 Jan 2023 01:41:39 -0500 Subject: [PATCH 09/16] Export Initialize function --- src/dawn/node/Module.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dawn/node/Module.cpp b/src/dawn/node/Module.cpp index d8acf00b2c8..9f4b70f2912 100644 --- a/src/dawn/node/Module.cpp +++ b/src/dawn/node/Module.cpp @@ -55,7 +55,7 @@ Napi::Value CreateGPU(const Napi::CallbackInfo& info) { // Initialize() initializes the Dawn node module, registering all the WebGPU // types into the global object, and adding the 'create' function on the exported // object. -Napi::Object Initialize(Napi::Env env, Napi::Object exports) { +NAPI_MODULE_EXPORT Napi::Object Initialize(Napi::Env env, Napi::Object exports) { // Initialize Tint tint::Initialize(); From 19fbe22d6161606fa7141a86dc49a35f5d2a65b2 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Fri, 27 Jan 2023 02:02:03 -0500 Subject: [PATCH 10/16] dawn_node: set archive output directory Build import library to same directory as shared library. --- src/dawn/node/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dawn/node/CMakeLists.txt b/src/dawn/node/CMakeLists.txt index 854c3975d2e..f94c849096f 100644 --- a/src/dawn/node/CMakeLists.txt +++ b/src/dawn/node/CMakeLists.txt @@ -66,6 +66,7 @@ set_target_properties(dawn_node PROPERTIES PREFIX "" OUTPUT_NAME "dawn" SUFFIX ".node" + ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}" RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}" LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}" CXX_STANDARD 17 From 7e09ba794c99e31a90cd8c2df74986fb7cd5a158 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Thu, 2 Feb 2023 20:03:30 -0500 Subject: [PATCH 11/16] Temporarily disable weak Node-API symbols --- src/dawn/node/NapiSymbols.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dawn/node/NapiSymbols.cpp b/src/dawn/node/NapiSymbols.cpp index 212f8a72897..af8b7e915d7 100644 --- a/src/dawn/node/NapiSymbols.cpp +++ b/src/dawn/node/NapiSymbols.cpp @@ -25,12 +25,16 @@ #error "NapiSymbols.cpp is not used on Windows" #endif +#if 0 #define NAPI_SYMBOL(NAME) \ __attribute__((weak)) void NAME() { \ UNREACHABLE( \ #NAME " is a weak stub, and should have been runtime replaced by the node "\ "implementation"); \ } +#else +#define NAPI_SYMBOL(NAME) +#endif extern "C" { // List of Napi symbols generated from the node_api_headers/symbols.js file From eb569c76356b2fafbec78acaac41fd0ceaf08037 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Thu, 2 Feb 2023 21:19:26 -0500 Subject: [PATCH 12/16] Re-enable NAPI_SYMBOL on Clang --- src/dawn/node/NapiSymbols.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dawn/node/NapiSymbols.cpp b/src/dawn/node/NapiSymbols.cpp index af8b7e915d7..a4b8b91f2f2 100644 --- a/src/dawn/node/NapiSymbols.cpp +++ b/src/dawn/node/NapiSymbols.cpp @@ -25,7 +25,7 @@ #error "NapiSymbols.cpp is not used on Windows" #endif -#if 0 +#ifdef __clang__ #define NAPI_SYMBOL(NAME) \ __attribute__((weak)) void NAME() { \ UNREACHABLE( \ From 860d17dfdfcd4448709fbf2eea8af1628bb637cc Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Sat, 11 Feb 2023 22:47:15 -0500 Subject: [PATCH 13/16] Windows: make NAPI library name configurable --- src/dawn/node/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/dawn/node/CMakeLists.txt b/src/dawn/node/CMakeLists.txt index f94c849096f..ae3a0132886 100644 --- a/src/dawn/node/CMakeLists.txt +++ b/src/dawn/node/CMakeLists.txt @@ -93,12 +93,16 @@ file(READ "${NODE_API_HEADERS_DIR}/symbols.js" NAPI_SYMBOLS_JS_CONTENT) string(REGEX MATCHALL "napi_[a-z0-9_]*" NAPI_SYMBOLS "${NAPI_SYMBOLS_JS_CONTENT}") if (WIN32) + set(NODE_API_BINARY_FILE "node.exe" CACHE STRING + "The name of the file in which to find the Node-API symbols." + ) + # Generate the NapiSymbols.def file from the Napi symbol list set(NAPI_SYMBOLS_DEF "${DAWN_NODE_GEN_DIR}/NapiSymbols.def") list(TRANSFORM NAPI_SYMBOLS PREPEND " ") list(TRANSFORM NAPI_SYMBOLS APPEND "\n") string(REPLACE ";" "" NAPI_SYMBOLS "${NAPI_SYMBOLS}") - string(PREPEND NAPI_SYMBOLS "LIBRARY node.exe\nEXPORTS\n") + string(PREPEND NAPI_SYMBOLS "LIBRARY ${NODE_API_BINARY_FILE}\nEXPORTS\n") file(GENERATE OUTPUT "${NAPI_SYMBOLS_DEF}" CONTENT "${NAPI_SYMBOLS}") # Generate the NapiSymbols.lib from the NapiSymbols.def file set(NAPI_SYMBOLS_LIB "${DAWN_NODE_GEN_DIR}/NapiSymbols.lib") From 385809b15e5331eb540fa13222763d2f97b01407 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Wed, 1 Mar 2023 19:11:20 -0500 Subject: [PATCH 14/16] Disable psabi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Specifying -Wno-psabi suppresses the warning: parameter passing for argument of type ‘...’ when C++17 is enabled changed to match C++14 in GCC 10.1 This only indicates a potential ABI change and does not indicate that anything is actually wrong in the build. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index fe16422e250..ea6f59fc84b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -315,6 +315,7 @@ function(common_compile_options TARGET) target_compile_options(${TARGET} PRIVATE -fno-exceptions -fno-rtti + -Wno-psabi ) if (${DAWN_ENABLE_MSAN}) From 9100a1c143f591995eef7e4d6dfc11be88e6cbb3 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Mon, 24 Jul 2023 22:02:32 -0400 Subject: [PATCH 15/16] Restore NAPI_SYMBOL on all non-Windows platforms DCP-3504 (DCP-3325) --- src/dawn/node/NapiSymbols.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/dawn/node/NapiSymbols.cpp b/src/dawn/node/NapiSymbols.cpp index a4b8b91f2f2..212f8a72897 100644 --- a/src/dawn/node/NapiSymbols.cpp +++ b/src/dawn/node/NapiSymbols.cpp @@ -25,16 +25,12 @@ #error "NapiSymbols.cpp is not used on Windows" #endif -#ifdef __clang__ #define NAPI_SYMBOL(NAME) \ __attribute__((weak)) void NAME() { \ UNREACHABLE( \ #NAME " is a weak stub, and should have been runtime replaced by the node "\ "implementation"); \ } -#else -#define NAPI_SYMBOL(NAME) -#endif extern "C" { // List of Napi symbols generated from the node_api_headers/symbols.js file From abb2727f71811ab0c03a3dd26d3df8147c0e0698 Mon Sep 17 00:00:00 2001 From: Jason Erb Date: Wed, 26 Jul 2023 15:52:21 -0400 Subject: [PATCH 16/16] Revert "Restore NAPI_SYMBOL on all non-Windows platforms" This reverts commit 9100a1c143f591995eef7e4d6dfc11be88e6cbb3. --- src/dawn/node/NapiSymbols.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dawn/node/NapiSymbols.cpp b/src/dawn/node/NapiSymbols.cpp index 212f8a72897..a4b8b91f2f2 100644 --- a/src/dawn/node/NapiSymbols.cpp +++ b/src/dawn/node/NapiSymbols.cpp @@ -25,12 +25,16 @@ #error "NapiSymbols.cpp is not used on Windows" #endif +#ifdef __clang__ #define NAPI_SYMBOL(NAME) \ __attribute__((weak)) void NAME() { \ UNREACHABLE( \ #NAME " is a weak stub, and should have been runtime replaced by the node "\ "implementation"); \ } +#else +#define NAPI_SYMBOL(NAME) +#endif extern "C" { // List of Napi symbols generated from the node_api_headers/symbols.js file