zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 183d5f4a5312c090729823dd5ebf4500c0a5a5eb (tree)
parent 0e08cd63e236314750f18d28f8ede98a2188c6d2
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Thu, 10 Jun 2021 19:51:41 +0200

Add standalone test for common symbols

Diffstat:
Mtest/standalone.zig | 1+
Atest/standalone/link_common_symbols/a.c | 6++++++
Atest/standalone/link_common_symbols/b.c | 6++++++
Atest/standalone/link_common_symbols/build.zig | 16++++++++++++++++
Atest/standalone/link_common_symbols/main.zig | 11+++++++++++
5 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/test/standalone.zig b/test/standalone.zig @@ -15,6 +15,7 @@ pub fn addCases(cases: *tests.StandaloneContext) void { 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/issue_339/build.zig", .{}); cases.addBuildFile("test/standalone/issue_8550/build.zig", .{}); cases.addBuildFile("test/standalone/issue_794/build.zig", .{}); diff --git a/test/standalone/link_common_symbols/a.c b/test/standalone/link_common_symbols/a.c @@ -0,0 +1,6 @@ +int i; +int j; + +int add_to_i_and_j(int x) { + return x + i + j; +} diff --git a/test/standalone/link_common_symbols/b.c b/test/standalone/link_common_symbols/b.c @@ -0,0 +1,6 @@ +long i; +int j = 2; + +void incr_i() { + i++; +} diff --git a/test/standalone/link_common_symbols/build.zig b/test/standalone/link_common_symbols/build.zig @@ -0,0 +1,16 @@ +const Builder = @import("std").build.Builder; + +pub fn build(b: *Builder) void { + const mode = b.standardReleaseOptions(); + + const lib_a = b.addStaticLibrary("a", null); + lib_a.addCSourceFiles(&.{ "a.c", "b.c" }, &.{"-fcommon"}); + lib_a.setBuildMode(mode); + + const test_exe = b.addTest("main.zig"); + test_exe.setBuildMode(mode); + test_exe.linkLibrary(lib_a); + + const test_step = b.step("test", "Test it"); + test_step.dependOn(&test_exe.step); +} diff --git a/test/standalone/link_common_symbols/main.zig b/test/standalone/link_common_symbols/main.zig @@ -0,0 +1,11 @@ +const std = @import("std"); +const expect = std.testing.expect; + +extern fn incr_i() void; +extern fn add_to_i_and_j(x: c_int) c_int; + +test "import C common symbols" { + incr_i(); + const res = add_to_i_and_j(2); + try expect(res == 5); +}