main
build.zig
1const std = @import("std");
2
3pub fn build(b: *std.Build) void {
4 const target = b.standardTargetOptions(.{});
5 const optimize = b.standardOptimizeOption(.{});
6
7 // --- Wire protocol module ---
8 const wire_mod = b.createModule(.{
9 .root_source_file = b.path("compositor/src/wire.zig"),
10 .target = target,
11 .optimize = optimize,
12 });
13
14 // --- Protocol scanner ---
15 const scanner_mod = b.createModule(.{
16 .root_source_file = b.path("tools/scanner.zig"),
17 .target = target,
18 .optimize = optimize,
19 });
20 scanner_mod.addImport("panthera", b.dependency("panthera", .{
21 .target = target,
22 .optimize = optimize,
23 }).module("panthera"));
24 const scanner_exe = b.addExecutable(.{
25 .name = "protocol-scanner",
26 .root_module = scanner_mod,
27 });
28
29 const run_scanner = b.addRunArtifact(scanner_exe);
30 run_scanner.addArg("protocol");
31 run_scanner.addArg("compositor/src/protocol.zig");
32
33 const scan_step = b.step("scan-protocols", "Scan Wayland protocol XML and regenerate protocol.zig");
34 scan_step.dependOn(&run_scanner.step);
35
36 // --- Tests ---
37 const wire_test = b.addTest(.{ .root_module = wire_mod });
38 const test_step = b.step("test", "Run all tests");
39 test_step.dependOn(&b.addRunArtifact(wire_test).step);
40}