use std::env;
use std::path::PathBuf;
mod build_bindgen;
use crate::build_bindgen::bindgen;
fn main() {
let projectm_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()).join("libprojectM");
if !projectm_path.exists() {
println!("cargo:warning=The libprojectM source code is missing.");
println!(
"cargo:warning=If you are building from a git clone, please run 'git submodule update --init --recursive'."
);
println!("cargo:warning=If you downloaded this crate from crates.io, please ensure that the crate was packaged correctly.");
std::process::exit(1);
}
let enable_playlist = if cfg!(feature = "playlist") {
"ON"
} else {
"OFF"
};
let mut cmake_config = cmake::Config::new(&projectm_path);
cmake_config
.define("ENABLE_PLAYLIST", enable_playlist)
.define("BUILD_TESTING", "OFF")
.define("BUILD_EXAMPLES", "OFF");
if cfg!(target_os = "windows") {
} else if cfg!(target_os = "emscripten") {
cmake_config.define("ENABLE_EMSCRIPTEN", "ON");
}
let dst = cmake_config.build();
println!("cargo:rustc-link-search=native={}/lib", dst.display());
let profile = env::var("PROFILE").unwrap_or_else(|_| "release".to_string());
if profile == "release" {
println!("cargo:rustc-link-lib=dylib=projectM-4");
if cfg!(feature = "playlist") {
println!("cargo:rustc-link-lib=dylib=projectM-4-playlist");
}
} else {
println!("cargo:rustc-link-lib=dylib=projectM-4d");
if cfg!(feature = "playlist") {
println!("cargo:rustc-link-lib=dylib=projectM-4-playlistd");
}
}
bindgen();
}