#!/bin/bash # # http://wiki.openssl.org/index.php/Android # # needs ANDROID_NDK_ROOT set correctly (e.g. to /opt/android/android-ndk-r15c) set -e rm -rf prebuilt mkdir prebuilt archs=(arm64 x86_64) for arch in ${archs[@]}; do xLIB="/lib" case ${arch} in "arm") _ANDROID_TARGET_SELECT=arch-arm _ANDROID_ARCH=arch-arm _ANDROID_EABI=arm-linux-androideabi-4.9 _ANDROID_EABI_INC=arm-linux-androideabi configure_platform="android-armv7" ;; "arm64") _ANDROID_TARGET_SELECT=arch-arm64-v8a _ANDROID_ARCH=arch-arm64 _ANDROID_EABI=aarch64-linux-android-4.9 _ANDROID_EABI_INC=aarch64-linux-android configure_platform="linux-generic64 -DB_ENDIAN" ;; "x86_64") _ANDROID_TARGET_SELECT=arch-x86_64 _ANDROID_ARCH=arch-x86_64 _ANDROID_EABI=x86_64-4.9 _ANDROID_EABI_INC=x86_64-linux-android xLIB="/lib64" configure_platform="linux-generic64" ;; *) configure_platform="linux-elf" ;; esac mkdir prebuilt/${arch} . ./setenv-android-mod.sh echo "CROSS COMPILE ENV : $CROSS_COMPILE" cd openssl-OpenSSL_1_0_2l xCFLAGS="-DSHARED_EXTENSION=.so -fPIC -DOPENSSL_PIC -DDSO_DLFCN -DHAVE_DLFCN_H -mandroid \ -I$ANDROID_NDK_ROOT/sysroot/usr/include \ -I$ANDROID_NDK_ROOT/sysroot/usr/include/$_ANDROID_EABI_INC \ -I$ANDROID_DEV/include \ -B$ANDROID_DEV/$xLIB -O -fomit-frame-pointer -W" perl -pi -e 's/install: all install_docs install_sw/install: install_docs install_sw/g' Makefile.org ./Configure shared no-threads no-asm no-zlib no-ssl2 no-ssl3 no-comp no-hw no-engine \ -D__ANDROID_API__=21 $configure_platform $xCFLAGS # patch SONAME perl -pi -e 's/SHLIB_EXT=\.so\.\$\(SHLIB_MAJOR\)\.\$\(SHLIB_MINOR\)/SHLIB_EXT=\.so/g' Makefile perl -pi -e 's/SHARED_LIBS_LINK_EXTS=\.so\.\$\(SHLIB_MAJOR\) \.so//g' Makefile # quote injection for proper SONAME, fuck... perl -pi -e 's/SHLIB_MAJOR=1/SHLIB_MAJOR=`/g' Makefile perl -pi -e 's/SHLIB_MINOR=0.0/SHLIB_MINOR=`/g' Makefile make clean echo "building openssl for ${arch}..." make depend -j $NPROC > /dev/null 2>&1 make all -j $NPROC > /dev/null 2>&1 file libcrypto.so file libssl.so cp libcrypto.a libcrypto.so ../prebuilt/${arch} cp libssl.a libssl.so ../prebuilt/${arch} cd .. done exit 0