Use CMake instead of Autoconf tools in Android build script

And replace OpenSSL with MbedTLS
This commit is contained in:
Benau
2021-05-02 12:28:42 +08:00
parent 261932e7b1
commit f909d12749
3 changed files with 91 additions and 66 deletions

View File

@@ -11,42 +11,49 @@ include $(CLEAR_VARS)
# OGG
LOCAL_MODULE := ogg
LOCAL_SRC_FILES := obj/libogg/src/.libs/libogg.a
LOCAL_SRC_FILES := obj/libogg/libogg.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# Vorbis
LOCAL_MODULE := vorbis
LOCAL_SRC_FILES := obj/libvorbis/lib/.libs/libvorbis.a
LOCAL_SRC_FILES := obj/libvorbis/lib/libvorbis.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# Vorbisfile
LOCAL_MODULE := vorbisfile
LOCAL_SRC_FILES := obj/libvorbis/lib/.libs/libvorbisfile.a
LOCAL_SRC_FILES := obj/libvorbis/lib/libvorbisfile.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# CURL
LOCAL_MODULE := curl
LOCAL_SRC_FILES := obj/curl/lib/.libs/libcurl.a
LOCAL_SRC_FILES := obj/curl/lib/libcurl.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# libcrypto
LOCAL_MODULE := libcrypto
LOCAL_SRC_FILES := obj/openssl/libcrypto.a
# libmbedtls
LOCAL_MODULE := libmbedtls
LOCAL_SRC_FILES := obj/mbedtls/library/libmbedtls.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# libssl
LOCAL_MODULE := libssl
LOCAL_SRC_FILES := obj/openssl/libssl.a
# libmbedcrypto
LOCAL_MODULE := libmbedcrypto
LOCAL_SRC_FILES := obj/mbedtls/library/libmbedcrypto.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# libmbedx509
LOCAL_MODULE := libmbedx509
LOCAL_SRC_FILES := obj/mbedtls/library/libmbedx509.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
@@ -74,14 +81,14 @@ include $(CLEAR_VARS)
# Freetype
LOCAL_MODULE := freetype
LOCAL_SRC_FILES := obj/freetype/objs/.libs/libfreetype.a
LOCAL_SRC_FILES := obj/freetype/build/libfreetype.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
# Harfbuzz
LOCAL_MODULE := harfbuzz
LOCAL_SRC_FILES := obj/harfbuzz/src/.libs/libharfbuzz.a
LOCAL_SRC_FILES := obj/harfbuzz/build/libharfbuzz.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
@@ -276,12 +283,12 @@ LOCAL_CFLAGS := -I../lib/angelscript/include \
-Iobj/libogg/include \
-Iobj/libvorbis/include \
-Iobj/openal/include \
-Iobj/openssl/include \
-Iobj/mbedtls/include \
-DUSE_GLES2 \
-DMOBILE_STK \
-DENABLE_SOUND \
-DENABLE_IPV6 \
-DENABLE_CRYPTO_OPENSSL \
-DENABLE_CRYPTO_MBEDTLS \
-DNDEBUG \
-DDISABLE_ICONV \
-DANDROID_PACKAGE_NAME=\"$(PACKAGE_NAME)\" \
@@ -291,9 +298,10 @@ LOCAL_CFLAGS := -I../lib/angelscript/include \
LOCAL_CPPFLAGS := -std=gnu++0x
LOCAL_STATIC_LIBRARIES := irrlicht bullet enet ifaddrs angelscript mcpp SDL2 \
vorbisfile vorbis ogg openal curl libssl libcrypto \
c++_static sheenbidi harfbuzz freetype \
tinygettext graphics_utils graphics_engine
vorbisfile vorbis ogg openal curl libmbedtls \
libmbedcrypto libmbedx509 c++_static sheenbidi \
harfbuzz freetype tinygettext graphics_utils \
graphics_engine
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)

View File

@@ -363,15 +363,18 @@ fi
# Freetype bootstrap
if [ ! -f "$DIRNAME/obj/freetype_bootstrap.stamp" ]; then
echo "Compiling freetype"
mkdir -p "$DIRNAME/obj/freetype"
echo "Compiling freetype bootstrap"
mkdir -p "$DIRNAME/obj/freetype/build"
cp -a -f "$DIRNAME/../lib/freetype/"* "$DIRNAME/obj/freetype"
cd "$DIRNAME/obj/freetype"
ZLIB_CFLAGS="-I$DIRNAME/obj/zlib/" ZLIB_LIBS="$DIRNAME/obj/zlib/libz.a"\
LIBPNG_CFLAGS="-I$DIRNAME/obj/libpng/" LIBPNG_LIBS="$DIRNAME/obj/libpng/libpng.a"\
./configure --host=$HOST --enable-shared=no \
--without-harfbuzz --without-brotli --without-bzip2 &&
cd "$DIRNAME/obj/freetype/build"
cmake .. -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH \
-DZLIB_LIBRARY="$DIRNAME/obj/zlib/libz.a" \
-DZLIB_INCLUDE_DIR="$DIRNAME/obj/zlib/" \
-DPNG_LIBRARY="$DIRNAME/obj/libpng/libpng.a" \
-DPNG_PNG_INCLUDE_DIR="$DIRNAME/obj/libpng/" \
-DFT_WITH_HARFBUZZ=OFF -DFT_WITH_BZIP2=OFF \
-DFT_WITH_BROTLI=OFF -DFT_WITH_ZLIB=ON -DFT_WITH_PNG=ON &&
make $@
check_error
# We need to rebuild freetype after harfbuzz is compiled
@@ -381,15 +384,17 @@ fi
# Harfbuzz
if [ ! -f "$DIRNAME/obj/harfbuzz.stamp" ]; then
echo "Compiling harfbuzz"
mkdir -p "$DIRNAME/obj/harfbuzz"
mkdir -p "$DIRNAME/obj/harfbuzz/build"
cp -a -f "$DIRNAME/../lib/harfbuzz/"* "$DIRNAME/obj/harfbuzz"
cd "$DIRNAME/obj/harfbuzz"
FREETYPE_CFLAGS="-I$DIRNAME/obj/freetype/include" \
FREETYPE_LIBS="$DIRNAME/obj/freetype/objs/.libs/libfreetype.a $DIRNAME/obj/libpng/libpng.a $DIRNAME/obj/zlib/libz.a"\
./configure --host=$HOST --enable-shared=no \
--with-glib=no --with-gobject=no --with-cairo=no \
--with-fontconfig=no --with-icu=no --with-graphite2=no &&
cd "$DIRNAME/obj/harfbuzz/build"
cmake .. -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH -DBUILD_SHARED_LIBS=OFF \
-DFREETYPE_LIBRARY="$DIRNAME/obj/freetype/build/libfreetype.a $DIRNAME/obj/libpng/libpng.a $DIRNAME/obj/zlib/libz.a" \
-DFREETYPE_INCLUDE_DIRS="$DIRNAME/obj/freetype/include/" \
-DHB_HAVE_GLIB=OFF -DHB_HAVE_GOBJECT=OFF -DHB_HAVE_ICU=OFF \
-DHB_HAVE_FREETYPE=ON -DHB_BUILD_SUBSET=OFF \
-DCMAKE_C_FLAGS="-fpic" -DCMAKE_CXX_FLAGS="-std=gnu++0x -fpic" &&
make $@
check_error
mkdir -p "$DIRNAME/obj/harfbuzz/include/harfbuzz"
@@ -400,14 +405,18 @@ fi
# Freetype
if [ ! -f "$DIRNAME/obj/freetype.stamp" ]; then
echo "Compiling freetype"
mkdir -p "$DIRNAME/obj/freetype"
cp -a -f "$DIRNAME/../lib/freetype/"* "$DIRNAME/obj/freetype"
cd "$DIRNAME/obj/freetype"
ZLIB_CFLAGS="-fpic -I$DIRNAME/obj/zlib/" ZLIB_LIBS="$DIRNAME/obj/zlib/libz.a" \
LIBPNG_CFLAGS="-I$DIRNAME/obj/libpng/" LIBPNG_LIBS="$DIRNAME/obj/libpng/libpng.a" \
HARFBUZZ_CFLAGS="-I$DIRNAME/obj/harfbuzz/src/" HARFBUZZ_LIBS="$DIRNAME/obj/harfbuzz/src/.libs/libharfbuzz.a" \
./configure --host=$HOST --enable-shared=no --without-brotli --without-bzip2
cd "$DIRNAME/obj/freetype/build"
rm -rf *
cmake .. -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH \
-DZLIB_LIBRARY="$DIRNAME/obj/zlib/libz.a" \
-DZLIB_INCLUDE_DIR="$DIRNAME/obj/zlib/" \
-DPNG_LIBRARY="$DIRNAME/obj/libpng/libpng.a" \
-DPNG_PNG_INCLUDE_DIR="$DIRNAME/obj/libpng/" \
-DHARFBUZZ_LIBRARIES="$DIRNAME/obj/harfbuzz/build/libharfbuzz.a" \
-DHARFBUZZ_INCLUDE_DIRS="$DIRNAME/obj/harfbuzz/src/" \
-DFT_WITH_HARFBUZZ=ON -DFT_WITH_BZIP2=OFF \
-DFT_WITH_BROTLI=OFF -DFT_WITH_ZLIB=ON -DFT_WITH_PNG=ON &&
make $@
check_error
touch "$DIRNAME/obj/freetype.stamp"
@@ -424,26 +433,27 @@ if [ ! -f "$DIRNAME/obj/openal.stamp" ]; then
-DHOST=$HOST -DARCH=$ARCH \
-DALSOFT_UTILS=0 \
-DALSOFT_EXAMPLES=0 \
-DALSOFT_TESTS=0 \
-DLIBTYPE=STATIC &&
-DALSOFT_TESTS=0 -DLIBTYPE=STATIC \
-DCMAKE_C_FLAGS="-fpic" -DCMAKE_CXX_FLAGS="-fpic" &&
make $@
check_error
touch "$DIRNAME/obj/openal.stamp"
fi
# OpenSSL
if [ ! -f "$DIRNAME/obj/openssl.stamp" ]; then
echo "Compiling openssl"
mkdir -p "$DIRNAME/obj/openssl"
cp -a -f "$DIRNAME/../lib/openssl/"* "$DIRNAME/obj/openssl"
# MbedTLS
if [ ! -f "$DIRNAME/obj/mbedtls.stamp" ]; then
echo "Compiling mbedtls"
mkdir -p "$DIRNAME/obj/mbedtls"
cp -a -f "$DIRNAME/../lib/mbedtls/"* "$DIRNAME/obj/mbedtls"
cd "$DIRNAME/obj/openssl"
export ANDROID_NDK_HOME="$DIRNAME/obj/"
./Configure android-$ARCH
cd "$DIRNAME/obj/mbedtls"
cmake . -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH -DBUILD_SHARED_LIBS=OFF \
-DENABLE_TESTING=OFF -DENABLE_PROGRAMS=OFF \
-DCMAKE_C_FLAGS="-fpic" &&
make $@
unset ANDROID_NDK_HOME
check_error
touch "$DIRNAME/obj/openssl.stamp"
touch "$DIRNAME/obj/mbedtls.stamp"
fi
# Curl
@@ -453,13 +463,20 @@ if [ ! -f "$DIRNAME/obj/curl.stamp" ]; then
cp -a -f "$DIRNAME/../lib/curl/"* "$DIRNAME/obj/curl"
cd "$DIRNAME/obj/curl"
CPPFLAGS="-I$DIRNAME/obj/openssl/include -I$DIRNAME/obj/zlib $CPPFLAGS" \
LDFLAGS="-L$DIRNAME/obj/openssl/ -L$DIRNAME/obj/zlib $LDFLAGS" \
./configure --host=$HOST \
--with-ssl \
--disable-shared \
--enable-static \
--enable-threaded-resolver &&
cmake . -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH -DBUILD_SHARED_LIBS=OFF \
-DZLIB_LIBRARY="$DIRNAME/obj/zlib/libz.a" \
-DZLIB_INCLUDE_DIR="$DIRNAME/obj/zlib/" \
-DMBEDCRYPTO_LIBRARY="$DIRNAME/obj/mbedtls/library/libmbedcrypto.a" \
-DMBEDTLS_LIBRARY="$DIRNAME/obj/mbedtls/library/libmbedtls.a" \
-DMBEDX509_LIBRARY="$DIRNAME/obj/mbedtls/library/libmbedx509.a" \
-DMBEDTLS_INCLUDE_DIRS="$DIRNAME/obj/mbedtls/include/" \
-DBUILD_TESTING=OFF -DBUILD_CURL_EXE=OFF \
-DCMAKE_USE_MBEDTLS=ON -DUSE_ZLIB=ON -DCMAKE_USE_OPENSSL=OFF \
-DCMAKE_USE_LIBSSH=OFF -DCMAKE_USE_LIBSSH2=OFF \
-DCMAKE_USE_GSSAPI=OFF -DUSE_NGHTTP2=OFF -DUSE_QUICHE=OFF \
-DHTTP_ONLY=ON -DCURL_CA_BUNDLE=none -DCURL_CA_PATH=none \
-DENABLE_THREADED_RESOLVER=ON &&
make $@
check_error
touch "$DIRNAME/obj/curl.stamp"
@@ -486,8 +503,8 @@ if [ ! -f "$DIRNAME/obj/libogg.stamp" ]; then
cp -a -f "$DIRNAME/../lib/libogg/"* "$DIRNAME/obj/libogg"
cd "$DIRNAME/obj/libogg"
CPPFLAGS="-fpic $CPPFLAGS" \
./configure --host=$HOST &&
cmake . -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH -DCMAKE_C_FLAGS="-fpic" &&
make $@
check_error
touch "$DIRNAME/obj/libogg.stamp"
@@ -500,11 +517,10 @@ if [ ! -f "$DIRNAME/obj/libvorbis.stamp" ]; then
cp -a -f "$DIRNAME/../lib/libvorbis/"* "$DIRNAME/obj/libvorbis"
cd "$DIRNAME/obj/libvorbis"
CPPFLAGS="-fpic -I$DIRNAME/obj/libogg/include $CPPFLAGS" \
LDFLAGS="-L$DIRNAME/obj/libogg/src/.libs -lm $LDFLAGS" \
./configure --host=$HOST &&
sed -i '/#define size_t/d' config.h
sed -i 's/-mno-ieee-fp//' lib/Makefile
cmake . -DCMAKE_TOOLCHAIN_FILE=../../../cmake/Toolchain-android.cmake \
-DHOST=$HOST -DARCH=$ARCH -DCMAKE_C_FLAGS="-fpic" \
-DOGG_LIBRARY="$DIRNAME/obj/libogg/libogg.a" \
-DOGG_INCLUDE_DIR="$DIRNAME/obj/libogg/include" &&
make $@
check_error
touch "$DIRNAME/obj/libvorbis.stamp"