1extern crate cmake;
2extern crate pkg_config;
3
4use cmake::Config;
5use std::env;
6use std::path::PathBuf;
7
8pub fn find_or_build(lib: &str) {
9 match pkg_config::find_library(lib) {
10 Ok(_) => (),
11 Err(_) => {
12 let src = PathBuf::from(concat!(env!("CARGO_MANIFEST_DIR"), "/heartbeats-simple"));
13 let mut config = Config::new(&src);
14 config.define("BUILD_SHARED_LIBS", "false");
15
16 let target: String = env::var("TARGET").unwrap();
18 let target_parts: Vec<&str> = target.split('-').collect();
19 if target_parts[target_parts.len() - 1].starts_with("android") {
20 config.define("CMAKE_TOOLCHAIN_FILE",
21 src.join("cmake-toolchain").join("android.toolchain.cmake"));
22 }
23
24 let dst: PathBuf = config.build();
27 println!("cargo:rustc-link-lib=static={}", lib);
29 println!("cargo:rustc-link-search=native={}", dst.join("lib").display());
30 },
31 }
32}