Lightningbeam/nam-ffi/build.rs

42 lines
1.8 KiB
Rust

use std::env;
fn main() {
let mut cfg = cmake::Config::new("../vendor/NeuralAudio");
// Force single-config generator on Unix to avoid libraries landing in Release/ subdirs
if !cfg!(target_os = "windows") {
cfg.generator("Unix Makefiles");
}
let dst = cfg
.define("CMAKE_BUILD_TYPE", "Release")
.define("BUILD_NAMCORE", "OFF")
.define("BUILD_STATIC_RTNEURAL", "OFF")
.define("BUILD_UTILS", "OFF")
.define("WAVENET_FRAMES", "64")
.define("WAVENET_MATH", "FastMath")
.define("LSTM_MATH", "FastMath")
.build_target("NeuralAudioCAPI")
.build();
let build_dir = dst.join("build");
// Static libraries land in the build subdirectories
// Search both direct and Release/ paths for multi-config generator compatibility
println!("cargo:rustc-link-search=native={}", build_dir.join("NeuralAudioCAPI").display());
println!("cargo:rustc-link-search=native={}", build_dir.join("NeuralAudioCAPI").join("Release").display());
println!("cargo:rustc-link-search=native={}", build_dir.join("NeuralAudio").display());
println!("cargo:rustc-link-search=native={}", build_dir.join("NeuralAudio").join("Release").display());
println!("cargo:rustc-link-lib=static=NeuralAudioCAPI");
println!("cargo:rustc-link-lib=static=NeuralAudio");
let target_os = env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();
match target_os.as_str() {
"macos" => println!("cargo:rustc-link-lib=c++"),
"linux" => println!("cargo:rustc-link-lib=stdc++"),
_ => {}
}
println!("cargo:rerun-if-changed=../vendor/NeuralAudio/NeuralAudioCAPI/NeuralAudioCApi.h");
println!("cargo:rerun-if-changed=../vendor/NeuralAudio/NeuralAudioCAPI/NeuralAudioCApi.cpp");
}