fn jni_kotlin_package(config: &ResolvedCrateConfig) -> String {
config
.kotlin_android
.as_ref()
.and_then(|a| a.package.clone())
.or_else(|| config.kotlin.as_ref().and_then(|k| k.package.clone()))
.unwrap_or_else(|| config.kotlin_package())
}
fn jni_output_path(config: &ResolvedCrateConfig, filename: &str) -> PathBuf {
if let Some(android_out) = config.output_for("kotlin_android") {
return android_out.join(filename);
}
let kotlin_root = config
.output_for("kotlin")
.map(|p| p.to_string_lossy().into_owned())
.unwrap_or_else(|| "packages/kotlin".to_string());
let package = jni_kotlin_package(config);
let package_path = package.replace('.', "/");
if config.explicit_output.kotlin.is_some() {
PathBuf::from(&kotlin_root).join(filename)
} else {
PathBuf::from(&kotlin_root)
.join("src/main/kotlin")
.join(&package_path)
.join(filename)
}
}