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}