const std = @import("std"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); // ReleaseFast by default: a Debug server is 10-200x slower (measured in // tests/e2e/compare-run.sh). Devs can still opt into Debug or // ReleaseSafe with -Doptimize=Debug / -Doptimize=ReleaseSafe. const optimize = b.option(std.builtin.OptimizeMode, "optimize", "Prioritize performance, safety, or binary size") orelse .ReleaseFast; const lib_mod = b.createModule(.{ .root_source_file = b.path("src/lib.zig"), .target = target, .optimize = optimize, }); const exe_mod = b.createModule(.{ .root_source_file = b.path("src/main.zig"), .target = target, .optimize = optimize, .imports = &.{ .{ .name = "mongo", .module = lib_mod }, }, }); const exe = b.addExecutable(.{ .name = "mongo-lite", .root_module = exe_mod, }); b.installArtifact(exe); const run_cmd = b.addRunArtifact(exe); run_cmd.step.dependOn(b.getInstallStep()); if (b.args) |args| run_cmd.addArgs(args); const run_step = b.step("run", "Run mongo-lite server"); run_step.dependOn(&run_cmd.step); const test_mod = b.createModule(.{ .root_source_file = b.path("src/lib.zig"), .target = target, .optimize = optimize, }); const test_step = b.addTest(.{ .root_module = test_mod, }); const run_tests = b.addRunArtifact(test_step); const test_help = b.step("test", "Run unit tests"); test_help.dependOn(&run_tests.step); }