mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-06-26 16:33:33 +00:00
Generate exported node symbols via a generated .lib file, and link against this, so the linker knows these are declared by node.exe. Bug: dawn:1123 Change-Id: Id8c9c5de6bf5e6b925f26e2a1dbb85dd1e40668c Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/65565 Commit-Queue: Ben Clayton <bclayton@google.com> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
39 lines
1.7 KiB
C++
39 lines
1.7 KiB
C++
// Copyright 2021 The Dawn Authors
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
#include "src/dawn_node/utils/Debug.h"
|
|
|
|
// To reduce the build dependencies for compiling the dawn.node targets, we do
|
|
// not use cmake-js for building, but instead just depend on node_api_headers.
|
|
// As the name suggests, node_api_headers contains just the *headers* of Napi,
|
|
// and does not provide a library to link against.
|
|
// Fortunately node_api_headers provides a list of Napi symbols exported by Node,
|
|
// which we can use to produce weak-symbol stubs.
|
|
|
|
#ifdef _WIN32
|
|
# error "NapiSymbols.cpp is not used on Windows"
|
|
#endif
|
|
|
|
#define NAPI_SYMBOL(NAME) \
|
|
__attribute__((weak)) void NAME() { \
|
|
UNREACHABLE( \
|
|
"#NAME is a weak stub, and should have been runtime replaced by the node " \
|
|
"implementation"); \
|
|
}
|
|
|
|
extern "C" {
|
|
// List of Napi symbols generated from the node_api_headers/symbols.js file
|
|
#include "NapiSymbols.h"
|
|
}
|