aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/link.zig52
-rw-r--r--test/link/bss/build.zig14
-rw-r--r--test/link/bss/main.zig13
-rw-r--r--test/link/common_symbols/a.c (renamed from test/standalone/link_common_symbols/a.c)0
-rw-r--r--test/link/common_symbols/b.c (renamed from test/standalone/link_common_symbols/b.c)0
-rw-r--r--test/link/common_symbols/build.zig (renamed from test/standalone/link_common_symbols/build.zig)0
-rw-r--r--test/link/common_symbols/c.c (renamed from test/standalone/link_common_symbols/c.c)0
-rw-r--r--test/link/common_symbols/main.zig (renamed from test/standalone/link_common_symbols/main.zig)0
-rw-r--r--test/link/common_symbols_alignment/a.c (renamed from test/standalone/link_common_symbols_alignment/a.c)0
-rw-r--r--test/link/common_symbols_alignment/build.zig (renamed from test/standalone/link_common_symbols_alignment/build.zig)0
-rw-r--r--test/link/common_symbols_alignment/main.zig (renamed from test/standalone/link_common_symbols_alignment/main.zig)0
-rw-r--r--test/link/dylib/a.c7
-rw-r--r--test/link/dylib/build.zig29
-rw-r--r--test/link/dylib/main.c9
-rw-r--r--test/link/frameworks/build.zig (renamed from test/standalone/link_frameworks/build.zig)18
-rw-r--r--test/link/frameworks/main.c (renamed from test/standalone/link_frameworks/main.c)0
-rw-r--r--test/link/interdependent_static_c_libs/a.c (renamed from test/standalone/link_interdependent_static_c_libs/a.c)0
-rw-r--r--test/link/interdependent_static_c_libs/a.h (renamed from test/standalone/link_interdependent_static_c_libs/a.h)0
-rw-r--r--test/link/interdependent_static_c_libs/b.c (renamed from test/standalone/link_interdependent_static_c_libs/b.c)0
-rw-r--r--test/link/interdependent_static_c_libs/b.h (renamed from test/standalone/link_interdependent_static_c_libs/b.h)0
-rw-r--r--test/link/interdependent_static_c_libs/build.zig (renamed from test/standalone/link_interdependent_static_c_libs/build.zig)0
-rw-r--r--test/link/interdependent_static_c_libs/main.zig (renamed from test/standalone/link_interdependent_static_c_libs/main.zig)0
-rw-r--r--test/link/objc/Foo.h (renamed from test/standalone/objc/Foo.h)0
-rw-r--r--test/link/objc/Foo.m (renamed from test/standalone/objc/Foo.m)0
-rw-r--r--test/link/objc/build.zig (renamed from test/standalone/objc/build.zig)18
-rw-r--r--test/link/objc/test.m (renamed from test/standalone/objc/test.m)0
-rw-r--r--test/link/objcpp/Foo.h (renamed from test/standalone/objcpp/Foo.h)0
-rw-r--r--test/link/objcpp/Foo.mm (renamed from test/standalone/objcpp/Foo.mm)0
-rw-r--r--test/link/objcpp/build.zig (renamed from test/standalone/objcpp/build.zig)20
-rw-r--r--test/link/objcpp/test.mm (renamed from test/standalone/objcpp/test.mm)0
-rw-r--r--test/link/static_lib_as_system_lib/a.c (renamed from test/standalone/link_static_lib_as_system_lib/a.c)0
-rw-r--r--test/link/static_lib_as_system_lib/a.h (renamed from test/standalone/link_static_lib_as_system_lib/a.h)0
-rw-r--r--test/link/static_lib_as_system_lib/build.zig (renamed from test/standalone/link_static_lib_as_system_lib/build.zig)0
-rw-r--r--test/link/static_lib_as_system_lib/main.zig (renamed from test/standalone/link_static_lib_as_system_lib/main.zig)0
-rw-r--r--test/link/tls/a.c5
-rw-r--r--test/link/tls/build.zig (renamed from test/standalone/link_import_tls_dylib/build.zig)2
-rw-r--r--test/link/tls/main.zig15
-rw-r--r--test/standalone.zig37
-rw-r--r--test/standalone/link_import_tls_dylib/a.c1
-rw-r--r--test/standalone/link_import_tls_dylib/main.zig7
-rw-r--r--test/tests.zig22
41 files changed, 180 insertions, 89 deletions
diff --git a/test/link.zig b/test/link.zig
new file mode 100644
index 0000000000..3c1b268d86
--- /dev/null
+++ b/test/link.zig
@@ -0,0 +1,52 @@
+const std = @import("std");
+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/dylib/build.zig", .{
+ .build_modes = true,
+ });
+
+ 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,
+ });
+
+ cases.addBuildFile("test/link/tls/build.zig", .{
+ .build_modes = true,
+ });
+
+ if (builtin.os.tag == .macos) {
+ cases.addBuildFile("test/link/frameworks/build.zig", .{
+ .build_modes = true,
+ .requires_macos_sdk = true,
+ });
+
+ // Try to build and run an Objective-C executable.
+ cases.addBuildFile("test/link/objc/build.zig", .{
+ .build_modes = true,
+ .requires_macos_sdk = true,
+ });
+
+ // Try to build and run an Objective-C++ executable.
+ cases.addBuildFile("test/link/objcpp/build.zig", .{
+ .build_modes = true,
+ .requires_macos_sdk = true,
+ });
+ }
+}
diff --git a/test/link/bss/build.zig b/test/link/bss/build.zig
new file mode 100644
index 0000000000..76e9bdb305
--- /dev/null
+++ b/test/link/bss/build.zig
@@ -0,0 +1,14 @@
+const Builder = @import("std").build.Builder;
+
+pub fn build(b: *Builder) void {
+ const mode = b.standardReleaseOptions();
+ const test_step = b.step("test", "Test");
+
+ const exe = b.addExecutable("bss", "main.zig");
+ b.default_step.dependOn(&exe.step);
+ exe.setBuildMode(mode);
+
+ const run = exe.run();
+ run.expectStdOutEqual("0, 1, 0\n");
+ test_step.dependOn(&run.step);
+}
diff --git a/test/link/bss/main.zig b/test/link/bss/main.zig
new file mode 100644
index 0000000000..c901f0bb27
--- /dev/null
+++ b/test/link/bss/main.zig
@@ -0,0 +1,13 @@
+const std = @import("std");
+
+// Stress test zerofill layout
+var buffer: [0x1000000]u64 = undefined;
+
+pub fn main() anyerror!void {
+ buffer[0x10] = 1;
+ try std.io.getStdOut().writer().print("{d}, {d}, {d}\n", .{
+ buffer[0],
+ buffer[0x10],
+ buffer[0x1000000 - 1],
+ });
+}
diff --git a/test/standalone/link_common_symbols/a.c b/test/link/common_symbols/a.c
index 829a96e507..829a96e507 100644
--- a/test/standalone/link_common_symbols/a.c
+++ b/test/link/common_symbols/a.c
diff --git a/test/standalone/link_common_symbols/b.c b/test/link/common_symbols/b.c
index 18e8a8c23b..18e8a8c23b 100644
--- a/test/standalone/link_common_symbols/b.c
+++ b/test/link/common_symbols/b.c
diff --git a/test/standalone/link_common_symbols/build.zig b/test/link/common_symbols/build.zig
index 2f9f892e86..2f9f892e86 100644
--- a/test/standalone/link_common_symbols/build.zig
+++ b/test/link/common_symbols/build.zig
diff --git a/test/standalone/link_common_symbols/c.c b/test/link/common_symbols/c.c
index fdf60b9ca8..fdf60b9ca8 100644
--- a/test/standalone/link_common_symbols/c.c
+++ b/test/link/common_symbols/c.c
diff --git a/test/standalone/link_common_symbols/main.zig b/test/link/common_symbols/main.zig
index 255b5aa621..255b5aa621 100644
--- a/test/standalone/link_common_symbols/main.zig
+++ b/test/link/common_symbols/main.zig
diff --git a/test/standalone/link_common_symbols_alignment/a.c b/test/link/common_symbols_alignment/a.c
index adff9d15f3..adff9d15f3 100644
--- a/test/standalone/link_common_symbols_alignment/a.c
+++ b/test/link/common_symbols_alignment/a.c
diff --git a/test/standalone/link_common_symbols_alignment/build.zig b/test/link/common_symbols_alignment/build.zig
index a62d86af4f..a62d86af4f 100644
--- a/test/standalone/link_common_symbols_alignment/build.zig
+++ b/test/link/common_symbols_alignment/build.zig
diff --git a/test/standalone/link_common_symbols_alignment/main.zig b/test/link/common_symbols_alignment/main.zig
index 3d3457c764..3d3457c764 100644
--- a/test/standalone/link_common_symbols_alignment/main.zig
+++ b/test/link/common_symbols_alignment/main.zig
diff --git a/test/link/dylib/a.c b/test/link/dylib/a.c
new file mode 100644
index 0000000000..199b31e1a0
--- /dev/null
+++ b/test/link/dylib/a.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+char world[] = "world";
+
+char* hello() {
+ return "Hello";
+}
diff --git a/test/link/dylib/build.zig b/test/link/dylib/build.zig
new file mode 100644
index 0000000000..a9dee4aafb
--- /dev/null
+++ b/test/link/dylib/build.zig
@@ -0,0 +1,29 @@
+const std = @import("std");
+const Builder = std.build.Builder;
+
+pub fn build(b: *Builder) void {
+ const mode = b.standardReleaseOptions();
+
+ const test_step = b.step("test", "Test");
+
+ const dylib = b.addSharedLibrary("a", null, b.version(1, 0, 0));
+ dylib.setBuildMode(mode);
+ dylib.addCSourceFile("a.c", &.{});
+ dylib.linkLibC();
+ dylib.install();
+
+ const exe = b.addExecutable("main", null);
+ exe.setBuildMode(mode);
+ exe.addCSourceFile("main.c", &.{});
+ exe.linkSystemLibrary("a");
+ exe.linkLibC();
+ exe.addLibraryPath(b.pathFromRoot("zig-out/lib/"));
+ exe.addRPath(b.pathFromRoot("zig-out/lib"));
+
+ const run = exe.run();
+ run.cwd = b.pathFromRoot(".");
+ run.expectStdOutEqual("Hello world");
+
+ test_step.dependOn(b.getInstallStep());
+ test_step.dependOn(&run.step);
+}
diff --git a/test/link/dylib/main.c b/test/link/dylib/main.c
new file mode 100644
index 0000000000..be1647ddad
--- /dev/null
+++ b/test/link/dylib/main.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+char* hello();
+extern char world[];
+
+int main() {
+ printf("%s %s", hello(), world);
+ return 0;
+}
diff --git a/test/standalone/link_frameworks/build.zig b/test/link/frameworks/build.zig
index 460e1675e0..5700422a41 100644
--- a/test/standalone/link_frameworks/build.zig
+++ b/test/link/frameworks/build.zig
@@ -1,19 +1,8 @@
const std = @import("std");
const Builder = std.build.Builder;
-const CrossTarget = std.zig.CrossTarget;
-
-fn isRunnableTarget(t: CrossTarget) bool {
- // TODO I think we might be able to run this on Linux via Darling.
- // Add a check for that here, and return true if Darling is available.
- if (t.isNative() and t.getOsTag() == .macos)
- return true
- else
- return false;
-}
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
- const target = b.standardTargetOptions(.{});
const test_step = b.step("test", "Test the program");
@@ -21,14 +10,11 @@ pub fn build(b: *Builder) void {
b.default_step.dependOn(&exe.step);
exe.addCSourceFile("main.c", &[0][]const u8{});
exe.setBuildMode(mode);
- exe.setTarget(target);
exe.linkLibC();
// TODO when we figure out how to ship framework stubs for cross-compilation,
// populate paths to the sysroot here.
exe.linkFramework("Cocoa");
- if (isRunnableTarget(target)) {
- const run_cmd = exe.run();
- test_step.dependOn(&run_cmd.step);
- }
+ const run_cmd = exe.run();
+ test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/link_frameworks/main.c b/test/link/frameworks/main.c
index b9dab990b2..b9dab990b2 100644
--- a/test/standalone/link_frameworks/main.c
+++ b/test/link/frameworks/main.c
diff --git a/test/standalone/link_interdependent_static_c_libs/a.c b/test/link/interdependent_static_c_libs/a.c
index ee9da97a3a..ee9da97a3a 100644
--- a/test/standalone/link_interdependent_static_c_libs/a.c
+++ b/test/link/interdependent_static_c_libs/a.c
diff --git a/test/standalone/link_interdependent_static_c_libs/a.h b/test/link/interdependent_static_c_libs/a.h
index 7b45d54d56..7b45d54d56 100644
--- a/test/standalone/link_interdependent_static_c_libs/a.h
+++ b/test/link/interdependent_static_c_libs/a.h
diff --git a/test/standalone/link_interdependent_static_c_libs/b.c b/test/link/interdependent_static_c_libs/b.c
index ac2cc4f937..ac2cc4f937 100644
--- a/test/standalone/link_interdependent_static_c_libs/b.c
+++ b/test/link/interdependent_static_c_libs/b.c
diff --git a/test/standalone/link_interdependent_static_c_libs/b.h b/test/link/interdependent_static_c_libs/b.h
index 6047163145..6047163145 100644
--- a/test/standalone/link_interdependent_static_c_libs/b.h
+++ b/test/link/interdependent_static_c_libs/b.h
diff --git a/test/standalone/link_interdependent_static_c_libs/build.zig b/test/link/interdependent_static_c_libs/build.zig
index bd1b6100da..bd1b6100da 100644
--- a/test/standalone/link_interdependent_static_c_libs/build.zig
+++ b/test/link/interdependent_static_c_libs/build.zig
diff --git a/test/standalone/link_interdependent_static_c_libs/main.zig b/test/link/interdependent_static_c_libs/main.zig
index cb5d2e7b77..cb5d2e7b77 100644
--- a/test/standalone/link_interdependent_static_c_libs/main.zig
+++ b/test/link/interdependent_static_c_libs/main.zig
diff --git a/test/standalone/objc/Foo.h b/test/link/objc/Foo.h
index 05cb7df39b..05cb7df39b 100644
--- a/test/standalone/objc/Foo.h
+++ b/test/link/objc/Foo.h
diff --git a/test/standalone/objc/Foo.m b/test/link/objc/Foo.m
index 6fc9b1edf0..6fc9b1edf0 100644
--- a/test/standalone/objc/Foo.m
+++ b/test/link/objc/Foo.m
diff --git a/test/standalone/objc/build.zig b/test/link/objc/build.zig
index 1b3a90f90f..e41fd48e71 100644
--- a/test/standalone/objc/build.zig
+++ b/test/link/objc/build.zig
@@ -1,19 +1,8 @@
const std = @import("std");
const Builder = std.build.Builder;
-const CrossTarget = std.zig.CrossTarget;
-
-fn isRunnableTarget(t: CrossTarget) bool {
- // TODO I think we might be able to run this on Linux via Darling.
- // Add a check for that here, and return true if Darling is available.
- if (t.isNative() and t.getOsTag() == .macos)
- return true
- else
- return false;
-}
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
- const target = b.standardTargetOptions(.{});
const test_step = b.step("test", "Test the program");
@@ -23,14 +12,11 @@ pub fn build(b: *Builder) void {
exe.addCSourceFile("Foo.m", &[0][]const u8{});
exe.addCSourceFile("test.m", &[0][]const u8{});
exe.setBuildMode(mode);
- exe.setTarget(target);
exe.linkLibC();
// TODO when we figure out how to ship framework stubs for cross-compilation,
// populate paths to the sysroot here.
exe.linkFramework("Foundation");
- if (isRunnableTarget(target)) {
- const run_cmd = exe.run();
- test_step.dependOn(&run_cmd.step);
- }
+ const run_cmd = exe.run();
+ test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/objc/test.m b/test/link/objc/test.m
index 3c81316788..3c81316788 100644
--- a/test/standalone/objc/test.m
+++ b/test/link/objc/test.m
diff --git a/test/standalone/objcpp/Foo.h b/test/link/objcpp/Foo.h
index 05cb7df39b..05cb7df39b 100644
--- a/test/standalone/objcpp/Foo.h
+++ b/test/link/objcpp/Foo.h
diff --git a/test/standalone/objcpp/Foo.mm b/test/link/objcpp/Foo.mm
index 6fc9b1edf0..6fc9b1edf0 100644
--- a/test/standalone/objcpp/Foo.mm
+++ b/test/link/objcpp/Foo.mm
diff --git a/test/standalone/objcpp/build.zig b/test/link/objcpp/build.zig
index 688592793a..767578e225 100644
--- a/test/standalone/objcpp/build.zig
+++ b/test/link/objcpp/build.zig
@@ -1,19 +1,8 @@
const std = @import("std");
const Builder = std.build.Builder;
-const CrossTarget = std.zig.CrossTarget;
-
-fn isRunnableTarget(t: CrossTarget) bool {
- // TODO I think we might be able to run this on Linux via Darling.
- // Add a check for that here, and return true if Darling is available.
- if (t.isNative() and t.getOsTag() == .macos)
- return true
- else
- return false;
-}
pub fn build(b: *Builder) void {
const mode = b.standardReleaseOptions();
- const target = b.standardTargetOptions(.{});
const test_step = b.step("test", "Test the program");
@@ -23,14 +12,13 @@ pub fn build(b: *Builder) void {
exe.addCSourceFile("Foo.mm", &[0][]const u8{});
exe.addCSourceFile("test.mm", &[0][]const u8{});
exe.setBuildMode(mode);
- exe.setTarget(target);
exe.linkLibCpp();
// TODO when we figure out how to ship framework stubs for cross-compilation,
// populate paths to the sysroot here.
exe.linkFramework("Foundation");
- if (isRunnableTarget(target)) {
- const run_cmd = exe.run();
- test_step.dependOn(&run_cmd.step);
- }
+ const run_cmd = exe.run();
+ run_cmd.expectStdOutEqual("Hello from C++ and Zig");
+
+ test_step.dependOn(&run_cmd.step);
}
diff --git a/test/standalone/objcpp/test.mm b/test/link/objcpp/test.mm
index d27c543cdf..d27c543cdf 100644
--- a/test/standalone/objcpp/test.mm
+++ b/test/link/objcpp/test.mm
diff --git a/test/standalone/link_static_lib_as_system_lib/a.c b/test/link/static_lib_as_system_lib/a.c
index ee9da97a3a..ee9da97a3a 100644
--- a/test/standalone/link_static_lib_as_system_lib/a.c
+++ b/test/link/static_lib_as_system_lib/a.c
diff --git a/test/standalone/link_static_lib_as_system_lib/a.h b/test/link/static_lib_as_system_lib/a.h
index 7b45d54d56..7b45d54d56 100644
--- a/test/standalone/link_static_lib_as_system_lib/a.h
+++ b/test/link/static_lib_as_system_lib/a.h
diff --git a/test/standalone/link_static_lib_as_system_lib/build.zig b/test/link/static_lib_as_system_lib/build.zig
index f39f3fac2a..f39f3fac2a 100644
--- a/test/standalone/link_static_lib_as_system_lib/build.zig
+++ b/test/link/static_lib_as_system_lib/build.zig
diff --git a/test/standalone/link_static_lib_as_system_lib/main.zig b/test/link/static_lib_as_system_lib/main.zig
index 0b9c46217f..0b9c46217f 100644
--- a/test/standalone/link_static_lib_as_system_lib/main.zig
+++ b/test/link/static_lib_as_system_lib/main.zig
diff --git a/test/link/tls/a.c b/test/link/tls/a.c
new file mode 100644
index 0000000000..8602d02419
--- /dev/null
+++ b/test/link/tls/a.c
@@ -0,0 +1,5 @@
+_Thread_local int a;
+
+int getA() {
+ return a;
+}
diff --git a/test/standalone/link_import_tls_dylib/build.zig b/test/link/tls/build.zig
index 332173fbb6..ebf15ca439 100644
--- a/test/standalone/link_import_tls_dylib/build.zig
+++ b/test/link/tls/build.zig
@@ -6,10 +6,12 @@ pub fn build(b: *Builder) void {
const lib = b.addSharedLibrary("a", null, b.version(1, 0, 0));
lib.setBuildMode(mode);
lib.addCSourceFile("a.c", &.{});
+ lib.linkLibC();
const test_exe = b.addTest("main.zig");
test_exe.setBuildMode(mode);
test_exe.linkLibrary(lib);
+ test_exe.linkLibC();
const test_step = b.step("test", "Test it");
test_step.dependOn(&test_exe.step);
diff --git a/test/link/tls/main.zig b/test/link/tls/main.zig
new file mode 100644
index 0000000000..ab01616e31
--- /dev/null
+++ b/test/link/tls/main.zig
@@ -0,0 +1,15 @@
+const std = @import("std");
+
+extern threadlocal var a: i32;
+extern fn getA() i32;
+
+fn getA2() i32 {
+ return a;
+}
+
+test {
+ a = 2;
+ try std.testing.expect(getA() == 2);
+ try std.testing.expect(2 == getA2());
+ try std.testing.expect(getA() == getA2());
+}
diff --git a/test/standalone.zig b/test/standalone.zig
index c34f9467d6..92d0ea4aa3 100644
--- a/test/standalone.zig
+++ b/test/standalone.zig
@@ -13,31 +13,12 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
cases.addBuildFile("test/standalone/main_pkg_path/build.zig", .{});
cases.addBuildFile("test/standalone/shared_library/build.zig", .{});
cases.addBuildFile("test/standalone/mix_o_files/build.zig", .{});
- if (builtin.os.tag == .macos) {
- // Zig's macOS linker does not yet support LTO for LLVM IR files:
- // https://github.com/ziglang/zig/issues/8680
- cases.addBuildFile("test/standalone/mix_c_files/build.zig", .{
- .build_modes = false,
- .cross_targets = true,
- });
- } else {
- cases.addBuildFile("test/standalone/mix_c_files/build.zig", .{
- .build_modes = true,
- .cross_targets = true,
- });
- }
+ cases.addBuildFile("test/standalone/mix_c_files/build.zig", .{
+ .build_modes = true,
+ .cross_targets = true,
+ });
cases.addBuildFile("test/standalone/global_linkage/build.zig", .{});
cases.addBuildFile("test/standalone/static_c_lib/build.zig", .{});
- cases.addBuildFile("test/standalone/link_interdependent_static_c_libs/build.zig", .{});
- cases.addBuildFile("test/standalone/link_static_lib_as_system_lib/build.zig", .{});
- cases.addBuildFile("test/standalone/link_common_symbols/build.zig", .{});
- cases.addBuildFile("test/standalone/link_frameworks/build.zig", .{
- .requires_macos_sdk = true,
- });
- cases.addBuildFile("test/standalone/link_common_symbols_alignment/build.zig", .{});
- if (builtin.os.tag == .macos) {
- cases.addBuildFile("test/standalone/link_import_tls_dylib/build.zig", .{});
- }
cases.addBuildFile("test/standalone/issue_339/build.zig", .{});
cases.addBuildFile("test/standalone/issue_8550/build.zig", .{});
cases.addBuildFile("test/standalone/issue_794/build.zig", .{});
@@ -69,16 +50,6 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
if (builtin.os.tag == .linux) {
cases.addBuildFile("test/standalone/pie/build.zig", .{});
}
- // Try to build and run an Objective-C executable.
- cases.addBuildFile("test/standalone/objc/build.zig", .{
- .build_modes = true,
- .requires_macos_sdk = true,
- });
- // Try to build and run an Objective-C++ executable.
- cases.addBuildFile("test/standalone/objcpp/build.zig", .{
- .build_modes = true,
- .requires_macos_sdk = true,
- });
// Ensure the development tools are buildable.
cases.add("tools/gen_spirv_spec.zig");
diff --git a/test/standalone/link_import_tls_dylib/a.c b/test/standalone/link_import_tls_dylib/a.c
deleted file mode 100644
index 5c5aa5bae4..0000000000
--- a/test/standalone/link_import_tls_dylib/a.c
+++ /dev/null
@@ -1 +0,0 @@
-_Thread_local int a;
diff --git a/test/standalone/link_import_tls_dylib/main.zig b/test/standalone/link_import_tls_dylib/main.zig
deleted file mode 100644
index 354c6f545e..0000000000
--- a/test/standalone/link_import_tls_dylib/main.zig
+++ /dev/null
@@ -1,7 +0,0 @@
-const std = @import("std");
-
-extern threadlocal var a: i32;
-
-test {
- try std.testing.expect(a == 0);
-}
diff --git a/test/tests.zig b/test/tests.zig
index 3666ef1028..8bc415d28b 100644
--- a/test/tests.zig
+++ b/test/tests.zig
@@ -21,6 +21,7 @@ const assemble_and_link = @import("assemble_and_link.zig");
const translate_c = @import("translate_c.zig");
const run_translated_c = @import("run_translated_c.zig");
const gen_h = @import("gen_h.zig");
+const link = @import("link.zig");
// Implementations
pub const TranslateCContext = @import("src/translate_c.zig").TranslateCContext;
@@ -479,6 +480,27 @@ pub fn addStandaloneTests(
return cases.step;
}
+pub fn addLinkTests(
+ b: *build.Builder,
+ test_filter: ?[]const u8,
+ modes: []const Mode,
+ enable_macos_sdk: bool,
+) *build.Step {
+ const cases = b.allocator.create(StandaloneContext) catch unreachable;
+ cases.* = StandaloneContext{
+ .b = b,
+ .step = b.step("test-link", "Run the linker tests"),
+ .test_index = 0,
+ .test_filter = test_filter,
+ .modes = modes,
+ .skip_non_native = true,
+ .enable_macos_sdk = enable_macos_sdk,
+ .target = .{},
+ };
+ link.addCases(cases);
+ return cases.step;
+}
+
pub fn addCliTests(b: *build.Builder, test_filter: ?[]const u8, modes: []const Mode) *build.Step {
_ = test_filter;
_ = modes;