diff --git a/build.zig b/build.zig index dca57d3..730c093 100644 --- a/build.zig +++ b/build.zig @@ -1,26 +1,49 @@ const std = @import("std"); +const Module = std.Build.Module; +const Target = std.Build.ResolvedTarget; +const OptimizeMode = std.builtin.OptimizeMode; + pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); - const io_mod = b.addModule("ourio", .{ - .root_source_file = b.path("src/main.zig"), + const ourio_mod = b.addModule("ourio", .{ + .root_source_file = b.path("src/ourio.zig"), .target = target, .optimize = optimize, }); - const tls_dep = b.dependency("tls", .{ .target = target, .optimize = optimize }); - io_mod.addImport("tls", tls_dep.module("tls")); - const lib_unit_tests = b.addTest(.{ .root_module = io_mod }); + const stda_mod = setupStdaMod(b, target, optimize, ourio_mod); + + const ourio_tests = b.addTest(.{ .root_module = ourio_mod }); + const stda_tests = b.addTest(.{ .root_module = stda_mod }); - const run_lib_unit_tests = b.addRunArtifact(lib_unit_tests); - run_lib_unit_tests.skip_foreign_checks = true; - b.installArtifact(lib_unit_tests); + const run_ourio_tests = b.addRunArtifact(ourio_tests); + const run_stda_tests = b.addRunArtifact(stda_tests); + run_ourio_tests.skip_foreign_checks = true; + b.installArtifact(ourio_tests); - const test_step = b.step("test", "Run unit tests"); - test_step.dependOn(&run_lib_unit_tests.step); + const test_step = b.step("test", "Run all unit tests"); + test_step.dependOn(&run_ourio_tests.step); + test_step.dependOn(&run_stda_tests.step); + + const test_ourio_step = b.step("test-ourio", "Run ourio unit tests"); + test_ourio_step.dependOn(&run_ourio_tests.step); const install_step = b.getInstallStep(); install_step.dependOn(test_step); } + +pub fn setupStdaMod(b: *std.Build, target: Target, optimize: OptimizeMode, ourio: *Module) *Module { + const stda_mod = b.addModule("stda", .{ + .root_source_file = b.path("src/stda.zig"), + .target = target, + .optimize = optimize, + }); + const tls_dep = b.dependency("tls", .{ .target = target, .optimize = optimize }); + stda_mod.addImport("tls", tls_dep.module("tls")); + stda_mod.addImport("ourio", ourio); + + return stda_mod; +} diff --git a/src/main.zig b/src/ourio.zig similarity index 98% rename from src/main.zig rename to src/ourio.zig index 68ef2b9..05fdc63 100644 --- a/src/main.zig +++ b/src/ourio.zig @@ -2,8 +2,8 @@ const std = @import("std"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; -pub const Mock = @import("Mock.zig"); -const Queue = @import("queue.zig").Intrusive; +pub const Mock = @import("ourio/Mock.zig"); +const Queue = @import("ourio/queue.zig").Intrusive; const io = @This(); const posix = std.posix; @@ -23,7 +23,7 @@ pub const has_kqueue = switch (builtin.os.tag) { }; pub const has_io_uring = builtin.os.tag == .linux; -pub const Task = @import("Task.zig"); +pub const Task = @import("ourio/Task.zig"); pub const Callback = *const fn (*Ring, Task) anyerror!void; pub fn noopCallback(_: *Ring, _: Task) anyerror!void {} @@ -63,9 +63,9 @@ pub const Backend = union(enum) { .tvos, .visionos, .watchos, - => @import("Kqueue.zig"), + => @import("ourio/Kqueue.zig"), - .linux => @import("Uring.zig"), + .linux => @import("ourio/Uring.zig"), else => @compileError("unsupported os"), }, @@ -601,14 +601,11 @@ pub const RecvError = ResultError || error{ }; test { - _ = @import("net.zig"); - _ = @import("queue.zig"); - _ = @import("tls.zig"); + _ = @import("ourio/Mock.zig"); + _ = @import("ourio/queue.zig"); - _ = @import("Mock.zig"); - - if (has_io_uring) _ = @import("Uring.zig"); - if (has_kqueue) _ = @import("Kqueue.zig"); + if (has_io_uring) _ = @import("ourio/Uring.zig"); + if (has_kqueue) _ = @import("ourio/Kqueue.zig"); } /// Foo is only for testing diff --git a/src/Kqueue.zig b/src/ourio/Kqueue.zig similarity index 99% rename from src/Kqueue.zig rename to src/ourio/Kqueue.zig index 88192a6..36a1e07 100644 --- a/src/Kqueue.zig +++ b/src/ourio/Kqueue.zig @@ -3,7 +3,7 @@ const Kqueue = @This(); const std = @import("std"); const builtin = @import("builtin"); -const io = @import("main.zig"); +const io = @import("../ourio.zig"); const Allocator = std.mem.Allocator; const EV = std.c.EV; diff --git a/src/Mock.zig b/src/ourio/Mock.zig similarity index 99% rename from src/Mock.zig rename to src/ourio/Mock.zig index 909def3..0eb0f5a 100644 --- a/src/Mock.zig +++ b/src/ourio/Mock.zig @@ -2,7 +2,7 @@ const Mock = @This(); const std = @import("std"); -const io = @import("main.zig"); +const io = @import("../ourio.zig"); const Allocator = std.mem.Allocator; const Queue = @import("queue.zig").Intrusive; diff --git a/src/Task.zig b/src/ourio/Task.zig similarity index 97% rename from src/Task.zig rename to src/ourio/Task.zig index 7dc2d3c..2f0efc9 100644 --- a/src/Task.zig +++ b/src/ourio/Task.zig @@ -1,7 +1,7 @@ const Task = @This(); const std = @import("std"); -const io = @import("main.zig"); +const io = @import("../ourio.zig"); const Allocator = std.mem.Allocator; const Ring = io.Ring; diff --git a/src/Uring.zig b/src/ourio/Uring.zig similarity index 99% rename from src/Uring.zig rename to src/ourio/Uring.zig index f86ffc1..c2f1649 100644 --- a/src/Uring.zig +++ b/src/ourio/Uring.zig @@ -3,7 +3,7 @@ const Uring = @This(); const std = @import("std"); const builtin = @import("builtin"); -const io = @import("main.zig"); +const io = @import("../ourio.zig"); const Allocator = std.mem.Allocator; const Queue = @import("queue.zig").Intrusive; diff --git a/src/queue.zig b/src/ourio/queue.zig similarity index 100% rename from src/queue.zig rename to src/ourio/queue.zig diff --git a/src/stda.zig b/src/stda.zig new file mode 100644 index 0000000..f38707d --- /dev/null +++ b/src/stda.zig @@ -0,0 +1,7 @@ +pub const net = @import("stda/net.zig"); +pub const tls = @import("stda/tls.zig"); + +test { + _ = net; + _ = tls; +} diff --git a/src/net.zig b/src/stda/net.zig similarity index 99% rename from src/net.zig rename to src/stda/net.zig index ae635eb..4e18423 100644 --- a/src/net.zig +++ b/src/stda/net.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const io = @import("main.zig"); +const io = @import("ourio"); const posix = std.posix; const Allocator = std.mem.Allocator; diff --git a/src/tls.zig b/src/stda/tls.zig similarity index 99% rename from src/tls.zig rename to src/stda/tls.zig index 700ad19..7bdfa10 100644 --- a/src/tls.zig +++ b/src/stda/tls.zig @@ -1,6 +1,6 @@ const std = @import("std"); const tls = @import("tls"); -const io = @import("main.zig"); +const io = @import("ourio"); const Allocator = std.mem.Allocator; const CertBundle = tls.config.cert.Bundle;