authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-08-17 10:46:42+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-08-17 23:13:49+02:00
log9b595dd55f1ae336e2fb4e2a64334efe137dc19a
tree0af43c90fdb34d9d775d78428d217a93e8a07b47
parentd84282174c449325b4bc43fed4d65289445399d4

link-test: refactor and reorg

Move common tests by target file format (Wasm, MachO) into helper functions in `link.zig`, and sort alphabetically within for easier tracking versus file organization on disk.

6 files changed, 47 insertions(+), 35 deletions(-)

test/link.zig+29-24
......@@ -23,7 +23,12 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
2323 .build_modes = true,
2424 });
2525
26 cases.addBuildFile("test/link/wasm/type/build.zig", .{
26 addWasmCases(cases);
27 addMachOCases(cases);
28}
29
30fn addWasmCases(cases: *tests.StandaloneContext) void {
31 cases.addBuildFile("test/link/wasm/bss/build.zig", .{
2732 .build_modes = true,
2833 .requires_stage2 = true,
2934 });
......@@ -38,23 +43,13 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
3843 .requires_stage2 = true,
3944 });
4045
41 cases.addBuildFile("test/link/wasm/bss/build.zig", .{
46 cases.addBuildFile("test/link/wasm/type/build.zig", .{
4247 .build_modes = true,
4348 .requires_stage2 = true,
4449 });
50}
4551
46 cases.addBuildFile("test/link/macho/entry/build.zig", .{
47 .build_modes = true,
48 });
49
50 cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
51 .build_modes = false,
52 });
53
54 cases.addBuildFile("test/link/macho/dylib/build.zig", .{
55 .build_modes = true,
56 });
57
52fn addMachOCases(cases: *tests.StandaloneContext) void {
5853 cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
5954 .build_modes = false,
6055 });
......@@ -64,50 +59,60 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
6459 .requires_macos_sdk = true,
6560 });
6661
67 cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
62 cases.addBuildFile("test/link/macho/dylib/build.zig", .{
6863 .build_modes = true,
6964 });
7065
71 cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
66 cases.addBuildFile("test/link/macho/entry/build.zig", .{
7267 .build_modes = true,
7368 });
7469
75 cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
70 cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
7671 .build_modes = true,
7772 .requires_macos_sdk = true,
7873 });
7974
80 cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
75 cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
8176 .build_modes = true,
8277 .requires_macos_sdk = true,
8378 });
8479
85 // Try to build and run an Objective-C executable.
80 cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
81 .build_modes = true,
82 });
83
8684 cases.addBuildFile("test/link/macho/objc/build.zig", .{
8785 .build_modes = true,
8886 .requires_macos_sdk = true,
8987 });
9088
91 // Try to build and run an Objective-C++ executable.
9289 cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
9390 .build_modes = true,
9491 .requires_macos_sdk = true,
9592 });
9693
97 cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
98 .build_modes = true,
94 cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
95 .build_modes = false,
9996 });
10097
10198 cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
10299 .build_modes = true,
103100 });
104101
105 cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
102 cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
106103 .build_modes = true,
107 .requires_macos_sdk = true,
108104 });
109105
110106 cases.addBuildFile("test/link/macho/tls/build.zig", .{
111107 .build_modes = true,
112108 });
109
110 cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
111 .build_modes = true,
112 });
113
114 cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
115 .build_modes = true,
116 .requires_macos_sdk = true,
117 });
113118}
test/link/macho/dead_strip/build.zig+5-3
......@@ -4,13 +4,14 @@ const LibExeObjectStep = std.build.LibExeObjStep;
44
55pub fn build(b: *Builder) void {
66 const mode = b.standardReleaseOptions();
7 const target: std.zig.CrossTarget = .{ .os_tag = .macos };
78
89 const test_step = b.step("test", "Test the program");
910 test_step.dependOn(b.getInstallStep());
1011
1112 {
1213 // Without -dead_strip, we expect `iAmUnused` symbol present
13 const exe = createScenario(b, mode);
14 const exe = createScenario(b, mode, target);
1415
1516 const check = exe.checkObject(.macho);
1617 check.checkInSymtab();
......@@ -23,7 +24,7 @@ pub fn build(b: *Builder) void {
2324
2425 {
2526 // With -dead_strip, no `iAmUnused` symbol should be present
26 const exe = createScenario(b, mode);
27 const exe = createScenario(b, mode, target);
2728 exe.link_gc_sections = true;
2829
2930 const check = exe.checkObject(.macho);
......@@ -36,10 +37,11 @@ pub fn build(b: *Builder) void {
3637 }
3738}
3839
39fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
40fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
4041 const exe = b.addExecutable("test", null);
4142 exe.addCSourceFile("main.c", &[0][]const u8{});
4243 exe.setBuildMode(mode);
44 exe.setTarget(target);
4345 exe.linkLibC();
4446 return exe;
4547}
test/link/macho/pagezero/build.zig+3-2
......@@ -3,13 +3,14 @@ const Builder = std.build.Builder;
33
44pub fn build(b: *Builder) void {
55 const mode = b.standardReleaseOptions();
6 const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67
78 const test_step = b.step("test", "Test");
89 test_step.dependOn(b.getInstallStep());
910
1011 {
1112 const exe = b.addExecutable("pagezero", null);
12 exe.setTarget(.{ .os_tag = .macos });
13 exe.setTarget(target);
1314 exe.setBuildMode(mode);
1415 exe.addCSourceFile("main.c", &.{});
1516 exe.linkLibC();
......@@ -29,7 +30,7 @@ pub fn build(b: *Builder) void {
2930
3031 {
3132 const exe = b.addExecutable("no_pagezero", null);
32 exe.setTarget(.{ .os_tag = .macos });
33 exe.setTarget(target);
3334 exe.setBuildMode(mode);
3435 exe.addCSourceFile("main.c", &.{});
3536 exe.linkLibC();
test/link/macho/search_strategy/build.zig+4-4
......@@ -1,17 +1,17 @@
11const std = @import("std");
22const Builder = std.build.Builder;
33const LibExeObjectStep = std.build.LibExeObjStep;
4const target: std.zig.CrossTarget = .{ .os_tag = .macos };
54
65pub fn build(b: *Builder) void {
76 const mode = b.standardReleaseOptions();
7 const target: std.zig.CrossTarget = .{ .os_tag = .macos };
88
99 const test_step = b.step("test", "Test");
1010 test_step.dependOn(b.getInstallStep());
1111
1212 {
1313 // -search_dylibs_first
14 const exe = createScenario(b, mode);
14 const exe = createScenario(b, mode, target);
1515 exe.search_strategy = .dylibs_first;
1616
1717 const check = exe.checkObject(.macho);
......@@ -26,7 +26,7 @@ pub fn build(b: *Builder) void {
2626
2727 {
2828 // -search_paths_first
29 const exe = createScenario(b, mode);
29 const exe = createScenario(b, mode, target);
3030 exe.search_strategy = .paths_first;
3131
3232 const run = std.build.EmulatableRunStep.create(b, "run", exe);
......@@ -36,7 +36,7 @@ pub fn build(b: *Builder) void {
3636 }
3737}
3838
39fn createScenario(b: *Builder, mode: std.builtin.Mode) *LibExeObjectStep {
39fn createScenario(b: *Builder, mode: std.builtin.Mode, target: std.zig.CrossTarget) *LibExeObjectStep {
4040 const static = b.addStaticLibrary("a", null);
4141 static.setTarget(target);
4242 static.setBuildMode(mode);
test/link/macho/stack_size/build.zig+2-1
......@@ -3,12 +3,13 @@ const Builder = std.build.Builder;
33
44pub fn build(b: *Builder) void {
55 const mode = b.standardReleaseOptions();
6 const target: std.zig.CrossTarget = .{ .os_tag = .macos };
67
78 const test_step = b.step("test", "Test");
89 test_step.dependOn(b.getInstallStep());
910
1011 const exe = b.addExecutable("main", null);
11 exe.setTarget(.{ .os_tag = .macos });
12 exe.setTarget(target);
1213 exe.setBuildMode(mode);
1314 exe.addCSourceFile("main.c", &.{});
1415 exe.linkLibC();
test/link/macho/tls/build.zig+4-1
......@@ -1,4 +1,5 @@
1const Builder = @import("std").build.Builder;
1const std = @import("std");
2const Builder = std.build.Builder;
23
34pub fn build(b: *Builder) void {
45 const mode = b.standardReleaseOptions();
......@@ -6,11 +7,13 @@ pub fn build(b: *Builder) void {
67
78 const lib = b.addSharedLibrary("a", null, b.version(1, 0, 0));
89 lib.setBuildMode(mode);
10 lib.setTarget(target);
911 lib.addCSourceFile("a.c", &.{});
1012 lib.linkLibC();
1113
1214 const test_exe = b.addTest("main.zig");
1315 test_exe.setBuildMode(mode);
16 test_exe.setTarget(target);
1417 test_exe.linkLibrary(lib);
1518 test_exe.linkLibC();
1619