| 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,8 +442,6 @@ pub fn build(b: *std.Build) !void { |
| 442 | .skip_stage2 = true, // TODO get all these passing | 442 | .skip_stage2 = true, // TODO get all these passing |
| 443 | })); | 443 | })); |
| 444 | 444 | ||
| 445 | _ = enable_symlinks_windows; | ||
| 446 | _ = enable_macos_sdk; | ||
| 447 | test_step.dependOn(tests.addCompareOutputTests(b, test_filter, optimization_modes)); | 445 | test_step.dependOn(tests.addCompareOutputTests(b, test_filter, optimization_modes)); |
| 448 | //test_step.dependOn(tests.addStandaloneTests( | 446 | //test_step.dependOn(tests.addStandaloneTests( |
| 449 | // b, | 447 | // b, |
| ... | @@ -453,15 +451,10 @@ pub fn build(b: *std.Build) !void { | ... | @@ -453,15 +451,10 @@ pub fn build(b: *std.Build) !void { |
| 453 | // enable_macos_sdk, | 451 | // enable_macos_sdk, |
| 454 | // target, | 452 | // target, |
| 455 | // skip_stage2_tests, | 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 | // enable_symlinks_windows, | 454 | // enable_symlinks_windows, |
| 462 | //)); | 455 | //)); |
| 463 | test_step.dependOn(tests.addCAbiTests(b, skip_non_native, skip_release)); | 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 | test_step.dependOn(tests.addStackTraceTests(b, test_filter, optimization_modes)); | 458 | test_step.dependOn(tests.addStackTraceTests(b, test_filter, optimization_modes)); |
| 466 | test_step.dependOn(tests.addCliTests(b, test_filter, optimization_modes)); | 459 | test_step.dependOn(tests.addCliTests(b, test_filter, optimization_modes)); |
| 467 | test_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, optimization_modes)); | 460 | test_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, optimization_modes)); |
test/link.zig+218-211| ... | @@ -1,213 +1,220 @@ | ... | @@ -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 | const std = @import("std"); | 219 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | 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,17 +1,17 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | 2 | ||
| 3 | pub fn build(b: *std.Build) void { | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | ||
| 5 | const test_step = b.step("test", "Test"); | 4 | const test_step = b.step("test", "Test"); |
| 5 | b.default_step = test_step; | ||
| 6 | 6 | ||
| 7 | const exe = b.addExecutable(.{ | 7 | const exe = b.addExecutable(.{ |
| 8 | .name = "bss", | 8 | .name = "bss", |
| 9 | .root_source_file = .{ .path = "main.zig" }, | 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 | const run = exe.run(); | 13 | const run = exe.run(); |
| 15 | run.expectStdOutEqual("0, 1, 0\n"); | 14 | run.expectStdOutEqual("0, 1, 0\n"); |
| 15 | |||
| 16 | test_step.dependOn(&run.step); | 16 | test_step.dependOn(&run.step); |
| 17 | } | 17 | } |
test/link/bss/main.zig+1-1| ... | @@ -1,7 +1,7 @@ | ... | @@ -1,7 +1,7 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | 2 | ||
| 3 | // Stress test zerofill layout | 3 | // Stress test zerofill layout |
| 4 | var buffer: [0x1000000]u64 = undefined; | 4 | var buffer: [0x1000000]u64 = [1]u64{0} ** 0x1000000; |
| 5 | 5 | ||
| 6 | pub fn main() anyerror!void { | 6 | pub fn main() anyerror!void { |
| 7 | buffer[0x10] = 1; | 7 | buffer[0x10] = 1; |
test/link/common_symbols/build.zig+9-2| ... | @@ -1,8 +1,16 @@ | ... | @@ -1,8 +1,16 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | 2 | ||
| 3 | pub fn build(b: *std.Build) void { | 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 | const lib_a = b.addStaticLibrary(.{ | 14 | const lib_a = b.addStaticLibrary(.{ |
| 7 | .name = "a", | 15 | .name = "a", |
| 8 | .optimize = optimize, | 16 | .optimize = optimize, |
| ... | @@ -16,6 +24,5 @@ pub fn build(b: *std.Build) void { | ... | @@ -16,6 +24,5 @@ pub fn build(b: *std.Build) void { |
| 16 | }); | 24 | }); |
| 17 | test_exe.linkLibrary(lib_a); | 25 | test_exe.linkLibrary(lib_a); |
| 18 | 26 | ||
| 19 | const test_step = b.step("test", "Test it"); | ||
| 20 | test_step.dependOn(&test_exe.step); | 27 | test_step.dependOn(&test_exe.step); |
| 21 | } | 28 | } |
test/link/common_symbols_alignment/build.zig+10-5| ... | @@ -1,23 +1,28 @@ | ... | @@ -1,23 +1,28 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | 2 | ||
| 3 | pub fn build(b: *std.Build) void { | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | 4 | const test_step = b.step("test", "Test it"); |
| 5 | const target = b.standardTargetOptions(.{}); | 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 | const lib_a = b.addStaticLibrary(.{ | 14 | const lib_a = b.addStaticLibrary(.{ |
| 8 | .name = "a", | 15 | .name = "a", |
| 9 | .optimize = optimize, | 16 | .optimize = optimize, |
| 10 | .target = target, | 17 | .target = .{}, |
| 11 | }); | 18 | }); |
| 12 | lib_a.addCSourceFiles(&.{"a.c"}, &.{"-fcommon"}); | 19 | lib_a.addCSourceFiles(&.{"a.c"}, &.{"-fcommon"}); |
| 13 | 20 | ||
| 14 | const test_exe = b.addTest(.{ | 21 | const test_exe = b.addTest(.{ |
| 15 | .root_source_file = .{ .path = "main.zig" }, | 22 | .root_source_file = .{ .path = "main.zig" }, |
| 16 | .optimize = optimize, | 23 | .optimize = optimize, |
| 17 | .target = target, | ||
| 18 | }); | 24 | }); |
| 19 | test_exe.linkLibrary(lib_a); | 25 | test_exe.linkLibrary(lib_a); |
| 20 | 26 | ||
| 21 | const test_step = b.step("test", "Test it"); | ||
| 22 | test_step.dependOn(&test_exe.step); | 27 | test_step.dependOn(&test_exe.step); |
| 23 | } | 28 | } |
test/link/interdependent_static_c_libs/build.zig+11-6| ... | @@ -1,13 +1,20 @@ | ... | @@ -1,13 +1,20 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | 2 | ||
| 3 | pub fn build(b: *std.Build) void { | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | 4 | const test_step = b.step("test", "Test it"); |
| 5 | const target = b.standardTargetOptions(.{}); | 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 | const lib_a = b.addStaticLibrary(.{ | 14 | const lib_a = b.addStaticLibrary(.{ |
| 8 | .name = "a", | 15 | .name = "a", |
| 9 | .optimize = optimize, | 16 | .optimize = optimize, |
| 10 | .target = target, | 17 | .target = .{}, |
| 11 | }); | 18 | }); |
| 12 | lib_a.addCSourceFile("a.c", &[_][]const u8{}); | 19 | lib_a.addCSourceFile("a.c", &[_][]const u8{}); |
| 13 | lib_a.addIncludePath("."); | 20 | lib_a.addIncludePath("."); |
| ... | @@ -15,7 +22,7 @@ pub fn build(b: *std.Build) void { | ... | @@ -15,7 +22,7 @@ pub fn build(b: *std.Build) void { |
| 15 | const lib_b = b.addStaticLibrary(.{ | 22 | const lib_b = b.addStaticLibrary(.{ |
| 16 | .name = "b", | 23 | .name = "b", |
| 17 | .optimize = optimize, | 24 | .optimize = optimize, |
| 18 | .target = target, | 25 | .target = .{}, |
| 19 | }); | 26 | }); |
| 20 | lib_b.addCSourceFile("b.c", &[_][]const u8{}); | 27 | lib_b.addCSourceFile("b.c", &[_][]const u8{}); |
| 21 | lib_b.addIncludePath("."); | 28 | lib_b.addIncludePath("."); |
| ... | @@ -23,12 +30,10 @@ pub fn build(b: *std.Build) void { | ... | @@ -23,12 +30,10 @@ pub fn build(b: *std.Build) void { |
| 23 | const test_exe = b.addTest(.{ | 30 | const test_exe = b.addTest(.{ |
| 24 | .root_source_file = .{ .path = "main.zig" }, | 31 | .root_source_file = .{ .path = "main.zig" }, |
| 25 | .optimize = optimize, | 32 | .optimize = optimize, |
| 26 | .target = target, | ||
| 27 | }); | 33 | }); |
| 28 | test_exe.linkLibrary(lib_a); | 34 | test_exe.linkLibrary(lib_a); |
| 29 | test_exe.linkLibrary(lib_b); | 35 | test_exe.linkLibrary(lib_b); |
| 30 | test_exe.addIncludePath("."); | 36 | test_exe.addIncludePath("."); |
| 31 | 37 | ||
| 32 | const test_step = b.step("test", "Test it"); | ||
| 33 | test_step.dependOn(&test_exe.step); | 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,13 +1,20 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | 2 | ||
| 3 | pub fn build(b: *std.Build) void { | 3 | pub fn build(b: *std.Build) void { |
| 4 | const optimize = b.standardOptimizeOption(.{}); | 4 | const test_step = b.step("test", "Test it"); |
| 5 | const target = b.standardTargetOptions(.{}); | 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 | const lib_a = b.addStaticLibrary(.{ | 14 | const lib_a = b.addStaticLibrary(.{ |
| 8 | .name = "a", | 15 | .name = "a", |
| 9 | .optimize = optimize, | 16 | .optimize = optimize, |
| 10 | .target = target, | 17 | .target = .{}, |
| 11 | }); | 18 | }); |
| 12 | lib_a.addCSourceFile("a.c", &[_][]const u8{}); | 19 | lib_a.addCSourceFile("a.c", &[_][]const u8{}); |
| 13 | lib_a.addIncludePath("."); | 20 | lib_a.addIncludePath("."); |
| ... | @@ -16,14 +23,12 @@ pub fn build(b: *std.Build) void { | ... | @@ -16,14 +23,12 @@ pub fn build(b: *std.Build) void { |
| 16 | const test_exe = b.addTest(.{ | 23 | const test_exe = b.addTest(.{ |
| 17 | .root_source_file = .{ .path = "main.zig" }, | 24 | .root_source_file = .{ .path = "main.zig" }, |
| 18 | .optimize = optimize, | 25 | .optimize = optimize, |
| 19 | .target = target, | 26 | .target = .{}, |
| 20 | }); | 27 | }); |
| 21 | test_exe.linkSystemLibrary("a"); // force linking liba.a as -la | 28 | test_exe.linkSystemLibrary("a"); // force linking liba.a as -la |
| 22 | test_exe.addSystemIncludePath("."); | 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 | test_exe.addLibraryPath(search_path); | 31 | test_exe.addLibraryPath(search_path); |
| 25 | 32 | ||
| 26 | const test_step = b.step("test", "Test it"); | ||
| 27 | test_step.dependOn(b.getInstallStep()); | ||
| 28 | test_step.dependOn(&test_exe.step); | 33 | test_step.dependOn(&test_exe.step); |
| 29 | } | 34 | } |
test/tests.zig+22-36| ... | @@ -1,16 +1,9 @@ | ... | @@ -1,16 +1,9 @@ |
| 1 | const std = @import("std"); | 1 | const std = @import("std"); |
| 2 | const builtin = @import("builtin"); | 2 | const builtin = @import("builtin"); |
| 3 | const debug = std.debug; | 3 | const assert = std.debug.assert; |
| 4 | const CrossTarget = std.zig.CrossTarget; | 4 | const CrossTarget = std.zig.CrossTarget; |
| 5 | const io = std.io; | ||
| 6 | const fs = std.fs; | ||
| 7 | const mem = std.mem; | 5 | const mem = std.mem; |
| 8 | const fmt = std.fmt; | ||
| 9 | const ArrayList = std.ArrayList; | ||
| 10 | const OptimizeMode = std.builtin.OptimizeMode; | 6 | const OptimizeMode = std.builtin.OptimizeMode; |
| 11 | const CompileStep = std.Build.CompileStep; | ||
| 12 | const Allocator = mem.Allocator; | ||
| 13 | const ExecError = std.Build.ExecError; | ||
| 14 | const Step = std.Build.Step; | 7 | const Step = std.Build.Step; |
| 15 | 8 | ||
| 16 | // Cases | 9 | // Cases |
| ... | @@ -574,15 +567,10 @@ pub fn addStandaloneTests( | ... | @@ -574,15 +567,10 @@ pub fn addStandaloneTests( |
| 574 | enable_macos_sdk: bool, | 567 | enable_macos_sdk: bool, |
| 575 | target: std.zig.CrossTarget, | 568 | target: std.zig.CrossTarget, |
| 576 | omit_stage2: bool, | 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 | enable_symlinks_windows: bool, | 570 | enable_symlinks_windows: bool, |
| 583 | ) *Step { | 571 | ) *Step { |
| 584 | const cases = b.allocator.create(StandaloneContext) catch @panic("OOM"); | 572 | const cases = b.allocator.create(StandaloneContext) catch @panic("OOM"); |
| 585 | cases.* = StandaloneContext{ | 573 | cases.* = .{ |
| 586 | .b = b, | 574 | .b = b, |
| 587 | .step = b.step("test-standalone", "Run the standalone tests"), | 575 | .step = b.step("test-standalone", "Run the standalone tests"), |
| 588 | .test_index = 0, | 576 | .test_index = 0, |
| ... | @@ -592,11 +580,6 @@ pub fn addStandaloneTests( | ... | @@ -592,11 +580,6 @@ pub fn addStandaloneTests( |
| 592 | .enable_macos_sdk = enable_macos_sdk, | 580 | .enable_macos_sdk = enable_macos_sdk, |
| 593 | .target = target, | 581 | .target = target, |
| 594 | .omit_stage2 = omit_stage2, | 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 | .enable_symlinks_windows = enable_symlinks_windows, | 583 | .enable_symlinks_windows = enable_symlinks_windows, |
| 601 | }; | 584 | }; |
| 602 | 585 | ||
| ... | @@ -613,21 +596,24 @@ pub fn addLinkTests( | ... | @@ -613,21 +596,24 @@ pub fn addLinkTests( |
| 613 | omit_stage2: bool, | 596 | omit_stage2: bool, |
| 614 | enable_symlinks_windows: bool, | 597 | enable_symlinks_windows: bool, |
| 615 | ) *Step { | 598 | ) *Step { |
| 616 | const cases = b.allocator.create(StandaloneContext) catch @panic("OOM"); | 599 | _ = test_filter; |
| 617 | cases.* = StandaloneContext{ | 600 | _ = optimize_modes; |
| 618 | .b = b, | 601 | _ = enable_macos_sdk; |
| 619 | .step = b.step("test-link", "Run the linker tests"), | 602 | _ = omit_stage2; |
| 620 | .test_index = 0, | 603 | _ = enable_symlinks_windows; |
| 621 | .test_filter = test_filter, | 604 | |
| 622 | .optimize_modes = optimize_modes, | 605 | const step = b.step("test-link", "Run the linker tests"); |
| 623 | .skip_non_native = true, | 606 | |
| 624 | .enable_macos_sdk = enable_macos_sdk, | 607 | inline for (link.cases) |link_test| { |
| 625 | .target = .{}, | 608 | const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{}); |
| 626 | .omit_stage2 = omit_stage2, | 609 | const dep_step = dep.builder.default_step; |
| 627 | .enable_symlinks_windows = enable_symlinks_windows, | 610 | assert(mem.startsWith(u8, dep.builder.dep_prefix, "test.")); |
| 628 | }; | 611 | const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..]; |
| 629 | link.addCases(cases); | 612 | dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name }); |
| 630 | return cases.step; | 613 | step.dependOn(dep_step); |
| 614 | } | ||
| 615 | |||
| 616 | return step; | ||
| 631 | } | 617 | } |
| 632 | 618 | ||
| 633 | pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []const OptimizeMode) *Step { | 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,7 +747,7 @@ pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []co |
| 761 | const unformatted_code = " // no reason for indent"; | 747 | const unformatted_code = " // no reason for indent"; |
| 762 | const s = std.fs.path.sep_str; | 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 | defer dir.close(); | 751 | defer dir.close(); |
| 766 | dir.writeFile("fmt1.zig", unformatted_code) catch @panic("unhandled"); | 752 | dir.writeFile("fmt1.zig", unformatted_code) catch @panic("unhandled"); |
| 767 | dir.writeFile("fmt2.zig", unformatted_code) catch @panic("unhandled"); | 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,7 +777,7 @@ pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []co |
| 791 | run3.step.dependOn(&run2.step); | 777 | run3.step.dependOn(&run2.step); |
| 792 | 778 | ||
| 793 | const unformatted_code_utf16 = "\xff\xfe \x00 \x00 \x00 \x00/\x00/\x00 \x00n\x00o\x00 \x00r\x00e\x00a\x00s\x00o\x00n\x00"; | 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 | const write4 = b.addWriteFiles(); | 781 | const write4 = b.addWriteFiles(); |
| 796 | write4.addBytesToSource(unformatted_code_utf16, fmt4_path); | 782 | write4.addBytesToSource(unformatted_code_utf16, fmt4_path); |
| 797 | write4.step.dependOn(&run3.step); | 783 | write4.step.dependOn(&run3.step); |