authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-03-07 17:00:35-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-03-15 10:48:14-07:00
logcdf0a2af58ccd4ca4250435f258b35735e953aaf
tree1b4a40e586d5b744a9d72e07d7876123a31a535c
parentf558c835a41052b7609f0f0b27c5bbc4fe6b024d

re-enable wasm linker tests


15 files changed, 310 insertions(+), 237 deletions(-)

test/link.zig+172-190
......@@ -20,197 +20,179 @@ pub const cases = [_]Case{
2020 .build_root = "test/link/interdependent_static_c_libs",
2121 .import = @import("link/interdependent_static_c_libs/build.zig"),
2222 },
23};
2423
25//pub fn addCases(cases: *Standalone) void {
26// addWasmCases(cases);
27// addMachOCases(cases);
28//}
29//
30//fn addWasmCases(cases: *Standalone) void {
31// cases.addBuildFile("test/link/wasm/archive/build.zig", .{
32// .build_modes = true,
33// .requires_stage2 = true,
34// });
35//
36// cases.addBuildFile("test/link/wasm/basic-features/build.zig", .{
37// .requires_stage2 = true,
38// });
39//
40// cases.addBuildFile("test/link/wasm/bss/build.zig", .{
41// .build_modes = false,
42// .requires_stage2 = true,
43// });
44//
45// cases.addBuildFile("test/link/wasm/export/build.zig", .{
46// .build_modes = true,
47// .requires_stage2 = true,
48// });
49//
50// // TODO: Fix open handle in wasm-linker refraining rename from working on Windows.
51// if (builtin.os.tag != .windows) {
52// cases.addBuildFile("test/link/wasm/export-data/build.zig", .{});
53// }
54//
55// cases.addBuildFile("test/link/wasm/extern/build.zig", .{
56// .build_modes = true,
57// .requires_stage2 = true,
58// .use_emulation = true,
59// });
60//
61// cases.addBuildFile("test/link/wasm/extern-mangle/build.zig", .{
62// .build_modes = true,
63// .requires_stage2 = true,
64// });
65//
66// cases.addBuildFile("test/link/wasm/function-table/build.zig", .{
67// .build_modes = true,
68// .requires_stage2 = true,
69// });
70//
71// cases.addBuildFile("test/link/wasm/infer-features/build.zig", .{
72// .requires_stage2 = true,
73// });
74//
75// cases.addBuildFile("test/link/wasm/producers/build.zig", .{
76// .build_modes = true,
77// .requires_stage2 = true,
78// });
79//
80// cases.addBuildFile("test/link/wasm/segments/build.zig", .{
81// .build_modes = true,
82// .requires_stage2 = true,
83// });
84//
85// cases.addBuildFile("test/link/wasm/stack_pointer/build.zig", .{
86// .build_modes = true,
87// .requires_stage2 = true,
88// });
89//
90// cases.addBuildFile("test/link/wasm/type/build.zig", .{
91// .build_modes = true,
92// .requires_stage2 = true,
93// });
94//}
95//
96//fn addMachOCases(cases: *tests.StandaloneContext) void {
97// cases.addBuildFile("test/link/macho/bugs/13056/build.zig", .{
98// .build_modes = true,
99// .requires_macos_sdk = true,
100// .requires_symlinks = true,
101// });
102//
103// cases.addBuildFile("test/link/macho/bugs/13457/build.zig", .{
104// .build_modes = true,
105// .requires_symlinks = true,
106// });
107//
108// cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
109// .build_modes = false,
110// .requires_symlinks = true,
111// });
112//
113// cases.addBuildFile("test/link/macho/dead_strip_dylibs/build.zig", .{
114// .build_modes = true,
115// .requires_macos_sdk = true,
116// .requires_symlinks = true,
117// });
118//
119// cases.addBuildFile("test/link/macho/dylib/build.zig", .{
120// .build_modes = true,
121// .requires_symlinks = true,
122// });
123//
124// cases.addBuildFile("test/link/macho/empty/build.zig", .{
125// .build_modes = true,
126// .requires_symlinks = true,
127// });
128//
129// cases.addBuildFile("test/link/macho/entry/build.zig", .{
130// .build_modes = true,
131// .requires_symlinks = true,
132// });
133//
134// cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
135// .build_modes = true,
136// .requires_macos_sdk = true,
137// .requires_symlinks = true,
138// });
139//
140// cases.addBuildFile("test/link/macho/linksection/build.zig", .{
141// .build_modes = true,
142// .requires_symlinks = true,
143// });
144//
145// cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
146// .build_modes = true,
147// .requires_macos_sdk = true,
148// .requires_symlinks = true,
149// });
150//
151// cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
152// .build_modes = true,
153// .requires_symlinks = true,
154// });
155//
156// cases.addBuildFile("test/link/macho/objc/build.zig", .{
157// .build_modes = true,
158// .requires_macos_sdk = true,
159// .requires_symlinks = true,
160// });
161//
162// cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
163// .build_modes = true,
164// .requires_macos_sdk = true,
165// .requires_symlinks = true,
166// });
167//
168// cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
169// .build_modes = false,
170// .requires_symlinks = true,
171// });
172//
173// cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
174// .build_modes = true,
175// .requires_symlinks = true,
176// });
177//
178// cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
179// .build_modes = true,
180// .requires_symlinks = true,
181// });
182//
183// cases.addBuildFile("test/link/macho/strict_validation/build.zig", .{
184// .build_modes = true,
185// .requires_symlinks = true,
186// });
187//
188// cases.addBuildFile("test/link/macho/tls/build.zig", .{
189// .build_modes = true,
190// .requires_symlinks = true,
191// });
192//
193// cases.addBuildFile("test/link/macho/unwind_info/build.zig", .{
194// .build_modes = true,
195// .requires_symlinks = true,
196// });
197//
198// cases.addBuildFile("test/link/macho/uuid/build.zig", .{
199// .build_modes = false,
200// .requires_symlinks = true,
201// });
202//
203// cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
204// .build_modes = true,
205// .requires_symlinks = true,
206// });
207//
208// cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
209// .build_modes = true,
210// .requires_macos_sdk = true,
211// .requires_symlinks = true,
212// });
213//}
24 // WASM Cases
25 .{
26 .build_root = "test/link/wasm/archive",
27 .import = @import("link/wasm/archive/build.zig"),
28 },
29 .{
30 .build_root = "test/link/wasm/basic-features",
31 .import = @import("link/wasm/basic-features/build.zig"),
32 },
33 .{
34 .build_root = "test/link/wasm/bss",
35 .import = @import("link/wasm/bss/build.zig"),
36 },
37 .{
38 .build_root = "test/link/wasm/export",
39 .import = @import("link/wasm/export/build.zig"),
40 },
41 .{
42 .build_root = "test/link/wasm/export-data",
43 .import = @import("link/wasm/export-data/build.zig"),
44 },
45 .{
46 .build_root = "test/link/wasm/extern",
47 .import = @import("link/wasm/extern/build.zig"),
48 },
49 .{
50 .build_root = "test/link/wasm/extern-mangle",
51 .import = @import("link/wasm/extern-mangle/build.zig"),
52 },
53 .{
54 .build_root = "test/link/wasm/function-table",
55 .import = @import("link/wasm/function-table/build.zig"),
56 },
57 .{
58 .build_root = "test/link/wasm/infer-features",
59 .import = @import("link/wasm/infer-features/build.zig"),
60 },
61 .{
62 .build_root = "test/link/wasm/producers",
63 .import = @import("link/wasm/producers/build.zig"),
64 },
65 .{
66 .build_root = "test/link/wasm/segments",
67 .import = @import("link/wasm/segments/build.zig"),
68 },
69 .{
70 .build_root = "test/link/wasm/stack_pointer",
71 .import = @import("link/wasm/stack_pointer/build.zig"),
72 },
73 .{
74 .build_root = "test/link/wasm/type",
75 .import = @import("link/wasm/type/build.zig"),
76 },
77
78 // Mach-O Cases
79 // cases.addBuildFile("test/link/macho/bugs/13056/build.zig", .{
80 // .build_modes = true,
81 // .requires_macos_sdk = true,
82 // .requires_symlinks = true,
83 // });
84 //
85 // cases.addBuildFile("test/link/macho/bugs/13457/build.zig", .{
86 // .build_modes = true,
87 // .requires_symlinks = true,
88 // });
89 //
90 // cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
91 // .build_modes = false,
92 // .requires_symlinks = true,
93 // });
94 //
95 // cases.addBuildFile("test/link/macho/dead_strip_dylibs/build.zig", .{
96 // .build_modes = true,
97 // .requires_macos_sdk = true,
98 // .requires_symlinks = true,
99 // });
100 //
101 // cases.addBuildFile("test/link/macho/dylib/build.zig", .{
102 // .build_modes = true,
103 // .requires_symlinks = true,
104 // });
105 //
106 // cases.addBuildFile("test/link/macho/empty/build.zig", .{
107 // .build_modes = true,
108 // .requires_symlinks = true,
109 // });
110 //
111 // cases.addBuildFile("test/link/macho/entry/build.zig", .{
112 // .build_modes = true,
113 // .requires_symlinks = true,
114 // });
115 //
116 // cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
117 // .build_modes = true,
118 // .requires_macos_sdk = true,
119 // .requires_symlinks = true,
120 // });
121 //
122 // cases.addBuildFile("test/link/macho/linksection/build.zig", .{
123 // .build_modes = true,
124 // .requires_symlinks = true,
125 // });
126 //
127 // cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
128 // .build_modes = true,
129 // .requires_macos_sdk = true,
130 // .requires_symlinks = true,
131 // });
132 //
133 // cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
134 // .build_modes = true,
135 // .requires_symlinks = true,
136 // });
137 //
138 // cases.addBuildFile("test/link/macho/objc/build.zig", .{
139 // .build_modes = true,
140 // .requires_macos_sdk = true,
141 // .requires_symlinks = true,
142 // });
143 //
144 // cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
145 // .build_modes = true,
146 // .requires_macos_sdk = true,
147 // .requires_symlinks = true,
148 // });
149 //
150 // cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
151 // .build_modes = false,
152 // .requires_symlinks = true,
153 // });
154 //
155 // cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
156 // .build_modes = true,
157 // .requires_symlinks = true,
158 // });
159 //
160 // cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
161 // .build_modes = true,
162 // .requires_symlinks = true,
163 // });
164 //
165 // cases.addBuildFile("test/link/macho/strict_validation/build.zig", .{
166 // .build_modes = true,
167 // .requires_symlinks = true,
168 // });
169 //
170 // cases.addBuildFile("test/link/macho/tls/build.zig", .{
171 // .build_modes = true,
172 // .requires_symlinks = true,
173 // });
174 //
175 // cases.addBuildFile("test/link/macho/unwind_info/build.zig", .{
176 // .build_modes = true,
177 // .requires_symlinks = true,
178 // });
179 //
180 // cases.addBuildFile("test/link/macho/uuid/build.zig", .{
181 // .build_modes = false,
182 // .requires_symlinks = true,
183 // });
184 //
185 // cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
186 // .build_modes = true,
187 // .requires_symlinks = true,
188 // });
189 //
190 // cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
191 // .build_modes = true,
192 // .requires_macos_sdk = true,
193 // .requires_symlinks = true,
194 // });
195};
214196
215197const std = @import("std");
216198const builtin = @import("builtin");
test/link/wasm/archive/build.zig+12-3
......@@ -1,15 +1,24 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
4 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
8
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
614
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
716 // The code in question will pull-in compiler-rt,
817 // and therefore link with its archive file.
918 const lib = b.addSharedLibrary(.{
1019 .name = "main",
1120 .root_source_file = .{ .path = "main.zig" },
12 .optimize = b.standardOptimizeOption(.{}),
21 .optimize = optimize,
1322 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
1423 });
1524 lib.use_llvm = false;
test/link/wasm/basic-features/build.zig+4-1
......@@ -1,11 +1,13 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
46 // Library with explicitly set cpu features
57 const lib = b.addSharedLibrary(.{
68 .name = "lib",
79 .root_source_file = .{ .path = "main.zig" },
8 .optimize = b.standardOptimizeOption(.{}),
10 .optimize = .Debug,
911 .target = .{
1012 .cpu_arch = .wasm32,
1113 .cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp },
......@@ -24,4 +26,5 @@ pub fn build(b: *std.Build) void {
2426
2527 const test_step = b.step("test", "Run linker test");
2628 test_step.dependOn(&check.step);
29 b.default_step = test_step;
2730}
test/link/wasm/bss/build.zig+5-2
......@@ -1,14 +1,16 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
46 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
7 b.default_step = test_step;
68
79 const lib = b.addSharedLibrary(.{
810 .name = "lib",
911 .root_source_file = .{ .path = "lib.zig" },
1012 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
11 .optimize = b.standardOptimizeOption(.{}),
13 .optimize = .Debug,
1214 });
1315 lib.use_llvm = false;
1416 lib.use_lld = false;
......@@ -36,5 +38,6 @@ pub fn build(b: *std.Build) void {
3638 check_lib.checkNext("name .rodata");
3739 check_lib.checkNext("index 1"); // bss section always last
3840 check_lib.checkNext("name .bss");
41
3942 test_step.dependOn(&check_lib.step);
4043}
test/link/wasm/export-data/build.zig+6-1
......@@ -2,7 +2,12 @@ const std = @import("std");
22
33pub fn build(b: *std.Build) void {
44 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
5 b.default_step = test_step;
6
7 if (@import("builtin").os.tag == .windows) {
8 // TODO: Fix open handle in wasm-linker refraining rename from working on Windows.
9 return;
10 }
611
712 const lib = b.addSharedLibrary(.{
813 .name = "lib",
test/link/wasm/export/build.zig+11-2
......@@ -1,8 +1,18 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
4 const optimize = b.standardOptimizeOption(.{});
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
8
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
514
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
616 const no_export = b.addSharedLibrary(.{
717 .name = "no-export",
818 .root_source_file = .{ .path = "main.zig" },
......@@ -50,7 +60,6 @@ pub fn build(b: *std.Build) void {
5060 check_force_export.checkNext("name foo");
5161 check_force_export.checkNext("kind function");
5262
53 const test_step = b.step("test", "Run linker test");
5463 test_step.dependOn(&check_no_export.step);
5564 test_step.dependOn(&check_dynamic_export.step);
5665 test_step.dependOn(&check_force_export.step);
test/link/wasm/extern-mangle/build.zig+10-4
......@@ -1,18 +1,24 @@
11const std = @import("std");
22
33pub fn build(b: *std.Build) void {
4 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
4 const test_step = b.step("test", "Test it");
5 b.default_step = test_step;
66
7 add(b, test_step, .Debug);
8 add(b, test_step, .ReleaseFast);
9 add(b, test_step, .ReleaseSmall);
10 add(b, test_step, .ReleaseSafe);
11}
12
13fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
714 const lib = b.addSharedLibrary(.{
815 .name = "lib",
916 .root_source_file = .{ .path = "lib.zig" },
1017 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
11 .optimize = b.standardOptimizeOption(.{}),
18 .optimize = optimize,
1219 });
1320 lib.import_symbols = true; // import `a` and `b`
1421 lib.rdynamic = true; // export `foo`
15 lib.install();
1622
1723 const check_lib = lib.checkObject(.wasm);
1824 check_lib.checkStart("Section import");
test/link/wasm/extern/build.zig+13-2
......@@ -1,10 +1,22 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
8
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
14
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
416 const exe = b.addExecutable(.{
517 .name = "extern",
618 .root_source_file = .{ .path = "main.zig" },
7 .optimize = b.standardOptimizeOption(.{}),
19 .optimize = optimize,
820 .target = .{ .cpu_arch = .wasm32, .os_tag = .wasi },
921 });
1022 exe.addCSourceFile("foo.c", &.{});
......@@ -15,6 +27,5 @@ pub fn build(b: *std.Build) void {
1527 run.skip_foreign_checks = true;
1628 run.expectStdOutEqual("Result: 30");
1729
18 const test_step = b.step("test", "Run linker test");
1930 test_step.dependOn(&run.step);
2031}
test/link/wasm/function-table/build.zig+13-6
......@@ -1,13 +1,20 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
4 const optimize = b.standardOptimizeOption(.{});
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
58
6 const test_step = b.step("test", "Test");
7 test_step.dependOn(b.getInstallStep());
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
814
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
916 const import_table = b.addSharedLibrary(.{
10 .name = "lib",
17 .name = "import_table",
1118 .root_source_file = .{ .path = "lib.zig" },
1219 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
1320 .optimize = optimize,
......@@ -17,7 +24,7 @@ pub fn build(b: *std.Build) void {
1724 import_table.import_table = true;
1825
1926 const export_table = b.addSharedLibrary(.{
20 .name = "lib",
27 .name = "export_table",
2128 .root_source_file = .{ .path = "lib.zig" },
2229 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
2330 .optimize = optimize,
......@@ -27,7 +34,7 @@ pub fn build(b: *std.Build) void {
2734 export_table.export_table = true;
2835
2936 const regular_table = b.addSharedLibrary(.{
30 .name = "lib",
37 .name = "regular_table",
3138 .root_source_file = .{ .path = "lib.zig" },
3239 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
3340 .optimize = optimize,
test/link/wasm/infer-features/build.zig+5-4
......@@ -1,12 +1,12 @@
11const std = @import("std");
22
3pub fn build(b: *std.Build) void {
4 const optimize = b.standardOptimizeOption(.{});
3pub const requires_stage2 = true;
54
5pub fn build(b: *std.Build) void {
66 // Wasm Object file which we will use to infer the features from
77 const c_obj = b.addObject(.{
88 .name = "c_obj",
9 .optimize = optimize,
9 .optimize = .Debug,
1010 .target = .{
1111 .cpu_arch = .wasm32,
1212 .cpu_model = .{ .explicit = &std.Target.wasm.cpu.bleeding_edge },
......@@ -20,7 +20,7 @@ pub fn build(b: *std.Build) void {
2020 const lib = b.addSharedLibrary(.{
2121 .name = "lib",
2222 .root_source_file = .{ .path = "main.zig" },
23 .optimize = optimize,
23 .optimize = .Debug,
2424 .target = .{
2525 .cpu_arch = .wasm32,
2626 .cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp },
......@@ -45,4 +45,5 @@ pub fn build(b: *std.Build) void {
4545
4646 const test_step = b.step("test", "Run linker test");
4747 test_step.dependOn(&check.step);
48 b.default_step = test_step;
4849}
test/link/wasm/producers/build.zig+13-6
......@@ -1,24 +1,31 @@
11const std = @import("std");
22const builtin = @import("builtin");
33
4pub const requires_stage2 = true;
5
46pub fn build(b: *std.Build) void {
5 const test_step = b.step("test", "Test");
6 test_step.dependOn(b.getInstallStep());
7 const test_step = b.step("test", "Test it");
8 b.default_step = test_step;
9
10 add(b, test_step, .Debug);
11 add(b, test_step, .ReleaseFast);
12 add(b, test_step, .ReleaseSmall);
13 add(b, test_step, .ReleaseSafe);
14}
715
16fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
817 const lib = b.addSharedLibrary(.{
918 .name = "lib",
1019 .root_source_file = .{ .path = "lib.zig" },
1120 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
12 .optimize = b.standardOptimizeOption(.{}),
21 .optimize = optimize,
1322 });
1423 lib.use_llvm = false;
1524 lib.use_lld = false;
1625 lib.strip = false;
1726 lib.install();
1827
19 const zig_version = builtin.zig_version;
20 var version_buf: [100]u8 = undefined;
21 const version_fmt = std.fmt.bufPrint(&version_buf, "version {}", .{zig_version}) catch unreachable;
28 const version_fmt = "version " ++ builtin.zig_version_string;
2229
2330 const check_lib = lib.checkObject(.wasm);
2431 check_lib.checkStart("name producers");
test/link/wasm/segments/build.zig+12-3
......@@ -1,14 +1,23 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
4 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
8
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
614
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
716 const lib = b.addSharedLibrary(.{
817 .name = "lib",
918 .root_source_file = .{ .path = "lib.zig" },
1019 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
11 .optimize = b.standardOptimizeOption(.{}),
20 .optimize = optimize,
1221 });
1322 lib.use_llvm = false;
1423 lib.use_lld = false;
test/link/wasm/stack_pointer/build.zig+12-3
......@@ -1,14 +1,23 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
4 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
8
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
614
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
716 const lib = b.addSharedLibrary(.{
817 .name = "lib",
918 .root_source_file = .{ .path = "lib.zig" },
1019 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
11 .optimize = b.standardOptimizeOption(.{}),
20 .optimize = optimize,
1221 });
1322 lib.use_llvm = false;
1423 lib.use_lld = false;
test/link/wasm/type/build.zig+12-3
......@@ -1,14 +1,23 @@
11const std = @import("std");
22
3pub const requires_stage2 = true;
4
35pub fn build(b: *std.Build) void {
4 const test_step = b.step("test", "Test");
5 test_step.dependOn(b.getInstallStep());
6 const test_step = b.step("test", "Test it");
7 b.default_step = test_step;
8
9 add(b, test_step, .Debug);
10 add(b, test_step, .ReleaseFast);
11 add(b, test_step, .ReleaseSmall);
12 add(b, test_step, .ReleaseSafe);
13}
614
15fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
716 const lib = b.addSharedLibrary(.{
817 .name = "lib",
918 .root_source_file = .{ .path = "lib.zig" },
1019 .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding },
11 .optimize = b.standardOptimizeOption(.{}),
20 .optimize = optimize,
1221 });
1322 lib.use_llvm = false;
1423 lib.use_lld = false;
test/tests.zig+10-7
......@@ -599,18 +599,21 @@ pub fn addLinkTests(
599599 _ = test_filter;
600600 _ = optimize_modes;
601601 _ = enable_macos_sdk;
602 _ = omit_stage2;
603602 _ = enable_symlinks_windows;
604603
605604 const step = b.step("test-link", "Run the linker tests");
606605
607606 inline for (link.cases) |link_test| {
608 const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{});
609 const dep_step = dep.builder.default_step;
610 assert(mem.startsWith(u8, dep.builder.dep_prefix, "test."));
611 const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..];
612 dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name });
613 step.dependOn(dep_step);
607 const requires_stage2 = @hasDecl(link_test.import, "requires_stage2") and
608 link_test.import.requires_stage2;
609 if (!requires_stage2 or !omit_stage2) {
610 const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{});
611 const dep_step = dep.builder.default_step;
612 assert(mem.startsWith(u8, dep.builder.dep_prefix, "test."));
613 const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..];
614 dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name });
615 step.dependOn(dep_step);
616 }
614617 }
615618
616619 return step;