From 5f24c4a2284a0af84fb9d116f7a39f6a58e42ae9 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Mon, 14 Sep 2026 14:10:28 -0300 Subject: Implement base 9P2000 sessions, shared transports, and conformance probes --- build.zig | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 build.zig (limited to 'build.zig') diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..160efdf --- /dev/null +++ b/build.zig @@ -0,0 +1,74 @@ +const std = @import("std"); +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const module = b.addModule("cloud9", .{ + .root_source_file = b.path("src/root.zig"), + .target = target, + .optimize = optimize, + }); + const tests = b.addTest(.{ .root_module = module }); + b.step("test", "Run protocol and session tests").dependOn(&b.addRunArtifact(tests).step); + const probe = b.addExecutable(.{ + .name = "cloud9-probe", + .root_module = b.createModule(.{ + .root_source_file = b.path("test/differential/probe.zig"), + .target = target, + .optimize = optimize, + .link_libc = true, + .imports = &.{.{ .name = "cloud9", .module = module }}, + }), + }); + b.installArtifact(probe); + const session_probe = b.addExecutable(.{ + .name = "cloud9-session-probe", + .root_module = b.createModule(.{ + .root_source_file = b.path("test/differential/session.zig"), + .target = target, + .optimize = optimize, + .link_libc = true, + .imports = &.{.{ .name = "cloud9", .module = module }}, + }), + }); + + const diff = b.addSystemCommand(&.{ "go", "run", "." }); + diff.setCwd(b.path("test/differential")); + diff.addArg("--probe"); + diff.addArtifactArg(probe); + diff.addArg("--session-probe"); + diff.addArtifactArg(session_probe); + if (b.args) |args| diff.addArgs(args); + b.step("differential", "Compare valid traffic with pinned 9fans and go9p").dependOn(&diff.step); + const transport_tests = b.addTest(.{ .root_module = b.createModule(.{ + .root_source_file = b.path("test/transport.zig"), + .target = target, + .optimize = optimize, + .link_libc = true, + .imports = &.{.{ .name = "cloud9", .module = module }}, + }) }); + b.step("transport-test", "Test TCP, Unix and std.Io adapters").dependOn(&b.addRunArtifact(transport_tests).step); + if (b.option(bool, "quic", "Test QUIC with system OpenSSL 3.6+") orelse false) { + const header = b.addWriteFiles().add("openssl.h", "#include \n#include \n#include \n"); + const translated = b.addTranslateC(.{ .root_source_file = header, .target = target, .optimize = optimize, .link_libc = true }); + const ssl = translated.createModule(); + const tests_quic = b.addTest(.{ .root_module = b.createModule(.{ + .root_source_file = b.path("test/quic.zig"), + .target = target, + .optimize = optimize, + .link_libc = true, + .imports = &.{ .{ .name = "cloud9", .module = module }, .{ .name = "openssl", .module = ssl } }, + }) }); + tests_quic.root_module.linkSystemLibrary("ssl", .{}); + tests_quic.root_module.linkSystemLibrary("crypto", .{}); + b.step("quic-test", "Test optional QUIC transport").dependOn(&b.addRunArtifact(tests_quic).step); + } + const fuzz = b.addExecutable(.{ .name = "cloud9-fuzz", .root_module = b.createModule(.{ + .root_source_file = b.path("test/fuzz.zig"), + .target = target, + .optimize = optimize, + .imports = &.{.{ .name = "cloud9", .module = module }}, + }) }); + const run_fuzz = b.addRunArtifact(fuzz); + if (b.args) |args| run_fuzz.addArgs(args); + b.step("fuzz", "Run deterministic local decoder and server probes (seed, iterations)").dependOn(&run_fuzz.step); +} -- cgit v1.3