boring-sys: Pull Android CMake params into a function

This commit is contained in:
ilammy 2021-12-30 19:33:31 +09:00 committed by Joshua Nelson
parent 00b14f6379
commit 570cc95c90
1 changed files with 18 additions and 13 deletions

View File

@ -33,6 +33,21 @@ const CMAKE_PARAMS_ANDROID_NDK: &[(&str, &[(&str, &str)])] = &[
("x86_64", &[("ANDROID_ABI", "x86_64")]), ("x86_64", &[("ANDROID_ABI", "x86_64")]),
]; ];
fn cmake_params_android() -> &'static [(&'static str, &'static str)] {
let arch = std::env::var("CARGO_CFG_TARGET_ARCH").unwrap();
let cmake_params_android = if cfg!(feature = "ndk-old-gcc") {
CMAKE_PARAMS_ANDROID_NDK_OLD_GCC
} else {
CMAKE_PARAMS_ANDROID_NDK
};
for (android_arch, params) in cmake_params_android {
if *android_arch == arch {
return *params;
}
}
&[]
}
const CMAKE_PARAMS_IOS: &[(&str, &[(&str, &str)])] = &[ const CMAKE_PARAMS_IOS: &[(&str, &[(&str, &str)])] = &[
( (
"aarch64", "aarch64",
@ -106,25 +121,15 @@ fn get_boringssl_cmake_config() -> cmake::Config {
// Add platform-specific parameters. // Add platform-specific parameters.
match os.as_ref() { match os.as_ref() {
"android" => { "android" => {
let cmake_params_android = if cfg!(feature = "ndk-old-gcc") {
CMAKE_PARAMS_ANDROID_NDK_OLD_GCC
} else {
CMAKE_PARAMS_ANDROID_NDK
};
// We need ANDROID_NDK_HOME to be set properly. // We need ANDROID_NDK_HOME to be set properly.
println!("cargo:rerun-if-env-changed=ANDROID_NDK_HOME"); println!("cargo:rerun-if-env-changed=ANDROID_NDK_HOME");
let android_ndk_home = std::env::var("ANDROID_NDK_HOME") let android_ndk_home = std::env::var("ANDROID_NDK_HOME")
.expect("Please set ANDROID_NDK_HOME for Android build"); .expect("Please set ANDROID_NDK_HOME for Android build");
let android_ndk_home = std::path::Path::new(&android_ndk_home); let android_ndk_home = std::path::Path::new(&android_ndk_home);
for (android_arch, params) in cmake_params_android { for (name, value) in cmake_params_android() {
if *android_arch == arch {
for (name, value) in *params {
eprintln!("android arch={} add {}={}", arch, name, value); eprintln!("android arch={} add {}={}", arch, name, value);
boringssl_cmake.define(name, value); boringssl_cmake.define(name, value);
} }
}
}
let toolchain_file = android_ndk_home.join("build/cmake/android.toolchain.cmake"); let toolchain_file = android_ndk_home.join("build/cmake/android.toolchain.cmake");
let toolchain_file = toolchain_file.to_str().unwrap(); let toolchain_file = toolchain_file.to_str().unwrap();
eprintln!("android toolchain={}", toolchain_file); eprintln!("android toolchain={}", toolchain_file);