88 lines
3 KiB
Zig
88 lines
3 KiB
Zig
const std = @import("std");
|
|
const ScanProtocolsStep = @import("deps/zig-wayland/build.zig").ScanProtocolsStep;
|
|
|
|
pub fn build(b: *std.build.Builder) void {
|
|
// Standard target options allows the person running `zig build` to choose
|
|
// what target to build for. Here we do not override the defaults, which
|
|
// means any target is allowed, and the default is native. Other options
|
|
// for restricting supported target set are available.
|
|
const target = b.standardTargetOptions(.{});
|
|
|
|
// Standard release options allow the person running `zig build` to select
|
|
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
|
|
const mode = b.standardReleaseOptions();
|
|
|
|
const scanner = ScanProtocolsStep.create(b);
|
|
scanner.addSystemProtocol("stable/xdg-shell/xdg-shell.xml");
|
|
scanner.addSystemProtocol("unstable/xdg-output/xdg-output-unstable-v1.xml");
|
|
scanner.addProtocolPath("protocols/wlr-layer-shell-unstable-v1.xml");
|
|
|
|
// Pass the maximum version implemented by your wayland server or client.
|
|
// Requests, events, enums, etc. from newer versions will not be generated,
|
|
// ensuring forwards compatibility with newer protocol xml.
|
|
// This will also generate code for interfaces created using the provided
|
|
// global interface, in this example wl_keyboard, wl_pointer, xdg_surface,
|
|
// xdg_toplevel, etc. would be generated.
|
|
scanner.generate("wl_compositor", 4);
|
|
scanner.generate("zxdg_output_manager_v1", 1);
|
|
scanner.generate("zwlr_layer_shell_v1", 1);
|
|
scanner.generate("wl_shm", 1);
|
|
scanner.generate("wl_output", 3);
|
|
scanner.generate("wl_seat", 2);
|
|
scanner.generate("xdg_wm_base", 1);
|
|
|
|
const zig_args = std.build.Pkg{
|
|
.name = "zig-args",
|
|
.source = .{.path = "deps/zig-args/args.zig"},
|
|
};
|
|
|
|
const wayland = std.build.Pkg{
|
|
.name = "wayland",
|
|
.source = .{ .generated = &scanner.result },
|
|
};
|
|
|
|
const exe = b.addExecutable("zlurp", "main.zig");
|
|
exe.setTarget(target);
|
|
exe.setBuildMode(mode);
|
|
|
|
exe.step.dependOn(&scanner.step);
|
|
exe.addPackage(wayland);
|
|
exe.addPackage(zig_args);
|
|
exe.linkLibC();
|
|
exe.linkSystemLibrary("wayland-client");
|
|
exe.linkSystemLibrary("xkbcommon");
|
|
exe.linkSystemLibrary("cairo");
|
|
|
|
scanner.addCSource(exe);
|
|
|
|
exe.install();
|
|
|
|
const run_cmd = exe.run();
|
|
run_cmd.step.dependOn(b.getInstallStep());
|
|
if (b.args) |args| {
|
|
run_cmd.addArgs(args);
|
|
}
|
|
|
|
const run_step = b.step("run", "Run the app");
|
|
run_step.dependOn(&run_cmd.step);
|
|
|
|
// TESTS
|
|
const exe_tests = b.addTest("main.zig");
|
|
exe_tests.setTarget(target);
|
|
exe_tests.setBuildMode(mode);
|
|
exe_tests.linkLibC();
|
|
|
|
exe_tests.step.dependOn(&scanner.step);
|
|
exe_tests.addPackage(wayland);
|
|
exe_tests.addPackage(zig_args);
|
|
|
|
exe_tests.linkSystemLibrary("wayland-client");
|
|
exe_tests.linkSystemLibrary("xkbcommon");
|
|
exe_tests.linkSystemLibrary("cairo");
|
|
|
|
scanner.addCSource(exe_tests);
|
|
|
|
const test_step = b.step("test", "Run unit tests");
|
|
test_step.dependOn(&exe_tests.step);
|
|
}
|