From cdf248b1e2333f914fcecb8dabc651914f2a65d7 Mon Sep 17 00:00:00 2001 From: Brenton Bostick Date: Mon, 5 Dec 2022 09:56:13 -0500 Subject: [PATCH 1/3] Fix build problem related to unified headers Since NDKr15 (released 2017), unified headers are used by default [1] Remove -isystem option that was passing bad values to command-line. The actual value being passed to command-line was: ``` -isystem DK/sysroot/usr/include/RIPLE ``` because of using $NDK and $TRIPLE instead of $(NDK) and $(TRIPLE) But regardless, $NDK and $TRIPLE were never actually defined values and were just place-holders mentioned in [1] [1] https://android.googlesource.com/platform/ndk/+/ndk-release-r16/docs/UnifiedHeaders.md --- java/jni/Android.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java/jni/Android.mk b/java/jni/Android.mk index 952bc4328..9f3434b7d 100644 --- a/java/jni/Android.mk +++ b/java/jni/Android.mk @@ -11,15 +11,13 @@ 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 -msse3 -msse4.1 endif ifeq ($(TARGET_ARCH_ABI),arm64-v8a) LOCAL_ARM_NEON := true - LOCAL_CXXFLAGS := -march=armv8-a+crypto -mfloat-abi=softfp -mfpu=neon -maes -isystem $NDK/sysroot/usr/include/$TRIPLE + LOCAL_CXXFLAGS := -march=armv8-a+crypto -mfloat-abi=softfp -mfpu=neon -maes endif # ZeroTierOne SDK source files From 475281935ec1026ac7a5d4349071e1bbe1e30fd5 Mon Sep 17 00:00:00 2001 From: Brenton Bostick Date: Mon, 5 Dec 2022 10:08:01 -0500 Subject: [PATCH 2/3] Remove unused flags for arm64-v8a Through using ndk-build, -Wno-unused-command-line-argument is passed in somewhere in the pipeline and hides this warning. The warning can be turned on with: APP_CPPFLAGS := -Wunused-command-line-argument ... and then when building, you can see: C/C++: clang++: warning: argument unused during compilation: '-mfloat-abi=softfp' [-Wunused-command-line-argument] C/C++: clang++: warning: argument unused during compilation: '-mfpu=neon' [-Wunused-command-line-argument] C/C++: clang++: warning: argument unused during compilation: '-maes' [-Wunused-command-line-argument] These are unused because both floating-point and NEON are required in all standard ARMv8 implementations. [1] [2] [1] https://developer.arm.com/documentation/den0024/a/AArch64-Floating-point-and-NEON [2] https://stackoverflow.com/a/29891469 --- java/jni/Android.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/java/jni/Android.mk b/java/jni/Android.mk index 9f3434b7d..c2e51e2f0 100644 --- a/java/jni/Android.mk +++ b/java/jni/Android.mk @@ -16,8 +16,7 @@ ifeq ($(TARGET_ARCH_ABI),x86_64) LOCAL_CXXFLAGS := -maes -mpclmul -msse3 -msse4.1 endif ifeq ($(TARGET_ARCH_ABI),arm64-v8a) - LOCAL_ARM_NEON := true - LOCAL_CXXFLAGS := -march=armv8-a+crypto -mfloat-abi=softfp -mfpu=neon -maes + LOCAL_CXXFLAGS := -march=armv8-a+crypto endif # ZeroTierOne SDK source files From 77c7f9133f1530580978e676bf56b18126a5ccc6 Mon Sep 17 00:00:00 2001 From: Brenton Bostick Date: Mon, 5 Dec 2022 10:08:26 -0500 Subject: [PATCH 3/3] Migrate from ndk-build to CMake --- java/jni/Android.mk | 63 ----------------------------------------- java/jni/Application.mk | 5 ---- 2 files changed, 68 deletions(-) delete mode 100644 java/jni/Android.mk delete mode 100644 java/jni/Application.mk diff --git a/java/jni/Android.mk b/java/jni/Android.mk deleted file mode 100644 index c2e51e2f0..000000000 --- a/java/jni/Android.mk +++ /dev/null @@ -1,63 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := ZeroTierOneJNI -LOCAL_C_INCLUDES := \ - $(ZT1)/include \ - $(ZT1)/node \ - $(ZT1)/osdep - -LOCAL_LDLIBS := -llog -# LOCAL_CFLAGS := -g - -LOCAL_CFLAGS := -DZT_USE_MINIUPNPC -ifeq ($(TARGET_ARCH_ABI),x86_64) - LOCAL_CXXFLAGS := -maes -mpclmul -msse3 -msse4.1 -endif -ifeq ($(TARGET_ARCH_ABI),arm64-v8a) - LOCAL_CXXFLAGS := -march=armv8-a+crypto -endif - -# ZeroTierOne SDK source files -LOCAL_SRC_FILES := \ - $(ZT1)/node/AES.cpp \ - $(ZT1)/node/AES_aesni.cpp \ - $(ZT1)/node/AES_armcrypto.cpp \ - $(ZT1)/node/Bond.cpp \ - $(ZT1)/node/C25519.cpp \ - $(ZT1)/node/Capability.cpp \ - $(ZT1)/node/CertificateOfMembership.cpp \ - $(ZT1)/node/CertificateOfOwnership.cpp \ - $(ZT1)/node/Identity.cpp \ - $(ZT1)/node/IncomingPacket.cpp \ - $(ZT1)/node/InetAddress.cpp \ - $(ZT1)/node/Membership.cpp \ - $(ZT1)/node/Multicaster.cpp \ - $(ZT1)/node/Network.cpp \ - $(ZT1)/node/NetworkConfig.cpp \ - $(ZT1)/node/Node.cpp \ - $(ZT1)/node/OutboundMulticast.cpp \ - $(ZT1)/node/Packet.cpp \ - $(ZT1)/node/Path.cpp \ - $(ZT1)/node/Peer.cpp \ - $(ZT1)/node/Poly1305.cpp \ - $(ZT1)/node/Revocation.cpp \ - $(ZT1)/node/Salsa20.cpp \ - $(ZT1)/node/SelfAwareness.cpp \ - $(ZT1)/node/SHA512.cpp \ - $(ZT1)/node/Switch.cpp \ - $(ZT1)/node/Tag.cpp \ - $(ZT1)/node/Topology.cpp \ - $(ZT1)/node/Trace.cpp \ - $(ZT1)/node/Utils.cpp \ - $(ZT1)/osdep/OSUtils.cpp - -# JNI Files -LOCAL_SRC_FILES += \ - com_zerotierone_sdk_Node.cpp \ - ZT_jniarray.cpp \ - ZT_jniutils.cpp \ - ZT_jnilookup.cpp - -include $(BUILD_SHARED_LIBRARY) \ No newline at end of file diff --git a/java/jni/Application.mk b/java/jni/Application.mk deleted file mode 100644 index 7980d8c27..000000000 --- a/java/jni/Application.mk +++ /dev/null @@ -1,5 +0,0 @@ -# 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 -DZT_SSO_SUPPORTED=0 -DOMIT_JSON_SUPPORT=1 -APP_PLATFORM := android-21 -APP_ABI := all