-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.zig
90 lines (74 loc) · 2.85 KB
/
build.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
const std = @import("std");
const libxml2 = @import("libs/libxml/libxml2.zig");
const nfd = @import("libs/nfd-zig/build.zig");
const zglfw = @import("libs/zglfw/build.zig");
const zgpu = @import("libs/zgpu/build.zig");
const zpool = @import("libs/zpool/build.zig");
const zstbi = @import("libs/zstbi/build.zig");
const zstbrp = @import("libs/zstbrp/build.zig");
const ztracy = @import("libs/ztracy/build.zig");
const zaudio = @import("libs/zaudio/build.zig");
const ini = @import("libs/ini/build.zig");
const builtin = @import("builtin");
pub fn build(b: *std.Build) !void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const exe = b.addExecutable(.{
.name = "Client",
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
exe.want_lto = false; // remove later
exe.addModule("nfd", nfd.getModule(b));
const nfd_lib = nfd.makeLib(b, target, optimize);
if (nfd_lib.target_info.target.os.tag == .macos) {
nfd_lib.defineCMacro("__kernel_ptr_semantics", "");
}
exe.linkLibrary(nfd_lib);
const libxml = try libxml2.create(b, target, optimize, .{
.iconv = false,
.lzma = false,
.zlib = false,
});
libxml.link(exe);
const zstbi_pkg = zstbi.package(b, target, optimize, .{});
zstbi_pkg.link(exe);
const zstbrp_pkg = zstbrp.package(b, target, optimize, .{});
zstbrp_pkg.link(exe);
const ztracy_pkg = ztracy.package(b, target, optimize, .{
.options = .{ .enable_ztracy = true },
});
ztracy_pkg.link(exe);
const zaudio_pkg = zaudio.package(b, target, optimize, .{});
zaudio_pkg.link(exe);
const zglfw_pkg = zglfw.package(b, target, optimize, .{});
const zpool_pkg = zpool.package(b, target, optimize, .{});
const zgpu_pkg = zgpu.package(b, target, optimize, .{
.deps = .{ .zpool = zpool_pkg.zpool, .zglfw = zglfw_pkg.zglfw },
.options = .{
.dawn_skip_validation = builtin.mode != .Debug,
.disable_robustness = builtin.mode != .Debug,
},
});
ini.link(ini.getModule(b), exe);
zglfw_pkg.link(exe);
zgpu_pkg.link(exe);
b.installArtifact(exe);
const run_cmd = b.addRunArtifact(exe);
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
const exe_options = b.addOptions();
exe.addOptions("build_options", exe_options);
exe_options.addOption([]const u8, "asset_dir", "./assets/");
const install_assets_step = b.addInstallDirectory(.{
.source_dir = .{ .path = "src/assets" },
.install_dir = .{ .custom = "" },
.install_subdir = "bin/assets",
});
exe.step.dependOn(&install_assets_step.step);
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
}