summaryrefslogtreecommitdiff
path: root/libpanto-c/build.zig
blob: 2e3160cc78e9fa117f4e0fbab0f4448ebfcff18d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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);
}