Skip to content

Commit 7d2b63c

Browse files
committed
Merge remote-tracking branch 'origin/master' into fix_uwp
2 parents b914ad9 + 355889b commit 7d2b63c

File tree

3 files changed

+115
-12
lines changed

3 files changed

+115
-12
lines changed

Build_android/configure.sh

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ set -e
2222

2323
DO_BOOST=1
2424
DO_OPENSSL=1
25+
DO_CMAKE=1
2526
DO_CPPRESTSDK=1
2627

27-
BOOSTVER=1.65.1
28-
OPENSSLVER=1.0.2k
28+
BOOSTVER=1.69.0
29+
OPENSSLVER=1.1.0j
30+
CMAKEVER=3.14.0
2931

3032
API=15
31-
STL=c++_static
33+
STL=c++_shared
3234

3335
function usage {
3436
echo "Usage: $0 [--skip-boost] [--skip-openssl] [--skip-cpprestsdk] [-h] [--ndk <android-ndk>]"
@@ -51,6 +53,9 @@ do
5153
"--skip-openssl")
5254
DO_OPENSSL=0
5355
;;
56+
"--skip-cmake")
57+
DO_CMAKE=0
58+
;;
5459
"--skip-cpprestsdk")
5560
DO_CPPRESTSDK=0
5661
;;
@@ -59,6 +64,11 @@ do
5964
DO_BOOST=1
6065
BOOSTVER=$1
6166
;;
67+
"--cmake")
68+
shift
69+
DO_CMAKE=1
70+
CMAKEVER=$1
71+
;;
6272
"--openssl")
6373
shift
6474
DO_OPENSSL=1
@@ -130,8 +140,8 @@ if [ "${DO_OPENSSL}" == "1" ]; then (
130140
if [ ! -d "openssl" ]; then mkdir openssl; fi
131141
cd openssl
132142
cp -af "${DIR}/openssl/." .
133-
make all ANDROID_NDK="${NDK_DIR}" ANDROID_TOOLCHAIN=clang ANDROID_GCC_VERSION=4.9 ANDROID_ABI=armeabi-v7a OPENSSL_PREFIX=armeabi-v7a OPENSSL_VERSION=$OPENSSLVER
134-
make all ANDROID_NDK="${NDK_DIR}" ANDROID_TOOLCHAIN=clang ANDROID_GCC_VERSION=4.9 ANDROID_ABI=x86 OPENSSL_PREFIX=x86 OPENSSL_VERSION=$OPENSSLVER
143+
make all ANDROID_NDK="${NDK_DIR}" ANDROID_TOOLCHAIN=clang ANDROID_ABI=armeabi-v7a OPENSSL_PREFIX=armeabi-v7a OPENSSL_VERSION=$OPENSSLVER -j $NCPU
144+
make all ANDROID_NDK="${NDK_DIR}" ANDROID_TOOLCHAIN=clang ANDROID_ABI=x86 OPENSSL_PREFIX=x86 OPENSSL_VERSION=$OPENSSLVER -j $NCPU
135145
) fi
136146

137147
# -----
@@ -143,7 +153,7 @@ if [ "${DO_OPENSSL}" == "1" ]; then (
143153
if [ "${DO_BOOST}" == "1" ]; then (
144154
if [ ! -d 'Boost-for-Android' ]; then git clone https://github.com/moritz-wundke/Boost-for-Android; fi
145155
cd Boost-for-Android
146-
git checkout 84973078a3d7668067d422d4654696ef59ab9d6d
156+
git checkout 1356b87fed389b4abf1ff671adec0b899877174b
147157
PATH="$PATH:$NDK_DIR" \
148158
CXXFLAGS="-std=gnu++11" \
149159
./build-android.sh \
@@ -153,23 +163,38 @@ if [ "${DO_BOOST}" == "1" ]; then (
153163
"${NDK_DIR}" || exit 1
154164
) fi
155165

166+
# ------
167+
# CMake
168+
# ------
169+
# We update CMake because the version included with Ubuntu is too old to handle Boost 1.69.
170+
171+
if [ "${DO_CMAKE}" == "1" ]; then (
172+
if [ ! -d "cmake-${CMAKEVER}" ]; then wget https://github.com/Kitware/CMake/releases/download/v${CMAKEVER}/cmake-${CMAKEVER}-Linux-x86_64.sh; fi
173+
chmod +x cmake-${CMAKEVER}-Linux-x86_64.sh
174+
rm -rf cmake-${CMAKEVER}
175+
mkdir cmake-${CMAKEVER}
176+
cd cmake-${CMAKEVER}
177+
../cmake-${CMAKEVER}-Linux-x86_64.sh --skip-license
178+
) fi
179+
156180
# ----------
157181
# casablanca
158182
# ----------
159183

160184
if [ "${DO_CPPRESTSDK}" == "1" ]; then
161185
# Use the builtin CMake toolchain configuration that comes with the NDK
162186
function build_cpprestsdk { (
163-
mkdir -p $1
164-
cd $1
165-
cmake "${DIR}/.." \
187+
rm -rf $1
188+
./cmake-${CMAKEVER}/bin/cmake \
166189
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \
167190
-DANDROID_NDK="${ANDROID_NDK}" \
168191
-DANDROID_TOOLCHAIN=clang \
169192
-DANDROID_ABI=$2 \
170193
-DBOOST_VERSION="${BOOSTVER}" \
171-
-DCMAKE_BUILD_TYPE=$3
172-
make -j $NCPU
194+
-DCMAKE_BUILD_TYPE=$3 \
195+
-S "${DIR}/.." \
196+
-B $1
197+
make -j $NCPU -C $1
173198
) }
174199

175200
# Build the cpprestsdk for each target configuration
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
This patch applies several changes that enable OpenSSL 1.1.0g to be built
2+
for Android using either Clang or GCC toolchains.
3+
4+
diff -Naur org/Configurations/10-main.conf mod/Configurations/10-main.conf
5+
--- org/Configurations/10-main.conf 2017-11-02 07:29:01.000000000 -0700
6+
+++ mod/Configurations/10-main.conf 2018-01-18 10:59:41.675138500 -0800
7+
@@ -910,15 +910,27 @@
8+
# systems are perfectly capable of executing binaries targeting
9+
# Froyo. Keep in mind that in the nutshell Android builds are
10+
# about JNI, i.e. shared libraries, not applications.
11+
- cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
12+
+ cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(ANDROID_LINK_SYSROOT) -isystem \$(ANDROID_SYSROOT)/usr/include -isystem \$(ANDROID_SYSROOT)/usr/include/\$(ANDROID_TRIPLE) -D__ANDROID_API__=\$(ANDROID_API) -Wa,--noexecstack")),
13+
bin_cflags => "-pie",
14+
},
15+
+ "android-clang" => {
16+
+ inherit_from => [ "linux-generic32" ],
17+
+ cc => "clang",
18+
+ cflags => add(picker(default => "-fPIC --gcc-toolchain=\$(ANDROID_GCC_TOOLCHAIN) --sysroot=\$(ANDROID_LINK_SYSROOT) -isystem \$(ANDROID_SYSROOT)/usr/include -isystem \$(ANDROID_SYSROOT)/usr/include/\$(ANDROID_TRIPLE) -D__ANDROID_API__=\$(ANDROID_API) -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Qunused-arguments -Wa,--noexecstack")),
19+
+},
20+
"android-x86" => {
21+
inherit_from => [ "android", asm("x86_asm") ],
22+
cflags => add(picker(release => "-fomit-frame-pointer")),
23+
bn_ops => "BN_LLONG",
24+
perlasm_scheme => "android",
25+
},
26+
+ "android-x86-clang" => {
27+
+ inherit_from => [ "android-clang", asm("x86_asm") ],
28+
+ cflags => add(picker(default => "-target i686-none-linux-android",
29+
+ release => "-fomit-frame-pointer")),
30+
+ bn_ops => "BN_LLONG",
31+
+ perlasm_scheme => "android",
32+
+ },
33+
################################################################
34+
# Contemporary Android applications can provide multiple JNI
35+
# providers in .apk, targeting multiple architectures. Among
36+
@@ -943,20 +955,38 @@
37+
"android-armeabi" => {
38+
inherit_from => [ "android", asm("armv4_asm") ],
39+
},
40+
+ "android-armeabi-clang" => {
41+
+ inherit_from => [ "android-clang", asm("armv4_asm") ],
42+
+ cflags => add("-target armv7-none-linux-androideabi"),
43+
+ },
44+
"android-mips" => {
45+
inherit_from => [ "android", asm("mips32_asm") ],
46+
perlasm_scheme => "o32",
47+
},
48+
-
49+
+ "android-mips-clang" => {
50+
+ inherit_from => [ "android-clang", asm("mips32_asm") ],
51+
+ cflags => add("-target mipsel-none-linux-android"),
52+
+ perlasm_scheme => "o32",
53+
+ },
54+
"android64" => {
55+
inherit_from => [ "linux-generic64" ],
56+
- cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack")),
57+
+ cflags => add(picker(default => "-mandroid -fPIC --sysroot=\$(ANDROID_LINK_SYSROOT) -isystem \$(ANDROID_SYSROOT)/usr/include -isystem \$(ANDROID_SYSROOT)/usr/include/\$(ANDROID_TRIPLE) -D__ANDROID_API__=\$(ANDROID_API) -Wa,--noexecstack")),
58+
bin_cflags => "-pie",
59+
},
60+
+ "android64-clang" => {
61+
+ inherit_from => [ "linux-generic64" ],
62+
+ cc => "clang",
63+
+ cflags => add(picker(default => "-fPIC --gcc-toolchain=\$(ANDROID_GCC_TOOLCHAIN) --sysroot=\$(ANDROID_LINK_SYSROOT) -isystem \$(ANDROID_SYSROOT)/usr/include -isystem \$(ANDROID_SYSROOT)/usr/include/\$(ANDROID_TRIPLE) -D__ANDROID_API__=\$(ANDROID_API) -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Qunused-arguments -Wa,--noexecstack")),
64+
+ },
65+
"android64-aarch64" => {
66+
inherit_from => [ "android64", asm("aarch64_asm") ],
67+
perlasm_scheme => "linux64",
68+
},
69+
+ "android64-aarch64-clang" => {
70+
+ inherit_from => [ "android64-clang", asm("aarch64_asm") ],
71+
+ cflags => add("-target aarch64-none-linux-android"),
72+
+ perlasm_scheme => "linux64",
73+
+ },
74+
75+
#### *BSD
76+
"BSD-generic32" => {

Release/cmake/cpprest_find_boost.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ function(cpprest_find_boost)
3535
endif()
3636
elseif(ANDROID)
3737
set(Boost_COMPILER "-clang")
38-
if(ARM)
38+
if(ANDROID_ABI STREQUAL "armeabi-v7a")
3939
set(BOOST_ROOT "${CMAKE_BINARY_DIR}/../Boost-for-Android/build/out/armeabi-v7a" CACHE INTERNAL "")
4040
set(BOOST_LIBRARYDIR "${CMAKE_BINARY_DIR}/../Boost-for-Android/build/out/armeabi-v7a/lib" CACHE INTERNAL "")
41+
set(Boost_ARCHITECTURE "-a32" CACHE INTERNAL "")
4142
else()
4243
set(BOOST_ROOT "${CMAKE_BINARY_DIR}/../Boost-for-Android/build/out/x86" CACHE INTERNAL "")
4344
set(BOOST_LIBRARYDIR "${CMAKE_BINARY_DIR}/../Boost-for-Android/build/out/x86/lib" CACHE INTERNAL "")
45+
set(Boost_ARCHITECTURE "-x32" CACHE INTERNAL "")
4446
endif()
4547
cpprestsdk_find_boost_android_package(Boost ${BOOST_VERSION} EXACT REQUIRED COMPONENTS random system thread filesystem chrono atomic)
4648
elseif(UNIX)

0 commit comments

Comments
 (0)