pub mod helpers;
pub mod kf5_config;
use semver::Version;
use std::path::{Path, PathBuf};
pub fn link_lib(lib: &str, major_version: u64) -> Result<(), semver::Error> {
let lib_name = helpers::get_lib_name(lib, major_version);
println!("cargo:rustc-link-lib={}", lib_name?);
Ok(())
}
pub fn get_lib_include_path(
lib: &str,
major_version: u64,
include_path: &Path,
) -> Result<PathBuf, semver::Error> {
Ok(include_path
.join(format!("KF{}", major_version))
.join(format!("K{}", lib)))
}
pub fn set_version_cfg(version: Version, least_minor_version: u64) {
let mut minor = least_minor_version;
while version >= Version::new(5, minor, 0) {
println!("cargo:rustc-cfg=kf_{}_{}", 5, minor);
minor += 1;
}
}
pub fn check_env_variables(library_name: &str) -> Option<(Version, PathBuf, PathBuf)> {
println!("cargo:rerun-if-env-changed={}_VERSION", library_name);
println!("cargo:rerun-if-env-changed={}_INCLUDE_PATH", library_name);
println!("cargo:rerun-if-env-changed={}_LIBRARY_PATH", library_name);
match (
std::env::var(format!("{}_VERSION", library_name)).ok(),
std::env::var(format!("{}_INCLUDE_PATH", library_name)).ok(),
std::env::var(format!("{}_LIBRARY_PATH", library_name)).ok(),
) {
(Some(version), Some(include_path), Some(library_path)) => {
let v = version.parse().ok()?;
Some((v, PathBuf::from(include_path), PathBuf::from(library_path)))
}
_ => None,
}
}
pub fn check_kf5_config() -> Result<(Version, PathBuf, PathBuf), &'static str> {
Ok((
kf5_config::get_version()?,
kf5_config::get_include_path()?,
kf5_config::get_library_path()?,
))
}