An asynchronous IO runtime
1const std = @import("std");
2
3const Module = std.Build.Module;
4const Target = std.Build.ResolvedTarget;
5const OptimizeMode = std.builtin.OptimizeMode;
6
7pub fn build(b: *std.Build) void {
8 const target = b.standardTargetOptions(.{});
9 const optimize = b.standardOptimizeOption(.{});
10
11 const ourio_mod = b.addModule("ourio", .{
12 .root_source_file = b.path("src/ourio.zig"),
13 .target = target,
14 .optimize = optimize,
15 });
16
17 const stda_mod = setupStdaMod(b, target, optimize, ourio_mod);
18
19 const ourio_tests = b.addTest(.{ .root_module = ourio_mod });
20 const stda_tests = b.addTest(.{ .root_module = stda_mod });
21
22 const run_ourio_tests = b.addRunArtifact(ourio_tests);
23 const run_stda_tests = b.addRunArtifact(stda_tests);
24 run_ourio_tests.skip_foreign_checks = true;
25 b.installArtifact(ourio_tests);
26
27 const test_step = b.step("test", "Run all unit tests");
28 test_step.dependOn(&run_ourio_tests.step);
29 test_step.dependOn(&run_stda_tests.step);
30
31 const test_ourio_step = b.step("test-ourio", "Run ourio unit tests");
32 test_ourio_step.dependOn(&run_ourio_tests.step);
33
34 const install_step = b.getInstallStep();
35 install_step.dependOn(test_step);
36}
37
38pub fn setupStdaMod(b: *std.Build, target: Target, optimize: OptimizeMode, ourio: *Module) *Module {
39 const stda_mod = b.addModule("stda", .{
40 .root_source_file = b.path("src/stda.zig"),
41 .target = target,
42 .optimize = optimize,
43 });
44 stda_mod.addImport("ourio", ourio);
45
46 const tls_dep = b.dependency("tls", .{ .target = target, .optimize = optimize });
47 stda_mod.addImport("tls", tls_dep.module("tls"));
48
49 return stda_mod;
50}