use std::env;
use std::path::PathBuf;
fn main() {
println!("cargo:rerun-if-changed=build.rs");
println!("cargo:rerun-if-changed=src/lib.rs");
println!("cargo:rerun-if-changed=src/pxl_ffi.rs");
let profile = env::var("PROFILE").unwrap();
let manifest_dir = PathBuf::from("/home/smshin/workspace/sdk/rs/lib"); let xparallel_cpp_dir = manifest_dir.join("cpp"); let xparallel_cpp_build_dir;
let metisx_sdk_dir = manifest_dir.join("../../"); let metisx_lib_dir; let metisx_sim_lib_dir;
if profile == "debug" {
xparallel_cpp_build_dir = xparallel_cpp_dir.join("_build/debug");
metisx_lib_dir = metisx_sdk_dir.join("out/build/debug/metisx");
} else if profile == "release" {
xparallel_cpp_build_dir = xparallel_cpp_dir.join("_build/release");
metisx_lib_dir = metisx_sdk_dir.join("out/build/release/metisx");
} else {
panic!("Unknown profile");
}
metisx_sim_lib_dir = metisx_lib_dir.join("sim");
let xparallel_cpp_out_lib_dir = xparallel_cpp_build_dir.join("xparallel");
println!(
"cargo:rustc-link-search=native={}",
xparallel_cpp_out_lib_dir.to_str().unwrap()
);
println!("cargo:rustc-link-lib=static:+whole-archive=xparallel_cpp");
println!(
"cargo:rustc-link-search=native={}",
metisx_lib_dir.to_str().unwrap()
);
println!(
"cargo:rustc-link-search=native={}",
metisx_sim_lib_dir.to_str().unwrap()
);
println!(
"cargo:rustc-link-arg=-Wl,-rpath,{}",
metisx_lib_dir.to_str().unwrap()
);
println!("cargo:rustc-link-lib=dylib=metisx");
println!("cargo:rustc-link-lib=dylib=metisx_sim");
let pxl_include_dir = metisx_sdk_dir.join("pxl/include/"); let metisx_lib_dir = metisx_sdk_dir.join("metisx");
cxx_build::bridge("src/pxl_ffi.rs")
.include(pxl_include_dir)
.include(metisx_lib_dir) .define("_SIM_", "1")
.compile("xparallel");
}