aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/build-openssl4android.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build-openssl4android.sh')
-rwxr-xr-xscripts/build-openssl4android.sh98
1 files changed, 98 insertions, 0 deletions
diff --git a/scripts/build-openssl4android.sh b/scripts/build-openssl4android.sh
new file mode 100755
index 00000000..2d5c0905
--- /dev/null
+++ b/scripts/build-openssl4android.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+#
+# Copyright 2016 leenjewel
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -ux
+
+source $BASE_DIR/scripts/_shared.sh
+
+cd external
+# Setup architectures, library name and other vars + cleanup from previous runs
+LIB_NAME="openssl-1.1.0f"
+LIB_DEST_DIR=`pwd`/install_openssl/libs
+#[ -d ${LIB_DEST_DIR} ] && rm -rf ${LIB_DEST_DIR}
+[ -f "${LIB_NAME}.tar.gz" ] || wget https://www.openssl.org/source/${LIB_NAME}.tar.gz;
+
+# Unarchive library, then configure and make for specified architectures
+configure_make() {
+ ARCH=$1; ABI=$2;
+ #rm -rf "${LIB_NAME}"
+ if [ ! -d ${LIB_NAME} ]; then
+ #exit 1
+ tar xfz "${LIB_NAME}.tar.gz"
+ echo "correct openssl configuration file"
+ if [ $OS = darwin ]; then
+ sed -i '' 's/-mandroid//g' ${LIB_NAME}/Configurations/10-main.conf
+ else
+ sed -i 's/-mandroid//g' ${LIB_NAME}/Configurations/10-main.conf
+ fi
+
+ #exit 1
+ fi
+ pushd "${LIB_NAME}"
+
+ configure $*
+
+ #support openssl-1.0.x
+ if [[ $LIB_NAME != openssl-1.1.* ]]; then
+ if [[ $ARCH == "android-armeabi" ]]; then
+ ARCH="android-armv7"
+ elif [[ $ARCH == "android64" ]]; then
+ ARCH="linux-x86_64 shared no-ssl2 no-ssl3 no-hw "
+ elif [[ "$ARCH" == "android64-aarch64" ]]; then
+ ARCH="android shared no-ssl2 no-ssl3 no-hw "
+ fi
+ fi
+echo "-->${LIB_DEST_DIR}/${ABI}"
+#exit 1
+ ./Configure $ARCH \
+ --prefix=${LIB_DEST_DIR}/${ABI} \
+ --with-zlib-include=$SYSROOT/usr/include \
+ --with-zlib-lib=$SYSROOT/usr/lib \
+ no-hw no-dso \
+ zlib-dynamic \
+ no-asm \
+ no-shared \
+ no-unit-test
+ PATH=$TOOLCHAIN_PATH:$PATH
+
+ make clean
+
+ if make -j4; then
+ # make install
+ make install_sw
+ make install_ssldirs
+
+ OUTPUT_ROOT=${TOOLS_ROOT}/../output/$ABI
+ [ -d ${OUTPUT_ROOT}/include ] || mkdir -p ${OUTPUT_ROOT}/include
+ cp -r ${LIB_DEST_DIR}/${ABI}/include/openssl ${OUTPUT_ROOT}/include
+
+ [ -d ${OUTPUT_ROOT}/lib ] || mkdir -p ${OUTPUT_ROOT}/lib
+ cp ${LIB_DEST_DIR}/${ABI}/lib/libcrypto.a ${OUTPUT_ROOT}/lib
+ cp ${LIB_DEST_DIR}/${ABI}/lib/libssl.a ${OUTPUT_ROOT}/lib
+ fi;
+ popd
+
+}
+
+for ((i=0; i < ${#ARCHS[@]}; i++))
+do
+ if [[ $# -eq 0 ]] || [[ "$1" == "${ARCHS[i]}" ]]; then
+ # Do not build 64 bit arch if ANDROID_API is less than 21 which is
+ # the minimum supported API level for 64 bit.
+ [[ ${ANDROID_API} < 21 ]] && ( echo "${ABIS[i]}" | grep 64 > /dev/null ) && continue;
+ configure_make "${ARCHS[i]}" "${ABIS[i]}"
+ fi
+done