Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #49 from AlwinEsch/Leia-change
[Leia] fix 'dlopen failed: cannot locate symbol "BN_clear_free"' error
- Loading branch information
Showing
11 changed files
with
173 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,19 @@ | ||
--- a/Configurations/15-android.conf | ||
+++ b/Configurations/15-android.conf | ||
@@ -112,18 +112,17 @@ | ||
# *after* announcement that gcc is being phased out, so | ||
# favouring clang is considered adequate. Those who insist | ||
# have option to enforce test for gcc with CC=gcc. | ||
- if (which("$triarch-$cc") !~ m|^$ndk|) { | ||
- die "no NDK $triarch-$cc on \$PATH"; | ||
+ if (realpath(which("$cc")) !~ m|^$ndk|) { | ||
+ die "no NDK $cc on \$PATH"; | ||
} | ||
$user{CC} = $cc; | ||
- $user{CROSS_COMPILE} = "$triarch-"; | ||
+ $user{CROSS_COMPILE} = ""; | ||
} elsif ($user{CC} eq "clang") { | ||
die "no NDK clang on \$PATH"; | ||
} else { | ||
@@ -89,7 +89,6 @@ | ||
if (which("$triarch-gcc") !~ m|^$ndk/.*/prebuilt/([^/]+)/|) { | ||
die "no NDK $triarch-gcc on \$PATH"; | ||
} | ||
- $cflags .= " -mandroid"; | ||
$user{CROSS_COMPILE} = "$triarch-"; | ||
} | ||
|
||
@@ -139,7 +138,7 @@ | ||
@@ -105,7 +104,7 @@ | ||
|
||
$sysroot =~ s|^$ndk/||; | ||
$android_ndk = { | ||
- cflags => "$cflags --sysroot=\$($ndk_var)/$sysroot", | ||
- cflags => "$cflags --sysroot=\$(ANDROID_NDK)/$sysroot", | ||
+ cflags => $cflags, | ||
cppflags => $cppflags, | ||
bn_ops => $arch =~ m/64$/ ? "SIXTY_FOUR_BIT_LONG" | ||
: "BN_LLONG", | ||
|
143 changes: 143 additions & 0 deletions
143
depends/common/openssl/02-android-standalone-toolchain.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
From a66c361a773e697b5c6bb805ae37d2c4c8d32cb1 Mon Sep 17 00:00:00 2001 | ||
From: Andy Polyakov <appro@openssl.org> | ||
Date: Sun, 14 Oct 2018 15:19:41 +0200 | ||
Subject: [PATCH] Configurations/15-android.conf: add support for "standalone | ||
toolchain". | ||
|
||
Reviewed-by: Richard Levitte <levitte@openssl.org> | ||
(Merged from https://github.com/openssl/openssl/pull/7400) | ||
|
||
(cherry picked from commit 03ad7c009e16a233c733098db3169c560142ccd3) | ||
--- | ||
Configurations/15-android.conf | 41 +++++++++++++++++++++++++--------- | ||
NOTES.ANDROID | 18 ++++++++++----- | ||
2 files changed, 44 insertions(+), 15 deletions(-) | ||
|
||
diff --git a/Configurations/15-android.conf b/Configurations/15-android.conf | ||
index d3b428b6cb4..a6b0d7a06d2 100644 | ||
--- a/Configurations/15-android.conf | ||
+++ b/Configurations/15-android.conf | ||
@@ -24,7 +24,12 @@ | ||
|
||
my $ndk = $ENV{ANDROID_NDK}; | ||
die "\$ANDROID_NDK is not defined" if (!$ndk); | ||
- die "\$ANDROID_NDK=$ndk is invalid" if (!-d "$ndk/platforms"); | ||
+ if (!-d "$ndk/platforms" && !-f "$ndk/AndroidVersion.txt") { | ||
+ # $ndk/platforms is traditional "all-inclusive" NDK, while | ||
+ # $ndk/AndroidVersion.txt is so-called standalone toolchain | ||
+ # tailored for specific target down to API level. | ||
+ die "\$ANDROID_NDK=$ndk is invalid"; | ||
+ } | ||
$ndk = canonpath($ndk); | ||
|
||
my $ndkver = undef; | ||
@@ -40,10 +45,18 @@ | ||
close $fh; | ||
} | ||
|
||
- my $sysroot; | ||
+ my ($sysroot, $api, $arch); | ||
+ | ||
+ $config{target} =~ m|[^-]+-([^-]+)$|; # split on dash | ||
+ $arch = $1; | ||
|
||
- if (!($sysroot = $ENV{CROSS_SYSROOT})) { | ||
- my $api = "*"; | ||
+ if ($sysroot = $ENV{CROSS_SYSROOT}) { | ||
+ $sysroot =~ m|/android-([0-9]+)/arch-(\w+)/?$|; | ||
+ ($api, $arch) = ($1, $2); | ||
+ } elsif (-f "$ndk/AndroidVersion.txt") { | ||
+ $sysroot = "$ndk/sysroot"; | ||
+ } else { | ||
+ $api = "*"; | ||
|
||
# see if user passed -D__ANDROID_API__=N | ||
foreach (@{$useradd{CPPDEFINES}}, @{$user{CPPFLAGS}}) { | ||
@@ -59,19 +72,15 @@ | ||
} glob("$ndk/platforms/android-$api"); | ||
die "no $ndk/platforms/android-$api" if ($#platforms < 0); | ||
|
||
- $config{target} =~ m|[^-]+-([^-]+)$|; # split on dash | ||
- $sysroot = "@platforms[$#platforms]/arch-$1"; | ||
+ $sysroot = "@platforms[$#platforms]/arch-$arch"; | ||
} | ||
die "no sysroot=$sysroot" if (!-d $sysroot); | ||
|
||
- $sysroot =~ m|/android-([0-9]+)/arch-(\w+)/?$|; | ||
- my ($api, $arch) = ($1, $2); | ||
- | ||
my $triarch = $triplet{$arch}; | ||
my $cflags; | ||
my $cppflags; | ||
|
||
- # see if there is NDK clang on $PATH | ||
+ # see if there is NDK clang on $PATH, "universal" or "standalone" | ||
if (which("clang") =~ m|^$ndk/.*/prebuilt/([^/]+)/|) { | ||
my $host=$1; | ||
# harmonize with gcc default | ||
@@ -83,6 +92,18 @@ | ||
. "/$tritools-4.9/prebuilt/$host"; | ||
$user{CC} = "clang" if ($user{CC} !~ m|clang|); | ||
$user{CROSS_COMPILE} = undef; | ||
+ } elsif (-f "$ndk/AndroidVersion.txt") { #"standalone toolchain" | ||
+ my $cc = $user{CC} // "clang"; | ||
+ # One can probably argue that both clang and gcc should be | ||
+ # probed, but support for "standalone toolchain" was added | ||
+ # *after* announcement that gcc is being phased out, so | ||
+ # favouring clang is considered adequate. Those who insist | ||
+ # have option to enforce test for gcc with CC=gcc. | ||
+ if (which("$triarch-$cc") !~ m|^$ndk|) { | ||
+ die "no NDK $triarch-$cc on \$PATH"; | ||
+ } | ||
+ $user{CC} = $cc; | ||
+ $user{CROSS_COMPILE} = "$triarch-"; | ||
} elsif ($user{CC} eq "clang") { | ||
die "no NDK clang on \$PATH"; | ||
} else { | ||
diff --git a/NOTES.ANDROID b/NOTES.ANDROID | ||
index d13f47d6675..bbbd8e4db92 100644 | ||
--- a/NOTES.ANDROID | ||
+++ b/NOTES.ANDROID | ||
@@ -24,16 +24,18 @@ | ||
in order to invoke $(CROSS_COMPILE)gcc and company. (Configure will fail | ||
and give you a hint if you get it wrong.) Apart from PATH adjustment | ||
you need to set ANDROID_NDK environment to point at NDK directory | ||
- as /some/where/android-ndk-<ver>. NDK customarily supports multiple | ||
+ as /some/where/android-ndk-<ver>. Both variables are significant at both | ||
+ configuration and compilation times. NDK customarily supports multiple | ||
Android API levels, e.g. android-14, android-21, etc. By default latest | ||
one available is chosen. If you need to target older platform, pass | ||
additional -D__ANDROID_API__=N to Configure. N is numeric value of the | ||
target platform version. For example, to compile for ICS on ARM with | ||
NDK 10d: | ||
|
||
- ANDROID_NDK=/some/where/android-ndk-10d | ||
+ export ANDROID_NDK=/some/where/android-ndk-10d | ||
PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$PATH | ||
./Configure android-arm -D__ANDROID_API__=14 | ||
+ make | ||
|
||
Caveat lector! Earlier OpenSSL versions relied on additional CROSS_SYSROOT | ||
variable set to $ANDROID_NDK/platforms/android-<api>/arch-<arch> to | ||
@@ -43,12 +45,18 @@ | ||
conflict, and mixing the two is therefore not supported. Migration to | ||
CROSS_SYSROOT-less setup is recommended. | ||
|
||
- One can engage clang by adjusting PATH to cover NDK's clang. Just keep | ||
- in mind that if you miss it, Configure will try to use gcc... Also, | ||
- PATH would need even further adjustment to cover unprefixed, yet | ||
+ One can engage clang by adjusting PATH to cover same NDK's clang. Just | ||
+ keep in mind that if you miss it, Configure will try to use gcc... | ||
+ Also, PATH would need even further adjustment to cover unprefixed, yet | ||
target-specific, ar and ranlib. It's possible that you don't need to | ||
bother, if binutils-multiarch is installed on your Linux system. | ||
|
||
+ Another option is to create so called "standalone toolchain" tailored | ||
+ for single specific platform including Android API level, and assign its | ||
+ location to ANDROID_NDK. In such case you have to pass matching target | ||
+ name to Configure and shouldn't use -D__ANDROID_API__=N. PATH adjusment | ||
+ becomes simpler, $ANDROID_NDK/bin:$PATH suffices. | ||
+ | ||
Running tests (on Linux) | ||
------------------------ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
--- a/Configurations/15-android.conf | ||
+++ b/Configurations/15-android.conf | ||
@@ -99,11 +99,11 @@ | ||
# *after* announcement that gcc is being phased out, so | ||
# favouring clang is considered adequate. Those who insist | ||
# have option to enforce test for gcc with CC=gcc. | ||
- if (which("$triarch-$cc") !~ m|^$ndk|) { | ||
- die "no NDK $triarch-$cc on \$PATH"; | ||
+ if (realpath(which("$cc")) !~ m|^$ndk|) { | ||
+ die "no NDK $cc on \$PATH"; | ||
} | ||
$user{CC} = $cc; | ||
- $user{CROSS_COMPILE} = "$triarch-"; | ||
+ $user{CROSS_COMPILE} = ""; | ||
} elsif ($user{CC} eq "clang") { | ||
die "no NDK clang on \$PATH"; | ||
} else { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
1e3a91bc1f9dfce01af26026f856e064eab4c8ee0a8f457b5ae30b40b8b711f2 | ||
2836875a0f89c03d0fdf483941512613a50cfb421d6fd94b9f41d7279d586a3d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
openssl http://mirrors.kodi.tv/build-deps/sources/openssl-1.1.1d.tar.gz | ||
openssl http://mirrors.kodi.tv/build-deps/sources/openssl-1.1.1.tar.gz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
1e3a91bc1f9dfce01af26026f856e064eab4c8ee0a8f457b5ae30b40b8b711f2 | ||
2836875a0f89c03d0fdf483941512613a50cfb421d6fd94b9f41d7279d586a3d |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
openssl http://mirrors.kodi.tv/build-deps/sources/openssl-1.1.1d.tar.gz | ||
openssl http://mirrors.kodi.tv/build-deps/sources/openssl-1.1.1.tar.gz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters