-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.zig
44 lines (36 loc) · 1.83 KB
/
build.zig
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
34
35
36
37
38
39
40
41
42
43
44
const std = @import("std");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const lib = b.addStaticLibrary(.{
.name = "argz",
.root_source_file = b.path("src/argz.zig"),
.target = target,
.optimize = optimize,
});
const install_docs = b.addInstallDirectory(.{
.source_dir = lib.getEmittedDocs(),
.install_dir = .prefix,
.install_subdir = "doc/argz",
});
_ = b.addModule("argz", .{ .root_source_file = b.path("src/argz.zig"), .optimize = optimize, .target = target });
const Example = enum { echo, git, help };
const example = b.option([]const u8, "example", "the example to run");
const run_example = b.step("run-example", "run an example");
if (example) |example_str| {
const mod = b.addModule("argz", .{ .root_source_file = b.path("src/argz.zig"), .target = target, .optimize = optimize });
const e = std.meta.stringToEnum(Example, example_str) orelse @panic("invalid example provided");
const exe = switch (e) {
.echo => b.addExecutable(.{ .name = "echo-demo", .root_source_file = b.path("examples/echo.zig"), .target = target, .optimize = optimize }),
.git => b.addExecutable(.{ .name = "git-demo", .root_source_file = b.path("examples/git.zig"), .target = target, .optimize = optimize }),
.help => b.addExecutable(.{ .name = "help-demo", .root_source_file = b.path("examples/help.zig"), .target = target, .optimize = optimize }),
};
exe.root_module.addImport("argz", mod);
const artifact = b.addRunArtifact(exe);
if (b.args) |args| {
artifact.addArgs(args);
}
run_example.dependOn(&artifact.step);
}
b.getInstallStep().dependOn(&install_docs.step);
}