pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
-
const optimize = b.standardOptimizeOption(.{});
- const mod = b.addModule("lmdb", .{
- .root_source_file = .{ .src_path = .{ .owner = b, .sub_path = "src/lmdb.zig" } },
- // .root_source_file = .{ .cwd_relative = "src/lmdb.zig" },
+ const lmdb = b.addModule("lmdb", .{
+ .root_source_file = b.path("src/lmdb.zig"),
.target = target,
.optimize = optimize,
});
-
- mod.addIncludePath(.{ .cwd_relative = "./lmdb/libraries/liblmdb" });
-
- mod.addCSourceFiles(.{ .files = &.{
- "./lmdb/libraries/liblmdb/midl.c",
- "./lmdb/libraries/liblmdb/mdb.c",
+ lmdb.addIncludePath(b.path("lmdb"));
+ lmdb.addCSourceFiles(.{ .files = &.{
+ "./lmdb/midl.c",
+ "./lmdb/mdb.c",
} });
+ lmdb.link_libc = true;
- const unit_tests = b.addTest(.{
- .root_source_file = .{ .cwd_relative = "src/lmdb.zig" },
+ const db = b.addModule("db", .{
+ .root_source_file = b.path("src/db.zig"),
.target = target,
.optimize = optimize,
});
+ db.addImport("lmdb", lmdb);
- unit_tests.addIncludePath(.{ .cwd_relative = "./lmdb/libraries/liblmdb" });
- unit_tests.addCSourceFiles(.{ .files = &.{
- "./lmdb/libraries/liblmdb/midl.c",
- "./lmdb/libraries/liblmdb/mdb.c",
- } });
- unit_tests.linkLibC();
+ const lmdb_tests = b.addTest(.{
+ .root_module = lmdb,
+ });
+ lmdb_tests.addIncludePath(b.path("lmdb"));
+ lmdb_tests.linkLibC();
+
+ const db_tests = b.addTest(.{
+ .root_module = db,
+ });
+ db_tests.root_module.addImport("lmdb", lmdb);
- const test_bin = b.addInstallBinFile(unit_tests.getEmittedBin(), "./lmdb_test");
+ const lmdb_test_bin = b.addInstallBinFile(lmdb_tests.getEmittedBin(), "./lmdb_test");
+ const db_test_bin = b.addInstallBinFile(db_tests.getEmittedBin(), "./db_test");
- const run_unit_tests = b.addRunArtifact(unit_tests);
+ const run_lmdb_tests = b.addRunArtifact(lmdb_tests);
+ const run_db_tests = b.addRunArtifact(db_tests);
const test_step = b.step("test", "Run unit tests");
- test_step.dependOn(&run_unit_tests.step);
- test_step.dependOn(&unit_tests.step);
- test_step.dependOn(&test_bin.step);
+ test_step.result_cached = false;
+ test_step.dependOn(&run_lmdb_tests.step);
+ test_step.dependOn(&lmdb_tests.step);
+ test_step.dependOn(&run_db_tests.step);
+ test_step.dependOn(&db_tests.step);
+ test_step.dependOn(&lmdb_test_bin.step);
+ test_step.dependOn(&db_test_bin.step);
+
+ const check = b.step("check", "Check if ziglmdb compiles");
+ check.dependOn(&lmdb_tests.step);
+ check.dependOn(&db_tests.step);
}