authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2023-09-05 23:33:38-07:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2023-09-17 03:09:45-07:00
log01fc6a05ef4b4de3d351ebbc64f35eef7f3afa7a
treebf48afc68d45939d62f1b9dfe96689450ecfe045
parent28f6559947b7acd2ef3c983c90e1215a0d75ae15

Add a standalone test for Windows resource file compilation


7 files changed, 84 insertions(+), 0 deletions(-)

test/standalone.zig+4
...@@ -194,6 +194,10 @@ pub const build_cases = [_]BuildCase{...@@ -194,6 +194,10 @@ pub const build_cases = [_]BuildCase{
194 .build_root = "test/standalone/load_dynamic_library",194 .build_root = "test/standalone/load_dynamic_library",
195 .import = @import("standalone/load_dynamic_library/build.zig"),195 .import = @import("standalone/load_dynamic_library/build.zig"),
196 },196 },
197 .{
198 .build_root = "test/standalone/windows_resources",
199 .import = @import("standalone/windows_resources/build.zig"),
200 },
197 .{201 .{
198 .build_root = "test/standalone/windows_spawn",202 .build_root = "test/standalone/windows_spawn",
199 .import = @import("standalone/windows_spawn/build.zig"),203 .import = @import("standalone/windows_spawn/build.zig"),
test/standalone/windows_resources/build.zig created+33
...@@ -0,0 +1,33 @@
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 native_target: std.zig.CrossTarget = .{};
8 const cross_target = .{
9 .cpu_arch = .x86_64,
10 .os_tag = .windows,
11 .abi = .gnu,
12 };
13
14 add(b, native_target, test_step);
15 add(b, cross_target, test_step);
16}
17
18fn add(b: *std.Build, target: std.zig.CrossTarget, test_step: *std.Build.Step) void {
19 const exe = b.addExecutable(.{
20 .name = "zig_resource_test",
21 .root_source_file = .{ .path = "main.zig" },
22 .target = target,
23 .optimize = .Debug,
24 });
25 exe.addWin32ResourceFile(.{
26 .file = .{ .path = "res/zig.rc" },
27 .flags = &.{"/c65001"}, // UTF-8 code page
28 });
29
30 _ = exe.getEmittedBin();
31
32 test_step.dependOn(&exe.step);
33}
test/standalone/windows_resources/main.zig created+5
...@@ -0,0 +1,5 @@
1const std = @import("std");
2
3pub fn main() !void {
4 std.debug.print("All your {s} are belong to us.\n", .{"codebase"});
5}
test/standalone/windows_resources/res/hello.bin created+1
...@@ -0,0 +1 @@
1abcdefg
\ No newline at end of file
test/standalone/windows_resources/res/sub/sub.rc created+1
...@@ -0,0 +1 @@
12 RCDATA hello.bin
test/standalone/windows_resources/res/zig.ico created
Binary files /dev/null and b/test/standalone/windows_resources/res/zig.ico differ
test/standalone/windows_resources/res/zig.rc created+40
...@@ -0,0 +1,40 @@
1#define ICO_ID 1
2
3// Nothing from windows.h is used in this .rc file,
4// but it's common to include it within a .rc file
5// so this makes sure that it can be found on
6// all platforms.
7#include "windows.h"
8
9ICO_ID ICON "zig.ico"
10
111 VERSIONINFO
12 FILEVERSION 1L,0,0,2
13 PRODUCTVERSION 1,0,0,1
14 FILEFLAGSMASK 0x3fL
15 FILEFLAGS 0x1L
16 FILEOS 0x4L
17 FILETYPE 0x1L
18 FILESUBTYPE 0x0L
19BEGIN
20 BLOCK "StringFileInfo"
21 BEGIN
22 BLOCK "040904e4"
23 BEGIN
24 VALUE "CompanyName", "Zig"
25 VALUE "FileDescription", "My cool zig program"
26 VALUE "FileVersion", "1.0.0.1"
27 VALUE "InternalName", "zig-ico.exe"
28 VALUE "LegalCopyright", "(c) no one"
29 VALUE "OriginalFilename", "zig-ico.exe"
30 VALUE "ProductName", "Zig but with an icon"
31 VALUE "ProductVersion", "1.0.0.1"
32 END
33 END
34 BLOCK "VarFileInfo"
35 BEGIN
36 VALUE "Translation", 0x409, 1252
37 END
38END
39
40#include "sub/sub.rc"