build.zig 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const std = @import("std");
  2. pub fn build(b: *std.Build) void {
  3. const target = b.standardTargetOptions(.{});
  4. const optimize = b.standardOptimizeOption(.{});
  5. const exe = b.addExecutable(.{
  6. .name = "2zw",
  7. .root_source_file = b.path("src/main.zig"),
  8. .target = target,
  9. .optimize = optimize,
  10. });
  11. exe.linkLibC();
  12. exe.linkSystemLibrary("X11");
  13. exe.linkSystemLibrary("Xrandr");
  14. exe.linkSystemLibrary("Xft");
  15. if (target.result.os.tag == .openbsd) {
  16. exe.addSystemIncludePath(lazyAbsolutePath("/usr/X11R6/include"));
  17. exe.addLibraryPath(lazyAbsolutePath("/usr/X11R6/lib"));
  18. }
  19. b.installArtifact(exe);
  20. const run_cmd = b.addRunArtifact(exe);
  21. run_cmd.step.dependOn(b.getInstallStep());
  22. if (b.args) |args| {
  23. run_cmd.addArgs(args);
  24. }
  25. const run_step = b.step("run", "Run the app");
  26. run_step.dependOn(&run_cmd.step);
  27. const unit_tests = b.addTest(.{
  28. .root_source_file = b.path("src/main.zig"),
  29. .target = target,
  30. .optimize = optimize,
  31. });
  32. const run_unit_tests = b.addRunArtifact(unit_tests);
  33. const test_step = b.step("test", "Run unit tests");
  34. test_step.dependOn(&run_unit_tests.step);
  35. }
  36. fn lazyAbsolutePath(path: []const u8) std.Build.LazyPath {
  37. if (@hasField(std.Build.LazyPath, "path")) {
  38. return .{ .path = path };
  39. } else if (@hasField(std.Build.LazyPath, "cwd_relative")) {
  40. return .{ .cwd_relative = path };
  41. } else {
  42. @compileError("unsupported Zig std.Build.LazyPath layout; please update lazyAbsolutePath");
  43. }
  44. }