diff --git a/project/jni/Makefile.prebuilt b/project/jni/Makefile.prebuilt index 97548c6e8..8747d16c0 100644 --- a/project/jni/Makefile.prebuilt +++ b/project/jni/Makefile.prebuilt @@ -2,14 +2,14 @@ # TODO: libboost, libffmpeg, libpython (used only in GemRB) ARCHES32 := armeabi armeabi-v7a x86 mips -ARCHES64 := arm64-v8a x86_64 +ARCHES64 := arm64-v8a ICONV := $(foreach ARCH, $(ARCHES32), iconv/lib/$(ARCH)/libiconv.so iconv/lib/$(ARCH)/libcharset.so) ICU_LIBS := data i18n io le lx test tu uc ICU := $(foreach ARCH, $(ARCHES32), $(foreach NAME, $(ICU_LIBS), icuuc/lib/$(ARCH)/libicu$(NAME).a)) -OPENSSL := $(foreach ARCH, $(ARCHES32), openssl/lib-$(ARCH)/libcrypto.so.sdl.0.so openssl/lib-$(ARCH)/libssl.so.sdl.0.so) +OPENSSL := $(foreach ARCH, $(ARCHES32) $(ARCHES64), openssl/lib-$(ARCH)/libcrypto.so.sdl.0.so openssl/lib-$(ARCH)/libssl.so.sdl.0.so) LIBS := $(ICONV) $(ICU) $(OPENSSL) diff --git a/project/jni/application/openarena/engine b/project/jni/application/openarena/engine index 9c91a7bd6..3c94b5df0 160000 --- a/project/jni/application/openarena/engine +++ b/project/jni/application/openarena/engine @@ -1 +1 @@ -Subproject commit 9c91a7bd694ccd05f74cd4dfb72991aa93526a30 +Subproject commit 3c94b5df06ffe8755ce213a495ee99283714f3c1 diff --git a/project/jni/application/openarena/vm b/project/jni/application/openarena/vm index ed024e7fc..84ebfb59e 160000 --- a/project/jni/application/openarena/vm +++ b/project/jni/application/openarena/vm @@ -1 +1 @@ -Subproject commit ed024e7fcf04b0345c3ff861fa6c8f11a2f3a912 +Subproject commit 84ebfb59e31c24134b865cbe0d0fa1eb7aa7c57d diff --git a/project/jni/application/xserver/pulseaudio b/project/jni/application/xserver/pulseaudio index f04d54127..37ce31ed3 160000 --- a/project/jni/application/xserver/pulseaudio +++ b/project/jni/application/xserver/pulseaudio @@ -1 +1 @@ -Subproject commit f04d541277106e3310e4da6f84ebf4a8d2cb54ef +Subproject commit 37ce31ed32cf34fcb2f2fdbda40b6f24a9dd3424 diff --git a/project/jni/application/xserver/xserver b/project/jni/application/xserver/xserver index ad7ad4873..6ea1ce707 160000 --- a/project/jni/application/xserver/xserver +++ b/project/jni/application/xserver/xserver @@ -1 +1 @@ -Subproject commit ad7ad4873dcf38f8581145e4578a011d0cda6483 +Subproject commit 6ea1ce707be8ae1b5260bf7c5e36db568c7431c9 diff --git a/project/jni/openssl/compile.sh b/project/jni/openssl/compile.sh index bba8faa58..5aab72da9 100755 --- a/project/jni/openssl/compile.sh +++ b/project/jni/openssl/compile.sh @@ -1,6 +1,6 @@ #!/bin/sh -ARCH_LIST="x86 mips armeabi-v7a armeabi" +ARCH_LIST="arm64-v8a x86 mips armeabi-v7a armeabi" mkdir -p build @@ -11,6 +11,8 @@ build() { CONFIGURE_ARCH=android-armv7;; armeabi) CONFIGURE_ARCH=android;; + arm64-v8a) + CONFIGURE_ARCH=android;; *) CONFIGURE_ARCH=android-$ARCH;; esac diff --git a/project/jni/openssl/lib-arm64-v8a/libcrypto.so.sdl.0.so b/project/jni/openssl/lib-arm64-v8a/libcrypto.so.sdl.0.so new file mode 100755 index 000000000..966c195c3 Binary files /dev/null and b/project/jni/openssl/lib-arm64-v8a/libcrypto.so.sdl.0.so differ diff --git a/project/jni/openssl/lib-arm64-v8a/libssl.so.sdl.0.so b/project/jni/openssl/lib-arm64-v8a/libssl.so.sdl.0.so new file mode 100755 index 000000000..644e003d5 Binary files /dev/null and b/project/jni/openssl/lib-arm64-v8a/libssl.so.sdl.0.so differ diff --git a/project/jni/openssl/setCrossEnvironment-arm64-v8a.sh b/project/jni/openssl/setCrossEnvironment-arm64-v8a.sh new file mode 100755 index 000000000..0d2a76716 --- /dev/null +++ b/project/jni/openssl/setCrossEnvironment-arm64-v8a.sh @@ -0,0 +1,81 @@ +#!/bin/sh + +IFS=' +' + +MYARCH=linux-x86_64 +if uname -s | grep -i "linux" > /dev/null ; then + MYARCH=linux-x86_64 +fi +if uname -s | grep -i "darwin" > /dev/null ; then + MYARCH=darwin-x86_64 +fi +if uname -s | grep -i "windows" > /dev/null ; then + MYARCH=windows-x86_64 +fi + +NDK=`which ndk-build` +NDK=`dirname $NDK` +NDK=`readlink -f $NDK` + +[ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } +GCCPREFIX=aarch64-linux-android +GCCVER=${GCCVER:-4.9} +PLATFORMVER=${PLATFORMVER:-android-24} +LOCAL_PATH=`dirname $0` +if which realpath > /dev/null ; then + LOCAL_PATH=`realpath $LOCAL_PATH` +else + LOCAL_PATH=`cd $LOCAL_PATH && pwd` +fi +ARCH=arm64-v8a + +CFLAGS="\ +-fpic -ffunction-sections -funwind-tables -fstack-protector-strong \ +-no-canonical-prefixes \ +-O2 -g -DNDEBUG \ +-fomit-frame-pointer -fno-strict-aliasing -finline-limit=300 \ +-DANDROID -Wall -Wno-unused -Wa,--noexecstack -Wformat -Werror=format-security \ +-isystem$NDK/platforms/$PLATFORMVER/arch-arm64/usr/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/include \ +-isystem$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH/include \ +$CFLAGS" + +UNRESOLVED="-Wl,--no-undefined" +SHARED="-Wl,--gc-sections -Wl,-z,nocopyreloc" +if [ -n "$BUILD_LIBRARY" ]; then + [ -z "$SHARED_LIBRARY_NAME" ] && SHARED_LIBRARY_NAME=libapplication.so + SHARED="-shared -Wl,-soname,$SHARED_LIBRARY_NAME" +fi +if [ -n "$ALLOW_UNRESOLVED_SYMBOLS" ]; then + UNRESOLVED= +fi + +LDFLAGS="\ +$SHARED \ +--sysroot=$NDK/platforms/$PLATFORMVER/arch-arm64 \ +-L$NDK/platforms/$PLATFORMVER/arch-arm64/usr/lib \ +-lc -lm -ldl -lz \ +-L$NDK/sources/cxx-stl/gnu-libstdc++/$GCCVER/libs/$ARCH \ +-lgnustl_static \ +-no-canonical-prefixes $UNRESOLVED -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now \ +-Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings \ +-lsupc++ \ +$LDFLAGS" + +env PATH=$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin:$LOCAL_PATH:$PATH \ +ANDROID_DEV=$NDK/platforms/$PLATFORMVER/arch-arm64/usr \ +CFLAGS="$CFLAGS" \ +CXXFLAGS="$CXXFLAGS $CFLAGS" \ +LDFLAGS="$LDFLAGS" \ +CC="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-gcc" \ +CXX="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-g++" \ +RANLIB="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ranlib" \ +LD="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ld" \ +AR="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-ar" \ +CPP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp $CFLAGS" \ +CXXCPP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-cpp -x c++ $CFLAGS" \ +NM="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-nm" \ +AS="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-as" \ +STRIP="$NDK/toolchains/$GCCPREFIX-$GCCVER/prebuilt/$MYARCH/bin/$GCCPREFIX-strip" \ +"$@" diff --git a/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh b/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh index 28fb0d818..e5b3c84b3 100755 --- a/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh +++ b/project/jni/openssl/setCrossEnvironment-armeabi-v7a.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=arm-linux-androideabi GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/openssl/setCrossEnvironment-armeabi.sh b/project/jni/openssl/setCrossEnvironment-armeabi.sh index 3064289c5..ce79ba52b 100755 --- a/project/jni/openssl/setCrossEnvironment-armeabi.sh +++ b/project/jni/openssl/setCrossEnvironment-armeabi.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=arm-linux-androideabi GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/openssl/setCrossEnvironment-mips.sh b/project/jni/openssl/setCrossEnvironment-mips.sh index cf265a446..07167a7bb 100755 --- a/project/jni/openssl/setCrossEnvironment-mips.sh +++ b/project/jni/openssl/setCrossEnvironment-mips.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=mipsel-linux-android GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH` diff --git a/project/jni/openssl/setCrossEnvironment-x86.sh b/project/jni/openssl/setCrossEnvironment-x86.sh index c14d3ef91..62763d202 100755 --- a/project/jni/openssl/setCrossEnvironment-x86.sh +++ b/project/jni/openssl/setCrossEnvironment-x86.sh @@ -21,7 +21,7 @@ NDK=`readlink -f $NDK` [ -z "$NDK" ] && { echo "You need Andorid NDK r8 or newer installed to run this script" ; exit 1 ; } GCCPREFIX=i686-linux-android GCCVER=${GCCVER:-4.9} -PLATFORMVER=${PLATFORMVER:-android-14} +PLATFORMVER=${PLATFORMVER:-android-24} LOCAL_PATH=`dirname $0` if which realpath > /dev/null ; then LOCAL_PATH=`realpath $LOCAL_PATH`