summaryrefslogtreecommitdiff
path: root/vere/ext/lmdb/build.zig
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
committerpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
commitfcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch)
tree51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/lmdb/build.zig
claude is gud
Diffstat (limited to 'vere/ext/lmdb/build.zig')
-rw-r--r--vere/ext/lmdb/build.zig56
1 files changed, 56 insertions, 0 deletions
diff --git a/vere/ext/lmdb/build.zig b/vere/ext/lmdb/build.zig
new file mode 100644
index 0000000..74651cc
--- /dev/null
+++ b/vere/ext/lmdb/build.zig
@@ -0,0 +1,56 @@
+const std = @import("std");
+
+pub fn build(b: *std.Build) !void {
+ const target = b.standardTargetOptions(.{});
+ const optimize = b.standardOptimizeOption(.{});
+
+ const lmdb_c = b.dependency("lmdb", .{
+ .target = target,
+ .optimize = optimize,
+ });
+
+ const lmdb = b.addStaticLibrary(.{
+ .name = "lmdb",
+ .target = target,
+ .optimize = optimize,
+ });
+
+ lmdb.linkLibC();
+
+ lmdb.addIncludePath(lmdb_c.path("libraries/liblmdb"));
+
+ var flags = std.ArrayList([]const u8).init(b.allocator);
+ defer flags.deinit();
+
+ try flags.appendSlice(&.{
+ "-fno-sanitize=all",
+ "-pthread",
+ "-O2",
+ "-g",
+ "-W",
+ "-Wall",
+ "-Wno-unused-parameter",
+ "-Wbad-function-cast",
+ "-Wuninitialized",
+ });
+
+ if (target.result.os.tag.isDarwin()) {
+ try flags.appendSlice(&.{"-DURBIT_RUNTIME_OS_DARWIN"});
+ }
+
+ lmdb.addCSourceFiles(.{
+ .root = lmdb_c.path("libraries/liblmdb"),
+ .files = &.{"midl.c"},
+ .flags = flags.items,
+ });
+
+ lmdb.addCSourceFiles(.{
+ .root = b.path("patches/lmdb-0.9.29"),
+ .files = &.{"mdb.c"},
+ .flags = flags.items,
+ });
+
+ lmdb.installHeader(lmdb_c.path("libraries/liblmdb/lmdb.h"), "lmdb/lmdb.h");
+
+ b.installArtifact(lmdb);
+}