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); }