| author | |
| committer | |
| log | 7e4f28fac9a20fb548c85cf81f4a62b069cf4ac8 |
| tree | 96a444a5b8f212a9ab2bf054ee5ddbb4e8b0d49c |
| parent | 8c5d4295e5f6459ba99d219c1922a30ec6da24bf |
3 files changed, 48 insertions(+), 26 deletions(-)
build.zig+1-1| ... | ... | @@ -328,7 +328,7 @@ pub fn build(b: *Builder) !void { |
| 328 | 328 | )); |
| 329 | 329 | |
| 330 | 330 | toolchain_step.dependOn(tests.addCompareOutputTests(b, test_filter, modes)); |
| 331 | toolchain_step.dependOn(tests.addStandaloneTests(b, test_filter, modes)); | |
| 331 | toolchain_step.dependOn(tests.addStandaloneTests(b, test_filter, modes, skip_non_native, target)); | |
| 332 | 332 | toolchain_step.dependOn(tests.addStackTraceTests(b, test_filter, modes)); |
| 333 | 333 | toolchain_step.dependOn(tests.addCliTests(b, test_filter, modes)); |
| 334 | 334 | toolchain_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, modes)); |
test/standalone.zig+18-18| ... | ... | @@ -8,26 +8,26 @@ pub fn addCases(cases: *tests.StandaloneContext) void { |
| 8 | 8 | cases.add("test/standalone/guess_number/main.zig"); |
| 9 | 9 | cases.add("test/standalone/main_return_error/error_u8.zig"); |
| 10 | 10 | cases.add("test/standalone/main_return_error/error_u8_non_zero.zig"); |
| 11 | cases.addBuildFile("test/standalone/main_pkg_path/build.zig"); | |
| 12 | cases.addBuildFile("test/standalone/shared_library/build.zig"); | |
| 13 | cases.addBuildFile("test/standalone/mix_o_files/build.zig"); | |
| 14 | cases.addBuildFile("test/standalone/global_linkage/build.zig"); | |
| 15 | cases.addBuildFile("test/standalone/static_c_lib/build.zig"); | |
| 16 | cases.addBuildFile("test/standalone/link_interdependent_static_c_libs/build.zig"); | |
| 17 | cases.addBuildFile("test/standalone/link_static_lib_as_system_lib/build.zig"); | |
| 18 | cases.addBuildFile("test/standalone/issue_339/build.zig"); | |
| 19 | cases.addBuildFile("test/standalone/issue_8550/build.zig"); | |
| 20 | cases.addBuildFile("test/standalone/issue_794/build.zig"); | |
| 21 | cases.addBuildFile("test/standalone/issue_5825/build.zig"); | |
| 22 | cases.addBuildFile("test/standalone/pkg_import/build.zig"); | |
| 23 | cases.addBuildFile("test/standalone/use_alias/build.zig"); | |
| 24 | cases.addBuildFile("test/standalone/brace_expansion/build.zig"); | |
| 25 | cases.addBuildFile("test/standalone/empty_env/build.zig"); | |
| 26 | cases.addBuildFile("test/standalone/issue_7030/build.zig"); | |
| 11 | cases.addBuildFile("test/standalone/main_pkg_path/build.zig", .{}); | |
| 12 | cases.addBuildFile("test/standalone/shared_library/build.zig", .{}); | |
| 13 | cases.addBuildFile("test/standalone/mix_o_files/build.zig", .{}); | |
| 14 | cases.addBuildFile("test/standalone/global_linkage/build.zig", .{}); | |
| 15 | cases.addBuildFile("test/standalone/static_c_lib/build.zig", .{}); | |
| 16 | cases.addBuildFile("test/standalone/link_interdependent_static_c_libs/build.zig", .{}); | |
| 17 | cases.addBuildFile("test/standalone/link_static_lib_as_system_lib/build.zig", .{}); | |
| 18 | cases.addBuildFile("test/standalone/issue_339/build.zig", .{}); | |
| 19 | cases.addBuildFile("test/standalone/issue_8550/build.zig", .{}); | |
| 20 | cases.addBuildFile("test/standalone/issue_794/build.zig", .{}); | |
| 21 | cases.addBuildFile("test/standalone/issue_5825/build.zig", .{}); | |
| 22 | cases.addBuildFile("test/standalone/pkg_import/build.zig", .{}); | |
| 23 | cases.addBuildFile("test/standalone/use_alias/build.zig", .{}); | |
| 24 | cases.addBuildFile("test/standalone/brace_expansion/build.zig", .{}); | |
| 25 | cases.addBuildFile("test/standalone/empty_env/build.zig", .{}); | |
| 26 | cases.addBuildFile("test/standalone/issue_7030/build.zig", .{}); | |
| 27 | 27 | if (std.Target.current.os.tag != .wasi) { |
| 28 | cases.addBuildFile("test/standalone/load_dynamic_library/build.zig"); | |
| 28 | cases.addBuildFile("test/standalone/load_dynamic_library/build.zig", .{}); | |
| 29 | 29 | } |
| 30 | 30 | if (std.Target.current.cpu.arch == .x86_64) { // TODO add C ABI support for other architectures |
| 31 | cases.addBuildFile("test/stage1/c_abi/build.zig"); | |
| 31 | cases.addBuildFile("test/stage1/c_abi/build.zig", .{}); | |
| 32 | 32 | } |
| 33 | 33 | } |
test/tests.zig+29-7| ... | ... | @@ -399,7 +399,7 @@ pub fn addCompileErrorTests(b: *build.Builder, test_filter: ?[]const u8, modes: |
| 399 | 399 | return cases.step; |
| 400 | 400 | } |
| 401 | 401 | |
| 402 | pub fn addStandaloneTests(b: *build.Builder, test_filter: ?[]const u8, modes: []const Mode) *build.Step { | |
| 402 | pub fn addStandaloneTests(b: *build.Builder, test_filter: ?[]const u8, modes: []const Mode, skip_non_native: bool, target: std.zig.CrossTarget) *build.Step { | |
| 403 | 403 | const cases = b.allocator.create(StandaloneContext) catch unreachable; |
| 404 | 404 | cases.* = StandaloneContext{ |
| 405 | 405 | .b = b, |
| ... | ... | @@ -407,6 +407,8 @@ pub fn addStandaloneTests(b: *build.Builder, test_filter: ?[]const u8, modes: [] |
| 407 | 407 | .test_index = 0, |
| 408 | 408 | .test_filter = test_filter, |
| 409 | 409 | .modes = modes, |
| 410 | .skip_non_native = skip_non_native, | |
| 411 | .target = target, | |
| 410 | 412 | }; |
| 411 | 413 | |
| 412 | 414 | standalone.addCases(cases); |
| ... | ... | @@ -1136,6 +1138,8 @@ pub const StandaloneContext = struct { |
| 1136 | 1138 | test_index: usize, |
| 1137 | 1139 | test_filter: ?[]const u8, |
| 1138 | 1140 | modes: []const Mode, |
| 1141 | skip_non_native: bool, | |
| 1142 | target: std.zig.CrossTarget, | |
| 1139 | 1143 | |
| 1140 | 1144 | pub fn addC(self: *StandaloneContext, root_src: []const u8) void { |
| 1141 | 1145 | self.addAllArgs(root_src, true); |
| ... | ... | @@ -1145,10 +1149,10 @@ pub const StandaloneContext = struct { |
| 1145 | 1149 | self.addAllArgs(root_src, false); |
| 1146 | 1150 | } |
| 1147 | 1151 | |
| 1148 | pub fn addBuildFile(self: *StandaloneContext, build_file: []const u8) void { | |
| 1152 | pub fn addBuildFile(self: *StandaloneContext, build_file: []const u8, features: struct { build_modes: bool = false, cross_targets: bool = false }) void { | |
| 1149 | 1153 | const b = self.b; |
| 1150 | 1154 | |
| 1151 | const annotated_case_name = b.fmt("build {s} (Debug)", .{build_file}); | |
| 1155 | const annotated_case_name = b.fmt("build {s}", .{build_file}); | |
| 1152 | 1156 | if (self.test_filter) |filter| { |
| 1153 | 1157 | if (mem.indexOf(u8, annotated_case_name, filter) == null) return; |
| 1154 | 1158 | } |
| ... | ... | @@ -1167,12 +1171,30 @@ pub const StandaloneContext = struct { |
| 1167 | 1171 | zig_args.append("--verbose") catch unreachable; |
| 1168 | 1172 | } |
| 1169 | 1173 | |
| 1170 | const run_cmd = b.addSystemCommand(zig_args.items); | |
| 1174 | if (features.cross_targets and !self.target.isNative()) { | |
| 1175 | const target_arg = fmt.allocPrint(b.allocator, "-Dtarget={s}", .{self.target.zigTriple(b.allocator) catch unreachable}) catch unreachable; | |
| 1176 | zig_args.append(target_arg) catch unreachable; | |
| 1177 | } | |
| 1178 | ||
| 1179 | const modes = if (features.build_modes) self.modes else &[1]Mode{.Debug}; | |
| 1180 | for (modes) |mode| { | |
| 1181 | const arg = switch (mode) { | |
| 1182 | .Debug => "", | |
| 1183 | .ReleaseFast => "-Drelease-fast", | |
| 1184 | .ReleaseSafe => "-Drelease-safe", | |
| 1185 | .ReleaseSmall => "-Drelease-small", | |
| 1186 | }; | |
| 1187 | const zig_args_base_len = zig_args.items.len; | |
| 1188 | if (arg.len > 0) | |
| 1189 | zig_args.append(arg) catch unreachable; | |
| 1190 | defer zig_args.resize(zig_args_base_len) catch unreachable; | |
| 1171 | 1191 | |
| 1172 | const log_step = b.addLog("PASS {s}\n", .{annotated_case_name}); | |
| 1173 | log_step.step.dependOn(&run_cmd.step); | |
| 1192 | const run_cmd = b.addSystemCommand(zig_args.items); | |
| 1193 | const log_step = b.addLog("PASS {s} ({s})\n", .{ annotated_case_name, @tagName(mode) }); | |
| 1194 | log_step.step.dependOn(&run_cmd.step); | |
| 1174 | 1195 | |
| 1175 | self.step.dependOn(&log_step.step); | |
| 1196 | self.step.dependOn(&log_step.step); | |
| 1197 | } | |
| 1176 | 1198 | } |
| 1177 | 1199 | |
| 1178 | 1200 | pub fn addAllArgs(self: *StandaloneContext, root_src: []const u8, link_libc: bool) void { |