Skip to content

Commit 2098258

Browse files
Build 64-bit support for libcrypto.a (x86_64 and arm64-v8a)
1 parent 3914bcf commit 2098258

File tree

1 file changed

+78
-67
lines changed

1 file changed

+78
-67
lines changed

build-openssl-libraries.sh

Lines changed: 78 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#! /usr/bin/env sh
1+
#! /usr/bin/env bash
22
(cd external/openssl;
33

44
if [ ! ${ANDROID_NDK_ROOT} ]; then
@@ -7,6 +7,16 @@
77
fi
88

99
ANDROID_LIB_ROOT=../android-libs
10+
ANDROID_PLATFORM_VERSION=android-23
11+
ANDROID_TOOLCHAIN_DIR=/tmp/sqlcipher-android-toolchain
12+
OPENSSL_CONFIGURE_OPTIONS="no-krb5 no-idea no-camellia \
13+
no-seed no-bf no-cast no-rc2 no-rc4 no-rc5 no-md2 \
14+
no-md4 no-ripemd no-rsa no-ecdh no-sock no-ssl2 no-ssl3 \
15+
no-dsa no-dh no-ec no-ecdsa no-tls1 no-pbe no-pkcs \
16+
no-tlsext no-pem no-rfc3779 no-whirlpool no-ui no-srp \
17+
no-ssltrace no-tlsext no-mdc2 no-ecdh no-engine \
18+
no-tls2 no-srtp -fPIC"
19+
1020
HOST_INFO=`uname -a`
1121
case ${HOST_INFO} in
1222
Darwin*)
@@ -27,75 +37,76 @@
2737
esac
2838

2939
rm -rf ${ANDROID_LIB_ROOT}
30-
mkdir -p ${ANDROID_LIB_ROOT}/armeabi
31-
mkdir -p ${ANDROID_LIB_ROOT}/armeabi-v7a
32-
mkdir -p ${ANDROID_LIB_ROOT}/x86
33-
3440
git clean -dfx && git checkout -f
3541
./Configure dist
36-
37-
ANDROID_PLATFORM_VERSION=android-19
38-
ANDROID_TOOLCHAIN_DIR=/tmp/sqlcipher-android-toolchain
39-
OPENSSL_CONFIGURE_OPTIONS="-no-krb5 no-idea no-camellia
40-
no-seed no-bf no-cast no-rc2 no-rc4 no-rc5 no-md2
41-
no-md4 no-ripemd no-rsa no-ecdh no-sock no-ssl2 no-ssl3
42-
no-dsa no-dh no-ec no-ecdsa no-tls1 no-pbe no-pkcs
43-
no-tlsext no-pem no-rfc3779 no-whirlpool no-ui no-srp
44-
no-ssltrace no-tlsext no-mdc2 no-ecdh no-engine
45-
no-tls2 no-srtp -fPIC"
46-
47-
# arm build
48-
${ANDROID_NDK_ROOT}/build/tools/make-standalone-toolchain.sh \
49-
--platform=${ANDROID_PLATFORM_VERSION} \
50-
--install-dir=${ANDROID_TOOLCHAIN_DIR} \
51-
--arch=arm
52-
53-
export PATH=${ANDROID_TOOLCHAIN_DIR}/bin:$PATH
54-
55-
RANLIB=arm-linux-androideabi-ranlib \
56-
AR=arm-linux-androideabi-ar \
57-
CC=arm-linux-androideabi-gcc \
58-
./Configure android ${OPENSSL_CONFIGURE_OPTIONS}
59-
60-
make clean
61-
make build_crypto
62-
mv libcrypto.a ${ANDROID_LIB_ROOT}/armeabi/
6342

64-
rm -rf ${ANDROID_TOOLCHAIN_DIR}
65-
66-
#armv7 build
67-
${ANDROID_NDK_ROOT}/build/tools/make-standalone-toolchain.sh \
68-
--platform=${ANDROID_PLATFORM_VERSION} \
69-
--install-dir=${ANDROID_TOOLCHAIN_DIR} \
70-
--arch=arm
71-
72-
export PATH=${ANDROID_TOOLCHAIN_DIR}/bin:$PATH
73-
74-
RANLIB=arm-linux-androideabi-ranlib \
75-
AR=arm-linux-androideabi-ar \
76-
CC=arm-linux-androideabi-gcc \
77-
./Configure android-armv7 ${OPENSSL_CONFIGURE_OPTIONS}
78-
79-
make clean
80-
make build_crypto
81-
mv libcrypto.a ${ANDROID_LIB_ROOT}/armeabi-v7a/
82-
83-
rm -rf ${ANDROID_TOOLCHAIN_DIR}
84-
85-
# x86 build
86-
${ANDROID_NDK_ROOT}/build/tools/make-standalone-toolchain.sh \
87-
--platform=${ANDROID_PLATFORM_VERSION} \
88-
--install-dir=${ANDROID_TOOLCHAIN_DIR} \
89-
--arch=x86
90-
91-
export PATH=${ANDROID_TOOLCHAIN_DIR}/bin:$PATH
43+
for SQLCIPHER_TARGET_PLATFORM in armeabi armeabi-v7a x86 x86_64 arm64-v8a
44+
do
45+
echo "Building for libcrypto.a for ${SQLCIPHER_TARGET_PLATFORM}"
46+
case "${SQLCIPHER_TARGET_PLATFORM}" in
47+
armeabi)
48+
TOOLCHAIN_ARCH=arm
49+
TOOLCHAIN_PREFIX=arm-linux-androideabi
50+
CONFIGURE_ARCH=android
51+
PLATFORM_OUTPUT_DIR=armeabi
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+
;;
59+
x86)
60+
TOOLCHAIN_ARCH=x86
61+
TOOLCHAIN_PREFIX=i686-linux-android
62+
CONFIGURE_ARCH=android-x86
63+
PLATFORM_OUTPUT_DIR=x86
64+
;;
65+
x86_64)
66+
TOOLCHAIN_ARCH=x86_64
67+
TOOLCHAIN_PREFIX=x86_64-linux-android
68+
CONFIGURE_ARCH=android64
69+
PLATFORM_OUTPUT_DIR=x86_64
70+
;;
71+
arm64-v8a)
72+
TOOLCHAIN_ARCH=arm64
73+
TOOLCHAIN_PREFIX=aarch64-linux-android
74+
CONFIGURE_ARCH=android64-aarch64
75+
PLATFORM_OUTPUT_DIR=arm64-v8a
76+
;;
77+
*)
78+
echo "Unsupported build platform:${SQLCIPHER_TARGET_PLATFORM}"
79+
exit 1
80+
esac
81+
82+
mkdir -p "${ANDROID_LIB_ROOT}/${SQLCIPHER_TARGET_PLATFORM}"
83+
${ANDROID_NDK_ROOT}/build/tools/make-standalone-toolchain.sh \
84+
--platform=${ANDROID_PLATFORM_VERSION} \
85+
--install-dir=${ANDROID_TOOLCHAIN_DIR} \
86+
--arch=${TOOLCHAIN_ARCH}
87+
88+
export PATH=${ANDROID_TOOLCHAIN_DIR}/bin:$PATH
89+
export CROSS_SYSROOT=${ANDROID_TOOLCHAIN_DIR}/sysroot
90+
91+
RANLIB=${TOOLCHAIN_PREFIX}-ranlib \
92+
AR=${TOOLCHAIN_PREFIX}-ar \
93+
CC=${TOOLCHAIN_PREFIX}-gcc \
94+
./Configure "${CONFIGURE_ARCH}" "${OPENSSL_CONFIGURE_OPTIONS}"
9295

93-
RANLIB=i686-linux-android-ranlib \
94-
AR=i686-linux-android-ar \
95-
CC=i686-linux-android-gcc \
96-
./Configure android-x86 ${OPENSSL_CONFIGURE_OPTIONS}
96+
if [ $? -ne 0 ]; then
97+
echo "Error executing:./Configure ${CONFIGURE_ARCH} ${OPENSSL_CONFIGURE_OPTIONS}"
98+
exit 1
99+
fi
100+
101+
make clean
102+
make
97103

98-
make clean
99-
make build_crypto
100-
mv libcrypto.a ${ANDROID_LIB_ROOT}/x86/
104+
if [ $? -ne 0 ]; then
105+
echo "Error executing make for platform:${SQLCIPHER_TARGET_PLATFORM}"
106+
exit 1
107+
fi
108+
109+
mv libcrypto.a ${ANDROID_LIB_ROOT}/${PLATFORM_OUTPUT_DIR}
110+
rm -rf ${ANDROID_TOOLCHAIN_DIR}
111+
done
101112
)

0 commit comments

Comments
 (0)