fn main() {
#[cfg(target_os = "macos")]
{
use std::env;
let target = env::var("TARGET").unwrap();
let enable_asan = env::var("CARGO_FEATURE_ASAN").is_ok() || env::var("ENABLE_ASAN").is_ok();
let mut config = cmake::Config::new("rack-sys");
config
.define("CMAKE_BUILD_TYPE", "Release")
.define("BUILD_TESTS", "OFF");
if enable_asan {
config.define("ENABLE_ASAN", "ON");
eprintln!("Building with AddressSanitizer enabled");
}
let dst = config.build();
let lib_name = "rack_sys";
println!("cargo:rustc-link-search=native={}/lib", dst.display());
println!("cargo:rustc-link-lib=static={}", lib_name);
println!("cargo:rustc-link-lib=c++");
if enable_asan {
println!("cargo:rustc-link-arg=-fsanitize=address");
println!("cargo:rustc-link-arg=-fno-optimize-sibling-calls");
println!("cargo:rustc-link-arg=-fsanitize-address-use-after-scope");
println!("cargo:rustc-link-arg=-fno-omit-frame-pointer");
}
println!("cargo:rustc-link-lib=framework=AudioToolbox");
println!("cargo:rustc-link-lib=framework=CoreAudio");
println!("cargo:rustc-link-lib=framework=CoreFoundation");
println!("cargo:rustc-link-lib=framework=CoreAudioKit");
println!("cargo:rustc-link-lib=framework=AppKit");
println!("cargo:rerun-if-changed=rack-sys/src");
println!("cargo:rerun-if-changed=rack-sys/include");
println!("cargo:rerun-if-changed=rack-sys/CMakeLists.txt");
eprintln!("Building rack-sys for target: {}", target);
}
}