mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
new linker test harness
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.
This commit is contained in:
parent
3b06990730
commit
e122cd6312
9 changed files with 287 additions and 279 deletions
|
|
@ -442,8 +442,6 @@ pub fn build(b: *std.Build) !void {
|
||||||
.skip_stage2 = true, // TODO get all these passing
|
.skip_stage2 = true, // TODO get all these passing
|
||||||
}));
|
}));
|
||||||
|
|
||||||
_ = enable_symlinks_windows;
|
|
||||||
_ = enable_macos_sdk;
|
|
||||||
test_step.dependOn(tests.addCompareOutputTests(b, test_filter, optimization_modes));
|
test_step.dependOn(tests.addCompareOutputTests(b, test_filter, optimization_modes));
|
||||||
//test_step.dependOn(tests.addStandaloneTests(
|
//test_step.dependOn(tests.addStandaloneTests(
|
||||||
// b,
|
// b,
|
||||||
|
|
@ -453,15 +451,10 @@ pub fn build(b: *std.Build) !void {
|
||||||
// enable_macos_sdk,
|
// enable_macos_sdk,
|
||||||
// target,
|
// target,
|
||||||
// skip_stage2_tests,
|
// skip_stage2_tests,
|
||||||
// b.enable_darling,
|
|
||||||
// b.enable_qemu,
|
|
||||||
// b.enable_rosetta,
|
|
||||||
// b.enable_wasmtime,
|
|
||||||
// b.enable_wine,
|
|
||||||
// enable_symlinks_windows,
|
// enable_symlinks_windows,
|
||||||
//));
|
//));
|
||||||
test_step.dependOn(tests.addCAbiTests(b, skip_non_native, skip_release));
|
test_step.dependOn(tests.addCAbiTests(b, skip_non_native, skip_release));
|
||||||
//test_step.dependOn(tests.addLinkTests(b, test_filter, optimization_modes, enable_macos_sdk, skip_stage2_tests, enable_symlinks_windows));
|
test_step.dependOn(tests.addLinkTests(b, test_filter, optimization_modes, enable_macos_sdk, skip_stage2_tests, enable_symlinks_windows));
|
||||||
test_step.dependOn(tests.addStackTraceTests(b, test_filter, optimization_modes));
|
test_step.dependOn(tests.addStackTraceTests(b, test_filter, optimization_modes));
|
||||||
test_step.dependOn(tests.addCliTests(b, test_filter, optimization_modes));
|
test_step.dependOn(tests.addCliTests(b, test_filter, optimization_modes));
|
||||||
test_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, optimization_modes));
|
test_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, optimization_modes));
|
||||||
|
|
|
||||||
429
test/link.zig
429
test/link.zig
|
|
@ -1,213 +1,220 @@
|
||||||
|
pub const Case = struct {
|
||||||
|
build_root: []const u8,
|
||||||
|
import: type,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const cases = [_]Case{
|
||||||
|
.{
|
||||||
|
.build_root = "test/link/bss",
|
||||||
|
.import = @import("link/bss/build.zig"),
|
||||||
|
},
|
||||||
|
.{
|
||||||
|
.build_root = "test/link/common_symbols",
|
||||||
|
.import = @import("link/common_symbols/build.zig"),
|
||||||
|
},
|
||||||
|
.{
|
||||||
|
.build_root = "test/link/common_symbols_alignment",
|
||||||
|
.import = @import("link/common_symbols_alignment/build.zig"),
|
||||||
|
},
|
||||||
|
.{
|
||||||
|
.build_root = "test/link/interdependent_static_c_libs",
|
||||||
|
.import = @import("link/interdependent_static_c_libs/build.zig"),
|
||||||
|
},
|
||||||
|
//.{
|
||||||
|
// .build_root = "test/link/static_lib_as_system_lib",
|
||||||
|
// .import = @import("link/static_lib_as_system_lib/build.zig"),
|
||||||
|
//},
|
||||||
|
};
|
||||||
|
|
||||||
|
//pub fn addCases(cases: *Standalone) void {
|
||||||
|
// addWasmCases(cases);
|
||||||
|
// addMachOCases(cases);
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//fn addWasmCases(cases: *Standalone) void {
|
||||||
|
// cases.addBuildFile("test/link/wasm/archive/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/basic-features/build.zig", .{
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/bss/build.zig", .{
|
||||||
|
// .build_modes = false,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/export/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// // TODO: Fix open handle in wasm-linker refraining rename from working on Windows.
|
||||||
|
// if (builtin.os.tag != .windows) {
|
||||||
|
// cases.addBuildFile("test/link/wasm/export-data/build.zig", .{});
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/extern/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// .use_emulation = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/extern-mangle/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/function-table/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/infer-features/build.zig", .{
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/producers/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/segments/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/stack_pointer/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/wasm/type/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_stage2 = true,
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//fn addMachOCases(cases: *tests.StandaloneContext) void {
|
||||||
|
// cases.addBuildFile("test/link/macho/bugs/13056/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/bugs/13457/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
|
||||||
|
// .build_modes = false,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/dead_strip_dylibs/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/dylib/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/empty/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/entry/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/linksection/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/objc/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
|
||||||
|
// .build_modes = false,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/strict_validation/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/tls/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/unwind_info/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/uuid/build.zig", .{
|
||||||
|
// .build_modes = false,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
|
||||||
|
// .build_modes = true,
|
||||||
|
// .requires_macos_sdk = true,
|
||||||
|
// .requires_symlinks = true,
|
||||||
|
// });
|
||||||
|
//}
|
||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
const tests = @import("tests.zig");
|
|
||||||
|
|
||||||
pub fn addCases(cases: *tests.StandaloneContext) void {
|
|
||||||
cases.addBuildFile("test/link/bss/build.zig", .{
|
|
||||||
.build_modes = false, // we only guarantee zerofill for undefined in Debug
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/common_symbols/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/common_symbols_alignment/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/interdependent_static_c_libs/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/static_lib_as_system_lib/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
addWasmCases(cases);
|
|
||||||
addMachOCases(cases);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn addWasmCases(cases: *tests.StandaloneContext) void {
|
|
||||||
cases.addBuildFile("test/link/wasm/archive/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/basic-features/build.zig", .{
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/bss/build.zig", .{
|
|
||||||
.build_modes = false,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/export/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: Fix open handle in wasm-linker refraining rename from working on Windows.
|
|
||||||
if (builtin.os.tag != .windows) {
|
|
||||||
cases.addBuildFile("test/link/wasm/export-data/build.zig", .{});
|
|
||||||
}
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/extern/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
.use_emulation = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/extern-mangle/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/function-table/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/infer-features/build.zig", .{
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/producers/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/segments/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/stack_pointer/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/wasm/type/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_stage2 = true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
fn addMachOCases(cases: *tests.StandaloneContext) void {
|
|
||||||
cases.addBuildFile("test/link/macho/bugs/13056/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/bugs/13457/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/dead_strip/build.zig", .{
|
|
||||||
.build_modes = false,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/dead_strip_dylibs/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/dylib/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/empty/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/entry/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/headerpad/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/linksection/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/needed_framework/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/needed_library/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/objc/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/objcpp/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/pagezero/build.zig", .{
|
|
||||||
.build_modes = false,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/search_strategy/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/stack_size/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/strict_validation/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/tls/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/unwind_info/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/uuid/build.zig", .{
|
|
||||||
.build_modes = false,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/weak_library/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
|
|
||||||
cases.addBuildFile("test/link/macho/weak_framework/build.zig", .{
|
|
||||||
.build_modes = true,
|
|
||||||
.requires_macos_sdk = true,
|
|
||||||
.requires_symlinks = true,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
|
||||||
const test_step = b.step("test", "Test");
|
const test_step = b.step("test", "Test");
|
||||||
|
b.default_step = test_step;
|
||||||
|
|
||||||
const exe = b.addExecutable(.{
|
const exe = b.addExecutable(.{
|
||||||
.name = "bss",
|
.name = "bss",
|
||||||
.root_source_file = .{ .path = "main.zig" },
|
.root_source_file = .{ .path = "main.zig" },
|
||||||
.optimize = optimize,
|
.optimize = .Debug,
|
||||||
});
|
});
|
||||||
b.default_step.dependOn(&exe.step);
|
|
||||||
|
|
||||||
const run = exe.run();
|
const run = exe.run();
|
||||||
run.expectStdOutEqual("0, 1, 0\n");
|
run.expectStdOutEqual("0, 1, 0\n");
|
||||||
|
|
||||||
test_step.dependOn(&run.step);
|
test_step.dependOn(&run.step);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
// Stress test zerofill layout
|
// Stress test zerofill layout
|
||||||
var buffer: [0x1000000]u64 = undefined;
|
var buffer: [0x1000000]u64 = [1]u64{0} ** 0x1000000;
|
||||||
|
|
||||||
pub fn main() anyerror!void {
|
pub fn main() anyerror!void {
|
||||||
buffer[0x10] = 1;
|
buffer[0x10] = 1;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,16 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const test_step = b.step("test", "Test it");
|
||||||
|
b.default_step = test_step;
|
||||||
|
|
||||||
|
add(b, test_step, .Debug);
|
||||||
|
add(b, test_step, .ReleaseFast);
|
||||||
|
add(b, test_step, .ReleaseSmall);
|
||||||
|
add(b, test_step, .ReleaseSafe);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
|
||||||
const lib_a = b.addStaticLibrary(.{
|
const lib_a = b.addStaticLibrary(.{
|
||||||
.name = "a",
|
.name = "a",
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
|
|
@ -16,6 +24,5 @@ pub fn build(b: *std.Build) void {
|
||||||
});
|
});
|
||||||
test_exe.linkLibrary(lib_a);
|
test_exe.linkLibrary(lib_a);
|
||||||
|
|
||||||
const test_step = b.step("test", "Test it");
|
|
||||||
test_step.dependOn(&test_exe.step);
|
test_step.dependOn(&test_exe.step);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,28 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const test_step = b.step("test", "Test it");
|
||||||
const target = b.standardTargetOptions(.{});
|
b.default_step = test_step;
|
||||||
|
|
||||||
|
add(b, test_step, .Debug);
|
||||||
|
add(b, test_step, .ReleaseFast);
|
||||||
|
add(b, test_step, .ReleaseSmall);
|
||||||
|
add(b, test_step, .ReleaseSafe);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
|
||||||
const lib_a = b.addStaticLibrary(.{
|
const lib_a = b.addStaticLibrary(.{
|
||||||
.name = "a",
|
.name = "a",
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
.target = .{},
|
||||||
});
|
});
|
||||||
lib_a.addCSourceFiles(&.{"a.c"}, &.{"-fcommon"});
|
lib_a.addCSourceFiles(&.{"a.c"}, &.{"-fcommon"});
|
||||||
|
|
||||||
const test_exe = b.addTest(.{
|
const test_exe = b.addTest(.{
|
||||||
.root_source_file = .{ .path = "main.zig" },
|
.root_source_file = .{ .path = "main.zig" },
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
|
||||||
});
|
});
|
||||||
test_exe.linkLibrary(lib_a);
|
test_exe.linkLibrary(lib_a);
|
||||||
|
|
||||||
const test_step = b.step("test", "Test it");
|
|
||||||
test_step.dependOn(&test_exe.step);
|
test_step.dependOn(&test_exe.step);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,20 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const test_step = b.step("test", "Test it");
|
||||||
const target = b.standardTargetOptions(.{});
|
b.default_step = test_step;
|
||||||
|
|
||||||
|
add(b, test_step, .Debug);
|
||||||
|
add(b, test_step, .ReleaseFast);
|
||||||
|
add(b, test_step, .ReleaseSmall);
|
||||||
|
add(b, test_step, .ReleaseSafe);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
|
||||||
const lib_a = b.addStaticLibrary(.{
|
const lib_a = b.addStaticLibrary(.{
|
||||||
.name = "a",
|
.name = "a",
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
.target = .{},
|
||||||
});
|
});
|
||||||
lib_a.addCSourceFile("a.c", &[_][]const u8{});
|
lib_a.addCSourceFile("a.c", &[_][]const u8{});
|
||||||
lib_a.addIncludePath(".");
|
lib_a.addIncludePath(".");
|
||||||
|
|
@ -15,7 +22,7 @@ pub fn build(b: *std.Build) void {
|
||||||
const lib_b = b.addStaticLibrary(.{
|
const lib_b = b.addStaticLibrary(.{
|
||||||
.name = "b",
|
.name = "b",
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
.target = .{},
|
||||||
});
|
});
|
||||||
lib_b.addCSourceFile("b.c", &[_][]const u8{});
|
lib_b.addCSourceFile("b.c", &[_][]const u8{});
|
||||||
lib_b.addIncludePath(".");
|
lib_b.addIncludePath(".");
|
||||||
|
|
@ -23,12 +30,10 @@ pub fn build(b: *std.Build) void {
|
||||||
const test_exe = b.addTest(.{
|
const test_exe = b.addTest(.{
|
||||||
.root_source_file = .{ .path = "main.zig" },
|
.root_source_file = .{ .path = "main.zig" },
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
|
||||||
});
|
});
|
||||||
test_exe.linkLibrary(lib_a);
|
test_exe.linkLibrary(lib_a);
|
||||||
test_exe.linkLibrary(lib_b);
|
test_exe.linkLibrary(lib_b);
|
||||||
test_exe.addIncludePath(".");
|
test_exe.addIncludePath(".");
|
||||||
|
|
||||||
const test_step = b.step("test", "Test it");
|
|
||||||
test_step.dependOn(&test_exe.step);
|
test_step.dependOn(&test_exe.step);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,20 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
const test_step = b.step("test", "Test it");
|
||||||
const target = b.standardTargetOptions(.{});
|
b.default_step = test_step;
|
||||||
|
|
||||||
|
add(b, test_step, .Debug);
|
||||||
|
add(b, test_step, .ReleaseFast);
|
||||||
|
add(b, test_step, .ReleaseSmall);
|
||||||
|
add(b, test_step, .ReleaseSafe);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add(b: *std.Build, test_step: *std.Build.Step, optimize: std.builtin.OptimizeMode) void {
|
||||||
const lib_a = b.addStaticLibrary(.{
|
const lib_a = b.addStaticLibrary(.{
|
||||||
.name = "a",
|
.name = "a",
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
.target = .{},
|
||||||
});
|
});
|
||||||
lib_a.addCSourceFile("a.c", &[_][]const u8{});
|
lib_a.addCSourceFile("a.c", &[_][]const u8{});
|
||||||
lib_a.addIncludePath(".");
|
lib_a.addIncludePath(".");
|
||||||
|
|
@ -16,14 +23,12 @@ pub fn build(b: *std.Build) void {
|
||||||
const test_exe = b.addTest(.{
|
const test_exe = b.addTest(.{
|
||||||
.root_source_file = .{ .path = "main.zig" },
|
.root_source_file = .{ .path = "main.zig" },
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
.target = target,
|
.target = .{},
|
||||||
});
|
});
|
||||||
test_exe.linkSystemLibrary("a"); // force linking liba.a as -la
|
test_exe.linkSystemLibrary("a"); // force linking liba.a as -la
|
||||||
test_exe.addSystemIncludePath(".");
|
test_exe.addSystemIncludePath(".");
|
||||||
const search_path = std.fs.path.join(b.allocator, &[_][]const u8{ b.install_path, "lib" }) catch unreachable;
|
const search_path = std.fs.path.join(b.allocator, &[_][]const u8{ b.install_path, "lib" }) catch @panic("OOM");
|
||||||
test_exe.addLibraryPath(search_path);
|
test_exe.addLibraryPath(search_path);
|
||||||
|
|
||||||
const test_step = b.step("test", "Test it");
|
|
||||||
test_step.dependOn(b.getInstallStep());
|
|
||||||
test_step.dependOn(&test_exe.step);
|
test_step.dependOn(&test_exe.step);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,9 @@
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
const debug = std.debug;
|
const assert = std.debug.assert;
|
||||||
const CrossTarget = std.zig.CrossTarget;
|
const CrossTarget = std.zig.CrossTarget;
|
||||||
const io = std.io;
|
|
||||||
const fs = std.fs;
|
|
||||||
const mem = std.mem;
|
const mem = std.mem;
|
||||||
const fmt = std.fmt;
|
|
||||||
const ArrayList = std.ArrayList;
|
|
||||||
const OptimizeMode = std.builtin.OptimizeMode;
|
const OptimizeMode = std.builtin.OptimizeMode;
|
||||||
const CompileStep = std.Build.CompileStep;
|
|
||||||
const Allocator = mem.Allocator;
|
|
||||||
const ExecError = std.Build.ExecError;
|
|
||||||
const Step = std.Build.Step;
|
const Step = std.Build.Step;
|
||||||
|
|
||||||
// Cases
|
// Cases
|
||||||
|
|
@ -574,15 +567,10 @@ pub fn addStandaloneTests(
|
||||||
enable_macos_sdk: bool,
|
enable_macos_sdk: bool,
|
||||||
target: std.zig.CrossTarget,
|
target: std.zig.CrossTarget,
|
||||||
omit_stage2: bool,
|
omit_stage2: bool,
|
||||||
enable_darling: bool,
|
|
||||||
enable_qemu: bool,
|
|
||||||
enable_rosetta: bool,
|
|
||||||
enable_wasmtime: bool,
|
|
||||||
enable_wine: bool,
|
|
||||||
enable_symlinks_windows: bool,
|
enable_symlinks_windows: bool,
|
||||||
) *Step {
|
) *Step {
|
||||||
const cases = b.allocator.create(StandaloneContext) catch @panic("OOM");
|
const cases = b.allocator.create(StandaloneContext) catch @panic("OOM");
|
||||||
cases.* = StandaloneContext{
|
cases.* = .{
|
||||||
.b = b,
|
.b = b,
|
||||||
.step = b.step("test-standalone", "Run the standalone tests"),
|
.step = b.step("test-standalone", "Run the standalone tests"),
|
||||||
.test_index = 0,
|
.test_index = 0,
|
||||||
|
|
@ -592,11 +580,6 @@ pub fn addStandaloneTests(
|
||||||
.enable_macos_sdk = enable_macos_sdk,
|
.enable_macos_sdk = enable_macos_sdk,
|
||||||
.target = target,
|
.target = target,
|
||||||
.omit_stage2 = omit_stage2,
|
.omit_stage2 = omit_stage2,
|
||||||
.enable_darling = enable_darling,
|
|
||||||
.enable_qemu = enable_qemu,
|
|
||||||
.enable_rosetta = enable_rosetta,
|
|
||||||
.enable_wasmtime = enable_wasmtime,
|
|
||||||
.enable_wine = enable_wine,
|
|
||||||
.enable_symlinks_windows = enable_symlinks_windows,
|
.enable_symlinks_windows = enable_symlinks_windows,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -613,21 +596,24 @@ pub fn addLinkTests(
|
||||||
omit_stage2: bool,
|
omit_stage2: bool,
|
||||||
enable_symlinks_windows: bool,
|
enable_symlinks_windows: bool,
|
||||||
) *Step {
|
) *Step {
|
||||||
const cases = b.allocator.create(StandaloneContext) catch @panic("OOM");
|
_ = test_filter;
|
||||||
cases.* = StandaloneContext{
|
_ = optimize_modes;
|
||||||
.b = b,
|
_ = enable_macos_sdk;
|
||||||
.step = b.step("test-link", "Run the linker tests"),
|
_ = omit_stage2;
|
||||||
.test_index = 0,
|
_ = enable_symlinks_windows;
|
||||||
.test_filter = test_filter,
|
|
||||||
.optimize_modes = optimize_modes,
|
const step = b.step("test-link", "Run the linker tests");
|
||||||
.skip_non_native = true,
|
|
||||||
.enable_macos_sdk = enable_macos_sdk,
|
inline for (link.cases) |link_test| {
|
||||||
.target = .{},
|
const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{});
|
||||||
.omit_stage2 = omit_stage2,
|
const dep_step = dep.builder.default_step;
|
||||||
.enable_symlinks_windows = enable_symlinks_windows,
|
assert(mem.startsWith(u8, dep.builder.dep_prefix, "test."));
|
||||||
};
|
const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..];
|
||||||
link.addCases(cases);
|
dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name });
|
||||||
return cases.step;
|
step.dependOn(dep_step);
|
||||||
|
}
|
||||||
|
|
||||||
|
return step;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn addCliTests(b: *std.Build, test_filter: ?[]const u8, optimize_modes: []const OptimizeMode) *Step {
|
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
|
||||||
const unformatted_code = " // no reason for indent";
|
const unformatted_code = " // no reason for indent";
|
||||||
const s = std.fs.path.sep_str;
|
const s = std.fs.path.sep_str;
|
||||||
|
|
||||||
var dir = fs.cwd().openDir(tmp_path, .{}) catch @panic("unhandled");
|
var dir = std.fs.cwd().openDir(tmp_path, .{}) catch @panic("unhandled");
|
||||||
defer dir.close();
|
defer dir.close();
|
||||||
dir.writeFile("fmt1.zig", unformatted_code) catch @panic("unhandled");
|
dir.writeFile("fmt1.zig", unformatted_code) catch @panic("unhandled");
|
||||||
dir.writeFile("fmt2.zig", unformatted_code) catch @panic("unhandled");
|
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
|
||||||
run3.step.dependOn(&run2.step);
|
run3.step.dependOn(&run2.step);
|
||||||
|
|
||||||
const unformatted_code_utf16 = "\xff\xfe \x00 \x00 \x00 \x00/\x00/\x00 \x00n\x00o\x00 \x00r\x00e\x00a\x00s\x00o\x00n\x00";
|
const unformatted_code_utf16 = "\xff\xfe \x00 \x00 \x00 \x00/\x00/\x00 \x00n\x00o\x00 \x00r\x00e\x00a\x00s\x00o\x00n\x00";
|
||||||
const fmt4_path = fs.path.join(b.allocator, &.{ tmp_path, "fmt4.zig" }) catch @panic("OOM");
|
const fmt4_path = std.fs.path.join(b.allocator, &.{ tmp_path, "fmt4.zig" }) catch @panic("OOM");
|
||||||
const write4 = b.addWriteFiles();
|
const write4 = b.addWriteFiles();
|
||||||
write4.addBytesToSource(unformatted_code_utf16, fmt4_path);
|
write4.addBytesToSource(unformatted_code_utf16, fmt4_path);
|
||||||
write4.step.dependOn(&run3.step);
|
write4.step.dependOn(&run3.step);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue