From 8f4d51d28c3fa0ef4a4f1247367e671206254537 Mon Sep 17 00:00:00 2001 From: Francesco Cozzuto Date: Sat, 28 Mar 2026 15:40:32 +0100 Subject: [PATCH] Add build.zig --- build.zig | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 build.zig diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..fe547d4 --- /dev/null +++ b/build.zig @@ -0,0 +1,85 @@ +const std = @import("std"); + +const include_paths: []const []const u8 = &.{ + ".", + "src", + "include", + "quakey/include", +}; + +const files: []const []const u8 = &.{ + + "src/chunk_store.c", + "src/client.c", + "src/client_table.c", + "src/http_proxy.c", + "src/invariant_checker.c", + "src/log.c", + "src/main.c", + "src/metadata.c", + "src/random_client.c", + "src/server.c", + + "lib/basic.c", + "lib/byte_queue.c", + "lib/file_system.c", + "lib/http_parse.c", + "lib/http_server.c", + "lib/message.c", + "lib/tcp.c", + "lib/tls_openssl.c", + "lib/tls_schannel.c", + + "quakey/src/mockfs.c", + "quakey/src/quakey.c", +}; + +fn buildTarget(b: *std.Build, name: []const u8, macros: []const []const u8, flags: []const []const u8) void { + const exe = b.addExecutable(.{ + .name = name, + .root_module = b.createModule(.{ + .target = b.graph.host, + }), + }); + for (macros) |m| { + exe.root_module.addCMacro(m, ""); + } + for (include_paths) |p| { + exe.root_module.addIncludePath(b.path(p)); + } + exe.root_module.addCSourceFiles(.{ .files = files, .flags = flags }); + exe.root_module.link_libc = true; + + b.installArtifact(exe); +} + +pub fn build(b: *std.Build) !void { + + // Server + buildTarget(b, + "toasty", + &.{ "MAIN_SERVER" }, + &.{ "-Wall", "-Wextra", "-ggdb", "-O0" }, + ); + + // Client + buildTarget(b, + "toasty_random_client", + &.{ "MAIN_CLIENT" }, + &.{ "-Wall", "-Wextra", "-ggdb", "-O0" }, + ); + + // Proxy + buildTarget(b, + "toasty_proxy", + &.{ "MAIN_HTTP_PROXY" }, + &.{ "-Wall", "-Wextra", "-ggdb", "-O0" }, + ); + + // Simulation + buildTarget(b, + "toasty_simulation", + &.{ "MAIN_SIMULATION", "FAULT_INJECTION" }, + &.{ "-Wall", "-Wextra", "-ggdb", "-O0" }, + ); +}