1
0
Fork 0
mirror of https://github.com/zigzap/zap.git synced 2025-10-20 15:14:08 +00:00
zap/build.zig
2023-02-27 12:07:01 +01:00

85 lines
2.9 KiB
Zig

const std = @import("std");
pub fn build(b: *std.build.Builder) !void {
const target = b.standardTargetOptions(.{});
// Standard release options allow the person running `zig build` to select
// between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall.
const optimize = b.standardOptimizeOption(.{});
const facil_dep = b.dependency("facil.io", .{
.target = target,
.optimize = optimize,
});
// create a module to be used internally.
var zap_module = b.createModule(.{
.source_file = .{ .path = "src/zap.zig" },
});
// register the module so it can be referenced
// using the package manager.
// TODO: How to automatically integrate the
// facil.io dependency with the module?
try b.modules.put(b.dupe("zap"), zap_module);
const facil_lib = b.addStaticLibrary(.{
.name = "facil.io",
.target = target,
.optimize = optimize,
});
facil_lib.linkLibrary(facil_dep.artifact("facil.io"));
facil_lib.install();
inline for ([_]struct {
name: []const u8,
src: []const u8,
}{
.{ .name = "hello", .src = "examples/hello/hello.zig" },
.{ .name = "hello2", .src = "examples/hello2/hello2.zig" },
.{ .name = "routes", .src = "examples/routes/routes.zig" },
.{ .name = "serve", .src = "examples/serve/serve.zig" },
.{ .name = "hello_json", .src = "examples/hello_json/hello_json.zig" },
.{ .name = "endpoint", .src = "examples/endpoint/main.zig" },
.{ .name = "wrk", .src = "wrk/zig/main.zig" },
.{ .name = "mustache", .src = "examples/mustache/mustache.zig" },
}) |excfg| {
const ex_name = excfg.name;
const ex_src = excfg.src;
const ex_build_desc = try std.fmt.allocPrint(
b.allocator,
"build the {s} example",
.{ex_name},
);
const ex_run_stepname = try std.fmt.allocPrint(
b.allocator,
"run-{s}",
.{ex_name},
);
const ex_run_stepdesc = try std.fmt.allocPrint(
b.allocator,
"run the {s} example",
.{ex_name},
);
const example_run_step = b.step(ex_run_stepname, ex_run_stepdesc);
const example_step = b.step(ex_name, ex_build_desc);
var example = b.addExecutable(.{
.name = ex_name,
.root_source_file = .{ .path = ex_src },
.target = target,
.optimize = optimize,
});
example.linkLibrary(facil_dep.artifact("facil.io"));
example.addModule("zap", zap_module);
const example_run = example.run();
example_run_step.dependOn(&example_run.step);
// install the artifact - depending on the "example"
const example_build_step = b.addInstallArtifact(example);
example_step.dependOn(&example_build_step.step);
}
}