Skip to content

Commit 4a01c44

Browse files
Detect standalone android compiler with regex
1 parent 369eeac commit 4a01c44

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-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: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ use std::path::{Path, PathBuf};
6666
use std::process::{Child, Command, Stdio};
6767
use std::sync::{Arc, Mutex};
6868
use std::thread::{self, JoinHandle};
69+
use regex::Regex;
6970

7071
// These modules are all glue to support reading the MSVC version from
7172
// the registry and from COM interfaces
@@ -2839,9 +2840,18 @@ 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(&PathBuf::from(format!("armv7a-linux-androideabi{}-clang", version))));
2851+
assert!(android_clang_compiler_uses_target_arg_internally(&PathBuf::from(format!("armv7a-linux-androideabi{}-clang++", version))));
2852+
}
2853+
assert!(!android_clang_compiler_uses_target_arg_internally(&PathBuf::from("clang")));
2854+
assert!(!android_clang_compiler_uses_target_arg_internally(&PathBuf::from("clang++")));
28452855
}
28462856

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

0 commit comments

Comments
 (0)