srctree

build.zig
3320b0fd  Gregory Mullen const std = @import("std"); 3320b0fd  Gregory Mullen 9dd7110c  Gregory Mullen const Compiler = @import("verse").Compiler; 9dd7110c  Gregory Mullen 3320b0fd  Gregory Mullen pub fn build(b: *std.Build) void { 3320b0fd  Gregory Mullen const target = b.standardTargetOptions(.{}); 3320b0fd  Gregory Mullen const optimize = b.standardOptimizeOption(.{}); 3320b0fd  Gregory Mullen 9443f341  Gregory Mullen const enable_libcurl = b.option(bool, "libcurl", "enable linking with libcurl") orelse false; 9443f341  Gregory Mullen const options = b.addOptions(); 9443f341  Gregory Mullen options.addOption(bool, "libcurl", enable_libcurl); 9443f341  Gregory Mullen 99f544a8  Gregory Mullen // Dependencies 9dd7110c  Gregory Mullen const verse = b.dependency("verse", .{ 9dd7110c  Gregory Mullen .target = target, 9dd7110c  Gregory Mullen .optimize = optimize, 9dd7110c  Gregory Mullen }); 9dd7110c  Gregory Mullen 99f544a8  Gregory Mullen // Set up verse 14873416  Gregory Mullen var compiler = Compiler.init(b); 14873416  Gregory Mullen compiler.addDir("templates"); 14873416  Gregory Mullen compiler.collect() catch unreachable; 14873416  Gregory Mullen const comptime_templates = compiler.buildTemplates() catch unreachable; 14873416  Gregory Mullen const comptime_structs = compiler.buildStructs() catch unreachable; 9dd7110c  Gregory Mullen const verse_module = verse.module("verse"); 9dd7110c  Gregory Mullen verse_module.addImport("comptime_templates", comptime_templates); 9dd7110c  Gregory Mullen verse_module.addImport("comptime_structs", comptime_structs); cb73b4ee  Gregory Mullen 99f544a8  Gregory Mullen // srctree 3320b0fd  Gregory Mullen const exe = b.addExecutable(.{ 9802e2a4  Gregory Mullen .name = "srctree", fd98cdc5  Gregory Mullen .root_source_file = b.path("src/main.zig"), 3320b0fd  Gregory Mullen .target = target, 3320b0fd  Gregory Mullen .optimize = optimize, 3320b0fd  Gregory Mullen }); 3320b0fd  Gregory Mullen b.installArtifact(exe); 99f544a8  Gregory Mullen exe.root_module.addOptions("config", options); 9dd7110c  Gregory Mullen exe.root_module.addImport("verse", verse_module); 9dd7110c  Gregory Mullen 99f544a8  Gregory Mullen // build run 3320b0fd  Gregory Mullen const run_cmd = b.addRunArtifact(exe); 3320b0fd  Gregory Mullen run_cmd.step.dependOn(b.getInstallStep()); 3320b0fd  Gregory Mullen if (b.args) |args| { 3320b0fd  Gregory Mullen run_cmd.addArgs(args); 3320b0fd  Gregory Mullen } 3320b0fd  Gregory Mullen const run_step = b.step("run", "Run the app"); 3320b0fd  Gregory Mullen run_step.dependOn(&run_cmd.step); 3320b0fd  Gregory Mullen 99f544a8  Gregory Mullen // srctree tests 3320b0fd  Gregory Mullen const unit_tests = b.addTest(.{ fd98cdc5  Gregory Mullen .root_source_file = b.path("src/main.zig"), 3320b0fd  Gregory Mullen .target = target, 3320b0fd  Gregory Mullen .optimize = optimize, 3320b0fd  Gregory Mullen }); 99f544a8  Gregory Mullen unit_tests.root_module.addOptions("config", options); 9dd7110c  Gregory Mullen unit_tests.root_module.addImport("verse", verse_module); 3320b0fd  Gregory Mullen const run_unit_tests = b.addRunArtifact(unit_tests); 3320b0fd  Gregory Mullen const test_step = b.step("test", "Run unit tests"); 3320b0fd  Gregory Mullen test_step.dependOn(&run_unit_tests.step); df87cddd  Gregory Mullen c1b217d1  Gregory Mullen // Partner Binaries c1b217d1  Gregory Mullen const mailer = b.addExecutable(.{ 1b5592cb  Gregory Mullen .name = "srctree-mailer", c1b217d1  Gregory Mullen .root_source_file = b.path("src/mailer.zig"), c1b217d1  Gregory Mullen .target = target, c1b217d1  Gregory Mullen .optimize = optimize, c1b217d1  Gregory Mullen }); c1b217d1  Gregory Mullen b.installArtifact(mailer); 1b5592cb  Gregory Mullen 1b5592cb  Gregory Mullen const send_email = b.addRunArtifact(mailer); 1b5592cb  Gregory Mullen send_email.step.dependOn(b.getInstallStep()); 1b5592cb  Gregory Mullen const send_email_step = b.step("email", "send an email"); 1b5592cb  Gregory Mullen send_email_step.dependOn(&send_email.step); 1b5592cb  Gregory Mullen if (b.args) |args| { 1b5592cb  Gregory Mullen send_email.addArgs(args); 1b5592cb  Gregory Mullen } 3320b0fd  Gregory Mullen }