authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-06-10 19:51:41+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-06-10 19:51:41+02:00
log183d5f4a5312c090729823dd5ebf4500c0a5a5eb
treeee4feb6eb422a5d6b5c66103fab33e93ed74d65f
parent0e08cd63e236314750f18d28f8ede98a2188c6d2

Add standalone test for common symbols


5 files changed, 40 insertions(+), 0 deletions(-)

test/standalone.zig+1
......@@ -15,6 +15,7 @@ pub fn addCases(cases: *tests.StandaloneContext) void {
1515 cases.addBuildFile("test/standalone/static_c_lib/build.zig", .{});
1616 cases.addBuildFile("test/standalone/link_interdependent_static_c_libs/build.zig", .{});
1717 cases.addBuildFile("test/standalone/link_static_lib_as_system_lib/build.zig", .{});
18 cases.addBuildFile("test/standalone/link_common_symbols/build.zig", .{});
1819 cases.addBuildFile("test/standalone/issue_339/build.zig", .{});
1920 cases.addBuildFile("test/standalone/issue_8550/build.zig", .{});
2021 cases.addBuildFile("test/standalone/issue_794/build.zig", .{});
test/standalone/link_common_symbols/a.c created+6
......@@ -0,0 +1,6 @@
1int i;
2int j;
3
4int add_to_i_and_j(int x) {
5 return x + i + j;
6}
test/standalone/link_common_symbols/b.c created+6
......@@ -0,0 +1,6 @@
1long i;
2int j = 2;
3
4void incr_i() {
5 i++;
6}
test/standalone/link_common_symbols/build.zig created+16
......@@ -0,0 +1,16 @@
1const Builder = @import("std").build.Builder;
2
3pub fn build(b: *Builder) void {
4 const mode = b.standardReleaseOptions();
5
6 const lib_a = b.addStaticLibrary("a", null);
7 lib_a.addCSourceFiles(&.{ "a.c", "b.c" }, &.{"-fcommon"});
8 lib_a.setBuildMode(mode);
9
10 const test_exe = b.addTest("main.zig");
11 test_exe.setBuildMode(mode);
12 test_exe.linkLibrary(lib_a);
13
14 const test_step = b.step("test", "Test it");
15 test_step.dependOn(&test_exe.step);
16}
test/standalone/link_common_symbols/main.zig created+11
......@@ -0,0 +1,11 @@
1const std = @import("std");
2const expect = std.testing.expect;
3
4extern fn incr_i() void;
5extern fn add_to_i_and_j(x: c_int) c_int;
6
7test "import C common symbols" {
8 incr_i();
9 const res = add_to_i_and_j(2);
10 try expect(res == 5);
11}