const std = @import("std"); pub fn build(b: *std.Build) !void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const typdown = b.dependency("typdown", .{ .optimize = optimize, .target = target, }).module("typdown"); const lib = b.addLibrary(.{ .name = "typdown", .root_module = typdown, .linkage = .static, }); const install = b.addInstallArtifact(lib, .{}); // when emitting headers will be fixed // currently, we have to use a symlink/copy to get it //installed.emitted_h = lib.getEmittedH(); b.getInstallStep().dependOn(&install.step); var flags = try std.ArrayList(u8).initCapacity(b.allocator, 2); try flags.appendSlice(b.allocator, "-linkmode external -extldflags -static"); if (optimize != .Debug) try flags.appendSlice(b.allocator, " -s"); const go_build = b.addSystemCommand(&[_][]const u8{ "go", "build", "-ldflags", flags.items, ".", }); b.getInstallStep().dependOn(&go_build.step); const race = b.option(bool, "race", "Run tests with -race") orelse false; const go_test = b.addSystemCommand(&[_][]const u8{ "go", "test", "-ldflags", flags.items, "-v", }); if (race) go_test.addArg("-race"); go_test.addArg("./..."); const test_step = b.step("test", "Run tests"); test_step.dependOn(&go_test.step); }