clippers 0.1.2

Cross-platform clipboard management library
Documentation
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") {
		// No idea why Linux needs this, I gave up caring.
		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");
}