tildefriends/tools/ssl-android

136 lines
3.7 KiB
Bash
Executable File

#!/bin/sh
ANDROID_NDK=~/Android/Sdk/ndk/23.1.7779620
OPENSSL_VERSION=3.2.0
API_LEVEL=24
BUILD_DIR=out/openssl_android_build
BUILD_TARGETS="x86_64 x86 arm64-v8a armeabi-v7a"
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
export GLOBAL_OPTIONS="
no-apps
no-asm
no-async
no-autoerrinit
no-cmp
no-cms
no-comp
no-deprecated
no-dgram
no-docs
no-dsa
no-dso
no-dtls
no-dynamic-engine
no-ec2m
no-egd
no-engine
no-err
no-filenames
no-gost
no-http
no-idea
no-legacy
no-md2
no-md4
no-module
no-multiblock
no-nextprotoneg
no-ocsp
no-psk
no-shared
no-sock
no-srp
no-ssl3
no-ssl-trace
no-stdio
no-tests
no-thread-pool
no-threads
no-trace
no-ui-console
no-uplink
no-weak-ssl-ciphers
no-zlib
-Os
-DOPENSSL_SMALL_FOOTPRINT"
echo "./Configure $SSL_TARGET $OPTIONS $GLOBAL_OPTIONS -fuse-ld=$TOOLCHAIN/bin/ld" && \
./Configure $SSL_TARGET $OPTIONS $GLOBAL_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-v7a)
TRIBLE="arm-linux-androideabi"
OPTIONS="--target=armv7a-linux-androideabi -ffunction-sections -fdata-sections -Wl,--fix-cortex-a8 -fPIC -D__ANDROID_API__=$API_LEVEL -Wno-macro-redefined"
DESTDIR="/tmp/$BUILD_DIR/armeabi-v7a"
SSL_TARGET="android-arm"
CC=clang
;;
x86)
TRIBLE="i686-linux-android"
OPTIONS="-fPIC -ffunction-sections -fdata-sections -D__ANDROID_API__=${API_LEVEL} -Wno-macro-redefined"
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 -ffunction-sections -fdata-sections -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