| author | |
| committer | |
| log | e122cd6312606068eb14987ed4d7527341484d26 |
| tree | 85562b0e306edd136ad8c8a46507d2b2d3890cc0 |
| parent | 3b069907305497af5ef6cdb1d6adddd05636aa51 |
It's simpler and it takes advantage of
`std.Build.addAnonymousDependency`, which has a number of benefits,
including concurrenc and preventing extra zig-cache and zig-out
directories being created.
4 tests are ported over as an example.9 files changed, 287 insertions(+), 279 deletions(-)
build.zig+1-8| ... | ... | @@ -442,8 +442,6 @@ pub fn build(b: *std.Build) !void { |
| 442 | 442 | .skip_stage2 = true, // TODO get all these passing |
| 443 | 443 | })); |
| 444 | 444 | |
| 445 | _ = enable_symlinks_windows; | |
| 446 | _ = enable_macos_sdk; | |
| 447 | 445 | test_step.dependOn(tests.addCompareOutputTests(b, test_filter, optimization_modes)); |
| 448 | 446 | //test_step.dependOn(tests.addStandaloneTests( |
| 449 | 447 | // b, |
| ... | ... | @@ -453,15 +451,10 @@ pub fn build(b: *std.Build) !void { |
| 453 | 451 | // enable_macos_sdk, |
| 454 | 452 | // target, |
| 455 | 453 | // skip_stage2_tests, |
| 456 | // b.enable_darling, | |
| 457 | // b.enable_qemu, | |
| 458 | // b.enable_rosetta, | |
| 459 | // b.enable_wasmtime, | |
| 460 | // b.enable_wine, | |
| 461 | 454 | // enable_symlinks_windows, |
| 462 | 455 | //)); |
| 463 | 456 | test_step.dependOn(tests.addCAbiTests(b, skip_non_native, skip_release)); |
| 464 | //test_step.dependOn(tests.addLinkTests(b, test_filter, optimization_modes, enable_macos_sdk, skip_stage2_tests, enable_symlinks_windows)); | |
| 457 | test_step.dependOn(tests.addLinkTests(b, test_filter, optimization_modes, enable_macos_sdk, skip_stage2_tests, enable_symlinks_windows)); | |
| 465 | 458 | test_step.dependOn(tests.addStackTraceTests(b, test_filter, optimization_modes)); |
| 466 | 459 | test_step.dependOn(tests.addCliTests(b, test_filter, optimization_modes)); |
| 467 | 460 | test_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, optimization_modes)); |
test/link.zig+218-211| ... | ... | @@ -1,213 +1,220 @@ |
| 1 | pub const Case = struct { | |
| 2 | build_root: []const u8, | |
| 3 | import: type, | |
| 4 | }; | |
| 5 | ||
| 6 | pub const cases = [_]Case{ | |
| 7 | .{ | |
| 8 | .build_root = "test/link/bss", | |
| 9 | .import = @import("link/bss/build.zig"), | |
| 10 | }, | |
| 11 | .{ | |
| 12 | .build_root = "test/link/common_symbols", | |
| 13 | .import = @import("link/common_symbols/build.zig"), | |
| 14 | }, | |
| 15 | .{ | |
| 16 | .build_root = "test/link/common_symbols_alignment", | |
| 17 | .import = @import("link/common_symbols_alignment/build.zig"), | |
| 18 | }, | |
| 19 | .{ | |
| 20 | .build_root = "test/link/interdependent_static_c_libs", | |
| 21 | .import = @import("link/interdependent_static_c_libs/build.zig"), | |
| 22 | }, | |
| 23 | //.{ | |
| 24 | // .build_root = "test/link/static_lib_as_system_lib", | |
| 25 | // .import = @import("link/static_lib_as_system_lib/build.zig"), | |
| 26 | //}, | |
| 27 | }; | |
| 28 | ||
| 29 | //pub fn addCases(cases: *Standalone) void { | |
| 30 | // addWasmCases(cases); | |
| 31 | // addMachOCases(cases); | |
| 32 | //} | |
| 33 | // | |
| 34 | //fn addWasmCases(cases: *Standalone) void { | |
| 35 | // cases.addBuildFile("test/link/wasm/archive/build.zig", .{ | |
| 36 | // .build_modes = true, | |
| 37 | // .requires_stage2 = true, | |
| 38 | // }); | |
| 39 | // | |
| 40 | // cases.addBuildFile("test/link/wasm/basic-features/build.zig", .{ | |
| 41 | // .requires_stage2 = true, | |
| 42 | // }); | |
| 43 | // | |
| 44 | // cases.addBuildFile("test/link/wasm/bss/build.zig", .{ | |
| 45 | // .build_modes = false, | |
| 46 | // .requires_stage2 = true, | |
| 47 | // }); | |
| 48 | // | |
| 49 | // cases.addBuildFile("test/link/wasm/export/build.zig", .{ | |
| 50 | // .build_modes = true, | |
| 51 | // .requires_stage2 = true, | |
| 52 | // }); | |
| 53 | // | |
| 54 | // // TODO: Fix open handle in wasm-linker refraining rename from working on Windows. | |
| 55 | // if (builtin.os.tag != .windows) { | |
| 56 | // cases.addBuildFile("test/link/wasm/export-data/build.zig", .{}); | |
| 57 | // } | |
| 58 | // | |
| 59 | // cases.addBuildFile("test/link/wasm/extern/build.zig", .{ | |
| 60 | // .build_modes = true, | |
| 61 | // .requires_stage2 = true, | |
| 62 | // .use_emulation = true, | |
| 63 | // }); | |
| 64 | // | |
| 65 | // cases.addBuildFile("test/link/wasm/extern-mangle/build.zig", .{ | |
| 66 | // .build_modes = true, | |
| 67 | // .requires_stage2 = true, | |
| 68 | // }); | |
| 69 | // | |
| 70 | // cases.addBuildFile("test/link/wasm/function-table/build.zig", .{ | |
| 71 | // .build_modes = true, | |
| 72 | // .requires_stage2 = true, | |
| 73 | // }); | |
| 74 | // | |
| 75 | // cases.addBuildFile("test/link/wasm/infer-features/build.zig", .{ | |
| 76 | // .requires_stage2 = true, | |
| 77 | // }); | |
| 78 | // | |
| 79 | // cases.addBuildFile("test/link/wasm/producers/build.zig", .{ | |
| 80 | // .build_modes = true, | |
| 81 | // .requires_stage2 = true, | |
| 82 | // }); | |
| 83 | // | |
| 84 | // cases.addBuildFile("test/link/wasm/segments/build.zig", .{ | |
| 85 | // .build_modes = true, | |
| 86 | // .requires_stage2 = true, | |
| 87 | // }); | |
| 88 | // | |
| 89 | // cases.addBuildFile("test/link/wasm/stack_pointer/build.zig", .{ | |
| 90 | // .build_modes = true, | |
| 91 | // .requires_stage2 = true, | |
| 92 | // }); | |
| 93 | // | |
| 94 | // cases.addBuildFile("test/link/wasm/type/build.zig", .{ | |
| 95 | // .build_modes = true, | |
| 96 | // .requires_stage2 = true, | |
| 97 | // }); | |
| 98 | //} | |
| 99 | // | |
| 100 | //fn addMachOCases(cases: *tests.StandaloneContext) void { | |
| 101 | // cases.addBuildFile("test/link/macho/bugs/13056/build.zig", .{ | |
| 102 | // .build_modes = true, | |
| 103 | // .requires_macos_sdk = true, | |
| 104 | // .requires_symlinks = true, | |
| 105 | // }); | |
| 106 | // | |
| 107 | // cases.addBuildFile("test/link/macho/bugs/13457/build.zig", .{ | |
| 108 | // .build_modes = true, | |
| 109 | // .requires_symlinks = true, | |
| 110 | // }); | |
| 111 | // | |
| 112 | // cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{ | |
| 113 | // .build_modes = false, | |
| 114 | // .requires_symlinks = true, | |
| 115 | // }); | |
| 116 | // | |
| 117 | // cases.addBuildFile("test/link/macho/dead_strip_dylibs/build.zig", .{ | |
| 118 | // .build_modes = true, | |
| 119 | // .requires_macos_sdk = true, | |
| 120 | // .requires_symlinks = true, | |
| 121 | // }); | |
| 122 | // | |
| 123 | // cases.addBuildFile("test/link/macho/dylib/build.zig", .{ | |
| 124 | // .build_modes = true, | |
| 125 | // .requires_symlinks = true, | |
| 126 | // }); | |
| 127 | // | |
| 128 | // cases.addBuildFile("test/link/macho/empty/build.zig", .{ | |
| 129 | // .build_modes = true, | |
| 130 | // .requires_symlinks = true, | |
| 131 | // }); | |
| 132 | // | |
| 133 | // cases.addBuildFile("test/link/macho/entry/build.zig", .{ | |
| 134 | // .build_modes = true, | |
| 135 | // .requires_symlinks = true, | |
| 136 | // }); | |
| 137 | // | |
| 138 | // cases.addBuildFile("test/link/macho/headerpad/build.zig", .{ | |
| 139 | // .build_modes = true, | |
| 140 | // .requires_macos_sdk = true, | |
| 141 | // .requires_symlinks = true, | |
| 142 | // }); | |
| 143 | // | |
| 144 | // cases.addBuildFile("test/link/macho/linksection/build.zig", .{ | |
| 145 | // .build_modes = true, | |
| 146 | // .requires_symlinks = true, | |
| 147 | // }); | |
| 148 | // | |
| 149 | // cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{ | |
| 150 | // .build_modes = true, | |
| 151 | // .requires_macos_sdk = true, | |
| 152 | // .requires_symlinks = true, | |
| 153 | // }); | |
| 154 | // | |
| 155 | // cases.addBuildFile("test/link/macho/needed_library/build.zig", .{ | |
| 156 | // .build_modes = true, | |
| 157 | // .requires_symlinks = true, | |
| 158 | // }); | |
| 159 | // | |
| 160 | // cases.addBuildFile("test/link/macho/objc/build.zig", .{ | |
| 161 | // .build_modes = true, | |
| 162 | // .requires_macos_sdk = true, | |
| 163 | // .requires_symlinks = true, | |
| 164 | // }); | |
| 165 | // | |
| 166 | // cases.addBuildFile("test/link/macho/objcpp/build.zig", .{ | |
| 167 | // .build_modes = true, | |
| 168 | // .requires_macos_sdk = true, | |
| 169 | // .requires_symlinks = true, | |
| 170 | // }); | |
| 171 | // | |
| 172 | // cases.addBuildFile("test/link/macho/pagezero/build.zig", .{ | |
| 173 | // .build_modes = false, | |
| 174 | // .requires_symlinks = true, | |
| 175 | // }); | |
| 176 | // | |
| 177 | // cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{ | |
| 178 | // .build_modes = true, | |
| 179 | // .requires_symlinks = true, | |
| 180 | // }); | |
| 181 | // | |
| 182 | // cases.addBuildFile("test/link/macho/stack_size/build.zig", .{ | |
| 183 | // .build_modes = true, | |
| 184 | // .requires_symlinks = true, | |
| 185 | // }); | |
| 186 | // | |
| 187 | // cases.addBuildFile("test/link/macho/strict_validation/build.zig", .{ | |
| 188 | // .build_modes = true, | |
| 189 | // .requires_symlinks = true, | |
| 190 | // }); | |
| 191 | // | |
| 192 | // cases.addBuildFile("test/link/macho/tls/build.zig", .{ | |
| 193 | // .build_modes = true, | |
| 194 | // .requires_symlinks = true, | |
| 195 | // }); | |
| 196 | // | |
| 197 | // cases.addBuildFile("test/link/macho/unwind_info/build.zig", .{ | |
| 198 | // .build_modes = true, | |
| 199 | // .requires_symlinks = true, | |
| 200 | // }); | |
| 201 | // | |
| 202 | // cases.addBuildFile("test/link/macho/uuid/build.zig", .{ | |
| 203 | // .build_modes = false, | |
| 204 | // .requires_symlinks = true, | |
| 205 | // }); | |
| 206 | // | |
| 207 | // cases.addBuildFile("test/link/macho/weak_library/build.zig", .{ | |
| 208 | // .build_modes = true, | |
| 209 | // .requires_symlinks = true, | |
| 210 | // }); | |
| 211 | // | |
| 212 | // cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{ | |
| 213 | // .build_modes = true, | |
| 214 | // .requires_macos_sdk = true, | |
| 215 | // .requires_symlinks = true, | |
| 216 | // }); | |
| 217 | //} | |
| 218 | ||
| 1 | 219 | const std = @import("std"); |
| 2 | 220 | const builtin = @import("builtin"); |
| 3 | const tests = @import("tests.zig"); | |
| 4 | ||
| 5 | pub fn addCases(cases: *tests.StandaloneContext) void { | |
| 6 | cases.addBuildFile("test/link/bss/build.zig", .{ | |
| 7 | .build_modes = false, // we only guarantee zerofill for undefined in Debug | |
| 8 | }); | |
| 9 | ||
| 10 | cases.addBuildFile("test/link/common_symbols/build.zig", .{ | |
| 11 | .build_modes = true, | |
| 12 | }); | |
| 13 | ||
| 14 | cases.addBuildFile("test/link/common_symbols_alignment/build.zig", .{ | |
| 15 | .build_modes = true, | |
| 16 | }); | |
| 17 | ||
| 18 | cases.addBuildFile("test/link/interdependent_static_c_libs/build.zig", .{ | |
| 19 | .build_modes = true, | |
| 20 | }); | |
| 21 | ||
| 22 | cases.addBuildFile("test/link/static_lib_as_system_lib/build.zig", .{ | |
| 23 | .build_modes = true, | |
| 24 | }); | |
| 25 | ||
| 26 | addWasmCases(cases); | |
| 27 | addMachOCases(cases); | |
| 28 | } | |
| 29 | ||
| 30 | fn addWasmCases(cases: *tests.StandaloneContext) 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 | } |
test/link/bss/build.zig+3-3| ... | ... | @@ -1,17 +1,17 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | |
| 5 | 4 | const test_step = b.step("test", "Test"); |
| 5 | b.default_step = test_step; | |
| 6 | 6 | |
| 7 | 7 | const exe = b.addExecutable(.{ |
| 8 | 8 | .name = "bss", |
| 9 | 9 | .root_source_file = .{ .path = "main.zig" }, |
| 10 | .optimize = optimize, | |
| 10 | .optimize = .Debug, | |
| 11 | 11 | }); |
| 12 | b.default_step.dependOn(&exe.step); | |
| 13 | 12 | |
| 14 | 13 | const run = exe.run(); |
| 15 | 14 | run.expectStdOutEqual("0, 1, 0\n"); |
| 15 | ||
| 16 | 16 | test_step.dependOn(&run.step); |
| 17 | 17 | } |
test/link/bss/main.zig+1-1| ... | ... | @@ -1,7 +1,7 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | // Stress test zerofill layout |
| 4 | var buffer: [0x1000000]u64 = undefined; | |
| 4 | var buffer: [0x1000000]u64 = [1]u64{0} ** 0x1000000; | |
| 5 | 5 | |
| 6 | 6 | pub fn main() anyerror!void { |
| 7 | 7 | buffer[0x10] = 1; |
test/link/common_symbols/build.zig+9-2| ... | ... | @@ -1,8 +1,16 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | |
| 4 | const test_step = b.step("test", "Test it"); | |
| 5 | b.default_step = test_step; | |
| 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 | } | |
| 5 | 12 | |
| 13 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 6 | 14 | const lib_a = b.addStaticLibrary(.{ |
| 7 | 15 | .name = "a", |
| 8 | 16 | .optimize = optimize, |
| ... | ... | @@ -16,6 +24,5 @@ pub fn build(b: *std.Build) void { |
| 16 | 24 | }); |
| 17 | 25 | test_exe.linkLibrary(lib_a); |
| 18 | 26 | |
| 19 | const test_step = b.step("test", "Test it"); | |
| 20 | 27 | test_step.dependOn(&test_exe.step); |
| 21 | 28 | } |
test/link/common_symbols_alignment/build.zig+10-5| ... | ... | @@ -1,23 +1,28 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | |
| 5 | const target = b.standardTargetOptions(.{}); | |
| 4 | const test_step = b.step("test", "Test it"); | |
| 5 | b.default_step = test_step; | |
| 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 | } | |
| 6 | 12 | |
| 13 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 14 | const lib_a = b.addStaticLibrary(.{ |
| 8 | 15 | .name = "a", |
| 9 | 16 | .optimize = optimize, |
| 10 | .target = target, | |
| 17 | .target = .{}, | |
| 11 | 18 | }); |
| 12 | 19 | lib_a.addCSourceFiles(&.{"a.c"}, &.{"-fcommon"}); |
| 13 | 20 | |
| 14 | 21 | const test_exe = b.addTest(.{ |
| 15 | 22 | .root_source_file = .{ .path = "main.zig" }, |
| 16 | 23 | .optimize = optimize, |
| 17 | .target = target, | |
| 18 | 24 | }); |
| 19 | 25 | test_exe.linkLibrary(lib_a); |
| 20 | 26 | |
| 21 | const test_step = b.step("test", "Test it"); | |
| 22 | 27 | test_step.dependOn(&test_exe.step); |
| 23 | 28 | } |
test/link/interdependent_static_c_libs/build.zig+11-6| ... | ... | @@ -1,13 +1,20 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | |
| 5 | const target = b.standardTargetOptions(.{}); | |
| 4 | const test_step = b.step("test", "Test it"); | |
| 5 | b.default_step = test_step; | |
| 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 | } | |
| 6 | 12 | |
| 13 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 14 | const lib_a = b.addStaticLibrary(.{ |
| 8 | 15 | .name = "a", |
| 9 | 16 | .optimize = optimize, |
| 10 | .target = target, | |
| 17 | .target = .{}, | |
| 11 | 18 | }); |
| 12 | 19 | lib_a.addCSourceFile("a.c", &[_][]const u8{}); |
| 13 | 20 | lib_a.addIncludePath("."); |
| ... | ... | @@ -15,7 +22,7 @@ pub fn build(b: *std.Build) void { |
| 15 | 22 | const lib_b = b.addStaticLibrary(.{ |
| 16 | 23 | .name = "b", |
| 17 | 24 | .optimize = optimize, |
| 18 | .target = target, | |
| 25 | .target = .{}, | |
| 19 | 26 | }); |
| 20 | 27 | lib_b.addCSourceFile("b.c", &[_][]const u8{}); |
| 21 | 28 | lib_b.addIncludePath("."); |
| ... | ... | @@ -23,12 +30,10 @@ pub fn build(b: *std.Build) void { |
| 23 | 30 | const test_exe = b.addTest(.{ |
| 24 | 31 | .root_source_file = .{ .path = "main.zig" }, |
| 25 | 32 | .optimize = optimize, |
| 26 | .target = target, | |
| 27 | 33 | }); |
| 28 | 34 | test_exe.linkLibrary(lib_a); |
| 29 | 35 | test_exe.linkLibrary(lib_b); |
| 30 | 36 | test_exe.addIncludePath("."); |
| 31 | 37 | |
| 32 | const test_step = b.step("test", "Test it"); | |
| 33 | 38 | test_step.dependOn(&test_exe.step); |
| 34 | 39 | } |
test/link/static_lib_as_system_lib/build.zig+12-7| ... | ... | @@ -1,13 +1,20 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | |
| 3 | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | |
| 5 | const target = b.standardTargetOptions(.{}); | |
| 4 | const test_step = b.step("test", "Test it"); | |
| 5 | b.default_step = test_step; | |
| 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 | } | |
| 6 | 12 | |
| 13 | fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void { | |
| 7 | 14 | const lib_a = b.addStaticLibrary(.{ |
| 8 | 15 | .name = "a", |
| 9 | 16 | .optimize = optimize, |
| 10 | .target = target, | |
| 17 | .target = .{}, | |
| 11 | 18 | }); |
| 12 | 19 | lib_a.addCSourceFile("a.c", &[_][]const u8{}); |
| 13 | 20 | lib_a.addIncludePath("."); |
| ... | ... | @@ -16,14 +23,12 @@ pub fn build(b: *std.Build) void { |
| 16 | 23 | const test_exe = b.addTest(.{ |
| 17 | 24 | .root_source_file = .{ .path = "main.zig" }, |
| 18 | 25 | .optimize = optimize, |
| 19 | .target = target, | |
| 26 | .target = .{}, | |
| 20 | 27 | }); |
| 21 | 28 | test_exe.linkSystemLibrary("a"); // force linking liba.a as -la |
| 22 | 29 | test_exe.addSystemIncludePath("."); |
| 23 | const search_path = std.fs.path.join(b.allocator, &[_][]const u8{ b.install_path, "lib" }) catch unreachable; | |
| 30 | const search_path = std.fs.path.join(b.allocator, &[_][]const u8{ b.install_path, "lib" }) catch @panic("OOM"); | |
| 24 | 31 | test_exe.addLibraryPath(search_path); |
| 25 | 32 | |
| 26 | const test_step = b.step("test", "Test it"); | |
| 27 | test_step.dependOn(b.getInstallStep()); | |
| 28 | 33 | test_step.dependOn(&test_exe.step); |
| 29 | 34 | } |
test/tests.zig+22-36| ... | ... | @@ -1,16 +1,9 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | const debug = std.debug; | |
| 3 | const assert = std.debug.assert; | |
| 4 | 4 | const CrossTarget = std.zig.CrossTarget; |
| 5 | const io = std.io; | |
| 6 | const fs = std.fs; | |
| 7 | 5 | const mem = std.mem; |
| 8 | const fmt = std.fmt; | |
| 9 | const ArrayList = std.ArrayList; | |
| 10 | 6 | const OptimizeMode = std.builtin.OptimizeMode; |
| 11 | const CompileStep = std.Build.CompileStep; | |
| 12 | const Allocator = mem.Allocator; | |
| 13 | const ExecError = std.Build.ExecError; | |
| 14 | 7 | const Step = std.Build.Step; |
| 15 | 8 | |
| 16 | 9 | // Cases |
| ... | ... | @@ -574,15 +567,10 @@ pub fn addStandaloneTests( |
| 574 | 567 | enable_macos_sdk: bool, |
| 575 | 568 | target: std.zig.CrossTarget, |
| 576 | 569 | omit_stage2: bool, |
| 577 | enable_darling: bool, | |
| 578 | enable_qemu: bool, | |
| 579 | enable_rosetta: bool, | |
| 580 | enable_wasmtime: bool, | |
| 581 | enable_wine: bool, | |
| 582 | 570 | enable_symlinks_windows: bool, |
| 583 | 571 | ) *Step { |
| 584 | 572 | const cases = b.allocator.create(StandaloneContext) catch @panic("OOM"); |
| 585 | cases.* = StandaloneContext{ | |
| 573 | cases.* = .{ | |
| 586 | 574 | .b = b, |
| 587 | 575 | .step = b.step("test-standalone", "Run the standalone tests"), |
| 588 | 576 | .test_index = 0, |
| ... | ... | @@ -592,11 +580,6 @@ pub fn addStandaloneTests( |
| 592 | 580 | .enable_macos_sdk = enable_macos_sdk, |
| 593 | 581 | .target = target, |
| 594 | 582 | .omit_stage2 = omit_stage2, |
| 595 | .enable_darling = enable_darling, | |
| 596 | .enable_qemu = enable_qemu, | |
| 597 | .enable_rosetta = enable_rosetta, | |
| 598 | .enable_wasmtime = enable_wasmtime, | |
| 599 | .enable_wine = enable_wine, | |
| 600 | 583 | .enable_symlinks_windows = enable_symlinks_windows, |
| 601 | 584 | }; |
| 602 | 585 | |
| ... | ... | @@ -613,21 +596,24 @@ pub fn addLinkTests( |
| 613 | 596 | omit_stage2: bool, |
| 614 | 597 | enable_symlinks_windows: bool, |
| 615 | 598 | ) *Step { |
| 616 | const cases = b.allocator.create(StandaloneContext) catch @panic("OOM"); | |
| 617 | cases.* = StandaloneContext{ | |
| 618 | .b = b, | |
| 619 | .step = b.step("test-link", "Run the linker tests"), | |
| 620 | .test_index = 0, | |
| 621 | .test_filter = test_filter, | |
| 622 | .optimize_modes = optimize_modes, | |
| 623 | .skip_non_native = true, | |
| 624 | .enable_macos_sdk = enable_macos_sdk, | |
| 625 | .target = .{}, | |
| 626 | .omit_stage2 = omit_stage2, | |
| 627 | .enable_symlinks_windows = enable_symlinks_windows, | |
| 628 | }; | |
| 629 | link.addCases(cases); | |
| 630 | return cases.step; | |
| 599 | _ = test_filter; | |
| 600 | _ = optimize_modes; | |
| 601 | _ = enable_macos_sdk; | |
| 602 | _ = omit_stage2; | |
| 603 | _ = enable_symlinks_windows; | |
| 604 | ||
| 605 | const step = b.step("test-link", "Run the linker tests"); | |
| 606 | ||
| 607 | 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); | |
| 614 | } | |
| 615 | ||
| 616 | return step; | |
| 631 | 617 | } |
| 632 | 618 | |
| 633 | 619 | pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []const OptimizeMode) *Step { |
| ... | ... | @@ -761,7 +747,7 @@ pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []co |
| 761 | 747 | const unformatted_code = " // no reason for indent"; |
| 762 | 748 | const s = std.fs.path.sep_str; |
| 763 | 749 | |
| 764 | var dir = fs.cwd().openDir(tmp_path, .{}) catch @panic("unhandled"); | |
| 750 | var dir = std.fs.cwd().openDir(tmp_path, .{}) catch @panic("unhandled"); | |
| 765 | 751 | defer dir.close(); |
| 766 | 752 | dir.writeFile("fmt1.zig", unformatted_code) catch @panic("unhandled"); |
| 767 | 753 | dir.writeFile("fmt2.zig", unformatted_code) catch @panic("unhandled"); |
| ... | ... | @@ -791,7 +777,7 @@ pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []co |
| 791 | 777 | run3.step.dependOn(&run2.step); |
| 792 | 778 | |
| 793 | 779 | const unformatted_code_utf16 = "\xff\xfe \x00 \x00 \x00 \x00/\x00/\x00 \x00n\x00o\x00 \x00r\x00e\x00a\x00s\x00o\x00n\x00"; |
| 794 | const fmt4_path = fs.path.join(b.allocator, &.{ tmp_path, "fmt4.zig" }) catch @panic("OOM"); | |
| 780 | const fmt4_path = std.fs.path.join(b.allocator, &.{ tmp_path, "fmt4.zig" }) catch @panic("OOM"); | |
| 795 | 781 | const write4 = b.addWriteFiles(); |
| 796 | 782 | write4.addBytesToSource(unformatted_code_utf16, fmt4_path); |
| 797 | 783 | write4.step.dependOn(&run3.step); |