Skip to content

Commit 1d3d8f1

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

File tree

2 files changed

+44
-24
lines changed

2 files changed

+44
-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/main.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: 43 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,52 @@ 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+
}
2431

25-
// Create build folder if needed
26-
if (!(await fs.exists("./build"))) {
27-
await $`mkdir build`;
32+
cd("build");
33+
34+
// Build with emsdk
35+
await $`emcmake cmake -G Ninja ..`;
36+
await $`cmake --build . -j ${jobs}`;
37+
38+
// Copy artifacts to dist
39+
await fs.copy("postject.wasm", "../dist/postject.wasm");
40+
await fs.copy("postject.js", "../dist/postject.js");
41+
await fs.copy("../src/main.js", "../dist/main.js");
42+
await fs.copy("../postject-api.h", "../dist/postject-api.h");
2843
}
29-
cd("build");
3044

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

35-
// Copy artifacts to dist
36-
await fs.copy("postject.wasm", "../dist/postject.wasm");
37-
await fs.copy("postject.js", "../dist/postject.js");
38-
await fs.copy("../src/main.js", "../dist/main.js");
39-
await fs.copy("../postject-api.h", "../dist/postject-api.h");
51+
cd("build/test");
4052

41-
// Build tests
42-
if (!(await fs.exists("./test"))) {
43-
await $`mkdir test`;
53+
await $`cmake ../../test`;
54+
await $`cmake --build .`;
4455
}
4556

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

0 commit comments

Comments
 (0)