Skip to content

Commit d3f08b2

Browse files
Update build process for OpenSSL libraries
1 parent 612ed95 commit d3f08b2

File tree

3 files changed

+133
-106
lines changed

3 files changed

+133
-106
lines changed
Lines changed: 127 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,138 @@
11
#! /usr/bin/env bash
2+
3+
MINIMUM_ANDROID_SDK_VERSION=$1
4+
MINIMUM_ANDROID_64_BIT_SDK_VERSION=$2
5+
26
(cd src/main/external/openssl;
37

4-
if [ ! ${ANDROID_NDK_ROOT} ]; then
5-
echo "ANDROID_NDK_ROOT environment variable not set, set and rerun"
6-
exit 1
7-
fi
8+
if [ ! ${MINIMUM_ANDROID_SDK_VERSION} ]; then
9+
echo "MINIMUM_ANDROID_SDK_VERSION was not provided, include and rerun"
10+
exit 1
11+
fi
12+
13+
if [ ! ${MINIMUM_ANDROID_64_BIT_SDK_VERSION} ]; then
14+
echo "MINIMUM_ANDROID_64_BIT_SDK_VERSION was not provided, include and rerun"
15+
exit 1
16+
fi
17+
18+
if [ ! ${ANDROID_NDK_ROOT} ]; then
19+
echo "ANDROID_NDK_ROOT environment variable not set, set and rerun"
20+
exit 1
21+
fi
822

9-
ANDROID_LIB_ROOT=../android-libs
10-
ANDROID_TOOLCHAIN_DIR=/tmp/sqlcipher-android-toolchain
11-
OPENSSL_CONFIGURE_OPTIONS="no-krb5 no-idea no-camellia \
23+
ANDROID_LIB_ROOT=../android-libs
24+
ANDROID_TOOLCHAIN_DIR=/tmp/sqlcipher-android-toolchain
25+
OPENSSL_CONFIGURE_OPTIONS="no-krb5 no-idea no-camellia \
1226
no-seed no-bf no-cast no-rc2 no-rc4 no-rc5 no-md2 \
1327
no-md4 no-ripemd no-rsa no-ecdh no-sock no-ssl2 no-ssl3 \
1428
no-dsa no-dh no-ec no-ecdsa no-tls1 no-pbe no-pkcs \
1529
no-tlsext no-pem no-rfc3779 no-whirlpool no-ui no-srp \
1630
no-ssltrace no-tlsext no-mdc2 no-ecdh no-engine \
1731
no-tls2 no-srtp -fPIC"
18-
19-
HOST_INFO=`uname -a`
20-
case ${HOST_INFO} in
21-
Darwin*)
22-
TOOLCHAIN_SYSTEM=darwin-x86
23-
;;
24-
Linux*)
25-
if [[ "${HOST_INFO}" == *i686* ]]
26-
then
27-
TOOLCHAIN_SYSTEM=linux-x86
28-
else
29-
TOOLCHAIN_SYSTEM=linux-x86_64
30-
fi
31-
;;
32-
*)
33-
echo "Toolchain unknown for host system"
34-
exit 1
35-
;;
36-
esac
37-
38-
rm -rf ${ANDROID_LIB_ROOT}
39-
#git clean -dfx && git checkout -f
40-
./Configure dist
41-
42-
for SQLCIPHER_TARGET_PLATFORM in armeabi armeabi-v7a x86 x86_64 arm64-v8a
43-
do
44-
echo "Building for libcrypto.a for ${SQLCIPHER_TARGET_PLATFORM}"
45-
case "${SQLCIPHER_TARGET_PLATFORM}" in
46-
armeabi)
47-
TOOLCHAIN_ARCH=arm
48-
TOOLCHAIN_PREFIX=arm-linux-androideabi
49-
CONFIGURE_ARCH=android
50-
PLATFORM_OUTPUT_DIR=armeabi
51-
ANDROID_PLATFORM_VERSION=android-9
52-
;;
53-
armeabi-v7a)
54-
TOOLCHAIN_ARCH=arm
55-
TOOLCHAIN_PREFIX=arm-linux-androideabi
56-
CONFIGURE_ARCH=android -march=armv7-a
57-
PLATFORM_OUTPUT_DIR=armeabi-v7a
58-
ANDROID_PLATFORM_VERSION=android-9
59-
;;
60-
x86)
61-
TOOLCHAIN_ARCH=x86
62-
TOOLCHAIN_PREFIX=i686-linux-android
63-
CONFIGURE_ARCH=android-x86
64-
PLATFORM_OUTPUT_DIR=x86
65-
ANDROID_PLATFORM_VERSION=android-9
66-
;;
67-
x86_64)
68-
TOOLCHAIN_ARCH=x86_64
69-
TOOLCHAIN_PREFIX=x86_64-linux-android
70-
CONFIGURE_ARCH=android64
71-
PLATFORM_OUTPUT_DIR=x86_64
72-
ANDROID_PLATFORM_VERSION=android-21
73-
;;
74-
arm64-v8a)
75-
TOOLCHAIN_ARCH=arm64
76-
TOOLCHAIN_PREFIX=aarch64-linux-android
77-
CONFIGURE_ARCH=android64-aarch64
78-
PLATFORM_OUTPUT_DIR=arm64-v8a
79-
ANDROID_PLATFORM_VERSION=android-21
80-
;;
81-
*)
82-
echo "Unsupported build platform:${SQLCIPHER_TARGET_PLATFORM}"
83-
exit 1
84-
esac
85-
86-
rm -rf ${ANDROID_TOOLCHAIN_DIR}
87-
mkdir -p "${ANDROID_LIB_ROOT}/${SQLCIPHER_TARGET_PLATFORM}"
88-
${ANDROID_NDK_ROOT}/build/tools/make-standalone-toolchain.sh \
89-
--platform=${ANDROID_PLATFORM_VERSION} \
90-
--install-dir=${ANDROID_TOOLCHAIN_DIR} \
91-
--arch=${TOOLCHAIN_ARCH}
92-
93-
export PATH=${ANDROID_TOOLCHAIN_DIR}/bin:$PATH
94-
export CROSS_SYSROOT=${ANDROID_TOOLCHAIN_DIR}/sysroot
95-
96-
RANLIB=${TOOLCHAIN_PREFIX}-ranlib \
97-
AR=${TOOLCHAIN_PREFIX}-ar \
98-
CC=${TOOLCHAIN_PREFIX}-gcc \
99-
./Configure "${CONFIGURE_ARCH}" "${OPENSSL_CONFIGURE_OPTIONS}"
100-
101-
if [ $? -ne 0 ]; then
102-
echo "Error executing:./Configure ${CONFIGURE_ARCH} ${OPENSSL_CONFIGURE_OPTIONS}"
103-
exit 1
104-
fi
105-
106-
make clean
107-
make
108-
109-
if [ $? -ne 0 ]; then
110-
echo "Error executing make for platform:${SQLCIPHER_TARGET_PLATFORM}"
111-
exit 1
112-
fi
113-
114-
mv libcrypto.a ${ANDROID_LIB_ROOT}/${PLATFORM_OUTPUT_DIR}
115-
done
32+
33+
HOST_INFO=`uname -a`
34+
case ${HOST_INFO} in
35+
Darwin*)
36+
TOOLCHAIN_SYSTEM=darwin-x86
37+
;;
38+
Linux*)
39+
if [[ "${HOST_INFO}" == *i686* ]]
40+
then
41+
TOOLCHAIN_SYSTEM=linux-x86
42+
else
43+
TOOLCHAIN_SYSTEM=linux-x86_64
44+
fi
45+
;;
46+
*)
47+
echo "Toolchain unknown for host system"
48+
exit 1
49+
;;
50+
esac
51+
52+
rm -rf ${ANDROID_LIB_ROOT}
53+
#git clean -dfx && git checkout -f
54+
./Configure dist
55+
56+
for SQLCIPHER_TARGET_PLATFORM in armeabi armeabi-v7a x86 x86_64 arm64-v8a
57+
do
58+
echo "Building for libcrypto.a for ${SQLCIPHER_TARGET_PLATFORM}"
59+
case "${SQLCIPHER_TARGET_PLATFORM}" in
60+
armeabi)
61+
TOOLCHAIN_ARCH=arm
62+
TOOLCHAIN_PREFIX=arm-linux-androideabi
63+
CONFIGURE_ARCH=android
64+
PLATFORM_OUTPUT_DIR=armeabi
65+
ANDROID_API_VERSION=${MINIMUM_ANDROID_SDK_VERSION}
66+
;;
67+
armeabi-v7a)
68+
TOOLCHAIN_ARCH=arm
69+
TOOLCHAIN_PREFIX=arm-linux-androideabi
70+
CONFIGURE_ARCH=android -march=armv7-a
71+
PLATFORM_OUTPUT_DIR=armeabi-v7a
72+
ANDROID_API_VERSION=${MINIMUM_ANDROID_SDK_VERSION}
73+
;;
74+
x86)
75+
TOOLCHAIN_ARCH=x86
76+
TOOLCHAIN_PREFIX=i686-linux-android
77+
CONFIGURE_ARCH=android-x86
78+
PLATFORM_OUTPUT_DIR=x86
79+
ANDROID_API_VERSION=${MINIMUM_ANDROID_SDK_VERSION}
80+
;;
81+
x86_64)
82+
TOOLCHAIN_ARCH=x86_64
83+
TOOLCHAIN_PREFIX=x86_64-linux-android
84+
CONFIGURE_ARCH=android64
85+
PLATFORM_OUTPUT_DIR=x86_64
86+
ANDROID_API_VERSION=${MINIMUM_ANDROID_64_BIT_SDK_VERSION}
87+
;;
88+
arm64-v8a)
89+
TOOLCHAIN_ARCH=arm64
90+
TOOLCHAIN_PREFIX=aarch64-linux-android
91+
CONFIGURE_ARCH=android64-aarch64
92+
PLATFORM_OUTPUT_DIR=arm64-v8a
93+
ANDROID_API_VERSION=${MINIMUM_ANDROID_64_BIT_SDK_VERSION}
94+
;;
95+
*)
96+
echo "Unsupported build platform:${SQLCIPHER_TARGET_PLATFORM}"
97+
exit 1
98+
esac
99+
100+
rm -rf ${ANDROID_TOOLCHAIN_DIR}
101+
mkdir -p "${ANDROID_LIB_ROOT}/${SQLCIPHER_TARGET_PLATFORM}"
102+
python ${ANDROID_NDK_ROOT}/build/tools/make_standalone_toolchain.py \
103+
--arch ${TOOLCHAIN_ARCH} \
104+
--api ${ANDROID_API_VERSION} \
105+
--install-dir ${ANDROID_TOOLCHAIN_DIR} \
106+
--unified-headers
107+
108+
if [ $? -ne 0 ]; then
109+
echo "Error executing make_standalone_toolchain.py for ${TOOLCHAIN_ARCH}"
110+
exit 1
111+
fi
112+
113+
export PATH=${ANDROID_TOOLCHAIN_DIR}/bin:$PATH
114+
export CROSS_SYSROOT=${ANDROID_TOOLCHAIN_DIR}/sysroot
115+
116+
RANLIB=${TOOLCHAIN_PREFIX}-ranlib \
117+
AR=${TOOLCHAIN_PREFIX}-ar \
118+
CC=${TOOLCHAIN_PREFIX}-gcc \
119+
./Configure "${CONFIGURE_ARCH}" \
120+
-D__ANDROID_API__=${ANDROID_API_VERSION} \
121+
"${OPENSSL_CONFIGURE_OPTIONS}"
122+
123+
if [ $? -ne 0 ]; then
124+
echo "Error executing:./Configure ${CONFIGURE_ARCH} ${OPENSSL_CONFIGURE_OPTIONS}"
125+
exit 1
126+
fi
127+
128+
make clean
129+
make
130+
131+
if [ $? -ne 0 ]; then
132+
echo "Error executing make for platform:${SQLCIPHER_TARGET_PLATFORM}"
133+
exit 1
134+
fi
135+
136+
mv libcrypto.a ${ANDROID_LIB_ROOT}/${PLATFORM_OUTPUT_DIR}
137+
done
116138
)

android-database-sqlcipher/native.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ task buildOpenSSL () {
66
doLast {
77
exec {
88
workingDir "${projectDir}"
9-
commandLine "./build-openssl-libraries.sh"
9+
commandLine "./build-openssl-libraries.sh",
10+
"${minimumAndroidSdkVersion}",
11+
"${minimumAndroid64BitSdkVersion}"
1012
}
1113
}
1214
}

build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ allprojects {
1717

1818
ext {
1919
clientVersionNumber = "3.5.7"
20+
minimumAndroidSdkVersion = 14
21+
minimumAndroid64BitSdkVersion = 21
22+
targetAndroidSdkVersion = 26
2023
nativeRootOutputDir = "${projectDir}/${name}/src/main"
2124
androidNativeRootDir = "${nativeRootOutputDir}/external/android-libs"
2225
sqlcipherDir = "${projectDir}/${name}/src/main/external/sqlcipher"

0 commit comments

Comments
 (0)