build.zig (2306B)
1 const std = @import("std"); 2 3 const Scanner = @import("wayland").Scanner; 4 5 pub fn build(b: *std.Build) void { 6 const target = b.standardTargetOptions(.{}); 7 const optimize = b.standardOptimizeOption(.{}); 8 9 const exe = b.addExecutable(.{ 10 .name = "stevee", 11 .root_source_file = b.path("src/main.zig"), 12 .target = target, 13 .optimize = optimize, 14 }); 15 16 const scanner = Scanner.create(b, .{}); 17 const wayland = b.createModule(.{ .root_source_file = scanner.result }); 18 19 scanner.addSystemProtocol("stable/xdg-shell/xdg-shell.xml"); 20 scanner.addSystemProtocol("stable/viewporter/viewporter.xml"); 21 scanner.addSystemProtocol("staging/single-pixel-buffer/single-pixel-buffer-v1.xml"); 22 scanner.addCustomProtocol(b.path("protocol/wlr-layer-shell-unstable-v1.xml")); 23 scanner.addCustomProtocol(b.path("protocol/river-status-unstable-v1.xml")); 24 scanner.addCustomProtocol(b.path("protocol/river-control-unstable-v1.xml")); 25 26 scanner.generate("wl_compositor", 4); 27 scanner.generate("wl_subcompositor", 1); 28 scanner.generate("wl_shm", 1); 29 scanner.generate("wl_output", 3); 30 scanner.generate("wl_seat", 5); 31 scanner.generate("wp_single_pixel_buffer_manager_v1", 1); 32 scanner.generate("wp_viewporter", 1); 33 scanner.generate("zwlr_layer_shell_v1", 1); 34 scanner.generate("zriver_status_manager_v1", 1); 35 scanner.generate("zriver_control_v1", 1); 36 37 const pixman = b.dependency("pixman", .{}); 38 const fcft = b.dependency("fcft", .{}); 39 const udev = b.dependency("udev", .{}); 40 41 exe.root_module.addImport("pixman", pixman.module("pixman")); 42 exe.root_module.addImport("fcft", fcft.module("fcft")); 43 exe.root_module.addImport("udev", udev.module("udev")); 44 exe.root_module.addImport("wayland", wayland); 45 46 exe.linkLibC(); 47 exe.linkSystemLibrary("fcft"); 48 exe.linkSystemLibrary("libudev"); 49 exe.linkSystemLibrary("pixman-1"); 50 exe.linkSystemLibrary("libpulse"); 51 exe.linkSystemLibrary("wayland-client"); 52 53 // exe.addCSourceFile(exe); 54 55 b.installArtifact(exe); 56 57 const run = b.addRunArtifact(exe); 58 run.step.dependOn(b.getInstallStep()); 59 if (b.args) |args| { 60 run.addArgs(args); 61 } 62 63 const run_step = b.step("run", "Run stevee"); 64 run_step.dependOn(&run.step); 65 }