Skip to content

Commit 7b1e51d

Browse files
Rollup merge of rust-lang#41943 - malbarbo:android-openssl, r=alexcrichton
bootstrap: openssl android support
2 parents c17811c + 3acfa81 commit 7b1e51d

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/bootstrap/native.rs

+17
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,15 @@ pub fn openssl(build: &Build, target: &str) {
309309
configure.arg("no-ssl3");
310310

311311
let os = match target {
312+
"aarch64-linux-android" => "linux-aarch64",
312313
"aarch64-unknown-linux-gnu" => "linux-aarch64",
314+
"arm-linux-androideabi" => "android",
313315
"arm-unknown-linux-gnueabi" => "linux-armv4",
314316
"arm-unknown-linux-gnueabihf" => "linux-armv4",
317+
"armv7-linux-androideabi" => "android-armv7",
315318
"armv7-unknown-linux-gnueabihf" => "linux-armv4",
316319
"i686-apple-darwin" => "darwin-i386-cc",
320+
"i686-linux-android" => "android-x86",
317321
"i686-unknown-freebsd" => "BSD-x86-elf",
318322
"i686-unknown-linux-gnu" => "linux-elf",
319323
"i686-unknown-linux-musl" => "linux-elf",
@@ -326,6 +330,7 @@ pub fn openssl(build: &Build, target: &str) {
326330
"powerpc64le-unknown-linux-gnu" => "linux-ppc64le",
327331
"s390x-unknown-linux-gnu" => "linux64-s390x",
328332
"x86_64-apple-darwin" => "darwin64-x86_64-cc",
333+
"x86_64-linux-android" => "linux-x86_64",
329334
"x86_64-unknown-freebsd" => "BSD-x86_64",
330335
"x86_64-unknown-linux-gnu" => "linux-x86_64",
331336
"x86_64-unknown-linux-musl" => "linux-x86_64",
@@ -337,6 +342,18 @@ pub fn openssl(build: &Build, target: &str) {
337342
for flag in build.cflags(target) {
338343
configure.arg(flag);
339344
}
345+
// There is no specific os target for android aarch64 or x86_64,
346+
// so we need to pass some extra cflags
347+
if target == "aarch64-linux-android" || target == "x86_64-linux-android" {
348+
configure.arg("-mandroid");
349+
configure.arg("-fomit-frame-pointer");
350+
}
351+
// Make PIE binaries
352+
// Non-PIE linker support was removed in Lollipop
353+
// https://source.android.com/security/enhancements/enhancements50
354+
if target == "i686-linux-android" {
355+
configure.arg("no-asm");
356+
}
340357
configure.current_dir(&obj);
341358
println!("Configuring openssl for {}", target);
342359
build.run_quiet(&mut configure);

0 commit comments

Comments
 (0)