extern crate cc;
extern crate pkg_config;
#[ cfg(feature =
"bindgen" )]
extern crate bindgen;
#[ cfg(feature =
"bindgen" )]
#[ path =
"bindgen.rs" ]
mod generate;
use std::env;
use std::path::PathBuf;
#[ cfg(feature =
"mdb_idl_logn_8" )]
const MDB_IDL_LOGN: u8 =
8 ;
#[ cfg(feature =
"mdb_idl_logn_9" )]
const MDB_IDL_LOGN: u8 =
9 ;
#[ cfg(feature =
"mdb_idl_logn_10" )]
const MDB_IDL_LOGN: u8 =
10 ;
#[ cfg(feature =
"mdb_idl_logn_11" )]
const MDB_IDL_LOGN: u8 =
11 ;
#[ cfg(feature =
"mdb_idl_logn_12" )]
const MDB_IDL_LOGN: u8 =
12 ;
#[ cfg(feature =
"mdb_idl_logn_13" )]
const MDB_IDL_LOGN: u8 =
13 ;
#[ cfg(feature =
"mdb_idl_logn_14" )]
const MDB_IDL_LOGN: u8 =
14 ;
#[ cfg(feature =
"mdb_idl_logn_15" )]
const MDB_IDL_LOGN: u8 =
15 ;
#[ cfg(not(any(
feature =
"mdb_idl_logn_8" ,
feature =
"mdb_idl_logn_9" ,
feature =
"mdb_idl_logn_10" ,
feature =
"mdb_idl_logn_11" ,
feature =
"mdb_idl_logn_12" ,
feature =
"mdb_idl_logn_13" ,
feature =
"mdb_idl_logn_14" ,
feature =
"mdb_idl_logn_15" ,
)))]
const MDB_IDL_LOGN: u8 =
16 ;
macro_rules! warn {
($message:expr) => {
println!(
"cargo:warning={}" , $message);
};
}
fn main() {
#[ cfg(feature =
"bindgen" )]
generate::generate();
let mut lmdb = PathBuf::from(&env::var(
"CARGO_MANIFEST_DIR" ).unwrap())
;
lmdb.push("lmdb" );
lmdb.push("libraries" );
lmdb.push("liblmdb" );
if cfg!(feature = "with-fuzzer" ) && cfg!(feature = "with-fuzzer-no-link" ) {
warn!("Features `with-fuzzer` and `with-fuzzer-no-link` are mutually exclusive." );
warn!("Building with `-fsanitize=fuzzer`." );
}
if !pkg_config::find_library("liblmdb" ).is_ok() {
let mut builder = cc::Build::new();
builder
.define("MDB_IDL_LOGN" , Some(MDB_IDL_LOGN.to_string().as_str()))
.file(lmdb.join("mdb.c" ))
.file(lmdb.join("midl.c" ))
// https://github.com/mozilla/lmdb/blob/b7df2cac50fb41e8bd16aab4cc5fd167be9e032a/libraries/liblmdb/Makefile#L23
.flag_if_supported("-Wno-unused-parameter" )
.flag_if_supported("-Wbad-function-cast" )
.flag_if_supported("-Wuninitialized" );
if env::var("CARGO_FEATURE_WITH_ASAN" ).is_ok() {
builder.flag("-fsanitize=address" );
}
if env::var("CARGO_FEATURE_WITH_FUZZER" ).is_ok() {
builder.flag("-fsanitize=fuzzer" );
} else if env::var("CARGO_FEATURE_WITH_FUZZER_NO_LINK" ).is_ok() {
builder.flag("-fsanitize=fuzzer-no-link" );
}
builder.compile("liblmdb.a" )
}
}
Messung V0.5 in Prozent C=64 H=98 G=82
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-18)
¤
*© Formatika GbR, Deutschland