summaryrefslogtreecommitdiff
path: root/libpanto-c/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'libpanto-c/build.zig')
-rw-r--r--libpanto-c/build.zig33
1 files changed, 33 insertions, 0 deletions
diff --git a/libpanto-c/build.zig b/libpanto-c/build.zig
new file mode 100644
index 0000000..2e3160c
--- /dev/null
+++ b/libpanto-c/build.zig
@@ -0,0 +1,33 @@
+const std = @import("std");
+
+pub fn build(b: *std.Build) void {
+ const target = b.standardTargetOptions(.{});
+ const optimize = b.standardOptimizeOption(.{});
+
+ const panto_dep = b.dependency("panto", .{ .target = target, .optimize = optimize });
+
+ const mod = b.createModule(.{
+ .root_source_file = b.path("src/lib.zig"),
+ .target = target,
+ .optimize = optimize,
+ .link_libc = true,
+ });
+ mod.addImport("panto", panto_dep.module("panto"));
+
+ const linkage = b.option(std.builtin.LinkMode, "linkage", "Library linkage: dynamic (default) or static") orelse .dynamic;
+ const lib = b.addLibrary(.{ .name = "panto", .root_module = mod, .linkage = linkage });
+ if (linkage == .dynamic) {
+ lib.rdynamic = true;
+ } else {
+ // Bundle compiler_rt into the archive so the final consumer link
+ // (e.g. cgo) doesn't need Zig's runtime support library separately.
+ lib.bundle_compiler_rt = true;
+ }
+ b.installArtifact(lib);
+ b.installFile("include/panto.h", "include/panto.h");
+
+ const unit_tests = b.addTest(.{ .name = "panto-c-tests", .root_module = mod });
+ const run_unit_tests = b.addRunArtifact(unit_tests);
+ const test_step = b.step("test", "Run unit tests");
+ test_step.dependOn(&run_unit_tests.step);
+}