-
Notifications
You must be signed in to change notification settings - Fork 49
Expand file tree
/
Copy pathbuild.zig
More file actions
140 lines (124 loc) · 4.82 KB
/
build.zig
File metadata and controls
140 lines (124 loc) · 4.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
const builtin = @import("builtin");
const std = @import("std");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const codesign_identity = b.option(
[]const u8,
"codesign-identity",
"macOS codesign identity. Defaults to ad-hoc signing ('-').",
) orelse "-";
// ── Exposed module: importable as @import("codedb") ──
const codedb_mod = b.addModule("codedb", .{
.root_source_file = b.path("src/lib.zig"),
.target = target,
.optimize = optimize,
});
// ── CLI executable ──
const exe = b.addExecutable(.{
.name = "codedb",
.root_module = b.createModule(.{
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
}),
});
// ── mcp-zig dependency ──
const mcp_dep = b.dependency("mcp_zig", .{});
exe.root_module.addImport("mcp", mcp_dep.module("mcp"));
b.installArtifact(exe);
// ── macOS codesign (ad-hoc by default; configurable for release builds) ──
if (target.result.os.tag == .macos and builtin.os.tag == .macos) {
const codesign = b.addSystemCommand(&.{ "codesign", "-f", "-s", codesign_identity });
codesign.addArtifactArg(exe);
b.getInstallStep().dependOn(&codesign.step);
}
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 codedb daemon");
run_step.dependOn(&run_cmd.step);
// ── Tests ──
const tests = b.addTest(.{
.root_module = b.createModule(.{
.root_source_file = b.path("src/tests.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
}),
});
tests.root_module.addImport("mcp", mcp_dep.module("mcp"));
const test_step = b.step("test", "Run tests");
test_step.dependOn(&b.addRunArtifact(tests).step);
// ── Library tests (verify the module root compiles) ──
const lib_tests = b.addTest(.{
.root_module = b.createModule(.{
.root_source_file = b.path("src/lib.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
}),
});
test_step.dependOn(&b.addRunArtifact(lib_tests).step);
// ── Adversarial tests ──
const adversarial_tests = b.addTest(.{
.root_module = b.createModule(.{
.root_source_file = b.path("src/adversarial_tests.zig"),
.target = target,
.optimize = optimize,
.link_libc = true,
}),
});
test_step.dependOn(&b.addRunArtifact(adversarial_tests).step);
// ── Benchmarks ──
const bench = b.addExecutable(.{
.name = "bench",
.root_module = b.createModule(.{
.root_source_file = b.path("src/bench.zig"),
.target = target,
.optimize = .ReleaseFast,
.link_libc = true,
}),
});
const bench_run = b.addRunArtifact(bench);
bench.root_module.addImport("mcp", mcp_dep.module("mcp"));
if (b.args) |args| bench_run.addArgs(args);
const bench_step = b.step("bench", "Run benchmarks");
bench_step.dependOn(&bench_run.step);
// ── Benchmark (repo benchmark — indexing speed, query latency, recall) ──
const benchmark = b.addExecutable(.{
.name = "benchmark",
.root_module = b.createModule(.{
.root_source_file = b.path("src/benchmark.zig"),
.target = target,
.optimize = .ReleaseFast,
.link_libc = true,
}),
});
benchmark.root_module.addImport("mcp", mcp_dep.module("mcp"));
const benchmark_run = b.addRunArtifact(benchmark);
if (b.args) |args| benchmark_run.addArgs(args);
const benchmark_step = b.step("benchmark", "Run repo benchmark (use -- --root /path/to/repo)");
benchmark_step.dependOn(&benchmark_run.step);
// Make module available so dependents don't need to wire it up manually
_ = codedb_mod;
// ── WASM build (for Cloudflare Workers) ──
const wasm = b.addExecutable(.{
.name = "codedb",
.root_module = b.createModule(.{
.root_source_file = b.path("src/wasm.zig"),
.target = b.resolveTargetQuery(.{
.cpu_arch = .wasm32,
.os_tag = .freestanding,
}),
.optimize = .ReleaseSmall,
}),
});
wasm.rdynamic = true;
wasm.entry = .disabled;
const wasm_step = b.step("wasm", "Build WASM module for Cloudflare Workers");
wasm_step.dependOn(&b.addInstallArtifact(wasm, .{
.dest_dir = .{ .override = .{ .custom = "../wasm" } },
}).step);
}