Skip to content

Commit 8b63b6a

Browse files
Detect standalone android compiler with regex
1 parent 369eeac commit 8b63b6a

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ edition = "2018"
1919

2020
[dependencies]
2121
jobserver = { version = "0.1.16", optional = true }
22+
regex = "1.3.9"
2223

2324
[features]
2425
parallel = ["jobserver"]

src/lib.rs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
#![allow(deprecated)]
5757
#![deny(missing_docs)]
5858

59+
use regex::Regex;
5960
use std::collections::HashMap;
6061
use std::env;
6162
use std::ffi::{OsStr, OsString};
@@ -2839,9 +2840,26 @@ static NEW_STANDALONE_ANDROID_COMPILERS: [&str; 4] = [
28392840
// So to construct proper command line check if
28402841
// `--target` argument would be passed or not to clang
28412842
fn android_clang_compiler_uses_target_arg_internally(clang_path: &Path) -> bool {
2842-
NEW_STANDALONE_ANDROID_COMPILERS
2843-
.iter()
2844-
.any(|x| Some(x.as_ref()) == clang_path.file_name())
2843+
let re = Regex::new(r"^.*\d{2}-clang(\+\+)?$").unwrap();
2844+
re.is_match(clang_path.to_str().unwrap())
2845+
}
2846+
2847+
#[test]
2848+
fn test_android_clang_compiler_uses_target_arg_internally() {
2849+
for version in 16..21 {
2850+
assert!(android_clang_compiler_uses_target_arg_internally(
2851+
&PathBuf::from(format!("armv7a-linux-androideabi{}-clang", version))
2852+
));
2853+
assert!(android_clang_compiler_uses_target_arg_internally(
2854+
&PathBuf::from(format!("armv7a-linux-androideabi{}-clang++", version))
2855+
));
2856+
}
2857+
assert!(!android_clang_compiler_uses_target_arg_internally(
2858+
&PathBuf::from("clang")
2859+
));
2860+
assert!(!android_clang_compiler_uses_target_arg_internally(
2861+
&PathBuf::from("clang++")
2862+
));
28452863
}
28462864

28472865
fn autodetect_android_compiler(target: &str, host: &str, gnu: &str, clang: &str) -> String {

0 commit comments

Comments
 (0)