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; }