2025-05-30 13:01:13 +02:00

82 lines
2.6 KiB
Zig

const std = @import("std");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions (.{});
const optimize = b.standardOptimizeOption(.{ .preferred_optimize_mode = .ReleaseFast });
const leveldb_static_lib = build_leveldb(b, target, optimize);
const module = b.addModule("leveldb", .{
.root_source_file = b.path("src/leveldb.zig"),
.target = target,
.optimize = optimize,
});
module.linkLibrary(leveldb_static_lib);
}
fn build_leveldb(b: *std.Build, target: std.Build.ResolvedTarget, optimize: std.builtin.OptimizeMode) *std.Build.Step.Compile {
const source = b.dependency("leveldb", .{});
const static_lib = b.addStaticLibrary(.{
.name = "leveldb",
.target = target,
.optimize = optimize,
});
static_lib.linkLibCpp();
static_lib.addIncludePath(source.path(""));
static_lib.addIncludePath(source.path("include"));
static_lib.installHeadersDirectory(source.path("include"), "", .{});
if (target.result.os.tag == .windows) {
static_lib.root_module.addCMacro("LEVELDB_PLATFORM_WINDOWS", "1");
static_lib.addCSourceFile(.{ .file = source.path("util/env_windows.cc") });
} else {
static_lib.root_module.addCMacro("LEVELDB_PLATFORM_POSIX", "1");
static_lib.addCSourceFile(.{ .file = source.path("util/env_posix.cc") });
}
static_lib.addCSourceFiles(.{
.root = source.path(""),
.files = &.{
"db/builder.cc",
"db/c.cc",
"db/db_impl.cc",
"db/db_iter.cc",
"db/dbformat.cc",
"db/dumpfile.cc",
"db/filename.cc",
"db/log_reader.cc",
"db/log_writer.cc",
"db/memtable.cc",
"db/repair.cc",
"db/table_cache.cc",
"db/version_edit.cc",
"db/version_set.cc",
"db/write_batch.cc",
"table/block_builder.cc",
"table/block.cc",
"table/filter_block.cc",
"table/format.cc",
"table/iterator.cc",
"table/merger.cc",
"table/table_builder.cc",
"table/table.cc",
"table/two_level_iterator.cc",
"util/arena.cc",
"util/bloom.cc",
"util/cache.cc",
"util/coding.cc",
"util/comparator.cc",
"util/crc32c.cc",
"util/env.cc",
"util/filter_policy.cc",
"util/hash.cc",
"util/logging.cc",
"util/options.cc",
"util/status.cc",
},
});
b.installArtifact(static_lib);
return static_lib;
}