| author | |
| committer | |
| log | cdf0a2af58ccd4ca4250435f258b35735e953aaf |
| tree | 1b4a40e586d5b744a9d72e07d7876123a31a535c |
| parent | f558c835a41052b7609f0f0b27c5bbc4fe6b024d |
15 files changed, 310 insertions(+), 237 deletions(-)
test/link.zig+172-190| ... | ... | @@ -20,197 +20,179 @@ pub const cases = [_]Case{ |
| 20 | 20 | .build_root = "test/link/interdependent_static_c_libs", |
| 21 | 21 | .import = @import("link/interdependent_static_c_libs/build.zig"), |
| 22 | 22 | }, |
| 23 | }; | |
| 24 | 23 | |
| 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 | }; | |
| 214 | 196 | |
| 215 | 197 | const std = @import("std"); |
| 216 | 198 | const builtin = @import("builtin"); |
test/link/wasm/archive/build.zig+12-3| ... | ... | @@ -1,15 +1,24 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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 | } | |
| 6 | 14 | |
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 16 | // The code in question will pull-in compiler-rt, |
| 8 | 17 | // and therefore link with its archive file. |
| 9 | 18 | const lib = b.addSharedLibrary(.{ |
| 10 | 19 | .name = "main", |
| 11 | 20 | .root_source_file = .{ .path = "main.zig" }, |
| 12 | .optimize = b.standardOptimizeOption(.{}), | |
| 21 | .optimize = optimize, | |
| 13 | 22 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 14 | 23 | }); |
| 15 | 24 | lib.use_llvm = false; |
test/link/wasm/basic-features/build.zig+4-1| ... | ... | @@ -1,11 +1,13 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub fn build(b: *std.Build) void { |
| 4 | 6 | // Library with explicitly set cpu features |
| 5 | 7 | const lib = b.addSharedLibrary(.{ |
| 6 | 8 | .name = "lib", |
| 7 | 9 | .root_source_file = .{ .path = "main.zig" }, |
| 8 | .optimize = b.standardOptimizeOption(.{}), | |
| 10 | .optimize = .Debug, | |
| 9 | 11 | .target = .{ |
| 10 | 12 | .cpu_arch = .wasm32, |
| 11 | 13 | .cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp }, |
| ... | ... | @@ -24,4 +26,5 @@ pub fn build(b: *std.Build) void { |
| 24 | 26 | |
| 25 | 27 | const test_step = b.step("test", "Run linker test"); |
| 26 | 28 | test_step.dependOn(&check.step); |
| 29 | b.default_step = test_step; | |
| 27 | 30 | } |
test/link/wasm/bss/build.zig+5-2| ... | ... | @@ -1,14 +1,16 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub fn build(b: *std.Build) void { |
| 4 | 6 | const test_step = b.step("test", "Test"); |
| 5 | test_step.dependOn(b.getInstallStep()); | |
| 7 | b.default_step = test_step; | |
| 6 | 8 | |
| 7 | 9 | const lib = b.addSharedLibrary(.{ |
| 8 | 10 | .name = "lib", |
| 9 | 11 | .root_source_file = .{ .path = "lib.zig" }, |
| 10 | 12 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 11 | .optimize = b.standardOptimizeOption(.{}), | |
| 13 | .optimize = .Debug, | |
| 12 | 14 | }); |
| 13 | 15 | lib.use_llvm = false; |
| 14 | 16 | lib.use_lld = false; |
| ... | ... | @@ -36,5 +38,6 @@ pub fn build(b: *std.Build) void { |
| 36 | 38 | check_lib.checkNext("name .rodata"); |
| 37 | 39 | check_lib.checkNext("index 1"); // bss section always last |
| 38 | 40 | check_lib.checkNext("name .bss"); |
| 41 | ||
| 39 | 42 | test_step.dependOn(&check_lib.step); |
| 40 | 43 | } |
test/link/wasm/export-data/build.zig+6-1| ... | ... | @@ -2,7 +2,12 @@ const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub fn build(b: *std.Build) void { |
| 4 | 4 | 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 | } | |
| 6 | 11 | |
| 7 | 12 | const lib = b.addSharedLibrary(.{ |
| 8 | 13 | .name = "lib", |
test/link/wasm/export/build.zig+11-2| ... | ... | @@ -1,8 +1,18 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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 | } | |
| 5 | 14 | |
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 6 | 16 | const no_export = b.addSharedLibrary(.{ |
| 7 | 17 | .name = "no-export", |
| 8 | 18 | .root_source_file = .{ .path = "main.zig" }, |
| ... | ... | @@ -50,7 +60,6 @@ pub fn build(b: *std.Build) void { |
| 50 | 60 | check_force_export.checkNext("name foo"); |
| 51 | 61 | check_force_export.checkNext("kind function"); |
| 52 | 62 | |
| 53 | const test_step = b.step("test", "Run linker test"); | |
| 54 | 63 | test_step.dependOn(&check_no_export.step); |
| 55 | 64 | test_step.dependOn(&check_dynamic_export.step); |
| 56 | 65 | test_step.dependOn(&check_force_export.step); |
test/link/wasm/extern-mangle/build.zig+10-4| ... | ... | @@ -1,18 +1,24 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub 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; | |
| 6 | 6 | |
| 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 | ||
| 13 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 14 | const lib = b.addSharedLibrary(.{ |
| 8 | 15 | .name = "lib", |
| 9 | 16 | .root_source_file = .{ .path = "lib.zig" }, |
| 10 | 17 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 11 | .optimize = b.standardOptimizeOption(.{}), | |
| 18 | .optimize = optimize, | |
| 12 | 19 | }); |
| 13 | 20 | lib.import_symbols = true; // import `a` and `b` |
| 14 | 21 | lib.rdynamic = true; // export `foo` |
| 15 | lib.install(); | |
| 16 | 22 | |
| 17 | 23 | const check_lib = lib.checkObject(.wasm); |
| 18 | 24 | check_lib.checkStart("Section import"); |
test/link/wasm/extern/build.zig+13-2| ... | ... | @@ -1,10 +1,22 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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 | ||
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 4 | 16 | const exe = b.addExecutable(.{ |
| 5 | 17 | .name = "extern", |
| 6 | 18 | .root_source_file = .{ .path = "main.zig" }, |
| 7 | .optimize = b.standardOptimizeOption(.{}), | |
| 19 | .optimize = optimize, | |
| 8 | 20 | .target = .{ .cpu_arch = .wasm32, .os_tag = .wasi }, |
| 9 | 21 | }); |
| 10 | 22 | exe.addCSourceFile("foo.c", &.{}); |
| ... | ... | @@ -15,6 +27,5 @@ pub fn build(b: *std.Build) void { |
| 15 | 27 | run.skip_foreign_checks = true; |
| 16 | 28 | run.expectStdOutEqual("Result: 30"); |
| 17 | 29 | |
| 18 | const test_step = b.step("test", "Run linker test"); | |
| 19 | 30 | test_step.dependOn(&run.step); |
| 20 | 31 | } |
test/link/wasm/function-table/build.zig+13-6| ... | ... | @@ -1,13 +1,20 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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; | |
| 5 | 8 | |
| 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 | } | |
| 8 | 14 | |
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 9 | 16 | const import_table = b.addSharedLibrary(.{ |
| 10 | .name = "lib", | |
| 17 | .name = "import_table", | |
| 11 | 18 | .root_source_file = .{ .path = "lib.zig" }, |
| 12 | 19 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 13 | 20 | .optimize = optimize, |
| ... | ... | @@ -17,7 +24,7 @@ pub fn build(b: *std.Build) void { |
| 17 | 24 | import_table.import_table = true; |
| 18 | 25 | |
| 19 | 26 | const export_table = b.addSharedLibrary(.{ |
| 20 | .name = "lib", | |
| 27 | .name = "export_table", | |
| 21 | 28 | .root_source_file = .{ .path = "lib.zig" }, |
| 22 | 29 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 23 | 30 | .optimize = optimize, |
| ... | ... | @@ -27,7 +34,7 @@ pub fn build(b: *std.Build) void { |
| 27 | 34 | export_table.export_table = true; |
| 28 | 35 | |
| 29 | 36 | const regular_table = b.addSharedLibrary(.{ |
| 30 | .name = "lib", | |
| 37 | .name = "regular_table", | |
| 31 | 38 | .root_source_file = .{ .path = "lib.zig" }, |
| 32 | 39 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 33 | 40 | .optimize = optimize, |
test/link/wasm/infer-features/build.zig+5-4| ... | ... | @@ -1,12 +1,12 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub fn build(b: *std.Build) void { | |
| 4 | const optimize = b.standardOptimizeOption(.{}); | |
| 3 | pub const requires_stage2 = true; | |
| 5 | 4 | |
| 5 | pub fn build(b: *std.Build) void { | |
| 6 | 6 | // Wasm Object file which we will use to infer the features from |
| 7 | 7 | const c_obj = b.addObject(.{ |
| 8 | 8 | .name = "c_obj", |
| 9 | .optimize = optimize, | |
| 9 | .optimize = .Debug, | |
| 10 | 10 | .target = .{ |
| 11 | 11 | .cpu_arch = .wasm32, |
| 12 | 12 | .cpu_model = .{ .explicit = &std.Target.wasm.cpu.bleeding_edge }, |
| ... | ... | @@ -20,7 +20,7 @@ pub fn build(b: *std.Build) void { |
| 20 | 20 | const lib = b.addSharedLibrary(.{ |
| 21 | 21 | .name = "lib", |
| 22 | 22 | .root_source_file = .{ .path = "main.zig" }, |
| 23 | .optimize = optimize, | |
| 23 | .optimize = .Debug, | |
| 24 | 24 | .target = .{ |
| 25 | 25 | .cpu_arch = .wasm32, |
| 26 | 26 | .cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp }, |
| ... | ... | @@ -45,4 +45,5 @@ pub fn build(b: *std.Build) void { |
| 45 | 45 | |
| 46 | 46 | const test_step = b.step("test", "Run linker test"); |
| 47 | 47 | test_step.dependOn(&check.step); |
| 48 | b.default_step = test_step; | |
| 48 | 49 | } |
test/link/wasm/producers/build.zig+13-6| ... | ... | @@ -1,24 +1,31 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | pub const requires_stage2 = true; | |
| 5 | ||
| 4 | 6 | pub 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 | } | |
| 7 | 15 | |
| 16 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 8 | 17 | const lib = b.addSharedLibrary(.{ |
| 9 | 18 | .name = "lib", |
| 10 | 19 | .root_source_file = .{ .path = "lib.zig" }, |
| 11 | 20 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 12 | .optimize = b.standardOptimizeOption(.{}), | |
| 21 | .optimize = optimize, | |
| 13 | 22 | }); |
| 14 | 23 | lib.use_llvm = false; |
| 15 | 24 | lib.use_lld = false; |
| 16 | 25 | lib.strip = false; |
| 17 | 26 | lib.install(); |
| 18 | 27 | |
| 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; | |
| 22 | 29 | |
| 23 | 30 | const check_lib = lib.checkObject(.wasm); |
| 24 | 31 | check_lib.checkStart("name producers"); |
test/link/wasm/segments/build.zig+12-3| ... | ... | @@ -1,14 +1,23 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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 | } | |
| 6 | 14 | |
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 16 | const lib = b.addSharedLibrary(.{ |
| 8 | 17 | .name = "lib", |
| 9 | 18 | .root_source_file = .{ .path = "lib.zig" }, |
| 10 | 19 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 11 | .optimize = b.standardOptimizeOption(.{}), | |
| 20 | .optimize = optimize, | |
| 12 | 21 | }); |
| 13 | 22 | lib.use_llvm = false; |
| 14 | 23 | lib.use_lld = false; |
test/link/wasm/stack_pointer/build.zig+12-3| ... | ... | @@ -1,14 +1,23 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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 | } | |
| 6 | 14 | |
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 16 | const lib = b.addSharedLibrary(.{ |
| 8 | 17 | .name = "lib", |
| 9 | 18 | .root_source_file = .{ .path = "lib.zig" }, |
| 10 | 19 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 11 | .optimize = b.standardOptimizeOption(.{}), | |
| 20 | .optimize = optimize, | |
| 12 | 21 | }); |
| 13 | 22 | lib.use_llvm = false; |
| 14 | 23 | lib.use_lld = false; |
test/link/wasm/type/build.zig+12-3| ... | ... | @@ -1,14 +1,23 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | pub const requires_stage2 = true; | |
| 4 | ||
| 3 | 5 | pub 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 | } | |
| 6 | 14 | |
| 15 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 16 | const lib = b.addSharedLibrary(.{ |
| 8 | 17 | .name = "lib", |
| 9 | 18 | .root_source_file = .{ .path = "lib.zig" }, |
| 10 | 19 | .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, |
| 11 | .optimize = b.standardOptimizeOption(.{}), | |
| 20 | .optimize = optimize, | |
| 12 | 21 | }); |
| 13 | 22 | lib.use_llvm = false; |
| 14 | 23 | lib.use_lld = false; |
test/tests.zig+10-7| ... | ... | @@ -599,18 +599,21 @@ pub fn addLinkTests( |
| 599 | 599 | _ = test_filter; |
| 600 | 600 | _ = optimize_modes; |
| 601 | 601 | _ = enable_macos_sdk; |
| 602 | _ = omit_stage2; | |
| 603 | 602 | _ = enable_symlinks_windows; |
| 604 | 603 | |
| 605 | 604 | const step = b.step("test-link", "Run the linker tests"); |
| 606 | 605 | |
| 607 | 606 | 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 | } | |
| 614 | 617 | } |
| 615 | 618 | |
| 616 | 619 | return step; |