Browse Source

Merge pull request 'Added support for botan & nettle switching on the android build' (#46) from TSaschabc/pEpJNIAdapter:test-name into Release_3.2

Reviewed-on: https://gitea.pep.foundation/pEp.foundation/pEpJNIAdapter/pulls/46
Release_3.2 v3.2.2
heck 2 years ago
parent
commit
b14a791efe
  1. 2
      .gitignore
  2. 22
      android/build.gradle
  3. 9
      android/external/Makefile.conf
  4. 58
      android/external/MakefileTemplate
  5. 5
      android/external/createMakefile.sh
  6. 13
      android/external/downloads/Makefile
  7. 66
      android/jni/Android.mk
  8. 9
      android/src/foundation/pEp/jniadapter/AndroidHelper.java

2
.gitignore

@ -84,7 +84,7 @@ androidTests/gradle/wrapper/gradle-wrapper.properties
androidTests/gradlew androidTests/gradlew
androidTests/gradlew.bat androidTests/gradlew.bat
org.tar.gz org.tar.gz
*.tar.xz
*.iml *.iml
android/external/[?]* android/external/[?]*

22
android/build.gradle

@ -4,12 +4,13 @@ def pEpEngineSrc = hasProperty('pEpEngineSrc') ? pEpEngineSrc : "../../pEpEngine
def libpEpTransportSrc = hasProperty('libpEpTransportSrc') ? libpEpTransportSrc : "../../libpEpTransport" def libpEpTransportSrc = hasProperty('libpEpTransportSrc') ? libpEpTransportSrc : "../../libpEpTransport"
def libCxx11Src = hasProperty('libCxx11Src') ? libCxx11Src : "../../libpEpCxx11" def libCxx11Src = hasProperty('libCxx11Src') ? libCxx11Src : "../../libpEpCxx11"
def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true" def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true"
//CHeck M1 answers the correct thing off .avaialableprocessors here //CHeck M1 answers the correct thing off .avaialableprocessors here Libetpan seems to break
//def threadsToUse = hasProperty('threadsToUse') ? def threadsToUse = hasProperty('threadsToUse') ?
// threadsToUse : Runtime.getRuntime().availableProcessors() threadsToUse : Runtime.getRuntime().availableProcessors()
def threadsToUse = 1 //def threadsToUse = 1
def pEpEngineDB = new File(new File(pEpEngineSrc), 'db') def pEpEngineDB = new File(new File(pEpEngineSrc), 'db')
def CRYPTO_LIB = "botan"
ext.archsToCompile = "arm arm64 x86 x86_64" ext.archsToCompile = "arm arm64 x86 x86_64"
//apply from: 'gradle/plugins/set-pep-jniadapter-archs.gradle' //apply from: 'gradle/plugins/set-pep-jniadapter-archs.gradle'
@ -78,13 +79,22 @@ android {
jniDebuggable false jniDebuggable false
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", "CRYPTO_BACK_END", "\"${CRYPTO_LIB}\""
externalNativeBuild {
ndkBuild {
arguments "-j${threadsToUse}", 'NDK_LOG=1', 'NDK_DEBUG=1', 'NDEBUG=null', '--output-sync=none', '-B', 'V=1'
// arguments '-B', 'NDK_DEBUG=1', 'NDEBUG=null', 'NDK_LOG=1'
}
}
} }
debug { debug {
buildConfigField "String", "CRYPTO_BACK_END", "\"${CRYPTO_LIB}\""
jniDebuggable true jniDebuggable true
externalNativeBuild { externalNativeBuild {
ndkBuild { ndkBuild {
arguments "-j${threadsToUse}", 'NDK_LOG=1', 'NDK_DEBUG=1', 'NDEBUG=null', '--output-sync=none', '-B', 'V=1' arguments "-j${threadsToUse}", 'NDK_LOG=1', 'NDK_DEBUG=1', 'NDEBUG=null', '--output-sync=none', '-B', 'V=1', "CRYPTO_LIB_NAME=${CRYPTO_LIB}"
// arguments '-B', 'NDK_DEBUG=1', 'NDEBUG=null', 'NDK_LOG=1' // arguments '-B', 'NDK_DEBUG=1', 'NDEBUG=null', 'NDK_LOG=1'
} }
} }
@ -134,7 +144,7 @@ android {
println("buildExternal for abis: ${project.archsToCompile}") println("buildExternal for abis: ${project.archsToCompile}")
exec { exec {
workingDir 'external' workingDir 'external'
commandLine 'make', "-j${threadsToUse}", 'build', "archs=${project.archsToCompile}" commandLine 'make', "-j${threadsToUse}", 'build', "archs=${project.archsToCompile}", "CRYPTO_LIB_NAME=${CRYPTO_LIB}"
} }
} }
} }

9
android/external/Makefile.conf

@ -37,7 +37,12 @@ STRIP := $(ANDROID_NDK_HOME)/bin/llvm-strip
### Sequoia deps versions ### Sequoia deps versions
OPENSSL_VERSION=1.1.1q OPENSSL_VERSION=1.1.1q
GMP_VERSION=6.2.1 GMP_VERSION=6.2.1
# If nettle is used
NETTLE_VERSION=3.7.3 NETTLE_VERSION=3.7.3
# If Botan is used
BOTAN_VERSION=2.19.3
# Crypto backend used
CRYPTO_LIB_NAME ?= nettle
### Git deps repos ### Git deps repos
EXTERNAL_GIT_REPOS += libetpan|https://gitea.pep.foundation/pEp.foundation/libetpan.git?507ab94fc9609432ef2d4c62770139482f1b5084 EXTERNAL_GIT_REPOS += libetpan|https://gitea.pep.foundation/pEp.foundation/libetpan.git?507ab94fc9609432ef2d4c62770139482f1b5084
@ -50,14 +55,14 @@ EXTERNAL_SRCS += libiconv-src
EXTERNAL_SRCS += uuid-src EXTERNAL_SRCS += uuid-src
EXTERNAL_SRCS += openssl-src EXTERNAL_SRCS += openssl-src
EXTERNAL_SRCS += gmp-src EXTERNAL_SRCS += gmp-src
EXTERNAL_SRCS += nettle-src EXTERNAL_SRCS += $(CRYPTO_LIB_NAME)-src
#### Clean source code targets. #### Clean source code targets.
EXTERNAL_SRCS_CLEAN += libiconv-clean EXTERNAL_SRCS_CLEAN += libiconv-clean
EXTERNAL_SRCS_CLEAN += uuid-clean EXTERNAL_SRCS_CLEAN += uuid-clean
EXTERNAL_SRCS_CLEAN += openssl-clean EXTERNAL_SRCS_CLEAN += openssl-clean
EXTERNAL_SRCS_CLEAN += gmp-clean EXTERNAL_SRCS_CLEAN += gmp-clean
EXTERNAL_SRCS_CLEAN += nettle-clean EXTERNAL_SRCS_CLEAN += $(CRYPTO_LIB_NAME)-clean
EXTERNAL_SRCS_CLEAN += pEpEngineSequoiaBackend-clean EXTERNAL_SRCS_CLEAN += pEpEngineSequoiaBackend-clean
### Other variables ### Other variables

58
android/external/MakefileTemplate

@ -10,6 +10,7 @@ APP_ABI ?= [ARCH]
HOST ?= [HOST] HOST ?= [HOST]
NDK_TOOLCHAIN_TARGET ?= [NDK_TOOLCHAIN_TARGET] NDK_TOOLCHAIN_TARGET ?= [NDK_TOOLCHAIN_TARGET]
SEQUOIA_ARCH ?= [SEQUOIA_ARCH] SEQUOIA_ARCH ?= [SEQUOIA_ARCH]
BOTAN_ARCH ?= [BOTAN_ARCH]
OPENSSL_ARCHITECTURE ?= [OPENSSL_ARCHITECTURE] OPENSSL_ARCHITECTURE ?= [OPENSSL_ARCHITECTURE]
COMPILER_PREFIX ?= [COMPILER_PREFIX] COMPILER_PREFIX ?= [COMPILER_PREFIX]
@ -156,12 +157,6 @@ uuid/jni/Android.mk: uuid.src.stamp
cp ../libuuid.Android.mk uuid/jni/Android.mk cp ../libuuid.Android.mk uuid/jni/Android.mk
#------------------------------------------------------------------------------#
# Sequoia
## Build sequoia dependencies
sequoia-deps-build: $(LOCAL)/lib/libssl.so $(LOCAL)/lib/libnettle.so
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# OpenSSL # OpenSSL
@ -257,6 +252,43 @@ nettle-build: nettle/libnettle.so
## Install nettle ## Install nettle
nettle-install: $(LOCAL)/lib/libnettle.so nettle-install: $(LOCAL)/lib/libnettle.so
#------------------------------------------------------------------------------#
# BOTAN
botan.src.stamp: ../downloads/Botan-$(BOTAN_VERSION).tar.xz
tar xvf $<
mv Botan-$(BOTAN_VERSION) botan
touch $@
botan/Makefile: botan.src.stamp
cd botan && \
AR="$(AR)" CXX="$(CXX)" \
./configure.py --os=android --cc="clang" --cpu="$(BOTAN_ARCH)" --prefix="$(LOCAL)"
botan/.libs/libbotan-2.so: botan/Makefile
$(MAKE) -C botan all
$(LOCAL)/lib/libbotan-2.so: botan/.libs/libbotan-2.so
$(MAKE) -C botan install
ls -l $(LOCAL)/lib/libbotan-2.so
touch $@
## Build botan
botan-build: botan/.libs/libbotan-2.so
## Install botan
botan-install: $(LOCAL)/lib/libbotan-2.so
#------------------------------------------------------------------------------#
# Sequoia
## Build sequoia dependencies
sequoia-deps-build: sequoia-deps-build-$(CRYPTO_LIB_NAME)
sequoia-deps-build-nettle: $(LOCAL)/lib/libssl.so $(LOCAL)/lib/libnettle.so
sequoia-deps-build-botan: $(LOCAL)/lib/libbotan-2.so
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# pEpEngineSequoiaBackend # pEpEngineSequoiaBackend
@ -267,11 +299,11 @@ pEpEngineSequoiaBackend.src.stamp: ../downloads/pEpEngineSequoiaBackend.tar.gz
mkdir -p pEpEngineSequoiaBackend mkdir -p pEpEngineSequoiaBackend
cd pEpEngineSequoiaBackend && tar xvf ../$< cd pEpEngineSequoiaBackend && tar xvf ../$<
mkdir -p $(LOCAL)/lib/ mkdir -p $(LOCAL)/lib/
# This is a bad fix, we should move this to a common makefile (but not the .conf one)
find -L $(ANDROID_NDK) -name libunwind.a -execdir sh -c 'echo "INPUT(-lunwind)" > $(LOCAL)/lib/libgcc.a' \; find -L $(ANDROID_NDK) -name libunwind.a -execdir sh -c 'echo "INPUT(-lunwind)" > $(LOCAL)/lib/libgcc.a' \;
touch $@ touch $@
$(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a: pEpEngineSequoiaBackend.src.stamp $(LOCAL)/lib/libssl.so $(LOCAL)/lib/libnettle.so $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a: pEpEngineSequoiaBackend.src.stamp sequoia-deps-build-$(CRYPTO_LIB_NAME)
cd pEpEngineSequoiaBackend && cargo update -p sequoia-openpgp --precise 1.14.0
cd pEpEngineSequoiaBackend && PATH=$(TEMP_WORK_PATH) \ cd pEpEngineSequoiaBackend && PATH=$(TEMP_WORK_PATH) \
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \ LD_LIBRARY_PATH=$(LOCAL)/lib/ \
@ -280,7 +312,8 @@ $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a: pE
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 $(SEQUOIA_ARCH) -p pep_engine_sequoia_backend --release RUSTFLAGS='-L $(LOCAL)/lib' \
CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) cargo build --no-default-features --features sequoia-openpgp/crypto-$(CRYPTO_LIB_NAME) --target $(SEQUOIA_ARCH) -p pep_engine_sequoia_backend --release
$(LOCAL)/lib/libpep_engine_sequoia_backend.a: $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a $(LOCAL)/lib/libpep_engine_sequoia_backend.a: $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a
cp $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.* $(LOCAL)/lib/ cp $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.* $(LOCAL)/lib/
@ -288,7 +321,11 @@ $(LOCAL)/lib/libpep_engine_sequoia_backend.a: $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH
pEpEngineSequoiaBackend-build: $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a pEpEngineSequoiaBackend-build: $(CARGO_TARGET_DIR)/$(SEQUOIA_ARCH)/release/libpep_engine_sequoia_backend.a
pEpEngineSequoiaBackend-install: $(LOCAL)/lib/libssl.so $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libpep_engine_sequoia_backend.a pEpEngineSequoiaBackend-install: pEpEngineSequoiaBackend-install-$(CRYPTO_LIB_NAME)
pEpEngineSequoiaBackend-install-nettle: $(LOCAL)/lib/libssl.so $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libpep_engine_sequoia_backend.a
pEpEngineSequoiaBackend-install-botan: $(LOCAL)/lib/libbotan-2.so $(LOCAL)/lib/libpep_engine_sequoia_backend.a
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# assets for Android app # assets for Android app
@ -343,6 +380,7 @@ clean-all: clean
libetpan-build \ libetpan-build \
uuid-build uuid-prebuild \ uuid-build uuid-prebuild \
gmp-build gmp-install \ gmp-build gmp-install \
botan-build botan-install \
sequoia-deps-build \ sequoia-deps-build \
openssl-build openssl-install \ openssl-build openssl-install \
nettle-build nettle-install \ nettle-build nettle-install \

5
android/external/createMakefile.sh

@ -18,6 +18,7 @@ case $ARCH_DEST in
ARCH_DEBUG_CFLAGS=TARGET_x86_debug_CFLAGS ARCH_DEBUG_CFLAGS=TARGET_x86_debug_CFLAGS
OPENSSL_ARCHITECTURE=android-x86 OPENSSL_ARCHITECTURE=android-x86
SEQUOIA_ARCH=i686-linux-android SEQUOIA_ARCH=i686-linux-android
BOTAN_ARCH=x86
;; ;;
x86_64) x86_64)
HOST=x86_64-linux-android HOST=x86_64-linux-android
@ -26,6 +27,7 @@ case $ARCH_DEST in
ARCH_DEBUG_CFLAGS=TARGET_x86_64_debug_CFLAGS ARCH_DEBUG_CFLAGS=TARGET_x86_64_debug_CFLAGS
OPENSSL_ARCHITECTURE=android-x86_64 OPENSSL_ARCHITECTURE=android-x86_64
SEQUOIA_ARCH=x86_64-linux-android SEQUOIA_ARCH=x86_64-linux-android
BOTAN_ARCH=x86_64
;; ;;
armeabi-v7a) armeabi-v7a)
HOST=arm-linux-androideabi HOST=arm-linux-androideabi
@ -34,6 +36,7 @@ case $ARCH_DEST in
ARCH_DEBUG_CFLAGS=TARGET_arm_debug_CFLAGS ARCH_DEBUG_CFLAGS=TARGET_arm_debug_CFLAGS
OPENSSL_ARCHITECTURE=android-arm OPENSSL_ARCHITECTURE=android-arm
SEQUOIA_ARCH=armv7-linux-androideabi SEQUOIA_ARCH=armv7-linux-androideabi
BOTAN_ARCH=arm32
;; ;;
arm64-v8a) arm64-v8a)
HOST=aarch64-linux-android HOST=aarch64-linux-android
@ -43,6 +46,7 @@ case $ARCH_DEST in
OPENSSL_ARCHITECTURE=android-arm64 OPENSSL_ARCHITECTURE=android-arm64
GMP_MAKEFILE_EXTRA=' MPN_PATH=\"arm64 generic\"' GMP_MAKEFILE_EXTRA=' MPN_PATH=\"arm64 generic\"'
SEQUOIA_ARCH=aarch64-linux-android SEQUOIA_ARCH=aarch64-linux-android
BOTAN_ARCH=arm64
;; ;;
esac esac
@ -72,5 +76,6 @@ $SED -i 's/\[ARCH_DEBUG_CFLAGS\]/'"$ARCH_DEBUG_CFLAGS"'/g' "$FILE_DEST"
$SED -i 's/\[OPENSSL_ARCHITECTURE\]/'"$OPENSSL_ARCHITECTURE"'/g' "$FILE_DEST" $SED -i 's/\[OPENSSL_ARCHITECTURE\]/'"$OPENSSL_ARCHITECTURE"'/g' "$FILE_DEST"
$SED -i 's/\[GMP_MAKEFILE_EXTRA\]/'"$GMP_MAKEFILE_EXTRA"'/g' "$FILE_DEST" $SED -i 's/\[GMP_MAKEFILE_EXTRA\]/'"$GMP_MAKEFILE_EXTRA"'/g' "$FILE_DEST"
$SED -i 's/\[SEQUOIA_ARCH\]/'"$SEQUOIA_ARCH"'/g' "$FILE_DEST" $SED -i 's/\[SEQUOIA_ARCH\]/'"$SEQUOIA_ARCH"'/g' "$FILE_DEST"
$SED -i 's/\[BOTAN_ARCH\]/'"$BOTAN_ARCH"'/g' "$FILE_DEST"
cat "$FILE_DEST" cat "$FILE_DEST"

13
android/external/downloads/Makefile

@ -26,9 +26,15 @@ download-iconv: libiconv-1.15.tar.gz
download-uuid: ossp-uuid_1.6.2.orig-patched.tar.gz download-uuid: ossp-uuid_1.6.2.orig-patched.tar.gz
## Download sequoia dependencies ## Download sequoia dependencies
download-sequoia-deps: openssl-$(OPENSSL_VERSION).tar.gz gmp-$(GMP_VERSION).tar.bz2 \
download-sequoia-deps: download-sequoia-deps-$(CRYPTO_LIB_NAME)
#$(if $(findstring NETTLE,$(CRYPTO_LIB_NAME)), download-sequoia-deps-nettle, download-sequoia-deps-botan)
download-sequoia-deps-nettle: openssl-$(OPENSSL_VERSION).tar.gz gmp-$(GMP_VERSION).tar.bz2 \
nettle-$(NETTLE_VERSION)-patched.tar.gz nettle-$(NETTLE_VERSION)-patched.tar.gz
download-sequoia-deps-botan: Botan-$(BOTAN_VERSION).tar.xz
## Download etpan ## Download etpan
download-etpan: libetpan.git.stamp download-etpan: libetpan.git.stamp
@ -64,11 +70,15 @@ nettle-$(NETTLE_VERSION)-patched.tar.gz: nettle-$(NETTLE_VERSION).tar.gz
tar -czvf $@ nettle-$(NETTLE_VERSION) tar -czvf $@ nettle-$(NETTLE_VERSION)
rm -rf nettle-$(NETTLE_VERSION) rm -rf nettle-$(NETTLE_VERSION)
Botan-$(BOTAN_VERSION).tar.xz:
wget -nc https://botan.randombit.net/releases/Botan-$(BOTAN_VERSION).tar.xz
nettle-$(NETTLE_VERSION).tar.gz: nettle-$(NETTLE_VERSION).tar.gz:
wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz
md5sum -c nettle-$(NETTLE_VERSION).tar.gz.md5 md5sum -c nettle-$(NETTLE_VERSION).tar.gz.md5
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Clone update and archive external projects GIT repos # Clone update and archive external projects GIT repos
# Local clone is in external/$project.git while # Local clone is in external/$project.git while
@ -117,6 +127,7 @@ clean:
-rm -rf *.stamp -rm -rf *.stamp
-rm -rf *.tar.gz -rm -rf *.tar.gz
-rm -rf *.tar.bz2 -rm -rf *.tar.bz2
-rm -rf *.tar.xz
.PHONY: all clean download-iconv \ .PHONY: all clean download-iconv \
download-uuid download-etpan \ download-uuid download-etpan \

66
android/jni/Android.mk

@ -4,6 +4,7 @@ ENGINE_PATH := $(LOCAL_PATH)/../../../pEpEngine
LIB_PEP_ADAPTER_PATH:=$(SRC_PATH)/libpEpAdapter LIB_PEP_ADAPTER_PATH:=$(SRC_PATH)/libpEpAdapter
LIB_PEP_CXX11_PATH:=$(SRC_PATH)/libpEpCxx11 LIB_PEP_CXX11_PATH:=$(SRC_PATH)/libpEpCxx11
GPGBUILD:= $(LOCAL_PATH)/../external/output/ GPGBUILD:= $(LOCAL_PATH)/../external/output/
include $(LOCAL_PATH)/../external/Makefile.conf
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := libiconv LOCAL_MODULE := libiconv
@ -14,22 +15,36 @@ include $(CLEAR_VARS)
LOCAL_MODULE := libpep_engine_sequoia_backend LOCAL_MODULE := libpep_engine_sequoia_backend
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libpep_engine_sequoia_backend.a LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libpep_engine_sequoia_backend.a
include $(PREBUILT_STATIC_LIBRARY) include $(PREBUILT_STATIC_LIBRARY)
#Crypto lib switch, as we can use Sequoia with multiple crypto backends a switch to see which libs are loaded is required, we assume botan is the alternative, botan the 'default' temporarily, but having nothing defined will output an error
include $(CLEAR_VARS) ifeq ($(CRYPTO_LIB_NAME), botan)
LOCAL_MODULE := libhogweed $(warning ==== JNIADAPTER android.mk using BOTAN for pEpEngineSequoiaBackend)
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libhogweed.so
include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS)
LOCAL_MODULE := botan
include $(CLEAR_VARS) LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libbotan-2.a
LOCAL_MODULE := libgmp include $(PREBUILT_STATIC_LIBRARY)
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libgmp.so
include $(PREBUILT_SHARED_LIBRARY) else ifeq ($(CRYPTO_LIB_NAME), nettle)
$(warning ==== JNIADAPTER android.mk using NETTLE for pEpEngineSequoiaBackend)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := libnettle LOCAL_MODULE := libhogweed
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libnettle.so LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libhogweed.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libgmp
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libgmp.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libnettle
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libnettle.so
include $(PREBUILT_SHARED_LIBRARY)
LOCAL_SHARED_LIBRARIES := libnettle libhogweed libgmp
else
$(error No crypto backend given!)
endif
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := libetpan LOCAL_MODULE := libetpan
@ -44,19 +59,18 @@ $(shell sh $(ENGINE_PATH)/build-android/takeOutHeaderFiles.sh $(ENGINE_PATH))
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := pEpJNI LOCAL_MODULE := pEpJNI
LOCAL_SHARED_LIBRARIES := libnettle libhogweed libgmp LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libuuid libiconv pEpAdapter pEpCxx11 botan libpep_engine_sequoia_backend
LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libuuid libiconv pEpAdapter pEpCxx11 libpep_engine_sequoia_backend
LOCAL_CPP_FEATURES += exceptions LOCAL_CPP_FEATURES += exceptions
LOCAL_CPPFLAGS += -std=c++11 -DANDROID_STL=c++_shared -DHAVE_PTHREADS -DDISABLE_SYNC -fuse-ld=lld LOCAL_CPPFLAGS += -std=c++11 -DANDROID_STL=c++_shared -DHAVE_PTHREADS -DDISABLE_SYNC -fuse-ld=lld
LOCAL_SRC_FILES := \ LOCAL_SRC_FILES := \
../../src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc \ ../../src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc \
../../src/cxx/foundation_pEp_jniadapter_Engine.cc \ ../../src/cxx/foundation_pEp_jniadapter_Engine.cc \
../../src/cxx/foundation_pEp_jniadapter_Message.cc \ ../../src/cxx/foundation_pEp_jniadapter_Message.cc \
../../src/cxx/foundation_pEp_jniadapter__Blob.cc \ ../../src/cxx/foundation_pEp_jniadapter__Blob.cc \
../../src/cxx/throw_pEp_exception.cc \ ../../src/cxx/throw_pEp_exception.cc \
../../src/cxx/basic_api.cc \ ../../src/cxx/basic_api.cc \
../../src/cxx/identity_api.cc \ ../../src/cxx/identity_api.cc \
../../src/cxx/jniutils.cc ../../src/cxx/jniutils.cc
LOCAL_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include LOCAL_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include
LOCAL_C_INCLUDES += $(LIB_PEP_ADAPTER_PATH)/build-android/include $(SRC_PATH)/libpEpAdapter LOCAL_C_INCLUDES += $(LIB_PEP_ADAPTER_PATH)/build-android/include $(SRC_PATH)/libpEpAdapter

9
android/src/foundation/pEp/jniadapter/AndroidHelper.java

@ -126,9 +126,12 @@ public class AndroidHelper {
public static void nativeSetup(Context c) { public static void nativeSetup(Context c) {
// pre-load libs for pepengine, as // pre-load libs for pepengine, as
// android cannot solve lib dependencies on its own // android cannot solve lib dependencies on its own
System.loadLibrary("gmp"); if(BuildConfig.CRYPTO_BACK_END.equals("nettle")){
System.loadLibrary("nettle"); System.loadLibrary("gmp");
System.loadLibrary("hogweed"); System.loadLibrary("nettle");
System.loadLibrary("hogweed");
}
migrateFromGPGToSequoiaIfNeeded(c.getFilesDir()); migrateFromGPGToSequoiaIfNeeded(c.getFilesDir());

Loading…
Cancel
Save