fn main() {
check_feature_conflicts();
ensure_provider_available();
add_build_info();
}
fn check_feature_conflicts() {
}
fn ensure_provider_available() {
let providers = [
cfg!(feature = "openai"),
cfg!(feature = "anthropic"),
cfg!(feature = "google"),
cfg!(feature = "ollama"),
cfg!(feature = "xai"),
cfg!(feature = "groq"),
];
if !providers.iter().any(|&enabled| enabled) {
panic!(
"At least one provider feature must be enabled. Available features: openai, anthropic, google, ollama, xai, groq"
);
}
}
fn add_build_info() {
let mut enabled_providers = Vec::new();
if cfg!(feature = "openai") {
enabled_providers.push("openai");
}
if cfg!(feature = "anthropic") {
enabled_providers.push("anthropic");
}
if cfg!(feature = "google") {
enabled_providers.push("google");
}
if cfg!(feature = "ollama") {
enabled_providers.push("ollama");
}
if cfg!(feature = "xai") {
enabled_providers.push("xai");
}
if cfg!(feature = "groq") {
enabled_providers.push("groq");
}
println!(
"cargo:rustc-env=SIUMAI_ENABLED_PROVIDERS={}",
enabled_providers.join(",")
);
println!(
"cargo:rustc-env=SIUMAI_PROVIDER_COUNT={}",
enabled_providers.len()
);
if !enabled_providers.is_empty() {
println!(
"cargo:warning=Siumai compiled with providers: {}",
enabled_providers.join(", ")
);
}
}