1const std = @import("std");
2const deps = @import("./deps.zig");
3
4pub fn build(b: *std.Build) void {
5 const target = b.standardTargetOptions(.{});
6 const mode = b.option(std.builtin.OptimizeMode, "mode", "") orelse .Debug;
7 const disable_llvm = b.option(bool, "disable_llvm", "use the non-llvm zig codegen") orelse false;
8
9 const gen_step = b.step("generate", "");
10 const gen_cmd = b.addSystemCommand(&.{ "bun", "./generate.ts" });
11 const gen_out = gen_cmd.addOutputFileArg("test.zig");
12 const gen_install = b.addInstallFile(gen_out, "test.zig");
13 gen_cmd.setCwd(b.path("."));
14 gen_cmd.addFileInput(b.path("generate.ts"));
15 gen_step.dependOn(&gen_install.step);
16
17 const tests = b.addTest(.{
18 .root_module = b.createModule(.{
19 .root_source_file = b.path("test.zig"),
20 .target = target,
21 .optimize = mode,
22 }),
23 });
24 deps.addAllTo(tests);
25 tests.root_module.link_libc = true;
26 tests.use_llvm = !disable_llvm;
27 tests.use_lld = !disable_llvm;
28 b.getInstallStep().dependOn(&tests.step);
29
30 const test_step = b.step("test", "Run all library tests");
31 const tests_run = b.addRunArtifact(tests);
32 tests_run.setCwd(b.path("."));
33 tests_run.has_side_effects = true;
34 test_step.dependOn(&tests_run.step);
35}