A SpaceTraders Agent
1const std = @import("std");
2const Build = std.Build;
3
4pub fn build(b: *Build) void {
5 const target = b.standardTargetOptions(.{});
6 const optimize = b.standardOptimizeOption(.{});
7
8 const options = b.addOptions();
9
10 const known_folders = b.dependency("known_folders", .{}).module("known-folders");
11
12 const meta = b.createModule(.{
13 .root_source_file = b.path("src/meta/root.zig"),
14 .target = target,
15 .optimize = optimize,
16 });
17
18 const st = b.addModule("st", .{
19 .root_source_file = b.path("src/st/root.zig"),
20 .target = target,
21 .optimize = optimize,
22 .imports = &.{
23 .{ .name = "meta", .module = meta },
24 },
25 });
26
27 const agent = b.addModule("agent", .{
28 .root_source_file = b.path("src/agent/root.zig"),
29 .target = target,
30 .optimize = optimize,
31 .imports = &.{
32 .{ .name = "known-folders", .module = known_folders },
33 // Modules
34 .{ .name = "st", .module = st },
35 .{ .name = "meta", .module = meta },
36 },
37 });
38
39 const space = b.createModule(.{
40 .root_source_file = b.path("src/main.zig"),
41 .target = target,
42 .optimize = optimize,
43 .imports = &.{
44 .{ .name = "known-folders", .module = known_folders },
45 // Modules
46 .{ .name = "st", .module = st },
47 .{ .name = "agent", .module = agent },
48 .{ .name = "meta", .module = meta },
49 },
50 });
51
52 space.addOptions("build-options", options);
53
54 const exe = b.addExecutable(.{
55 .root_module = space,
56 .name = "space",
57 });
58 b.installArtifact(exe);
59
60 const run_cmd = b.addRunArtifact(exe);
61 run_cmd.step.dependOn(b.getInstallStep());
62
63 if (b.args) |args| run_cmd.addArgs(args);
64
65 const run_step = b.step("run", "Run the app");
66 run_step.dependOn(&run_cmd.step);
67
68 const test_step = b.step("test", "Run tests");
69 addTest(b, test_step, "meta tests", meta);
70 addTest(b, test_step, "st tests", st);
71 addTest(b, test_step, "agent tests", agent);
72}
73
74fn addTest(b: *Build, step: *Build.Step, name: []const u8, root_module: *Build.Module) void {
75 const t = b.addTest(.{
76 .name = name,
77 .root_module = root_module,
78 });
79 const run_test = b.addRunArtifact(t);
80 step.dependOn(&run_test.step);
81}