Each library domain (kernel, device, client, protocol, csv, xkeyboard-config) now owns a build.zig + build.zig.zon that wires and exports its modules, with a standalone `zig build test` per domain. The kernel package also exports abi (source stays in system/abi.zig) so every consumer names one module instance. The root build swaps its createModule calls for b.dependency(...).module(...) — no binary moves; the root is the pilot consumer (docs/build-packages-plan.md). Path dependencies deduplicate by resolved location, so the diamond (root -> device -> kernel, root -> kernel) yields a single instance of each module. Boot-image file list unchanged.
21 lines
763 B
Zig
21 lines
763 B
Zig
//! The "csv" library domain: shared CSV helpers (comment stripping, field
|
|
//! iteration) for the /etc/*.csv config files — the device registry and the
|
|
//! init service list both parse them.
|
|
|
|
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
_ = b.addModule("csv", .{ .root_source_file = b.path("csv.zig") });
|
|
|
|
// Standalone `zig build test` for this domain alone; the root build keeps
|
|
// its aggregate test step.
|
|
const test_step = b.step("test", "Run the csv unit tests");
|
|
const csv_tests = b.addTest(.{
|
|
.root_module = b.createModule(.{
|
|
.root_source_file = b.path("csv.zig"),
|
|
.target = b.resolveTargetQuery(.{}),
|
|
}),
|
|
});
|
|
test_step.dependOn(&b.addRunArtifact(csv_tests).step);
|
|
}
|