use std::env;
use std::error::Error;
use std::path::PathBuf;
fn main() -> Result<(), Box<dyn Error>> {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/api/api.h");
println!("cargo:rerun-if-changed=src/api/mod.rs");
println!("cargo:rerun-if-changed=src/api/rules/aliases.h");
println!("cargo:rerun-if-changed=src/api/rules/rules.h");
println!("cargo:rerun-if-changed=src/api/rules/rules.cc");
println!("cargo:rerun-if-changed=src/api/rules/mod.rs");
println!("cargo:rerun-if-changed=src/common/common.h");
println!("cargo:rerun-if-changed=src/common/mod.rs");
println!("cargo:rerun-if-changed=src/cxx_utils/error_handling.h");
println!("cargo:rerun-if-changed=src/lib.rs");
println!("cargo:rerun-if-changed=src/math/math.h");
println!("cargo:rerun-if-changed=src/math/mod.rs");
println!("cargo:rerun-if-changed=src/plugin/mod.rs");
println!("cargo:rerun-if-changed=src/plugin/plugin.h");
println!("cargo:rerun-if-changed=src/utility/mod.rs");
println!("cargo:rerun-if-changed=src/utility/utility.h");
let maliput_sdk_bin_path =
PathBuf::from(env::var("DEP_MALIPUT_SDK_BIN_PATH").expect("DEP_MALIPUT_SDK_BIN_PATH not set"));
let maliput_sdk_lib_name = env::var("DEP_MALIPUT_SDK_SDK_LIB_NAME").expect("DEP_MALIPUT_SDK_SDK_LIB_NAME not set");
println!("cargo:rustc-link-search=native={}", maliput_sdk_bin_path.display());
println!("cargo:rustc-link-lib={}", maliput_sdk_lib_name);
cxx_build::bridges([
"src/math/mod.rs",
"src/utility/mod.rs",
"src/api/rules/mod.rs",
"src/api/mod.rs",
"src/plugin/mod.rs",
"src/common/mod.rs",
])
.file("src/api/rules/rules.cc")
.flag_if_supported("-std=c++17")
.include("src")
.compile("maliput-sys");
let mut plugin_paths: Vec<PathBuf> = Vec::new();
if let Ok(malidrive_plugin_path) = env::var("DEP_MALIPUT_SDK_MALIPUT_MALIDRIVE_PLUGIN_PATH") {
plugin_paths.push(PathBuf::from(malidrive_plugin_path));
}
if let Ok(geopackage_plugin_path) = env::var("DEP_MALIPUT_SDK_MALIPUT_GEOPACKAGE_PLUGIN_PATH") {
plugin_paths.push(PathBuf::from(geopackage_plugin_path));
}
if !plugin_paths.is_empty() {
let plugin_path = std::env::join_paths(&plugin_paths).unwrap();
println!("cargo:rustc-env=MALIPUT_PLUGIN_PATH={}", plugin_path.to_string_lossy());
}
Ok(())
}