Files
commandergenius/project/jni/openssl/compile.sh
2024-04-05 21:02:11 +01:00

105 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
if [ -z "$ARCH_LIST" ] || [ "$ARCH_LIST" = "all" ]; then
ARCH_LIST="arm64-v8a armeabi-v7a x86_64 x86"
fi
PARALLEL=false
mkdir -p build
build() {
ARCH=$1
NO_ASM=""
case $ARCH in
armeabi-v7a)
#NO_ASM="-DOPENSSL_NO_ASM=1" # Assembler in OpenSSL is broken when using clang
export CONFIGURE_ARCH=android-arm
;;
x86)
export CONFIGURE_ARCH=android-x86
;;
arm64-v8a)
export CONFIGURE_ARCH=android-arm64
;;
x86_64)
#NO_ASM="-DOPENSSL_NO_ASM=1" # Assembler in OpenSSL is broken when using clang
export CONFIGURE_ARCH=android64-x86_64 # No-asm variant
;;
*)
echo "Arch $ARCH not defined"
exit 1;;
esac
rm -rf build/$ARCH
mkdir -p build/$ARCH
cd build/$ARCH
tar -x -v -z -f ../../openssl-1.1.1j.tar.gz --strip=1
patch -p1 < ../../config.patch || exit 1
env LDFLAGS="-shared -landroid -llog" \
CFLAGS="$NO_ASM" \
../../setCrossEnvironment-$ARCH.sh \
sh -c '
ln -s $AR `basename -s -clang $CC`-ar
export PATH=`pwd`:`dirname $CC`:$PATH
export ANDROID_NDK_HOME=`dirname $CC`/..
export CC=clang
export AR=ar
./Configure shared zlib --prefix=`pwd`/dist --openssldir=. $CONFIGURE_ARCH -fPIC' \
|| exit 1
sed -i.old 's/^CNF_CPPFLAGS=.*/CNF_CPPFLAGS=/' Makefile
sed -i.old 's/^CNF_CFLAGS=.*/CNF_CFLAGS=/' Makefile
sed -i.old 's/^CNF_CXXFLAGS=.*/CNF_CXXFLAGS=/' Makefile
sed -i.old 's/^CNF_LDFLAGS=.*/CNF_LDFLAGS=/' Makefile
sed -i.old 's/^SHLIB_VERSION_NUMBER=.*/SHLIB_VERSION_NUMBER=sdl.1.so/' Makefile
if [ "$ARCH" = armeabi-v7a ]; then
sed -i.old 's/-DPOLY1305_ASM //' Makefile
sed -i.old 's@crypto/poly1305/poly1305-armv4.S @@' Makefile
sed -i.old 's@crypto/poly1305/poly1305-armv4.o @@' Makefile
fi
env LDFLAGS="-shared -landroid -llog" \
CFLAGS="$NO_ASM" \
../../setCrossEnvironment-$ARCH.sh \
sh -c '
export PATH=`pwd`:`dirname $CC`:$PATH
make -j8' \
|| exit 1
cd ../..
rm -rf lib/$ARCH
mkdir -p lib/$ARCH
cp build/$ARCH/libcrypto.so.sdl.1.so lib/${ARCH}/libcrypto.so.sdl.1.so || exit 1
cp build/$ARCH/libssl.so.sdl.1.so lib/${ARCH}/libssl.so.sdl.1.so || exit 1
}
if $PARALLEL; then
PIDS=""
for ARCH in $ARCH_LIST; do
build $ARCH &
PIDS="$PIDS $!"
done
for PID in $PIDS; do
wait $PID || exit 1
done
else
for ARCH in $ARCH_LIST; do
build $ARCH || exit 1
done
fi
FIRSTARCH=`echo $ARCH_LIST | sed 's/ .*//'`
rm -rf include
echo "cp -r -L build/$FIRSTARCH/include ./"
cp -r -L build/$FIRSTARCH/include ./ || exit 1
patch -p1 < opensslconf.h.patch || exit 1
rm -rf build