This repository has been archived on 2024-07-06 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
main
All checks were successful
Test / test_cross (push) Successful in 8m47s
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
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
CCandCCXenv 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.yamlbinding.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();
Description
Languages
TypeScript
87%
JavaScript
8.3%
Dockerfile
2.6%
C++
2.1%