]> gitweb.ps.run Git - ziglmdb/blob - build.zig
add db abstaction
[ziglmdb] / build.zig
1 const std = @import("std");
2
3 pub fn build(b: *std.Build) void {
4     const target = b.standardTargetOptions(.{});
5     const optimize = b.standardOptimizeOption(.{});
6
7     const lmdb = b.addModule("lmdb", .{
8         .root_source_file = b.path("src/lmdb.zig"),
9         .target = target,
10         .optimize = optimize,
11     });
12     lmdb.addIncludePath(b.path("lmdb/libraries/liblmdb"));
13     lmdb.addCSourceFiles(.{ .files = &.{
14         "./lmdb/libraries/liblmdb/midl.c",
15         "./lmdb/libraries/liblmdb/mdb.c",
16     } });
17     lmdb.link_libc = true;
18
19     const db = b.addModule("db", .{
20         .root_source_file = b.path("src/db.zig"),
21     });
22     db.addImport("lmdb", lmdb);
23
24     const lmdb_tests = b.addTest(.{
25         .root_source_file = b.path("src/lmdb.zig"),
26         .target = target,
27         .optimize = optimize,
28     });
29     lmdb_tests.addIncludePath(b.path("lmdb/libraries/liblmdb"));
30     lmdb_tests.addCSourceFiles(.{ .files = &.{
31         "./lmdb/libraries/liblmdb/midl.c",
32         "./lmdb/libraries/liblmdb/mdb.c",
33     } });
34     lmdb_tests.linkLibC();
35
36     const db_tests = b.addTest(.{
37         .root_source_file = b.path("src/db.zig"),
38         .target = target,
39         .optimize = optimize,
40     });
41     db_tests.root_module.addImport("lmdb", lmdb);
42
43     const lmdb_test_bin = b.addInstallBinFile(lmdb_tests.getEmittedBin(), "./lmdb_test");
44     const db_test_bin = b.addInstallBinFile(db_tests.getEmittedBin(), "./db_test");
45
46     const run_lmdb_tests = b.addRunArtifact(lmdb_tests);
47     const run_db_tests = b.addRunArtifact(db_tests);
48
49     const test_step = b.step("test", "Run unit tests");
50     test_step.result_cached = false;
51     test_step.dependOn(&run_lmdb_tests.step);
52     test_step.dependOn(&lmdb_tests.step);
53     test_step.dependOn(&run_db_tests.step);
54     test_step.dependOn(&db_tests.step);
55     test_step.dependOn(&lmdb_test_bin.step);
56     test_step.dependOn(&db_test_bin.step);
57 }