use build_cfg::{build_cfg, build_cfg_main};
#[build_cfg_main]
fn main() {
println!("cargo:rustc-rerun-if-changed=build.rs");
println!("cargo:rustc-rerun-if-changed=src/wrapper.cpp");
println!("cargo:rustc-rerun-if-changed=src/wrapper.hpp");
if build_cfg!(target_os = "linux") {
if build_cfg!(target_pointer_width = "64") {
println!("cargo:rustc-link-search=native=/usr/lib/x86_64-linux-gnu");
} else if build_cfg!(target_pointer_width = "32") {
println!("cargo:rustc-link-search=native=/usr/lib/i686-linux-gnu");
}
println!("cargo:rustc-link-lib=static=z");
println!("cargo:rustc-link-lib=static=png");
println!("cargo:rustc-link-lib=static=Xdmcp");
println!("cargo:rustc-link-lib=static=Xau");
println!("cargo:rustc-link-lib=static=xcb");
} else if build_cfg!(target_os = "windows") {
println!("cargo:rustc-link-lib=User32");
println!("cargo:rustc-link-lib=Ole32");
println!("cargo:rustc-link-lib=Shlwapi");
} else if build_cfg!(target_os = "macos") {
println!("cargo:rustc-link-lib=framework=AppKit");
}
let mut cmake = cmake::Config::new("clip");
cmake
.define("CLIP_EXAMPLES", "OFF")
.define("CLIP_TESTS", "OFF")
.build_target("clip");
let profile = cmake.get_profile().to_string();
let dst = cmake.build();
if build_cfg!(target_os = "windows") {
println!(
"cargo:rustc-link-search=native={}/build/{profile}",
dst.display()
);
} else {
println!("cargo:rustc-link-search=native={}/build", dst.display());
}
println!("cargo:rustc-link-lib=static=clip");
let mut cc = cc::Build::new();
if build_cfg!(target_os = "macos") {
cc.flag("-std=c++14");
}
cc.cpp(true)
.static_flag(true)
.shared_flag(false)
.warnings_into_errors(true)
.cargo_metadata(true)
.file("src/wrapper.cpp")
.include("src")
.include("clip")
.compile("clippers_wrapper");
}