diff --git a/.gitignore b/.gitignore index e77e1c521..61ecfa5b6 100644 --- a/.gitignore +++ b/.gitignore @@ -82,5 +82,6 @@ lib/openal lib/openssl lib/harfbuzz lib/sdl2 +lib/mbedtls .DS_Store diff --git a/android/Android.mk b/android/Android.mk index 88f9e67f6..de9fed69d 100644 --- a/android/Android.mk +++ b/android/Android.mk @@ -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) diff --git a/android/make.sh b/android/make.sh index 7119e42d1..cd75033a0 100755 --- a/android/make.sh +++ b/android/make.sh @@ -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"