-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.zig
65 lines (47 loc) · 1.83 KB
/
build.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
const std = @import("std");
pub fn build(b: *std.Build) void {
const panic_module = b.addModule("panic", .{
.root_source_file = b.path("native/panic.zig"),
});
const tools_module = b.addModule("tools", .{
.root_source_file = b.path("native/tools/tools.zig"),
});
const registry_module = b.addModule("registry", .{
.root_source_file = b.path("native/solutions/registry.zig"),
});
registry_module.addImport("tools", tools_module);
const wasm = b.addExecutable(.{
.name = "advent-of-zig",
.root_source_file = b.path("native/wasm/main.zig"),
.optimize = .ReleaseSafe,
.target = b.resolveTargetQuery(.{ .cpu_arch = .wasm32, .os_tag = .freestanding }),
});
wasm.entry = .disabled;
wasm.rdynamic = true;
wasm.root_module.addImport("panic", panic_module);
wasm.root_module.addImport("registry", registry_module);
b.installArtifact(wasm);
const cli = b.addExecutable(.{
.name = "advent-of-zig",
.root_source_file = b.path("native/cli/main.zig"),
.optimize = .ReleaseSafe,
.target = b.host,
});
cli.root_module.addImport("panic", panic_module);
cli.root_module.addImport("registry", registry_module);
b.installArtifact(cli);
const run_cmd = b.addRunArtifact(cli);
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
const unit_tests = b.addTest(.{
.root_source_file = b.path("native/solutions/solutions.zig"),
});
unit_tests.root_module.addImport("tools", tools_module);
const run_unit_tests = b.addRunArtifact(unit_tests);
const test_step = b.step("test", "Run unit tests");
test_step.dependOn(&run_unit_tests.step);
}