Compare commits

...

20 Commits

Author SHA1 Message Date
Hussein Kasem de699336aa
JNI-178 Android-Build: WIP 3 years ago
Hussein Kasem 74d6acb95f
JNI-178 Android-Build: Move dependencies arround 3 years ago
Hussein Kasem 584aa9a09f
JNI-178 Android-Build: Move signedpkgs deps 3 years ago
Hussein Kasem 819c8b3bd1
JNI-178 Android-Build: Add libArchive to Android.mk 3 years ago
Hussein Kasem ed58879226
JNI-178 Android-Build: add android includes 3 years ago
Hussein Kasem 50074da1c4
JNI-178 Android-Build: WIP 3 years ago
Hussein Kasem 160f4f433d
JNI-178 Android-Build: WIP 3 years ago
Hussein Kasem db5c97e4e3
WIP: JNI-178 Android-Build: Add libarchive build sketch 3 years ago
Hussein Kasem 7d97855deb
JNI-178 Android-Build: Add libarchive download 3 years ago
Hussein Kasem 76f7d348c9
JNI-178 Android-Build: Link zlib 3 years ago
Hussein Kasem 3a18d713cd
JNI-178 Android-Build: Increase C++ level to 17 and link agains the built libraries. 3 years ago
Hussein Kasem de48de6ba1
JNI-178 Android-Build: Use make install for openssl instead of manually copying lib files 3 years ago
Hussein Kasem 5790f1d3c1
JNI-178 Android-Build: Add CryptoPP dependency 3 years ago
Hussein Kasem eb710f18b7
JNI-178 Android-Build: Add build-common prerequisite to all archs 3 years ago
Hussein Kasem 8b8b420496
Android-Build: Fix NDK_TOOLCHAIN helper script 3 years ago
Hussein Kasem b52d833089
JNI-178 Android-build: Add boost build 3 years ago
heck 5b96104a08 Test: Add 3 years ago
heck faad59edde Make Engine.provision() a static method 3 years ago
heck 2c6b8c94ad Build: add new dependencies 3 years ago
heck 394a272b53 Add API method "provision(url)" 3 years ago
  1. 56
      Makefile.conf
  2. 14
      android/build.gradle
  3. 12
      android/external/Makefile
  4. 20
      android/external/Makefile.conf
  5. 89
      android/external/arm64-v8a/Makefile
  6. 96
      android/external/armeabi-v7a/Makefile
  7. 62
      android/external/common/Makefile
  8. 11
      android/external/configure_openssl.sh
  9. 27
      android/external/downloads/Makefile
  10. 1
      android/external/downloads/libarchive-3.6.1.tar.gz.md5
  11. 17
      android/external/install_cryptopp.sh
  12. 70
      android/external/x86/Makefile
  13. 75
      android/external/x86_64/Makefile
  14. 21
      android/jni/Android.mk
  15. 3
      android/src/foundation/pEp/jniadapter/AndroidHelper.java
  16. 3
      src/Makefile
  17. 22
      src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc
  18. 7
      src/java/foundation/pEp/jniadapter/AbstractEngine.java
  19. 34
      test/java/foundation/pEp/jniadapter/test/jni178/Makefile
  20. 45
      test/java/foundation/pEp/jniadapter/test/jni178/TestAlice.java
  21. 2
      utils/ndk_toolchains_path.py

56
Makefile.conf

@ -16,11 +16,25 @@ PREFIX=$(HOME)
YML2_PATH=$(PREFIX)/src/yml2
YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS)
YML2_OPTS=--encoding=utf8
ENGINE_LIB_PATH=$(PREFIX)/lib
ENGINE_INC_PATH=$(PREFIX)/include
AD_LIB_PATH=$(PREFIX)/lib
AD_INC_PATH=$(PREFIX)/include
BOOST_INCLUDE?=$(PREFIX)/include
BOOST_LIB?=$(PREFIX)/lib
CRYPTOPP_INCLUDE?=$(PREFIX)/include
CRYPTOPP_LIB?=$(PREFIX)/lib
OPENSSL_INCLUDE?=$(HOME)/include
OPENSSL_LIB?=$(HOME)/lib
LIBZ_INCLUDE?=$(HOME)/include
LIBZ_LIB?=$(HOME)/lib
### Guessing JAVA_HOME
ifeq ($(PLATFORM),linux)
@ -37,12 +51,6 @@ else
$(info Optional build config not found: $(HERE)local.conf)
endif
### Apply config
ENGINE_LIB=-L$(ENGINE_LIB_PATH)
ENGINE_INC=-I$(ENGINE_INC_PATH)
AD_LIB=-L$(AD_LIB_PATH)
AD_INC=-I$(AD_INC_PATH)
ifndef JAVA_HOME
$(error JAVA_HOME is not set!)
endif
@ -61,9 +69,39 @@ endif
JAVA_BIN_DIR=$(JAVA_HOME)/bin
######### C and C++ #########
CXXFLAGS+=-O0 -std=c++11 -fpermissive -fPIC -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/$(PLATFORM) $(AD_INC) $(ENGINE_INC)
LDFLAGS+=-shared $(ENGINE_LIB) $(AD_LIB)
LDLIBS=-lstdc++ -lpEpEngine -lpEpAdapter
CXXFLAGS+=-O0 -std=c++17 -fpermissive -fPIC
INCLUDES+=-I$(JAVA_HOME)/include
INCLUDES+=-I$(JAVA_HOME)/include/$(PLATFORM)
INCLUDES+=-I$(AD_INC_PATH)
INCLUDES+=-I$(ENGINE_INC_PATH)
INCLUDES+=-I$(BOOST_INCLUDE)
INCLUDES+=-I$(CRYPTOPP_INCLUDE)
INCLUDES+=-I$(OPENSSL_INCLUDE)
INCLUDES+=-I$(LIBZ_INCLUDE)
CXXFLAGS+=$(INCLUDES)
LDFLAGS+=-shared
LIBS+=-L$(ENGINE_LIB_PATH)
LIBS+=-L$(AD_LIB_PATH)
LIBS+=-L$(BOOST_LIB)
LIBS+=-L$(CRYPTOPP_LIB)
LIBS+=-L$(OPENSSL_LIB)
LIBS+=-L$(LIBZ_LIB)
LIBS+=-lstdc++
LIBS+=-lpEpEngine
LIBS+=-lpEpAdapter
LIBS+=-lsignedpkg
LIBS+=-ldownloadclient
LIBS+=-larchive
LIBS+=-lboost_regex
LIBS+=-lboost_iostreams
LIBS+=-lboost_system
LIBS+=-lz
LIBS+=-lcryptopp
LIBS+=-lcrypto
LIBS+=-lssl
LDFLAGS+=$(LIBS)
ifneq (,$(findstring g++,$(CXX)))
CXXFLAGS+=-fdiagnostics-color=always
else ifneq (,$(findstring clang,$(CXX)))

14
android/build.gradle

@ -27,17 +27,17 @@ allprojects {
apply plugin: 'com.android.library'
android {
compileSdkVersion 30
compileSdkVersion 32
defaultConfig {
minSdkVersion 21
targetSdkVersion 30
targetSdkVersion 32
versionCode 7
versionName "2.1.43"
externalNativeBuild {
ndkBuild {
//abiFilters "armeabi-v7a"
abiFilters "arm64-v8a"
//abiFilters ["armeabi-v7a"]
//abiFilters ["arm64-v8a, armeabi-v7a"]
}
@ -50,7 +50,7 @@ android {
manifest.srcFile 'AndroidManifest.xml'
// where to find generated Java source
java.srcDirs = ['../src', 'src', '../src/java']
java.srcDirs = ['../src', 'src', '../src/java', '../../downloadclient', '../../signedpkg', '../../pEpEngine']
jniLibs.srcDirs = ['libs',
// 'external/data/data/security.pEp/app_opt/lib'
]
@ -78,7 +78,7 @@ android {
jniDebuggable true
externalNativeBuild {
ndkBuild {
arguments "-j${threadsToUse}", 'NDK_LOG=1', 'NDK_DEBUG=1', 'NDEBUG=null'
arguments "-j${threadsToUse}", 'NDK_LOG=0', 'NDK_DEBUG=1', 'NDEBUG=null', '--output-sync=none'
// arguments '-B', 'NDK_DEBUG=1', 'NDEBUG=null', 'NDK_LOG=1'
}
}
@ -116,7 +116,7 @@ android {
// call external build (GnuPG, GPGME, etc)
task buildExternal(type:Exec, dependsOn: 'genSources') {
workingDir 'external'
commandLine 'make', "-j${threadsToUse}", 'build'
commandLine 'make', "-j${threadsToUse}", 'build-arm64'
}
task externalAssets(type:Exec) {
@ -145,7 +145,7 @@ android {
from file(new File(pEpEngineDB, 'system.db'))
into 'assets'
}
ndkVersion '21.0.6113669'
ndkVersion '23.2.8568313'
if(buildAutomatic == "true") {
buildpEpEngineSystemDB.dependsOn(buildExternal)

12
android/external/Makefile

@ -25,16 +25,19 @@ build: all
all: build-arm build-arm64 build-x86 build-x86_64
build-arm: downloads/downloads.stamp
build-common: downloads/downloads.stamp
$(MAKE) -C common
build-arm: downloads/downloads.stamp build-common
$(MAKE) -C armeabi-v7a
build-arm64: downloads/downloads.stamp
build-arm64: downloads/downloads.stamp build-common
$(MAKE) -C arm64-v8a
build-x86: downloads/downloads.stamp
build-x86: downloads/downloads.stamp build-common
$(MAKE) -C x86
build-x86_64: downloads/downloads.stamp
build-x86_64: downloads/downloads.stamp build-common
$(MAKE) -C x86_64
clean:
@ -49,6 +52,7 @@ clean-all:
$(MAKE) -C arm64-v8a clean-all
$(MAKE) -C x86 clean-all
$(MAKE) -C x86_64 clean-all
$(MAKE) -C common clean-all
rm -rf build
downloads/downloads.stamp:

20
android/external/Makefile.conf

@ -4,6 +4,8 @@
NDK_TOOLCHAIN_COMPILER ?= clang
ANDROID_API ?= 21
### Boost for android conf
NCPU ?= 1
### Select GNU SED on MacOS.
NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]')
@ -16,14 +18,24 @@ else
TOOLCHAIN_ARCH=linux-x86_64
endif
### Sequoia deps versions
OPENSSL_VERSION=1.1.1h
ANDROID_NDK_HOME=$(ANDROID_NDK)/toolchains/llvm/prebuilt/$(TOOLCHAIN_ARCH)
LD := $(ANDROID_NDK_HOME)/bin/ld
AR := $(ANDROID_NDK_HOME)/bin/llvm-ar
STRIP := $(ANDROID_NDK_HOME)/bin/llvm-strip
RANLIB := $(ANDROID_NDK_HOME)/bin/llvm-ranlib
### Deps versions
OPENSSL_VERSION=1.1.1q
GMP_VERSION=6.2.1
NETTLE_VERSION=3.7.3
BOOST_VERSION=1.74.0
LIB_ARCHIVE_VERSION=3.6.1
### Git deps repos
EXTERNAL_GIT_REPOS += libetpan|https://gitea.pep.foundation/pEp.foundation/libetpan.git?507ab94fc9609432ef2d4c62770139482f1b5084
EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/sequoia-pgp/sequoia.git?openpgp/v1.3.1
EXTERNAL_GIT_REPOS += boost-for-android|https://github.com/moritz-wundke/Boost-for-Android.git?0e12fbd30cb70b668a117c0913a303acfdaae04f
EXTERNAL_GIT_REPOS += cryptopp|https://github.com/weidai11/cryptopp.git?CRYPTOPP_8_6_0
### Common variables
#### Source code targets
@ -32,6 +44,7 @@ EXTERNAL_SRCS += uuid-src
EXTERNAL_SRCS += openssl-src
EXTERNAL_SRCS += gmp-src
EXTERNAL_SRCS += nettle-src
EXTERNAL_SRCS += cryptopp-src
#### Clean source code targets.
EXTERNAL_SRCS_CLEAN += libiconv-clean
@ -40,8 +53,9 @@ EXTERNAL_SRCS_CLEAN += openssl-clean
EXTERNAL_SRCS_CLEAN += gmp-clean
EXTERNAL_SRCS_CLEAN += nettle-clean
EXTERNAL_SRCS_CLEAN += sequoia-ffi-clean
EXTERNAL_SRCS_CLEAN += cryptopp-clean
EXTERNAL_SRCS_CLEAN += libarchive-clean
### Other variables
ANDROID_ETPAN_BUILD_VERSION=2

89
android/external/arm64-v8a/Makefile

@ -17,7 +17,7 @@ APP_ABI ?= arm64-v8a
all: build
build: showsetup uuid-install sequoia-ffi-install libetpan-build
build: showsetup uuid-install sequoia-ffi-install libetpan-build cryptopp-install libarchive-install
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@ -42,16 +42,13 @@ include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk
ANDROID_NDK_HOME=$(ANDROID_NDK)/toolchains/llvm/prebuilt/$(TOOLCHAIN_ARCH)
LD := $(ANDROID_NDK_HOME)/bin/$(HOST)-ld
AR := $(ANDROID_NDK_HOME)/bin/$(HOST)-ar
AS := $(ANDROID_NDK_HOME)/bin/$(HOST)-as
CC := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang
CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang++
RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib
STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip
AS := $(CC)
CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -std=c99
LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie
LDFLAGS += -lz -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie
# change 'release' to 'debug' for unoptimized debug builds
CFLAGS += $(TARGET_arm64_debug_CFLAGS)
@ -209,12 +206,9 @@ openssl/libssl.so: | openssl/Makefile
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" $(MAKE) -C openssl
$(LOCAL)/lib/libssl.so: openssl/libssl.so
cd openssl && \
cp libcrypto.so $(LOCAL)/lib && \
cp libcrypto.a $(LOCAL)/lib && \
cp libssl.so $(LOCAL)/lib && \
cp libssl.a $(LOCAL)/lib
ls -l $(LOCAL)/lib/libssl.so
mkdir -p $(LOCAL)
$(MAKE) -C openssl install_sw
ls -l $(LOCAL)/lib
openssl-build: openssl/libssl.so
@ -296,6 +290,44 @@ nettle-build: nettle/libnettle.so
nettle-install: $(LOCAL)/lib/libnettle.so
#------------------------------------------------------------------------------#
# LibArchive
libarchive.src.stamp: ../downloads/libarchive-$(LIB_ARCHIVE_VERSION).tar.gz
tar xvf $<
mv libarchive-$(LIB_ARCHIVE_VERSION) libarchive
touch $@
libarchive-src: libarchive.src.stamp
libarchive-clean:
rm -rf libarchive
rm -rf libarchive.src.stamp
libarchive/Makefile: libarchive.src.stamp
cp libarchive/contrib/android/include/android_lf.h libarchive/libarchive/
cd libarchive && \
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
./configure \
--with-lib-path=$(LOCAL)/lib \
--with-include-path=$(LOCAL)/include \
--disable-documentation \
--disable-bsdtar \
--disable-bsdcpio \
--disable-bsdcat \
--without-xml2 \
--host=$(HOST) \
--prefix=$(LOCAL)
libarchive/libarchive.so: libarchive/Makefile
$(MAKE) -C libarchive
$(LOCAL)/lib/libarchive.so: libarchive/libarchive.so
$(MAKE) -C libarchive DESTDIR=$(DESTDIR) prefix=$(prefix) install
libarchive-build: libarchive/libarchive.so
libarchive-install: $(LOCAL)/lib/libarchive.so
#------------------------------------------------------------------------------#
# Sequoia-ffi
@ -313,7 +345,8 @@ sequoia-ffi-clean:
rm -rf sequoia.src.stamp
$(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 && CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)"\
CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
PKG_CONFIG_ALLOW_CROSS=1 \
@ -331,6 +364,34 @@ sequoia-ffi-build: $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so
#------------------------------------------------------------------------------#
# Crypto++
cryptopp.src.stamp: ../downloads/cryptopp.tar.gz
mkdir -p cryptopp
cd cryptopp && tar xvf ../$<
$(SED) -i 's,AR=.*,AR="llvm-ar",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,AS=.*,AS="$$(CC)",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,LD=.*,LD="ld",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,STRIP=.*,STRIP="llvm-strip",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,RANLIB=.*,RANLIB="llvm-ranlib",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,OBJDUMB=.*,OBJDUMB="llvm-objdumb",' cryptopp/TestScripts/setenv-android.sh
touch $@
cryptopp-src: cryptopp.src.stamp
cryptopp-clean:
rm -rf cryptopp
rm -rf cryptopp.src.stamp
$(LOCAL)/lib/libcryptopp.so: cryptopp.src.stamp
cd cryptopp && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ../../install_cryptopp.sh $(APP_ABI) $(ANDROID_API) $(LOCAL) $(MAKE)
cryptopp-build: $(LOCAL)/lib/libcryptopp.so
cryptopp-install: $(LOCAL)/lib/libcryptopp.so
#------------------------------------------------------------------------------#
# assets for Android app

96
android/external/armeabi-v7a/Makefile

@ -12,13 +12,12 @@ include ../Makefile.conf
#------------------------------------------------------------------------------#
# Build parameters
APP_ABI ?= armeabi-v7a
all: build
#assets
build: showsetup uuid-install sequoia-ffi-install libetpan-build
build: showsetup uuid-install sequoia-ffi-install libetpan-build cryptopp-install libarchive-install
#------------------------------------------------------------------------------#
@ -43,15 +42,10 @@ NDK_TOOLCHAIN = $(HOST)-$(NDK_TOOLCHAIN_COMPILER)
TARGET_ARCH_ABI = $(APP_ABI)
include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk
ANDROID_NDK_HOME=$(ANDROID_NDK)/toolchains/llvm/prebuilt/$(TOOLCHAIN_ARCH)
LD := $(ANDROID_NDK_HOME)/bin/$(HOST)-ld
AR := $(ANDROID_NDK_HOME)/bin/$(HOST)-ar
AS := $(ANDROID_NDK_HOME)/bin/$(HOST)-as
CC := $(ANDROID_NDK_HOME)/bin/$(HOST_V7)$(ANDROID_API)-clang
CXX := $(ANDROID_NDK_HOME)/bin/$(HOST_V7)$(ANDROID_API)-clang++
RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib
STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip
AS := $(CC)
CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -std=c99
LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie
@ -73,6 +67,7 @@ export ac_cv_func_malloc_0_nonnull=yes
showsetup:
@echo "NDK_TOOLCHAIN: $(NDK_TOOLCHAIN)"
@echo "ANDROID_NDK_HOME: $(ANDROID_NDK_HOME)"
@echo "NDK_SYSROOT: $(NDK_SYSROOT)"
@echo "APP_ABI: $(APP_ABI)"
@echo "HOST: $(HOST)"
@ -80,6 +75,7 @@ showsetup:
@echo "LD: $(LD)"
@echo "CFLAGS: $(CFLAGS)"
@echo "LDFLAGS: $(LDFLAGS)"
@echo "LOCAL: $(LOCAL)"
#------------------------------------------------------------------------------#
# libiconv
@ -210,17 +206,14 @@ OPENSSL_ARCHITECTURE:=android-arm
openssl/Makefile: openssl.src.stamp
cd openssl && \
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ../../configure_openssl.sh ${OPENSSL_ARCHITECTURE} $(ANDROID_API) $(LOCAL)
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" bash ../../configure_openssl.sh ${OPENSSL_ARCHITECTURE} $(ANDROID_API) $(LOCAL)
openssl/libssl.so: | openssl/Makefile
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" $(MAKE) -C openssl
$(LOCAL)/lib/libssl.so: openssl/libssl.so
cd openssl && \
cp libcrypto.so $(LOCAL)/lib && \
cp libcrypto.a $(LOCAL)/lib && \
cp libssl.so $(LOCAL)/lib && \
cp libssl.a $(LOCAL)/lib
ls -l $(LOCAL)/lib/libssl.so
mkdir -p $(LOCAL)
$(MAKE) -C openssl install
ls -l $(LOCAL)/lib
openssl-build: openssl/libssl.so
@ -300,6 +293,46 @@ nettle-build: nettle/libnettle.so
nettle-install: $(LOCAL)/lib/libnettle.so
#------------------------------------------------------------------------------#
# LibArchive
libarchive.src.stamp: ../downloads/libarchive-$(LIB_ARCHIVE_VERSION).tar.gz
tar xvf $<
mv libarchive-$(LIB_ARCHIVE_VERSION) libarchive
touch $@
libarchive-src: libarchive.src.stamp
libarchive-clean:
rm -rf libarchive
rm -rf libarchive.src.stamp
libarchive/Makefile: libarchive.src.stamp
cp libarchive/contrib/android/include/android_lf.h libarchive/libarchive/
cd libarchive && \
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
./configure \
--with-lib-path=$(LOCAL)/lib \
--with-include-path=$(LOCAL)/include \
--disable-documentation \
--disable-bsdtar \
--disable-bsdcpio \
--disable-bsdcat \
--without-xml2 \
--with-pic \
--host=$(HOST) \
--prefix=$(LOCAL)
libarchive/libarchive.so: libarchive/Makefile
$(MAKE) -C libarchive
$(LOCAL)/lib/libarchive.so: libarchive/libarchive.so
$(MAKE) -C libarchive DESTDIR=$(DESTDIR) prefix=$(prefix) install
libarchive-build: libarchive/libarchive.so
libarchive-install: $(LOCAL)/lib/libarchive.so
#------------------------------------------------------------------------------#
# Sequoia-ffi
CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build
@ -315,7 +348,8 @@ sequoia-ffi-clean:
rm -rf sequoia.src.stamp
$(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so: sequoia.src.stamp sequoia-deps-build
cd sequoia && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \
cd sequoia && CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)"\
CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
PKG_CONFIG_ALLOW_CROSS=1 \
@ -334,6 +368,34 @@ sequoia-ffi-build: $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoi
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so
#------------------------------------------------------------------------------#
# Crypto++
cryptopp.src.stamp: ../downloads/cryptopp.tar.gz
mkdir -p cryptopp
cd cryptopp && tar xvf ../$<
$(SED) -i 's,AR=.*,AR="llvm-ar",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,AS=.*,AS=$$(CC),' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,LD=.*,LD="ld",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,STRIP=.*,STRIP="llvm-strip",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,RANLIB=.*,RANLIB="llvm-ranlib",' cryptopp/TestScripts/setenv-android.sh
$(SED) -i 's,OBJDUMB=.*,OBJDUMB="llvm-objdumb",' cryptopp/TestScripts/setenv-android.sh
touch $@
cryptopp-src: cryptopp.src.stamp
cryptopp-clean:
rm -rf cryptopp
rm -rf cryptopp.src.stamp
$(LOCAL)/lib/libcryptopp.so: cryptopp.src.stamp
cd cryptopp && bash ../../install_cryptopp.sh $(APP_ABI) $(ANDROID_API) $(LOCAL) $(MAKE)
cryptopp-build: $(LOCAL)/lib/libcryptopp.so
cryptopp-install: $(LOCAL)/lib/libcryptopp.so
#------------------------------------------------------------------------------#
# assets for Android app

62
android/external/common/Makefile

@ -0,0 +1,62 @@
# Copyright 2022, pEp Foundation
# This file is part of pEpJNIAdapter for Android - MultiArch build
# This file may be used under the terms of the GNU General Public License version 3
# see LICENSE.txt
include ../Makefile.conf
all: build
build: showsetup boost-install
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
EXTERNAL_ROOT := $(shell pwd)
# install root for built files
DESTDIR = $(EXTERNAL_ROOT)/..
LOCAL := $(DESTDIR)/output
# debugging stuff
showsetup:
@echo "ANDROID_NDK: $(ANDROID_NDK)"
@echo "PREFIX: $(LOCAL)"
@echo "BOOST_VERSION: $(BOOST_VERSION)"
@echo "NCPU: $(NCPU)"
#------------------------------------------------------------------------------#
# boost
boost.src.stamp:../downloads/boost-for-android.tar.gz
mkdir -p boost
cd boost && tar xvf ../$<
$(SED) -i 's,23.1",23.1"|"23.2",' boost/build-android.sh
touch $@
boost.stamp: boost.src.stamp
mkdir -p $(LOCAL)
cd boost; NCPU=$(NCPU) bash ./build-android.sh $(ANDROID_NDK) \
--boost=$(BOOST_VERSION) \
--layout=system \
--with-libraries=regex,iostreams,system \
--arch=arm64-v8a
--prefix=$(LOCAL)
touch $@
boost-install: boost.stamp
boost-clean:
rm -rf boost.stamp
clean-all: clean
rm -rf boost*
rm -rf *.git
rm -rf *.stamp
#------------------------------------------------------------------------------#
clean: boost-clean
.PHONY = clean clean-all boost-clean boost-install showsetup

11
android/external/configure_openssl.sh

@ -3,15 +3,24 @@
### 
# DONT USE IT
### 
CC=clang
PARENT_COMMAND=$(ps -o args= $PPID)
echo
#CC=clang
TOOLCHAINS_PATH=$(python ../../../../utils/ndk_toolchains_path.py --ndk ${ANDROID_NDK})
export OLD_PATH=$PATH
export PATH=$TOOLCHAINS_PATH/bin:$PATH
echo "OLDPATH: $OLD_PATH"
echo ""
echo "PATH: $PATH"
echo ""
echo "TOOLCHAINS_PATH: $TOOLCHAINS_PATH"
ARCHITECTURE=$1
ANDROID_API=$2
echo $3
#./Configure ${ARCHITECTURE} -D__ANDROID_API__=$ANDROID_API -D__ARM_MAX_ARCH__=8 --prefix=$3
./Configure ${ARCHITECTURE} -D__ANDROID_API__=$ANDROID_API --prefix=$3
export PATH=$OLD_PATH

27
android/external/downloads/Makefile

@ -13,10 +13,8 @@ include ../Makefile.conf
#------------------------------------------------------------------------------#
# Build parameters
all: downloads.stamp
downloads.stamp: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia
touch $@
all: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia download-boost \
download-cryptopp download-archive
download-iconv: libiconv-1.15.tar.gz
@ -25,9 +23,15 @@ download-uuid: ossp-uuid_1.6.2.orig.tar.gz
download-sequoia-deps: openssl-$(OPENSSL_VERSION).tar.gz gmp-$(GMP_VERSION).tar.bz2 \
nettle-$(NETTLE_VERSION).tar.gz
download-etpan: libetpan.git.stamp
download-etpan: libetpan.tar.gz
download-sequoia: sequoia.tar.gz
download-boost: boost-for-android.tar.gz
download-cryptopp: cryptopp.tar.gz
download-sequoia: sequoia.git.stamp
download-archive: libarchive-$(LIB_ARCHIVE_VERSION).tar.gz
# Download source and patch it
libiconv-1.15.tar.gz:
@ -49,6 +53,9 @@ 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
libarchive-$(LIB_ARCHIVE_VERSION).tar.gz:
wget -nc https://libarchive.org/downloads/libarchive-$(LIB_ARCHIVE_VERSION).tar.gz
# md5sum -c libarchive-$(LIB_ARCHIVE_VERSION).tar.gz.md5
#------------------------------------------------------------------------------#
# Clone update and archive external projects GIT repos
@ -56,22 +63,20 @@ nettle-$(NETTLE_VERSION).tar.gz:
# selected commit is archived in external/$project
define per_repo_targets
$(1).git.stamp:
$(1).tar.gz:
git clone $(2) $(1).git
(cd $(1).git; git archive --format=tar $(3)) > $(1).tar.gz
touch $(1).git.stamp
$(1).git_update: $(1).git.stamp
$(1).git_update: $(1).tar.gz
cd $(1).git; git pull
rm -rf $(1).tar.gz
(cd $(1).git; git archive --format=tar $(3)) > $(1).tar.gz
touch $(1).git.stamp
$(1)-clean:
rm -rf $(1)
rm -f $(1).src.stamp
EXTERNAL_LOCAL_GITS += $(1).git.stamp
EXTERNAL_LOCAL_GITS += $(1).tar.gz
EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update
EXTERNAL_SRCS += $(1)-src
EXTERNAL_SRCS_CLEAN += $(1)-clean

1
android/external/downloads/libarchive-3.6.1.tar.gz.md5

@ -0,0 +1 @@
802a56ef9eaa0b8776296ba78a6d0c2c libarchive-3.6.1.tar.gz

17
android/external/install_cryptopp.sh

@ -0,0 +1,17 @@
#!/bin/bash
###
### Script to isolate ENV required by crytptoPP to build.
###
echo "$0 $@"
ANDROID_CPU=$1
ANDROID_API=$2
PREFIX=$3
MAKE=$4
echo $3
export ANDROID_NDK_ROOT=$ANDROID_NDK
export ANDROID_SDK_ROOT=$ANDROID_SDK
source TestScripts/setenv-android.sh ANDROID_API=$ANDROID_API ANDROID_CPU=$ANDROID_CPU
PREFIX=$PREFIX $MAKE -f GNUmakefile-cross shared install

70
android/external/x86/Makefile

@ -17,7 +17,7 @@ APP_ABI ?= x86
all: build
build: showsetup uuid-install sequoia-ffi-install libetpan-build
build: showsetup uuid-install sequoia-ffi-install libetpan-build cryptopp-install libarchive-install
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@ -209,12 +209,9 @@ openssl/libssl.so: | openssl/Makefile
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" $(MAKE) -C openssl
$(LOCAL)/lib/libssl.so: openssl/libssl.so
cd openssl && \
cp libcrypto.so $(LOCAL)/lib && \
cp libcrypto.a $(LOCAL)/lib && \
cp libssl.so $(LOCAL)/lib && \
cp libssl.a $(LOCAL)/lib
ls -l $(LOCAL)/lib/libssl.so
mkdir -p $(LOCAL)
$(MAKE) -C openssl install
ls -l $(LOCAL)/lib
openssl-build: openssl/libssl.so
@ -297,8 +294,45 @@ nettle-install: $(LOCAL)/lib/libnettle.so
#------------------------------------------------------------------------------#
# Sequoia-ffi
# LibArchive
libarchive.src.stamp: ../downloads/libarchive-$(LIB_ARCHIVE_VERSION).tar.gz
tar xvf $<
mv libarchive-$(LIB_ARCHIVE_VERSION) libarchive
touch $@
libarchive-src: libarchive.src.stamp
libarchive-clean:
rm -rf libarchive
rm -rf libarchive.src.stamp
libarchive/Makefile: libarchive.src.stamp
cp libarchive/contrib/android/include/android_lf.h libarchive/libarchive/
cd libarchive && \
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
./configure \
--with-lib-path=$(LOCAL)/lib \
--with-include-path=$(LOCAL)/include \
--disable-documentation \
--disable-bsdtar \
--disable-bsdcpio \
--host=$(HOST) \
--without-xml2 \
--prefix=$(LOCAL)
libarchive/libarchive.so: libarchive/Makefile
$(MAKE) -C libarchive
$(LOCAL)/lib/libarchive.so: libarchive/libarchive.so
$(MAKE) -C libarchive DESTDIR=$(DESTDIR) prefix=$(prefix) install
libarchive-build: libarchive/libarchive.so
libarchive-install: $(LOCAL)/lib/libarchive.so
#------------------------------------------------------------------------------#
# Sequoia-ffi
CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/
sequoia.src.stamp: ../downloads/sequoia.tar.gz
@ -331,6 +365,26 @@ sequoia-ffi-build: $(CARGO_TARGET_DIR)/i686-linux-android/release/libsequoia_ope
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so
#------------------------------------------------------------------------------#
# Crypto++
cryptopp.src.stamp: ../downloads/cryptopp.tar.gz
mkdir -p cryptopp
cd cryptopp && tar xvf ../$<
touch $@
cryptopp-src: cryptopp.src.stamp
cryptopp-clean:
rm -rf cryptopp
rm -rf cryptopp.src.stamp
$(LOCAL)/lib/libcryptopp.so: cryptopp.src.stamp
cd cryptopp && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ../../install_cryptopp.sh $(APP_ABI) $(ANDROID_API) $(LOCAL) $(MAKE)
cryptopp-build: $(LOCAL)/lib/libcryptopp.so
cryptopp-install: $(LOCAL)/lib/libcryptopp.so
#------------------------------------------------------------------------------#
# assets for Android app

75
android/external/x86_64/Makefile

@ -17,7 +17,7 @@ APP_ABI ?= x86_64
all: build
build:showsetup uuid-install sequoia-ffi-install libetpan-build
build: showsetup uuid-install sequoia-ffi-install libetpan-build cryptopp-install libarchive-install
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@ -108,7 +108,7 @@ libiconv/lib/.libs/libiconv.a: libiconv/Makefile
$(LOCAL)/lib/libiconv.a: libiconv/lib/.libs/libiconv.a
$(MAKE) -C libiconv DESTDIR=$(DESTDIR) prefix=$(prefix) install
ls -l $(LOCAL)/lib/libiconv.a
ls -l $(LOCAL)/lib
libiconv-build: libiconv/lib/.libs/libiconv.a
@ -168,7 +168,7 @@ $(LOCAL)/lib/libuuid.so: uuid/.libs/libuuid.so
# install fails copying uuid cmdline tool, but libs are copied ...
-$(MAKE) -C uuid DESTDIR=$(DESTDIR) prefix=$(prefix) install
echo "****** THIS ERROR WAS WILLINGLY IGNORED ******"
ls -l $(LOCAL)/lib/libuuid.so
ls -l $(LOCAL)/lib
uuid-build: uuid/.libs/libuuid.so
@ -209,12 +209,9 @@ openssl/libssl.so: | openssl/Makefile
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" $(MAKE) -C openssl
$(LOCAL)/lib/libssl.so: openssl/libssl.so
cd openssl && \
cp libcrypto.so $(LOCAL)/lib && \
cp libcrypto.a $(LOCAL)/lib && \
cp libssl.so $(LOCAL)/lib && \
cp libssl.a $(LOCAL)/lib
ls -l $(LOCAL)/lib/libssl.so
mkdir -p $(LOCAL)
$(MAKE) -C openssl install
ls -l $(LOCAL)/lib
openssl-build: openssl/libssl.so
@ -250,7 +247,7 @@ gmp/.libs/libgmp.so: gmp/Makefile
$(LOCAL)/lib/libgmp.so: gmp/.libs/libgmp.so
$(MAKE) -C gmp DESTDIR=$(DESTDIR) prefix=$(prefix) install
#gmp/libtool --finish $(LOCAL)/lib/
ls -l $(LOCAL)/lib/libgmp.so
ls -l $(LOCAL)/lib
touch $@
gmp-build: gmp/.libs/libgmp.so
@ -296,6 +293,44 @@ nettle-build: nettle/libnettle.so
nettle-install: $(LOCAL)/lib/libnettle.so
#------------------------------------------------------------------------------#
# LibArchive
libarchive.src.stamp: ../downloads/libarchive-$(LIB_ARCHIVE_VERSION).tar.gz
tar xvf $<
mv libarchive-$(LIB_ARCHIVE_VERSION) libarchive
touch $@
libarchive-src: libarchive.src.stamp
libarchive-clean:
rm -rf libarchive
rm -rf libarchive.src.stamp
libarchive/Makefile: libarchive.src.stamp
cp libarchive/contrib/android/include/android_lf.h libarchive/libarchive/
cd libarchive && \
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
./configure \
--with-lib-path=$(LOCAL)/lib \
--with-include-path=$(LOCAL)/include \
--disable-documentation \
--disable-bsdtar \
--disable-bsdcpio \
--without-xml2 \
--host=$(HOST) \
--prefix=$(LOCAL)
libarchive/libarchive.so: libarchive/Makefile
$(MAKE) -C libarchive
$(LOCAL)/lib/libarchive.so: libarchive/libarchive.so
$(MAKE) -C libarchive DESTDIR=$(DESTDIR) prefix=$(prefix) install
libarchive-build: libarchive/libarchive.so
libarchive-install: $(LOCAL)/lib/libarchive.so
#------------------------------------------------------------------------------#
# Sequoia-ffi
@ -331,6 +366,26 @@ sequoia-ffi-build: $(CARGO_TARGET_DIR)/x86_64-linux-android/release/libsequoia_o
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so
#------------------------------------------------------------------------------#
# Crypto++
cryptopp.src.stamp: ../downloads/cryptopp.tar.gz
mkdir -p cryptopp
cd cryptopp && tar xvf ../$<
touch $@
cryptopp-src: cryptopp.src.stamp
cryptopp-clean:
rm -rf cryptopp
rm -rf cryptopp.src.stamp
$(LOCAL)/lib/libcryptopp.so: cryptopp.src.stamp
cd cryptopp && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ../../install_cryptopp.sh $(APP_ABI) $(ANDROID_API) $(LOCAL) $(MAKE)
cryptopp-build: $(LOCAL)/lib/libcryptopp.so
cryptopp-install: $(LOCAL)/lib/libcryptopp.so
#------------------------------------------------------------------------------#
# assets for Android app

21
android/jni/Android.mk

@ -37,15 +37,26 @@ LOCAL_EXPORT_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include
LOCAL_EXPORT_LDLIBS := -lz
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libcryptopp
LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libcryptopp.so
include $(PREBUILT_SHARED_LIBRARY)
#Take out Engine Headers
$(shell sh $(ENGINE_PATH)/build-android/takeOutHeaderFiles.sh $(ENGINE_PATH))
include $(CLEAR_VARS)
LOCAL_MODULE := pEpJNI
LOCAL_SHARED_LIBRARIES := libnettle libhogweed libgmp
LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libiconv libuuid pEpAdapter libsequoia_openpgp_ffi
LOCAL_SHARED_LIBRARIES := libnettle libhogweed libgmp
LOCAL_STATIC_LIBRARIES := pEpEngine libetpan libiconv libuuid pEpAdapter libsequoia_openpgp_ffi signedpkg
LOCAL_CPPFLAGS += -fexceptions
LOCAL_CPPFLAGS += -frtti
LOCAL_CPP_FEATURES += exceptions
LOCAL_CPPFLAGS += -std=c++11 -DANDROID_STL=c++_shared -DHAVE_PTHREADS -DDISABLE_SYNC -fuse-ld=lld
LOCAL_CPPFLAGS += -std=c++17 -DANDROID_STL=c++_shared -DHAVE_PTHREADS -DDISABLE_SYNC -fuse-ld=lld
LOCAL_SRC_FILES := \
../../src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc \
../../src/cxx/foundation_pEp_jniadapter_Engine.cc \
@ -60,7 +71,7 @@ LOCAL_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include
LOCAL_C_INCLUDES += $(LIB_PEP_ADAPTER_PATH)/build-android/include $(SRC_PATH)/libpEpAdapter
LOCAL_LDFLAGS = -Wl,--allow-multiple-definition
LOCAL_LDLIBS += -llog
LOCAL_LDLIBS += -llog -lz
include $(BUILD_SHARED_LIBRARY)
@ -73,5 +84,7 @@ include $(BUILD_SHARED_LIBRARY)
$(call import-add-path,$(SRC_PATH))
$(call import-module, pEpEngine/build-android/jni/)
$(call import-module, libpEpAdapter/build-android/jni/)
$(call import-module, signedpkg/build-android/jni)
#$(call import-module, downloadclient/build-android/jni)
$(info $(LOCAL_PATH))
$(call import-module, pEpJNIAdapter/android/external/$(TARGET_ARCH_ABI)/uuid/jni)

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

@ -125,10 +125,13 @@ public class AndroidHelper {
public static void nativeSetup(Context c) {
// pre-load libs for pepengine, as
// android cannot solve lib dependencies on its own
System.loadLibrary("cryptopp");
System.loadLibrary("gmp");
System.loadLibrary("nettle");
System.loadLibrary("hogweed");
migrateFromGPGToSequoiaIfNeeded(c.getFilesDir());
}

3
src/Makefile

@ -41,7 +41,6 @@ $(info AD_INC_PATH: $(AD_INC_PATH))
$(info YML2_PATH: $(YML2_PATH))
$(info CXXFLAGS: $(CXXFLAGS))
$(info LDFLAGS: $(LDFLAGS))
$(info LDLIBS: $(LDLIBS))
$(info ---------------------------------------------------)
# Dirs
@ -122,7 +121,7 @@ $(LIB_JAVA): compile-java
$(JAVA_BIN_DIR)/jar cf $@ -C $(JAVA_BUILD_ROOT) foundation
$(LIB_CXX_DYN): compile-cxx
$(CXX) $(OBJ_DIR)*.o $(LDFLAGS) $(LDLIBS) -o $@
$(CXX) $(OBJ_DIR)*.o $(LDFLAGS) -o $@
$(LIB_CXX_STATIC): compile-cxx
$(AR) -r $@ $(OBJ_DIR)*.o

22
src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc

@ -1,4 +1,7 @@
#include "foundation_pEp_jniadapter_AbstractEngine.h"
#include <iostream>
#include <pEp/unpack.hh>
#include <cryptopp/xed25519.h>
#include <pEp/keymanagement.h>
#include <pEp/message_api.h>
#include <pEp/sync_api.h>
@ -289,6 +292,25 @@ JNIEXPORT jboolean JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1getDe
return static_cast<jboolean>(Adapter::pEpLog::get_enabled());
}
JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1provision(JNIEnv *env,
jclass clazz,
jbyteArray url)
{
const char *_url = to_string(env, url);
std::cout << "PROVISION: " << _url << std::endl;
pEp::UpdateClient::product p { "provisioning data", std::string(_url) };
pEp::UpdateClient::PublicKey update_key;
pEp::UpdateClient::load_key("update_key.der");
CryptoPP::ed25519PublicKey deployment_key;
SignedPackage::LoadPublicKey("deployment_key-pub.der", deployment_key);
CryptoPP::RSA::PrivateKey provisioning_key;
SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key);
SignedPackage::provision_user(p, update_key, deployment_key, provisioning_key);
}
JNIEXPORT jstring JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1getVersion(JNIEnv *env,
jobject obj)
{

7
src/java/foundation/pEp/jniadapter/AbstractEngine.java

@ -49,6 +49,13 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn
private native static boolean _getDebugLogEnabled();
// CodeGen "basic"
public static void provision(String url) {
byte[] _url = Utils.toUTF8(url);
_provision(_url);
}
private static native void _provision(byte[] url);
public String getVersion() {
return _getVersion();

34
test/java/foundation/pEp/jniadapter/test/jni178/Makefile

@ -0,0 +1,34 @@
include ../../../../../../../Makefile.conf
include ../Makefile.conf
TEST_UNIT_NAME=jni178
JAVA_CLASSES+= \
TestAlice.class
.PHONY: pitytest compile alice test clean
all: alice compile
pitytest:
$(MAKE) -C $(PITYTEST_DIR)
alice: compile clean-pep-home-alice
cd $(JAVA_CWD);pwd;HOME=$(JAVA_PEP_HOME_DIR_ALICE) $(JAVA) $(JAVA_PKG_BASENAME).$(TEST_UNIT_NAME).TestAlice
compile: $(JAVA_CLASSES) pitytest
%.class: %.java
cd $(JAVA_CWD);javac -cp $(CLASSPATH) $(JAVA_PKG_BASEPATH)/$(TEST_UNIT_NAME)/$<
clean:
rm -f $(JAVA_CLASSES)
rm -f *.class
rm -f *.log
rm -Rf .gnupg
rm -Rf .lldb
clean-pep-home: clean-pep-home-alice
clean-pep-home-alice:
rm -rf $(PEP_HOME_DIR_ALICE)/.pEp

45
test/java/foundation/pEp/jniadapter/test/jni178/TestAlice.java

@ -0,0 +1,45 @@
package foundation.pEp.jniadapter.test.jni178;
import foundation.pEp.jniadapter.Engine;
import foundation.pEp.jniadapter.Identity;
import foundation.pEp.jniadapter.test.utils.AdapterTestUtils;
import foundation.pEp.jniadapter.test.utils.CTXBase;
import foundation.pEp.pitytest.AbstractTestContext;
import foundation.pEp.pitytest.TestContextInterface;
import foundation.pEp.pitytest.TestSuite;
import foundation.pEp.pitytest.TestUnit;
import foundation.pEp.pitytest.utils.TestUtils;
import static foundation.pEp.pitytest.TestLogger.log;
/*
JNI-178 - Add provision_user() from signedpkg
Expected Behaviour
*/
class CTXNull extends AbstractTestContext {
@Override
public TestContextInterface init() throws Throwable {
return this;
}
}
class TestAlice {
public static void main(String[] args) throws Exception {
TestSuite.getDefault().setVerbose(true);
TestSuite.getDefault().setTestColor(TestUtils.TermColor.GREEN);
Engine.setDebugLogEnabled(true);
CTXNull ctxNull = new CTXNull();
new TestUnit<CTXNull>("provision", ctxNull, ctx -> {
Engine.provision("update://updateserver.pEp.test");
});
TestSuite.getDefault().run();
}
}

2
utils/ndk_toolchains_path.py

@ -42,7 +42,7 @@ def main():
host_tag = get_host_tag_or_die()
toolchain_path = get_toolchain_path_or_die(args.ndk, host_tag)
print toolchain_path
print(toolchain_path)
if __name__ == '__main__':
main()

Loading…
Cancel
Save