| // 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" | |
| } |