From 7d8cfb1feed400c87e62a1f55ec2d2611cdb470d Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 22 Sep 2020 10:28:31 -0700 Subject: [PATCH] more magic incantations to make crypto extensions work on Android/ARM64 --- java/jni/Android.mk | 4 +++- java/jni/Application.mk | 2 +- node/Constants.hpp | 2 +- node/Utils.cpp | 4 ++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/java/jni/Android.mk b/java/jni/Android.mk index 065416dd1..7aa9f41b7 100644 --- a/java/jni/Android.mk +++ b/java/jni/Android.mk @@ -11,13 +11,15 @@ LOCAL_C_INCLUDES := \ LOCAL_LDLIBS := -llog # LOCAL_CFLAGS := -g +APP_UNIFIED_HEADERS := true + LOCAL_CFLAGS := -DZT_USE_MINIUPNPC ifeq ($(TARGET_ARCH_ABI),x86_64) LOCAL_CXXFLAGS := -maes -mpclmul -msse4.1 endif ifeq ($(TARGET_ARCH_ABI),arm64-v8a) LOCAL_ARM_NEON := true - LOCAL_CXXFLAGS := -mfloat-abi=softfp -mfpu=neon + LOCAL_CXXFLAGS := -march=armv8-a+crypto -mfloat-abi=softfp -mfpu=neon -maes -isystem $NDK/sysroot/usr/include/$TRIPLE endif # ZeroTierOne SDK source files diff --git a/java/jni/Application.mk b/java/jni/Application.mk index 4fc50f73d..8613c15ee 100644 --- a/java/jni/Application.mk +++ b/java/jni/Application.mk @@ -1,5 +1,5 @@ # NDK_TOOLCHAIN_VERSION := clang3.5 APP_STL := c++_static APP_CPPFLAGS := -Wall -fstack-protector -fexceptions -fno-strict-aliasing -frtti -Wno-deprecated-register -DZT_NO_TYPE_PUNNING=1 -APP_PLATFORM := android-14 +APP_PLATFORM := android-21 APP_ABI := all diff --git a/node/Constants.hpp b/node/Constants.hpp index ccb7c4cf8..e4d197f41 100644 --- a/node/Constants.hpp +++ b/node/Constants.hpp @@ -114,7 +114,7 @@ #if (defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(ZT_ARCH_ARM_HAS_NEON)) -#if (defined(__APPLE__) && !defined(__LP64__)) || defined(__ANDROID__) +#if (defined(__APPLE__) && !defined(__LP64__)) || (defined(__ANDROID__) && defined(__arm__)) #ifdef ZT_ARCH_ARM_HAS_NEON #undef ZT_ARCH_ARM_HAS_NEON #endif diff --git a/node/Utils.cpp b/node/Utils.cpp index 57a3d6612..1acd5e1bf 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -46,6 +46,10 @@ #include #endif +#if defined(__ANDROID__) && defined(__aarch64__) +#include +#endif + namespace ZeroTier { const uint64_t Utils::ZERO256[4] = {0ULL,0ULL,0ULL,0ULL};