#[cfg(all(feature = "fresh_bindings", feature = "mysql", not(feature = "mariadb")))]
mod constants {
pub(crate) const FILE_NAME: &str = "src/mysql.rs";
pub(crate) const BINDGEN_EXTRA_CLANG_ARGS: &str = r#"-I"/usr/include/mysql""#;
}
#[cfg(all(feature = "fresh_bindings", feature = "mariadb", not(feature = "mysql")))]
mod constants {
pub(crate) const FILE_NAME: &str = "src/mariadb.rs";
pub(crate) const BINDGEN_EXTRA_CLANG_ARGS: &str = r#"-I"/usr/include/mariadb""#;
}
fn main() {
#[cfg(all(feature = "fresh_bindings", feature = "bindgen"))]
build();
}
#[cfg(any(
all(not(feature = "fresh_bindings"), feature = "bindgen"),
all(feature = "fresh_bindings", not(feature = "bindgen"))
))]
compile_error!("Features `fresh_bindings` and `bindgen` must be enabled ONLY together!");
#[cfg(all(feature = "fresh_bindings", feature = "bindgen"))]
fn build() {
use std::env;
use std::path::PathBuf;
println!("{}", format!("cargo:rustc-link-lib={}", "mysqlclient"));
println!("cargo:rerun-if-changed=wrapper.h");
println!("cargo:rerun-if-changed=build.rs");
std::env::set_var("BINDGEN_EXTRA_CLANG_ARGS", constants::BINDGEN_EXTRA_CLANG_ARGS);
let bindings = bindgen::Builder::default()
.header("wrapper.h")
.parse_callbacks(Box::new(bindgen::CargoCallbacks))
.rustfmt_bindings(true)
.rustfmt_configuration_file(Some("./rustfmt.toml".into()))
.generate()
.expect("Unable to generate bindings");
let out_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
bindings
.write_to_file(out_path.join(constants::FILE_NAME))
.expect("Couldn't write bindings!");
}