@@ -68,8 +68,18 @@ fn addRocksDB(
6868 }),
6969 });
7070
71- try buildRocksDB (b , static_rocksdb , target );
72- try buildRocksDB (b , dynamic_rocksdb , target );
71+ const snappy = b .addLibrary (.{
72+ .name = "snappy" ,
73+ .linkage = .static ,
74+ .root_module = b .createModule (.{
75+ .target = target ,
76+ .optimize = optimize ,
77+ .pic = if (force_pic == true ) true else null ,
78+ }),
79+ });
80+
81+ try buildRocksDB (b , static_rocksdb , snappy , target );
82+ try buildRocksDB (b , dynamic_rocksdb , snappy , target );
7383
7484 mod .addIncludePath (rocks_dep .path ("include" ));
7585 mod .linkLibrary (static_rocksdb );
@@ -81,10 +91,16 @@ fn addRocksDB(
8191fn buildRocksDB (
8292 b : * Build ,
8393 librocksdb : * std.Build.Step.Compile ,
94+ libsnappy : * std.Build.Step.Compile ,
8495 target : std.Build.ResolvedTarget ,
8596) ! void {
97+ // Ideally snappy could be an optional dependency, but Zig doesn't support them yet.
98+ // Luckily building this is cheap.
99+ const enable_snappy : bool = true ;
100+
86101 const t = target .result ;
87102 const rocks_dep = b .dependency ("rocksdb" , .{});
103+ const snappy_dep = b .dependency ("snappy" , .{});
88104
89105 librocksdb .linkLibC ();
90106 librocksdb .linkLibCpp ();
@@ -431,14 +447,39 @@ fn buildRocksDB(
431447 "utilities/transactions/lock/range/range_tree/lib/util/dbt.cc" ,
432448 "utilities/transactions/lock/range/range_tree/lib/util/memarena.cc" ,
433449 },
434- .flags = &.{
450+ .flags = @as ([] const [] const u8 , &.{
435451 "-std=c++17" ,
436452 "-faligned-new" ,
437453 "-DHAVE_ALIGNED_NEW" ,
438454 "-DROCKSDB_UBSAN_RUN" ,
439- },
455+ }) ++ @as ([]const []const u8 , if (enable_snappy )
456+ &.{"-DSNAPPY=1" }
457+ else
458+ &.{}),
440459 });
441460
461+ if (enable_snappy ) {
462+ libsnappy .linkLibCpp ();
463+
464+ libsnappy .addCSourceFiles (.{
465+ .root = snappy_dep .path ("." ),
466+ .files = &.{
467+ "snappy-c.cc" ,
468+ "snappy-sinksource.cc" ,
469+ "snappy-stubs-internal.cc" ,
470+ "snappy.cc" ,
471+ },
472+ .flags = &.{
473+ "-std=c++11" ,
474+ "-fno-exceptions" ,
475+ "-fno-rtti" ,
476+ "-Wno-sign-compare" ,
477+ },
478+ });
479+
480+ librocksdb .linkLibrary (libsnappy );
481+ }
482+
442483 // platform dependent stuff
443484 if (t .cpu .arch == .aarch64 ) {
444485 librocksdb .addCSourceFile (.{
0 commit comments