1const std = @import("std");23const Scanner = @import("wayland").Scanner;45pub fn build(b: *std.Build) void {6 const target = b.standardTargetOptions(.{});7 const optimize = b.standardOptimizeOption(.{});8 const pie = b.option(bool, "pie", "Build a position-independent executable") orelse false;910 const scanner = Scanner.create(b, .{});1112 scanner.addSystemProtocol("stable/xdg-shell/xdg-shell.xml");13 scanner.addSystemProtocol("stable/viewporter/viewporter.xml");14 scanner.addSystemProtocol("staging/single-pixel-buffer/single-pixel-buffer-v1.xml");15 scanner.addCustomProtocol(b.path("protocol/wlr-layer-shell-unstable-v1.xml"));16 scanner.addCustomProtocol(b.path("protocol/river-status-unstable-v1.xml"));17 scanner.addCustomProtocol(b.path("protocol/river-control-unstable-v1.xml"));1819 scanner.generate("wl_compositor", 4);20 scanner.generate("wl_subcompositor", 1);21 scanner.generate("wl_shm", 1);22 scanner.generate("wl_output", 3);23 scanner.generate("wl_seat", 5);24 scanner.generate("wp_single_pixel_buffer_manager_v1", 1);25 scanner.generate("wp_viewporter", 1);26 scanner.generate("zwlr_layer_shell_v1", 1);27 scanner.generate("zriver_status_manager_v1", 2);28 scanner.generate("zriver_control_v1", 1);2930 const wayland = b.createModule(.{ .root_source_file = scanner.result });31 const pixman = b.dependency("pixman", .{}).module("pixman");32 const fcft = b.dependency("fcft", .{}).module("fcft");3334 const exe = b.addExecutable(.{35 .name = "creek",36 .root_module = b.createModule(.{37 .root_source_file = b.path("src/main.zig"),38 .target = target,39 .optimize = optimize,40 }),41 });42 exe.pie = pie;4344 exe.linkLibC();45 exe.root_module.addImport("wayland", wayland);46 exe.linkSystemLibrary("wayland-client");4748 exe.root_module.addImport("pixman", pixman);49 exe.linkSystemLibrary("pixman-1");5051 exe.root_module.addImport("fcft", fcft);52 exe.linkSystemLibrary("fcft");5354 b.installArtifact(exe);5556 const run = b.addRunArtifact(exe);57 run.step.dependOn(b.getInstallStep());58 if (b.args) |args| {59 run.addArgs(args);60 }6162 const run_step = b.step("run", "Run creek");63 run_step.dependOn(&run.step);64}