Skip to content

Commit

Permalink
Improves RocksDB build options
Browse files Browse the repository at this point in the history
  • Loading branch information
Tpt committed Aug 6, 2022
1 parent 4883b58 commit e686e8c
Showing 1 changed file with 38 additions and 12 deletions.
50 changes: 38 additions & 12 deletions oxrocksdb-sys/build.rs
@@ -1,7 +1,7 @@
// Code from https://github.com/rust-rocksdb/rust-rocksdb/blob/eb2d302682418b361a80ad8f4dcf335ade60dcf5/librocksdb-sys/build.rs
// License: https://github.com/rust-rocksdb/rust-rocksdb/blob/master/LICENSE

use std::env::var;
use std::env::{set_var, var};
use std::path::PathBuf;

fn link(name: &str, bundled: bool) {
Expand Down Expand Up @@ -76,11 +76,32 @@ fn build_rocksdb() {
config.define("HAVE_PCLMUL", Some("1"));
config.flag_if_supported("-mpclmul");
}
if target_features.contains(&"avx2") {
config.define("HAVE_AVX2", Some("1"));
config.flag_if_supported("-mavx2");
}
if target_features.contains(&"bmi1") {
config.define("HAVE_BMI", Some("1"));
config.flag_if_supported("-mbmi");
}
if target_features.contains(&"lzcnt") {
config.define("HAVE_LZCNT", Some("1"));
config.flag_if_supported("-mlzcnt");
}
} else if target.contains("aarch64") {
lib_sources.push("util/crc32c_arm64.cc")
}

if target.contains("darwin") {
if target.contains("apple-ios") {
config.define("OS_MACOSX", None);
config.define("IOS_CROSS_COMPILE", None);
config.define("PLATFORM", "IOS");
config.define("NIOSTATS_CONTEXT", None);
config.define("NPERF_CONTEXT", None);
config.define("ROCKSDB_PLATFORM_POSIX", None);
config.define("ROCKSDB_LIB_IO_POSIX", None);
set_var("IPHONEOS_DEPLOYMENT_TARGET", "11.0");
} else if target.contains("darwin") {
config.define("OS_MACOSX", None);
config.define("ROCKSDB_PLATFORM_POSIX", None);
config.define("ROCKSDB_LIB_IO_POSIX", None);
Expand All @@ -104,7 +125,7 @@ fn build_rocksdb() {
config.define("_MBCS", None);
config.define("WIN64", None);
config.define("NOMINMAX", None);
config.define("WITH_WINDOWS_UTF8_FILENAMES", "ON");
config.define("ROCKSDB_WINDOWS_UTF8_FILENAMES", None);

if target == "x86_64-pc-windows-gnu" {
// Tell MinGW to create localtime_r wrapper of localtime_s function.
Expand All @@ -130,28 +151,33 @@ fn build_rocksdb() {
.collect::<Vec<&'static str>>();

// Add Windows-specific sources
lib_sources.push("port/win/port_win.cc");
lib_sources.push("port/win/env_win.cc");
lib_sources.push("port/win/env_default.cc");
lib_sources.push("port/win/win_logger.cc");
lib_sources.push("port/win/io_win.cc");
lib_sources.push("port/win/win_thread.cc");
lib_sources.extend([
"port/win/env_default.cc",
"port/win/port_win.cc",
"port/win/xpress_win.cc",
"port/win/io_win.cc",
"port/win/win_thread.cc",
"port/win/env_win.cc",
"port/win/win_logger.cc",
]);
}

config.define("ROCKSDB_SUPPORT_THREAD_LOCAL", None);

if target.contains("msvc") {
config.flag("-EHsc").flag("-std:c++17");
} else {
config.flag("-std=c++17").flag("-Wno-invalid-offsetof");
config
.flag("-std=c++17")
.flag("-Wno-invalid-offsetof")
.define("HAVE_UINT128_EXTENSION", Some("1"));
}

for file in lib_sources {
if file == "db/c.cc" || file == "util/build_version.cc" {
continue;
}
let file = "rocksdb/".to_string() + file;
config.file(&file);
config.file(&format!("rocksdb/{file}"));
}
config.compile("rocksdb");
}
Expand Down

0 comments on commit e686e8c

Please sign in to comment.