22
33MINIMUM_ANDROID_SDK_VERSION=$1
44MINIMUM_ANDROID_64_BIT_SDK_VERSION=$2
5+ OPENSSL=openssl-1.1.1
56
6- (cd src/main/external/openssl;
7+ (cd src/main/external/;
8+ gunzip -c ${OPENSSL} .tar.gz | tar xf -
9+ )
10+
11+ (cd src/main/external/${OPENSSL} ;
712
813 if [ ! ${MINIMUM_ANDROID_SDK_VERSION} ]; then
914 echo " MINIMUM_ANDROID_SDK_VERSION was not provided, include and rerun"
@@ -20,20 +25,21 @@ MINIMUM_ANDROID_64_BIT_SDK_VERSION=$2
2025 exit 1
2126 fi
2227
28+ NDK_TOOLCHAIN_VERSION=4.9
2329 ANDROID_LIB_ROOT=../android-libs
2430 ANDROID_TOOLCHAIN_DIR=/tmp/sqlcipher-android-toolchain
25- OPENSSL_CONFIGURE_OPTIONS=" no-krb5 no-idea no-camellia \
26- no-seed no-bf no-cast no-rc2 no-rc4 no-rc5 no-md2 \
27- no-md4 no-ripemd no-rsa no- ecdh no-sock no-ssl2 no-ssl3 \
28- no-dsa no-dh no-ec no-ecdsa no-tls1 no-pbe no-pkcs \
29- no-tlsext no-pem no- rfc3779 no-whirlpool no-ui no-srp \
30- no-ssltrace no-tlsext no-mdc2 no-ecdh no-engine \
31- no-tls2 no- srtp -fPIC "
31+ OPENSSL_CONFIGURE_OPTIONS=" -fPIC no-idea no-camellia \
32+ no-seed no-bf no-cast no-rc2 no-rc4 no-rc5 no-md2 \
33+ no-md4 no-ecdh no-sock no-ssl3 \
34+ no-dsa no-dh no-ec no-ecdsa no-tls1 \
35+ no-rfc3779 no-whirlpool no-srp \
36+ no-mdc2 no-ecdh no-engine \
37+ no-srtp"
3238
3339 HOST_INFO=` uname -a`
3440 case ${HOST_INFO} in
3541 Darwin* )
36- TOOLCHAIN_SYSTEM=darwin-x86
42+ TOOLCHAIN_SYSTEM=darwin-x86_64
3743 ;;
3844 Linux* )
3945 if [[ " ${HOST_INFO} " == * i686* ]]
@@ -50,93 +56,96 @@ MINIMUM_ANDROID_64_BIT_SDK_VERSION=$2
5056 esac
5157
5258 rm -rf ${ANDROID_LIB_ROOT}
53- ./Configure dist
54-
59+
5560 for SQLCIPHER_TARGET_PLATFORM in armeabi armeabi-v7a x86 x86_64 arm64-v8a
5661 do
57- echo " Building for libcrypto.a for ${SQLCIPHER_TARGET_PLATFORM} "
62+ echo " Building libcrypto.a for ${SQLCIPHER_TARGET_PLATFORM} "
5863 case " ${SQLCIPHER_TARGET_PLATFORM} " in
5964 armeabi)
6065 TOOLCHAIN_ARCH=arm
6166 TOOLCHAIN_PREFIX=arm-linux-androideabi
62- CONFIGURE_ARCH=android
63- PLATFORM_OUTPUT_DIR=armeabi
67+ TOOLCHAIN_FOLDER=arm-linux-androideabi
68+ CONFIGURE_ARCH=android-arm
6469 ANDROID_API_VERSION=${MINIMUM_ANDROID_SDK_VERSION}
6570 OFFSET_BITS=32
71+ TOOLCHAIN_DIR=${ANDROID_TOOLCHAIN_DIR} -armeabi
6672 ;;
6773 armeabi-v7a)
6874 TOOLCHAIN_ARCH=arm
6975 TOOLCHAIN_PREFIX=arm-linux-androideabi
70- CONFIGURE_ARCH=android -march=armv7-a
71- PLATFORM_OUTPUT_DIR=armeabi-v7a
76+ TOOLCHAIN_FOLDER=arm-linux-androideabi
77+ CONFIGURE_ARCH= " android-arm -march=armv7-a "
7278 ANDROID_API_VERSION=${MINIMUM_ANDROID_SDK_VERSION}
7379 OFFSET_BITS=32
80+ TOOLCHAIN_DIR=${ANDROID_TOOLCHAIN_DIR} -armeabi-v7a
7481 ;;
7582 x86)
7683 TOOLCHAIN_ARCH=x86
7784 TOOLCHAIN_PREFIX=i686-linux-android
85+ TOOLCHAIN_FOLDER=x86
7886 CONFIGURE_ARCH=android-x86
79- PLATFORM_OUTPUT_DIR=x86
8087 ANDROID_API_VERSION=${MINIMUM_ANDROID_SDK_VERSION}
8188 OFFSET_BITS=32
89+ TOOLCHAIN_DIR=${ANDROID_TOOLCHAIN_DIR} -x86
8290 ;;
8391 x86_64)
8492 TOOLCHAIN_ARCH=x86_64
8593 TOOLCHAIN_PREFIX=x86_64-linux-android
86- CONFIGURE_ARCH=android64
87- PLATFORM_OUTPUT_DIR= x86_64
94+ TOOLCHAIN_FOLDER=x86_64
95+ CONFIGURE_ARCH=android64- x86_64
8896 ANDROID_API_VERSION=${MINIMUM_ANDROID_64_BIT_SDK_VERSION}
8997 OFFSET_BITS=64
98+ TOOLCHAIN_DIR=${ANDROID_TOOLCHAIN_DIR} -x86_64
9099 ;;
91100 arm64-v8a)
92101 TOOLCHAIN_ARCH=arm64
93102 TOOLCHAIN_PREFIX=aarch64-linux-android
94- CONFIGURE_ARCH=android64- aarch64
95- PLATFORM_OUTPUT_DIR=arm64-v8a
103+ TOOLCHAIN_FOLDER= aarch64-linux-android
104+ CONFIGURE_ARCH=android-arm64
96105 ANDROID_API_VERSION=${MINIMUM_ANDROID_64_BIT_SDK_VERSION}
97106 OFFSET_BITS=64
107+ TOOLCHAIN_DIR=${ANDROID_TOOLCHAIN_DIR} -arm64-v8a
98108 ;;
99109 * )
100110 echo " Unsupported build platform:${SQLCIPHER_TARGET_PLATFORM} "
101111 exit 1
102112 esac
103-
104- rm -rf ${ANDROID_TOOLCHAIN_DIR }
113+ SOURCE_TOOLCHAIN_DIR= ${ANDROID_NDK_ROOT} /toolchains/ ${TOOLCHAIN_FOLDER} - ${NDK_TOOLCHAIN_VERSION} /prebuilt/ ${TOOLCHAIN_SYSTEM}
114+ rm -rf ${TOOLCHAIN_DIR }
105115 mkdir -p " ${ANDROID_LIB_ROOT} /${SQLCIPHER_TARGET_PLATFORM} "
106116 python ${ANDROID_NDK_ROOT} /build/tools/make_standalone_toolchain.py \
107117 --arch ${TOOLCHAIN_ARCH} \
108118 --api ${ANDROID_API_VERSION} \
109- --install-dir ${ANDROID_TOOLCHAIN_DIR}
119+ --install-dir ${TOOLCHAIN_DIR} \
120+ --unified-headers
110121
111122 if [ $? -ne 0 ]; then
112123 echo " Error executing make_standalone_toolchain.py for ${TOOLCHAIN_ARCH} "
113124 exit 1
114125 fi
115126
116- export PATH=${ANDROID_TOOLCHAIN_DIR} /bin:$PATH
117- export CROSS_SYSROOT=${ANDROID_TOOLCHAIN_DIR} /sysroot
127+ export PATH=${TOOLCHAIN_DIR} /bin:${PATH}
118128
119- RANLIB =${TOOLCHAIN_PREFIX} -ranlib \
120- AR =${TOOLCHAIN_PREFIX} -ar \
121- CC= ${TOOLCHAIN_PREFIX} -gcc \
122- ./Configure " ${CONFIGURE_ARCH} " \
123- -D__ANDROID_API__ =${ANDROID_API_VERSION } \
124- -D_FILE_OFFSET_BITS= ${OFFSET_BITS } \
125- " ${OPENSSL_CONFIGURE_OPTIONS} "
129+ ANDROID_NDK =${ANDROID_NDK_ROOT} \
130+ PATH =${SOURCE_TOOLCHAIN_DIR} /bin: ${PATH} \
131+ ./Configure ${CONFIGURE_ARCH} \
132+ -D__ANDROID_API__= ${ANDROID_API_VERSION} \
133+ -D_FILE_OFFSET_BITS =${OFFSET_BITS } \
134+ ${OPENSSL_CONFIGURE_OPTIONS } \
135+ --sysroot= ${TOOLCHAIN_DIR} /sysroot
126136
127137 if [ $? -ne 0 ]; then
128138 echo " Error executing:./Configure ${CONFIGURE_ARCH} ${OPENSSL_CONFIGURE_OPTIONS} "
129139 exit 1
130140 fi
131141
132142 make clean
133- make
134-
143+ make build_libs
144+
135145 if [ $? -ne 0 ]; then
136146 echo " Error executing make for platform:${SQLCIPHER_TARGET_PLATFORM} "
137147 exit 1
138148 fi
139-
140- mv libcrypto.a ${ANDROID_LIB_ROOT} /${PLATFORM_OUTPUT_DIR}
149+ mv libcrypto.a ${ANDROID_LIB_ROOT} /${SQLCIPHER_TARGET_PLATFORM}
141150 done
142151)
0 commit comments