aboutsummaryrefslogtreecommitdiff
path: root/go/build.zig
diff options
context:
space:
mode:
Diffstat (limited to 'go/build.zig')
-rw-r--r--go/build.zig31
1 files changed, 31 insertions, 0 deletions
diff --git a/go/build.zig b/go/build.zig
new file mode 100644
index 0000000..5e6b59d
--- /dev/null
+++ b/go/build.zig
@@ -0,0 +1,31 @@
+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", try flags.toOwnedSlice(b.allocator),
+ ".",
+ });
+ b.getInstallStep().dependOn(&go_build.step);
+}