I've gotten tired of trying to find this in the cache dir, since the build system does not rerun it once it is cached. Also sometimes the build runner does weird things to the output.
80 lines
2.2 KiB
Zig
80 lines
2.2 KiB
Zig
// This file is licensed under the CC0 1.0 license.
|
|
// See: https://creativecommons.org/publicdomain/zero/1.0/legalcode
|
|
|
|
const std = @import("std");
|
|
const nats_build = @import("./nats-c.build.zig");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
|
|
const nats = b.addModule("nats", .{
|
|
.source_file = .{ .path = "src/nats.zig" },
|
|
});
|
|
|
|
const nats_c = nats_build.nats_c_lib(b, .{
|
|
.name = "nats-c",
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
|
|
const tests = b.addTest(.{
|
|
.name = "nats-zig-unit-tests",
|
|
.root_source_file = .{ .path = "tests/main.zig" },
|
|
.target = target,
|
|
.optimize = optimize,
|
|
});
|
|
|
|
tests.addModule("nats", nats);
|
|
tests.linkLibrary(nats_c);
|
|
|
|
const run_main_tests = b.addRunArtifact(tests);
|
|
const test_step = b.step("test", "Run tests");
|
|
test_step.dependOn(&b.addInstallArtifact(tests, .{}).step);
|
|
test_step.dependOn(&run_main_tests.step);
|
|
|
|
add_examples(b, .{
|
|
.target = target,
|
|
.optimize = optimize,
|
|
.nats_module = nats,
|
|
.nats_c = nats_c,
|
|
});
|
|
}
|
|
|
|
const ExampleOptions = struct {
|
|
target: std.zig.CrossTarget,
|
|
optimize: std.builtin.OptimizeMode,
|
|
nats_module: *std.Build.Module,
|
|
nats_c: *std.Build.Step.Compile,
|
|
};
|
|
|
|
const Example = struct {
|
|
name: []const u8,
|
|
file: []const u8,
|
|
};
|
|
|
|
const examples = [_]Example{
|
|
.{ .name = "request_reply", .file = "examples/request_reply.zig" },
|
|
.{ .name = "headers", .file = "examples/headers.zig" },
|
|
.{ .name = "pub_bytes", .file = "examples/pub_bytes.zig" },
|
|
};
|
|
|
|
pub fn add_examples(b: *std.build, options: ExampleOptions) void {
|
|
const example_step = b.step("examples", "build examples");
|
|
|
|
inline for (examples) |example| {
|
|
const ex_exe = b.addExecutable(.{
|
|
.name = example.name,
|
|
.root_source_file = .{ .path = example.file },
|
|
.target = options.target,
|
|
.optimize = .Debug,
|
|
});
|
|
|
|
ex_exe.addModule("nats", options.nats_module);
|
|
ex_exe.linkLibrary(options.nats_c);
|
|
|
|
const install = b.addInstallArtifact(ex_exe, .{});
|
|
example_step.dependOn(&install.step);
|
|
}
|
|
}
|