Skip to content

Commit a874e2d

Browse files
committed
feat: allow building test binaries separatly
Signed-off-by: Robert Günzler <[email protected]>
1 parent 52502e6 commit a874e2d

File tree

2 files changed

+48
-24
lines changed

2 files changed

+48
-24
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"main": "dist/api.js",
1919
"scripts": {
2020
"build": "zx ./scripts/build.mjs",
21+
"build:test": "zx ./scripts/build.mjs --target=test",
2122
"clean": "rimraf ./build",
2223
"format": "npm run format:cpp && npm run format:js",
2324
"format:cpp": "clang-format -style=chromium -i postject-api.h src/**.cpp test/**.c test/**.cpp",

scripts/build.mjs

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env zx
22

3+
let target = argv.target;
34
let jobs = argv.jobs;
45

56
if (!jobs) {
@@ -15,34 +16,56 @@ if (!jobs) {
1516
}
1617
}
1718

18-
try {
19-
await which("emcmake");
20-
} catch {
21-
console.log("ERROR: Couldn't find `emcmake`, is emsdk installed?");
22-
process.exit(1);
23-
}
19+
async function build() {
20+
try {
21+
await which("emcmake");
22+
} catch {
23+
console.log("ERROR: Couldn't find `emcmake`, is emsdk installed?");
24+
process.exit(1);
25+
}
26+
27+
// Create build folder if needed
28+
if (!(await fs.exists("./build"))) {
29+
await $`mkdir ./build`;
30+
}
31+
32+
cd("build");
2433

25-
// Create build folder if needed
26-
if (!(await fs.exists("./build"))) {
27-
await $`mkdir build`;
34+
// Build with emsdk
35+
await $`emcmake cmake -G Ninja ..`;
36+
await $`cmake --build . -j ${jobs}`;
37+
38+
// Bundle api.js and copy artifacts to dist
39+
await fs.copy("../src/api.js", "api.js");
40+
await $`esbuild api.js --bundle --platform=node --outfile=../dist/api.js`;
41+
await fs.copy("../src/cli.js", "../dist/cli.js");
42+
await fs.copy("../postject-api.h", "../dist/postject-api.h");
43+
44+
cd("..");
2845
}
29-
cd("build");
3046

31-
// Build with emsdk
32-
await $`emcmake cmake -G Ninja ..`;
33-
await $`cmake --build . -j ${jobs}`;
47+
async function test() {
48+
// Create build folder if needed
49+
if (!(await fs.exists("./build/test"))) {
50+
await $`mkdir -p ./build/test`;
51+
}
3452

35-
// Bundle api.js and copy artifacts to dist
36-
await fs.copy("../src/api.js", "api.js");
37-
await $`esbuild api.js --bundle --platform=node --outfile=../dist/api.js`;
38-
await fs.copy("../src/cli.js", "../dist/cli.js");
39-
await fs.copy("../postject-api.h", "../dist/postject-api.h");
53+
cd("build/test");
4054

41-
// Build tests
42-
if (!(await fs.exists("./test"))) {
43-
await $`mkdir test`;
55+
await $`cmake ../../test`;
56+
await $`cmake --build .`;
57+
58+
cd("../..");
4459
}
4560

46-
cd("test");
47-
await $`cmake ../../test`;
48-
await $`cmake --build .`;
61+
switch (target) {
62+
case "build":
63+
await build();
64+
break;
65+
case "test":
66+
await test();
67+
break;
68+
default:
69+
await build();
70+
await test();
71+
}

0 commit comments

Comments
 (0)