From cdf0a2af58ccd4ca4250435f258b35735e953aaf Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 7 Mar 2023 17:00:35 -0700 Subject: [PATCH] re-enable wasm linker tests --- test/link.zig | 362 +++++++++++------------- test/link/wasm/archive/build.zig | 17 +- test/link/wasm/basic-features/build.zig | 5 +- test/link/wasm/bss/build.zig | 7 +- test/link/wasm/export-data/build.zig | 7 +- test/link/wasm/export/build.zig | 15 +- test/link/wasm/extern-mangle/build.zig | 14 +- test/link/wasm/extern/build.zig | 15 +- test/link/wasm/function-table/build.zig | 19 +- test/link/wasm/infer-features/build.zig | 9 +- test/link/wasm/producers/build.zig | 21 +- test/link/wasm/segments/build.zig | 17 +- test/link/wasm/stack_pointer/build.zig | 17 +- test/link/wasm/type/build.zig | 17 +- test/tests.zig | 17 +- 15 files changed, 316 insertions(+), 243 deletions(-) diff --git a/test/link.zig b/test/link.zig index 34862e0286..ae970beaba 100644 --- a/test/link.zig +++ b/test/link.zig @@ -20,197 +20,179 @@ pub const cases = [_]Case{ .build_root = "test/link/interdependent_static_c_libs", .import = @import("link/interdependent_static_c_libs/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, -// }); -//} + // WASM Cases + .{ + .build_root = "test/link/wasm/archive", + .import = @import("link/wasm/archive/build.zig"), + }, + .{ + .build_root = "test/link/wasm/basic-features", + .import = @import("link/wasm/basic-features/build.zig"), + }, + .{ + .build_root = "test/link/wasm/bss", + .import = @import("link/wasm/bss/build.zig"), + }, + .{ + .build_root = "test/link/wasm/export", + .import = @import("link/wasm/export/build.zig"), + }, + .{ + .build_root = "test/link/wasm/export-data", + .import = @import("link/wasm/export-data/build.zig"), + }, + .{ + .build_root = "test/link/wasm/extern", + .import = @import("link/wasm/extern/build.zig"), + }, + .{ + .build_root = "test/link/wasm/extern-mangle", + .import = @import("link/wasm/extern-mangle/build.zig"), + }, + .{ + .build_root = "test/link/wasm/function-table", + .import = @import("link/wasm/function-table/build.zig"), + }, + .{ + .build_root = "test/link/wasm/infer-features", + .import = @import("link/wasm/infer-features/build.zig"), + }, + .{ + .build_root = "test/link/wasm/producers", + .import = @import("link/wasm/producers/build.zig"), + }, + .{ + .build_root = "test/link/wasm/segments", + .import = @import("link/wasm/segments/build.zig"), + }, + .{ + .build_root = "test/link/wasm/stack_pointer", + .import = @import("link/wasm/stack_pointer/build.zig"), + }, + .{ + .build_root = "test/link/wasm/type", + .import = @import("link/wasm/type/build.zig"), + }, + + // Mach-O Cases + // 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 builtin = @import("builtin"); diff --git a/test/link/wasm/archive/build.zig b/test/link/wasm/archive/build.zig index 342c4c08d1..f586187105 100644 --- a/test/link/wasm/archive/build.zig +++ b/test/link/wasm/archive/build.zig @@ -1,15 +1,24 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { + 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 { // The code in question will pull-in compiler-rt, // and therefore link with its archive file. const lib = b.addSharedLibrary(.{ .name = "main", .root_source_file = .{ .path = "main.zig" }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, }); lib.use_llvm = false; diff --git a/test/link/wasm/basic-features/build.zig b/test/link/wasm/basic-features/build.zig index 9f57066518..f3f5320e54 100644 --- a/test/link/wasm/basic-features/build.zig +++ b/test/link/wasm/basic-features/build.zig @@ -1,11 +1,13 @@ const std = @import("std"); +pub const requires_stage2 = true; + pub fn build(b: *std.Build) void { // Library with explicitly set cpu features const lib = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "main.zig" }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = .Debug, .target = .{ .cpu_arch = .wasm32, .cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp }, @@ -24,4 +26,5 @@ pub fn build(b: *std.Build) void { const test_step = b.step("test", "Run linker test"); test_step.dependOn(&check.step); + b.default_step = test_step; } diff --git a/test/link/wasm/bss/build.zig b/test/link/wasm/bss/build.zig index 1017e70a71..8e6b19c7be 100644 --- a/test/link/wasm/bss/build.zig +++ b/test/link/wasm/bss/build.zig @@ -1,14 +1,16 @@ const std = @import("std"); +pub const requires_stage2 = true; + pub fn build(b: *std.Build) void { const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); + b.default_step = test_step; const lib = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = .Debug, }); lib.use_llvm = false; lib.use_lld = false; @@ -36,5 +38,6 @@ pub fn build(b: *std.Build) void { check_lib.checkNext("name .rodata"); check_lib.checkNext("index 1"); // bss section always last check_lib.checkNext("name .bss"); + test_step.dependOn(&check_lib.step); } diff --git a/test/link/wasm/export-data/build.zig b/test/link/wasm/export-data/build.zig index c989153e47..0bd10921a2 100644 --- a/test/link/wasm/export-data/build.zig +++ b/test/link/wasm/export-data/build.zig @@ -2,7 +2,12 @@ const std = @import("std"); pub fn build(b: *std.Build) void { const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); + b.default_step = test_step; + + if (@import("builtin").os.tag == .windows) { + // TODO: Fix open handle in wasm-linker refraining rename from working on Windows. + return; + } const lib = b.addSharedLibrary(.{ .name = "lib", diff --git a/test/link/wasm/export/build.zig b/test/link/wasm/export/build.zig index 69c34a320e..03c4baabe3 100644 --- a/test/link/wasm/export/build.zig +++ b/test/link/wasm/export/build.zig @@ -1,8 +1,18 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { - const optimize = b.standardOptimizeOption(.{}); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { + 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 no_export = b.addSharedLibrary(.{ .name = "no-export", .root_source_file = .{ .path = "main.zig" }, @@ -50,7 +60,6 @@ pub fn build(b: *std.Build) void { check_force_export.checkNext("name foo"); check_force_export.checkNext("kind function"); - const test_step = b.step("test", "Run linker test"); test_step.dependOn(&check_no_export.step); test_step.dependOn(&check_dynamic_export.step); test_step.dependOn(&check_force_export.step); diff --git a/test/link/wasm/extern-mangle/build.zig b/test/link/wasm/extern-mangle/build.zig index 19913e6eca..b0655cbc1f 100644 --- a/test/link/wasm/extern-mangle/build.zig +++ b/test/link/wasm/extern-mangle/build.zig @@ -1,18 +1,24 @@ const std = @import("std"); pub fn build(b: *std.Build) void { - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); + 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 = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, }); lib.import_symbols = true; // import `a` and `b` lib.rdynamic = true; // export `foo` - lib.install(); const check_lib = lib.checkObject(.wasm); check_lib.checkStart("Section import"); diff --git a/test/link/wasm/extern/build.zig b/test/link/wasm/extern/build.zig index fede2b18ab..55562143c2 100644 --- a/test/link/wasm/extern/build.zig +++ b/test/link/wasm/extern/build.zig @@ -1,10 +1,22 @@ const std = @import("std"); +pub const requires_stage2 = true; + pub fn build(b: *std.Build) void { + 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 exe = b.addExecutable(.{ .name = "extern", .root_source_file = .{ .path = "main.zig" }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, .target = .{ .cpu_arch = .wasm32, .os_tag = .wasi }, }); exe.addCSourceFile("foo.c", &.{}); @@ -15,6 +27,5 @@ pub fn build(b: *std.Build) void { run.skip_foreign_checks = true; run.expectStdOutEqual("Result: 30"); - const test_step = b.step("test", "Run linker test"); test_step.dependOn(&run.step); } diff --git a/test/link/wasm/function-table/build.zig b/test/link/wasm/function-table/build.zig index 4c25d0d860..e1921caee3 100644 --- a/test/link/wasm/function-table/build.zig +++ b/test/link/wasm/function-table/build.zig @@ -1,13 +1,20 @@ const std = @import("std"); +pub const requires_stage2 = true; + pub fn build(b: *std.Build) void { - const optimize = b.standardOptimizeOption(.{}); + const test_step = b.step("test", "Test it"); + b.default_step = test_step; - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); + 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 import_table = b.addSharedLibrary(.{ - .name = "lib", + .name = "import_table", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, .optimize = optimize, @@ -17,7 +24,7 @@ pub fn build(b: *std.Build) void { import_table.import_table = true; const export_table = b.addSharedLibrary(.{ - .name = "lib", + .name = "export_table", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, .optimize = optimize, @@ -27,7 +34,7 @@ pub fn build(b: *std.Build) void { export_table.export_table = true; const regular_table = b.addSharedLibrary(.{ - .name = "lib", + .name = "regular_table", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, .optimize = optimize, diff --git a/test/link/wasm/infer-features/build.zig b/test/link/wasm/infer-features/build.zig index d6d706a33d..a7cfa985d5 100644 --- a/test/link/wasm/infer-features/build.zig +++ b/test/link/wasm/infer-features/build.zig @@ -1,12 +1,12 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { - const optimize = b.standardOptimizeOption(.{}); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { // Wasm Object file which we will use to infer the features from const c_obj = b.addObject(.{ .name = "c_obj", - .optimize = optimize, + .optimize = .Debug, .target = .{ .cpu_arch = .wasm32, .cpu_model = .{ .explicit = &std.Target.wasm.cpu.bleeding_edge }, @@ -20,7 +20,7 @@ pub fn build(b: *std.Build) void { const lib = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "main.zig" }, - .optimize = optimize, + .optimize = .Debug, .target = .{ .cpu_arch = .wasm32, .cpu_model = .{ .explicit = &std.Target.wasm.cpu.mvp }, @@ -45,4 +45,5 @@ pub fn build(b: *std.Build) void { const test_step = b.step("test", "Run linker test"); test_step.dependOn(&check.step); + b.default_step = test_step; } diff --git a/test/link/wasm/producers/build.zig b/test/link/wasm/producers/build.zig index 2589b0dfcf..41952b0adb 100644 --- a/test/link/wasm/producers/build.zig +++ b/test/link/wasm/producers/build.zig @@ -1,24 +1,31 @@ const std = @import("std"); const builtin = @import("builtin"); -pub fn build(b: *std.Build) void { - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { + 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 = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, }); lib.use_llvm = false; lib.use_lld = false; lib.strip = false; lib.install(); - const zig_version = builtin.zig_version; - var version_buf: [100]u8 = undefined; - const version_fmt = std.fmt.bufPrint(&version_buf, "version {}", .{zig_version}) catch unreachable; + const version_fmt = "version " ++ builtin.zig_version_string; const check_lib = lib.checkObject(.wasm); check_lib.checkStart("name producers"); diff --git a/test/link/wasm/segments/build.zig b/test/link/wasm/segments/build.zig index 76160e905f..f8e16eee24 100644 --- a/test/link/wasm/segments/build.zig +++ b/test/link/wasm/segments/build.zig @@ -1,14 +1,23 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { + 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 = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, }); lib.use_llvm = false; lib.use_lld = false; diff --git a/test/link/wasm/stack_pointer/build.zig b/test/link/wasm/stack_pointer/build.zig index 95c7643880..41bdd828f2 100644 --- a/test/link/wasm/stack_pointer/build.zig +++ b/test/link/wasm/stack_pointer/build.zig @@ -1,14 +1,23 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { + 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 = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, }); lib.use_llvm = false; lib.use_lld = false; diff --git a/test/link/wasm/type/build.zig b/test/link/wasm/type/build.zig index 816b57ccab..df8cbad021 100644 --- a/test/link/wasm/type/build.zig +++ b/test/link/wasm/type/build.zig @@ -1,14 +1,23 @@ const std = @import("std"); -pub fn build(b: *std.Build) void { - const test_step = b.step("test", "Test"); - test_step.dependOn(b.getInstallStep()); +pub const requires_stage2 = true; +pub fn build(b: *std.Build) void { + 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 = b.addSharedLibrary(.{ .name = "lib", .root_source_file = .{ .path = "lib.zig" }, .target = .{ .cpu_arch = .wasm32, .os_tag = .freestanding }, - .optimize = b.standardOptimizeOption(.{}), + .optimize = optimize, }); lib.use_llvm = false; lib.use_lld = false; diff --git a/test/tests.zig b/test/tests.zig index d5ee83b447..a23870b79e 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -599,18 +599,21 @@ pub fn addLinkTests( _ = test_filter; _ = optimize_modes; _ = enable_macos_sdk; - _ = omit_stage2; _ = enable_symlinks_windows; const step = b.step("test-link", "Run the linker tests"); inline for (link.cases) |link_test| { - const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{}); - const dep_step = dep.builder.default_step; - assert(mem.startsWith(u8, dep.builder.dep_prefix, "test.")); - const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..]; - dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name }); - step.dependOn(dep_step); + const requires_stage2 = @hasDecl(link_test.import, "requires_stage2") and + link_test.import.requires_stage2; + if (!requires_stage2 or !omit_stage2) { + const dep = b.anonymousDependency(link_test.build_root, link_test.import, .{}); + const dep_step = dep.builder.default_step; + assert(mem.startsWith(u8, dep.builder.dep_prefix, "test.")); + const dep_prefix_adjusted = dep.builder.dep_prefix["test.".len..]; + dep_step.name = b.fmt("{s}{s}", .{ dep_prefix_adjusted, dep_step.name }); + step.dependOn(dep_step); + } } return step;