@@ -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