#!/bin/sh ANDROID_NDK=~/Android/Sdk/ndk/23.1.7779620 OPENSSL_VERSION=1.1.1w API_LEVEL=28 BUILD_DIR=out/openssl_android_build BUILD_TARGETS="x86_64 arm64-v8a" rm -rfv openssl-${OPENSSL_VERSION} if [ ! -d openssl-${OPENSSL_VERSION} ] then if [ ! -f openssl-${OPENSSL_VERSION}.tar.gz ] then wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz || exit 128 fi tar xzf openssl-${OPENSSL_VERSION}.tar.gz || exit 128 fi WORK_DIR=openssl-${OPENSSL_VERSION} ##### export ndk directory. Required by openssl-build-scripts ##### export ANDROID_NDK ##### build-function ##### build_the_thing() { TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64 export PATH=$TOOLCHAIN/$TRIBLE/bin:$TOOLCHAIN/bin:$PATH echo $PATH echo "./Configure $SSL_TARGET $OPTIONS -fuse-ld=$TOOLCHAIN/bin/ld" && \ ./Configure $SSL_TARGET $OPTIONS -fuse-ld=$TOOLCHAIN/bin/ld no-tests && \ make clean && \ make build_generated && \ make libcrypto.a libssl.a || exit 128 } ##### set variables according to build-tagret ##### for build_target in $BUILD_TARGETS do echo "Building $build_target" cd $WORK_DIR || exit 128 case $build_target in armeabi) TRIBLE="arm-linux-androideabi" OPTIONS="-mthumb -fPIC -latomic -D__ANDROID_API__=$API_LEVEL" DESTDIR="/tmp/$BUILD_DIR/armeabi" SSL_TARGET="android-arm" CC=clang ;; armeabi-v7a) TRIBLE="arm-linux-androideabi" OPTIONS="--target=armv7a-linux-androideabi -Wl,--fix-cortex-a8 -fPIC -D__ANDROID_MIN_SDK_VERSION__=$API_LEVEL " DESTDIR="/tmp/$BUILD_DIR/armeabi-v7a" SSL_TARGET="android-arm" CC=clang ;; x86) TRIBLE="i686-linux-android" OPTIONS="-fPIC -D__ANDROID_MIN_SDK_VERSION__=${API_LEVEL}" DESTDIR="/tmp/$BUILD_DIR/x86" SSL_TARGET="android-x86" CC=clang ;; x86_64) TRIBLE="x86_64-linux-android" OPTIONS="--static -static -ffunction-sections -fdata-sections -D__ANDROID_API__=${API_LEVEL} -Wno-macro-redefined" DESTDIR="/tmp/$BUILD_DIR/x86_64" SSL_TARGET="android-x86_64" CC=clang ;; arm64-v8a) TRIBLE="aarch64-linux-android" OPTIONS="--static -static -fPIC -D__ANDROID_API__=${API_LEVEL} -Wno-macro-redefined" DESTDIR="/tmp/$BUILD_DIR/arm64-v8a" SSL_TARGET="android-arm64" CC=clang ;; esac rm -rf $DESTDIR build_the_thing cd .. #### copy libraries and includes to output-directory ##### echo WORK_DIR=$WORK_DIR rm -rf deps/openssl/android/$build_target/ mkdir -p deps/openssl/android/$build_target/usr/local/include mkdir -p deps/openssl/android/$build_target/usr/local/lib/ cp -R $WORK_DIR/include/* deps/openssl/android/$build_target/usr/local/include/ cp $WORK_DIR/*.a deps/openssl/android/$build_target/usr/local/lib/ done echo Success