rebory
v0.2.10
Published
Make node add-ons easy, than one file, many builds and targets.
Downloads
8
Maintainers
Readme
Rebory
Making Node addons dynamic and more eficiente config to build.
[!NOTE]
To do cross-compiler check if the compiler for the architecture exists, if not we will try to use
zig
[!WARNING]
CC
andCCX
env dont includes ANY arguments, only command, for includes more argurments in compiler, set in config file!
Static Config
command find in workdir
one of this files:
binding.yaml
binding.yml
or set with -c
/ --config
argument.
config file is YAML
with configs to addon:
name: addon
sources:
- g.c
- main.cpp
includes:
- node_modules/node-addon-api
- ./
name: addon
sources:
- g.c
- main.cpp
---
name: addon2
sources:
- g.c
- main.cpp
includes:
- node_modules/node-addon-api
- ./
target:
linux:
flags:
- -fPIC
macos:
flags:
- -fPIC
x86_64-linux-gnu:
release: true
aarch64-linux-gnu:
release: true
x86_64-macos:
release: true
aarch64-macos:
release: true
x86_64-windows:
release: true
aarch64-windows:
release: true
Dynamic build
Example:
import builderClass from "rebory";
const builder = new Builder({name: "addon"});
builder.sources.push("./test.cpp");
if (process.platform === "win32") {
builder.sources.push("./test-win32.cpp");
builder.librarys.push(
"bcrypt.lib",
"crypt32.lib",
"iphlpapi.lib",
"kernel32.lib",
"ntdll.lib",
"ws2_32.lib",
"setupapi.lib"
);
} else if (process.platform === "linux" || process.platform === "android") {
builder.sources.push("./test-linux.cpp");
builder.defines.push("LINUX_ENABLED=1");
if (process.arch === "x64") builder.defines.push("LINUX_KERNEL_X64");
else if (process.arch === "arm64") builder.defines.push("LINUX_KERNEL_AARCH64");
} else {
builder.sources.push("./test-dummy.cpp");
}
await builder.run();