master
1const std = @import("std");
2
3pub fn build(b: *std.Build) void {
4 const test_step = b.step("test", "Test it");
5 b.default_step = test_step;
6
7 const target = b.resolveTargetQuery(.{
8 .cpu_arch = .x86_64,
9 .os_tag = .windows,
10 .abi = .gnu,
11 });
12
13 const generated_h_step = b.addWriteFile("generated.h", "#define GENERATED_DEFINE \"foo\"");
14
15 add(b, b.graph.host, .any, test_step, generated_h_step);
16 add(b, target, .any, test_step, generated_h_step);
17
18 add(b, b.graph.host, .gnu, test_step, generated_h_step);
19 add(b, target, .gnu, test_step, generated_h_step);
20}
21
22fn add(
23 b: *std.Build,
24 target: std.Build.ResolvedTarget,
25 rc_includes: enum { any, gnu },
26 test_step: *std.Build.Step,
27 generated_h_step: *std.Build.Step.WriteFile,
28) void {
29 const exe = b.addExecutable(.{
30 .name = "zig_resource_test",
31 .root_module = b.createModule(.{
32 .root_source_file = b.path("main.zig"),
33 .target = target,
34 .optimize = .Debug,
35 }),
36 });
37 exe.root_module.addWin32ResourceFile(.{
38 .file = b.path("res/zig.rc"),
39 .flags = &.{"/c65001"}, // UTF-8 code page
40 .include_paths = &.{
41 .{ .generated = .{ .file = &generated_h_step.generated_directory } },
42 },
43 });
44 exe.rc_includes = switch (rc_includes) {
45 .any => .any,
46 .gnu => .gnu,
47 };
48
49 _ = exe.getEmittedBin();
50
51 test_step.dependOn(&exe.step);
52}