This repository has been archived on 2024-07-06. You can view files and clone it, but cannot push or open issues or pull requests.
Matheus Sampaio Queiroga ddb91ced6c
All checks were successful
Test / test_cross (push) Successful in 8m47s
patch
Signed-off-by: Matheus Sampaio Queiroga <srherobrine20@gmail.com>
2024-05-11 14:33:00 -03:00
2024-03-17 22:54:11 -03:00
2024-03-20 12:04:03 -03:00
2024-05-11 14:33:00 -03:00
2024-03-19 23:46:16 -03:00
2024-03-18 14:07:45 -03:00
2024-03-20 12:04:03 -03:00
2024-02-09 07:53:09 -03:00
2024-03-20 23:30:24 -03:00
2024-02-24 17:59:43 -03:00
2024-03-19 23:46:16 -03:00
2024-02-13 12:37:52 -03:00

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 and CCX 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();
Description
Make node add-ons easy, than one file, many builds and targets.
Readme MIT 248 KiB
Languages
TypeScript 87%
JavaScript 8.3%
Dockerfile 2.6%
C++ 2.1%