Browse Source

JNI-81: Arm64 first approach

JNI-88
Hussein Kasem 6 years ago
parent
commit
484c7a4a1f
  1. 4
      android/build.gradle
  2. 7
      android/external/Makefile
  3. 5
      android/external/Makefile.conf
  4. 22
      android/external/arm64-v8a/Makefile
  5. 1
      android/external/armeabi-v7a/Makefile
  6. 2
      src/jniutils.cc

4
android/build.gradle

@ -4,7 +4,7 @@ def pEpEngineSrc = hasProperty('pEpEngineSrc') ? pEpEngineSrc : "../../pEpEngine
def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true" def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true"
def pEpAppPackageName = hasProperty('pEpAppPackageName') ? pEpAppPackageName : "pep.android.k9" def pEpAppPackageName = hasProperty('pEpAppPackageName') ? pEpAppPackageName : "pep.android.k9"
def libetpanAndroid = file('external/libetpan/build-android') def libetpanAndroid = file('external')
def pEpEngineDB = new File(new File(pEpEngineSrc), 'db') def pEpEngineDB = new File(new File(pEpEngineSrc), 'db')
@ -39,7 +39,7 @@ android {
externalNativeBuild { externalNativeBuild {
ndkBuild { ndkBuild {
abiFilters "armeabi-v7a" //abiFilters "armeabi-v7a"
//abiFilters ["armeabi-v7a"] //abiFilters ["armeabi-v7a"]
//abiFilters ["arm64-v8a, armeabi-v7a"] //abiFilters ["arm64-v8a, armeabi-v7a"]
} }

7
android/external/Makefile

@ -21,12 +21,15 @@ endif
.PHONY: all build clean .PHONY: all build clean
all: build
build: build:
$(MAKE) -C armeabi-v7a $(MAKE) -C armeabi-v7a
$(MAKE) -C arm64-v8a
all: build
clean: clean:
$(MAKE) -C armeabi-v7a clean $(MAKE) -C armeabi-v7a clean
$(MAKE) -C arm64-v8a clean
assets: assets:

5
android/external/Makefile.conf

@ -13,4 +13,7 @@ else
SED=sed SED=sed
endif endif
### ### Sequoia deps versions
OPENSSL_VERSION=1.1.1b
GMP_VERSION=6.1.2
NETTLE_VERSION=3.4.1

22
android/external/arm64-v8a/Makefile

@ -1,5 +1,5 @@
# Copyright 2019, pEp Foundation # Copyright 2019, pEp Foundation
# This file is part of pEpJNIAdapter for Android - ARMv7 build # This file is part of pEpJNIAdapter for Android - ARM64 v8a build
# This file may be used under the terms of the GNU General Public License version 3 # This file may be used under the terms of the GNU General Public License version 3
# see LICENSE.txt # see LICENSE.txt
@ -18,7 +18,7 @@ include ../Makefile.conf
APP_ABI ?= arm64-v8a APP_ABI ?= arm64-v8a
ANDROID_API ?= 21 ANDROID_API ?= 21
all: build assets all: build
build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build
@ -56,6 +56,7 @@ LD := $(ANDROID_NDK_HOME)/bin/$(HOST)-ld
AR := $(ANDROID_NDK_HOME)/bin/$(HOST)-ar AR := $(ANDROID_NDK_HOME)/bin/$(HOST)-ar
AS := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang AS := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang
CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang
CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang
CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++ CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++
RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib
STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip
@ -147,6 +148,7 @@ EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD
libetpan/Makefile: libetpan.src.stamp | libiconv-install libetpan/Makefile: libetpan.src.stamp | libiconv-install
cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh
mv libetpan/build-android/libetpan-android-1.zip ../
touch $@ touch $@
libetpan-build: libetpan/Makefile libetpan-build: libetpan/Makefile
@ -213,9 +215,6 @@ uuid/jni/Android.mk: uuid.src.stamp
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Sequoia # Sequoia
OPENSSL_VERSION=1.1.1b
GMP_VERSION=6.1.2
NETTLE_VERSION=3.4.1
sequoia-deps-build: gmp-install nettle-install openssl-install sequoia-deps-build: gmp-install nettle-install openssl-install
@ -242,7 +241,7 @@ EXTERNAL_SRCS += openssl-src
EXTERNAL_SRCS_CLEAN += openssl-clean EXTERNAL_SRCS_CLEAN += openssl-clean
OPENSSL_ARCHITECTURE:=android-arm OPENSSL_ARCHITECTURE:=android-arm64
openssl/Makefile: openssl.src.stamp openssl/Makefile: openssl.src.stamp
cd openssl && \ cd openssl && \
@ -292,7 +291,6 @@ gmp/Makefile: gmp.src.stamp
--host=$(HOST) \ --host=$(HOST) \
--prefix=$(LOCAL) \ --prefix=$(LOCAL) \
--disable-static \ --disable-static \
--enable-cxx \
MPN_PATH="arm64 generic" MPN_PATH="arm64 generic"
@ -366,7 +364,7 @@ sequoia-ffi-clean:
EXTERNAL_SRCS_CLEAN += sequoia-ffi-clean EXTERNAL_SRCS_CLEAN += sequoia-ffi-clean
$(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so: sequoia.src.stamp sequoia-deps-build $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.so: sequoia.src.stamp sequoia-deps-build
cd sequoia && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \ cd sequoia && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \ LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \ PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
@ -374,15 +372,15 @@ $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so:
ARMV7_LINUX_ANDROIDEABI_OPENSSL_LIB_DIR="$(LOCAL)/lib" \ ARMV7_LINUX_ANDROIDEABI_OPENSSL_LIB_DIR="$(LOCAL)/lib" \
ARMV7_LINUX_ANDROIDEABI_OPENSSL_INCLUDE_DIR="$(LOCAL)/include" \ ARMV7_LINUX_ANDROIDEABI_OPENSSL_INCLUDE_DIR="$(LOCAL)/include" \
ARMV7_LINUX_ANDROIDEABI_OPENSSL_DIR="$(LOCAL)/bin" \ ARMV7_LINUX_ANDROIDEABI_OPENSSL_DIR="$(LOCAL)/bin" \
CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) cargo build --target aarch64-linux-android' -p sequoia-openpgp-ffi --release CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) cargo build --target aarch64-linux-android -p sequoia-openpgp-ffi --release
$(LOCAL)/lib/libsequoia_openpgp_ffi.so: $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so $(LOCAL)/lib/libsequoia_openpgp_ffi.so: $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.so
cp $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/ cp $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/
cp -r sequoia/openpgp-ffi/include/* $(LOCAL)/include cp -r sequoia/openpgp-ffi/include/* $(LOCAL)/include
sequoia-ffi-build: $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so sequoia-ffi-build: $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.so
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so

1
android/external/armeabi-v7a/Makefile

@ -148,6 +148,7 @@ EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD
libetpan/Makefile: libetpan.src.stamp | libiconv-install libetpan/Makefile: libetpan.src.stamp | libiconv-install
cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh
mv libetpan/build-android/libetpan-android-1.zip ../
touch $@ touch $@
libetpan-build: libetpan/Makefile libetpan-build: libetpan/Makefile

2
src/jniutils.cc

@ -7,7 +7,7 @@
#include <assert.h> #include <assert.h>
#include <string> #include <string>
#ifdef ANDROID #ifndef __aarch64__
#include <time64.h> #include <time64.h>
#define time_t time64_t #define time_t time64_t
#define timegm timegm64 #define timegm timegm64

Loading…
Cancel
Save