diff --git a/.gitignore b/.gitignore
index 4dc216c..1b8fd1b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -89,5 +89,12 @@ org.tar.gz
android/external/[?]*
android/external/build
+
+# Ignore Windows build
+build-windows/Debug
+build-windows/Release
+build-windows/.vs
+build-windows/pEpJNIAdapter.vcxproj.user
+
# Default ignored files
?idea/
diff --git a/DEPENDENCIES b/DEPENDENCIES
index 20e502e..887b374 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -1,5 +1,5 @@
# 1st Party Dependencies
## Prefer git tags instead of SHA hashes when possible.
-libpEpAdapter=Release_2.1.21
-pEpEngine=Release_2.1.42
\ No newline at end of file
+libpEpAdapter=Release_2.1.22
+pEpEngine=Release_2.1.64
\ No newline at end of file
diff --git a/Makefile.conf b/Makefile.conf
index 966c6e8..8a29b41 100644
--- a/Makefile.conf
+++ b/Makefile.conf
@@ -17,7 +17,6 @@ YML2_PATH=$(PREFIX)/src/yml2
YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS)
YML2_OPTS=--encoding=utf8
-
### Guessing JAVA_HOME
ifeq ($(PLATFORM),linux)
JAVA_HOME=$(subst /bin,,$(dir $(realpath /usr/bin/javac)))
diff --git a/android/README.md b/android/README.md
index 7def56c..d753dcc 100644
--- a/android/README.md
+++ b/android/README.md
@@ -16,13 +16,13 @@ It can be done with the SDK and the sdkmanager cli tool, or using Android Studio
Android studio -> Configure -> SDK Manager -> SDK Tools (tab) -> Select NDK and install
-Tip: To install other versions click on "Show packages details" and select the desired NDK version (Currently using: 21.0.6113669)
+Tip: To install other versions click on "Show packages details" and select the desired NDK version (Currently using: 25.1.8937393)
## Required env\_vars (for MacOS):
``` bash
-export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
-export ANDROID_NDK=$ANDROID_SDK/ndk/21.0.6113669
+export JAVA_HOME=$(/usr/libexec/java_home -v 11)
+export ANDROID_NDK=$ANDROID_SDK/ndk/25.1.8937393
export HOST_TAG=darwin-x86_64
export ANDROID_MIN_SDK_32=18
export ANDROID_MIN_SDK_64=21
@@ -39,6 +39,7 @@ rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-andro
Tell rust the location of the new target linker and AR
+TODO: Update and point to llvm-ar
```bash
echo "
[target.aarch64-linux-android]
diff --git a/android/build.gradle b/android/build.gradle
index 8a573f8..fbe68cd 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -2,25 +2,27 @@
def pEpEngineSrc = hasProperty('pEpEngineSrc') ? pEpEngineSrc : "../../pEpEngine"
def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true"
-def threadsToUse = hasProperty('threadsToUse') ?
- threadsToUse : Runtime.getRuntime().availableProcessors()
+//CHeck M1 answers the correct thing off .avaialableprocessors here
+//def threadsToUse = hasProperty('threadsToUse') ?
+// threadsToUse : Runtime.getRuntime().availableProcessors()
+def threadsToUse = 1
def pEpEngineDB = new File(new File(pEpEngineSrc), 'db')
buildscript {
repositories {
google()
- jcenter()
+ mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:4.1.3'
+ classpath 'com.android.tools.build:gradle:4.2.2'
}
}
allprojects {
repositories {
google()
- jcenter()
+ mavenCentral()
}
}
@@ -30,10 +32,10 @@ android {
compileSdkVersion 30
defaultConfig {
- minSdkVersion 19
+ minSdkVersion 21
targetSdkVersion 30
versionCode 7
- versionName "2.1.29"
+ versionName "2.1.43"
externalNativeBuild {
ndkBuild {
@@ -145,7 +147,7 @@ android {
from file(new File(pEpEngineDB, 'system.db'))
into 'assets'
}
- ndkVersion '21.0.6113669'
+ ndkVersion '25.1.8937393'
if(buildAutomatic == "true") {
buildpEpEngineSystemDB.dependsOn(buildExternal)
diff --git a/android/external/Makefile.conf b/android/external/Makefile.conf
index a8a6d2d..a0fee8d 100644
--- a/android/external/Makefile.conf
+++ b/android/external/Makefile.conf
@@ -2,6 +2,7 @@
### Android NDK Common conf
NDK_TOOLCHAIN_COMPILER ?= clang
+ANDROID_API ?= 21
### Select GNU SED on MacOS.
@@ -9,18 +10,28 @@ NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]')
ifeq ($(NDK_UNAME),darwin)
SED=gsed
+ TOOLCHAIN_ARCH=darwin-x86_64
else
SED=sed
+ TOOLCHAIN_ARCH=linux-x86_64
endif
+ANDROID_NDK_HOME=$(ANDROID_NDK)/toolchains/llvm/prebuilt/$(TOOLCHAIN_ARCH)
+
+### Toolchain tools
+LD := $(ANDROID_NDK_HOME)/bin/ld
+AR := $(ANDROID_NDK_HOME)/bin/llvm-ar
+RANLIB := $(ANDROID_NDK_HOME)/bin/llvm-ranlib
+STRIP := $(ANDROID_NDK_HOME)/bin/llvm-strip
+
### Sequoia deps versions
-OPENSSL_VERSION=1.1.1h
+OPENSSL_VERSION=1.1.1q
GMP_VERSION=6.2.1
NETTLE_VERSION=3.7.3
### Git deps repos
-EXTERNAL_GIT_REPOS += libetpan|https://gitea.pep.foundation/pEp.foundation/libetpan.git?0123f34ec4ef7711b3670b744b3ae7e97178afe1
-EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/sequoia-pgp/sequoia.git?openpgp/v1.3.0
+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
### Common variables
#### Source code targets
@@ -38,3 +49,7 @@ EXTERNAL_SRCS_CLEAN += gmp-clean
EXTERNAL_SRCS_CLEAN += nettle-clean
EXTERNAL_SRCS_CLEAN += sequoia-ffi-clean
+### Other variables
+ANDROID_ETPAN_BUILD_VERSION=2
+
+
diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile
index b690c74..f44569e 100644
--- a/android/external/arm64-v8a/Makefile
+++ b/android/external/arm64-v8a/Makefile
@@ -14,18 +14,10 @@ include ../Makefile.conf
# Build parameters
APP_ABI ?= arm64-v8a
-ANDROID_API ?= 21
all: build
-build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build
-
-#------------------------------------------------------------------------------#
-# Generate standalone toolchain
-generate-ndk-toolchain: ndk-standalone-toolchain/bin/clang
-
-ndk-standalone-toolchain/bin/clang:
- bash generate-standalone-ndk-toolchain.sh
+build: showsetup uuid-install sequoia-ffi-install libetpan-build
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@@ -48,16 +40,9 @@ NDK_TOOLCHAIN = $(HOST)-$(NDK_TOOLCHAIN_COMPILER)
TARGET_ARCH_ABI = $(APP_ABI)
include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk
-ANDROID_NDK_HOME=$(EXTERNAL_ROOT)/ndk-standalone-toolchain
-
-LD := $(ANDROID_NDK_HOME)/bin/$(HOST)-ld
-AR := $(ANDROID_NDK_HOME)/bin/$(HOST)-ar
-AS := $(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++
-RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib
-STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip
+CC := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang
+CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang++
+AS := $(CC)
CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -std=c99
LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie
@@ -131,9 +116,9 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz
touch $@
libetpan/Makefile: libetpan.src.stamp | libiconv-install
- cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh
- cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/
- cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/
+ cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh $(APP_ABI)
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/$(APP_ABI)/lib/* $(LOCAL)/lib/
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/include/* $(LOCAL)/include/
touch $@
libetpan-build: libetpan/Makefile
@@ -300,6 +285,8 @@ nettle/libnettle.so: nettle/Makefile
$(LOCAL)/lib/libnettle.so: nettle/libnettle.so
$(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install
+ cp nettle/libnettle.so $(LOCAL)/lib/libnettle.so
+ cp nettle/libhogweed.so $(LOCAL)/lib/libhogweed.so
nettle-build: nettle/libnettle.so
@@ -314,7 +301,11 @@ CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/
sequoia.src.stamp: ../downloads/sequoia.tar.gz
mkdir -p sequoia
cd sequoia && tar xvf ../$<
+ $(SED) -i 's,1.48.0,1.49.0,' sequoia/rust-toolchain
cd sequoia && cargo update -p nettle-sys --precise 2.0.8
+ 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' \;
touch $@
sequoia-ffi-clean:
@@ -323,6 +314,7 @@ sequoia-ffi-clean:
$(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)" \
+ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
PKG_CONFIG_ALLOW_CROSS=1 \
diff --git a/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh b/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh
deleted file mode 100755
index 5a4196f..0000000
--- a/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-usage="Usage: $(basename "$0") [-h][--force] -- Script to generate android standalone toolchain to build pEp for Android.
-
-where:
- -h Show this help text
- --force Force generating the toolchain"
-
-
-if [ "$1" == "-h" ]; then
-echo "$usage"
- exit 0
-fi
-
-if [ -z "$ANDROID_NDK" ]; then
- echo "Please define \$ANDROID_NDK"
- exit 1
-fi
-
-$ANDROID_NDK/build/tools/make_standalone_toolchain.py $1 --arch arm64 --api 21 --install-dir=ndk-standalone-toolchain
-exit 0
-
diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile
index b03e22d..8c77cca 100644
--- a/android/external/armeabi-v7a/Makefile
+++ b/android/external/armeabi-v7a/Makefile
@@ -14,19 +14,12 @@ include ../Makefile.conf
# Build parameters
APP_ABI ?= armeabi-v7a
-ANDROID_API ?= 18
all: build
#assets
-build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build
+build: showsetup uuid-install sequoia-ffi-install libetpan-build
-#------------------------------------------------------------------------------#
-# Generate standalone toolchain
-generate-ndk-toolchain: ndk-standalone-toolchain/bin/clang
-
-ndk-standalone-toolchain/bin/clang:
- bash generate-standalone-ndk-toolchain.sh
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@@ -43,21 +36,18 @@ PATH := ${PATH}:$(NDK_TOOLCHAIN)/bin:$(LOCAL)/bin
NDK_SYSROOT=$(ANDROID_NDK_HOME)/sysroot
HOST = arm-linux-androideabi
+HOST_V7 = armv7a-linux-androideabi
NDK_TOOLCHAIN = $(HOST)-$(NDK_TOOLCHAIN_COMPILER)
# include Android's build flags
TARGET_ARCH_ABI = $(APP_ABI)
include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk
-ANDROID_NDK_HOME=$(EXTERNAL_ROOT)/ndk-standalone-toolchain
+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)-clang
-CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang
-CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++
-RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib
-STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip
+CC := $(ANDROID_NDK_HOME)/bin/$(HOST_V7)$(ANDROID_API)-clang
+CXX := $(ANDROID_NDK_HOME)/bin/$(HOST_V7)$(ANDROID_API)-clang++
+AS := $(CC)
CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -std=c99
LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie
@@ -131,9 +121,9 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz
touch $@
libetpan/Makefile: libetpan.src.stamp | libiconv-install
- cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh
- cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/
- cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/
+ cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh $(APP_ABI)
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/$(APP_ABI)/lib/* $(LOCAL)/lib/
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/include/* $(LOCAL)/include/
touch $@
libetpan-build: libetpan/Makefile
@@ -300,6 +290,8 @@ nettle/libnettle.so: nettle/Makefile
$(LOCAL)/lib/libnettle.so: nettle/libnettle.so
$(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install
+ cp nettle/libnettle.so $(LOCAL)/lib/libnettle.so
+ cp nettle/libhogweed.so $(LOCAL)/lib/libhogweed.so
nettle-build: nettle/libnettle.so
@@ -313,7 +305,11 @@ CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build
sequoia.src.stamp: ../downloads/sequoia.tar.gz
mkdir -p sequoia
cd sequoia && tar xvf ../$<
+ $(SED) -i 's,1.48.0,1.49.0,' sequoia/rust-toolchain
cd sequoia && cargo update -p nettle-sys --precise 2.0.8
+ 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' \;
touch $@
sequoia-ffi-clean:
@@ -322,6 +318,7 @@ sequoia-ffi-clean:
$(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)" \
+ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
PKG_CONFIG_ALLOW_CROSS=1 \
diff --git a/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh b/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh
deleted file mode 100755
index d6b5604..0000000
--- a/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-usage="Usage: $(basename "$0") [-h][--force] -- Script to generate android standalone toolchain to build pEp for Android.
-
-where:
- -h Show this help text
- --force Force generating the toolchain"
-
-
-if [ "$1" == "-h" ]; then
-echo "$usage"
- exit 0
-fi
-
-if [ -z "$ANDROID_NDK" ]; then
- echo "Please define \$ANDROID_NDK"
- exit 1
-fi
-
-$ANDROID_NDK/build/tools/make_standalone_toolchain.py $1 --arch arm --api 18 --install-dir=ndk-standalone-toolchain
-exit 0
-
diff --git a/android/external/downloads/Makefile b/android/external/downloads/Makefile
index 38218b0..bc8bdd1 100644
--- a/android/external/downloads/Makefile
+++ b/android/external/downloads/Makefile
@@ -15,22 +15,9 @@ include ../Makefile.conf
all: downloads.stamp
-downloads.stamp: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia \
- generate-ndk-arm generate-ndk-arm64 generate-ndk-x86 generate-ndk-x86_64
+downloads.stamp: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia
touch $@
-generate-ndk-arm64:
- cd ../arm64-v8a && bash generate-standalone-ndk-toolchain.sh
-
-generate-ndk-arm:
- cd ../armeabi-v7a && bash generate-standalone-ndk-toolchain.sh
-
-generate-ndk-x86:
- cd ../x86 && bash generate-standalone-ndk-toolchain.sh
-
-generate-ndk-x86_64:
- cd ../x86_64 && bash generate-standalone-ndk-toolchain.sh
-
download-iconv: libiconv-1.15.tar.gz
download-uuid: ossp-uuid_1.6.2.orig.tar.gz
@@ -118,4 +105,4 @@ clean:
.PHONY: all clean download-iconv \
download-uuid download-etpan \
- download-sequoia-deps download-sequoia
\ No newline at end of file
+ download-sequoia-deps download-sequoia
diff --git a/android/external/downloads/openssl-1.1.1h.tar.gz.md5 b/android/external/downloads/openssl-1.1.1h.tar.gz.md5
deleted file mode 100644
index 99e70a8..0000000
--- a/android/external/downloads/openssl-1.1.1h.tar.gz.md5
+++ /dev/null
@@ -1 +0,0 @@
-53840c70434793127a3574433494e8d3 openssl-1.1.1h.tar.gz
diff --git a/android/external/downloads/openssl-1.1.1q.tar.gz.md5 b/android/external/downloads/openssl-1.1.1q.tar.gz.md5
new file mode 100644
index 0000000..9c33f3a
--- /dev/null
+++ b/android/external/downloads/openssl-1.1.1q.tar.gz.md5
@@ -0,0 +1 @@
+c685d239b6a6e1bd78be45624c092f51 openssl-1.1.1q.tar.gz
diff --git a/android/external/x86/Makefile b/android/external/x86/Makefile
index 5376ef6..ff3899e 100644
--- a/android/external/x86/Makefile
+++ b/android/external/x86/Makefile
@@ -14,18 +14,10 @@ include ../Makefile.conf
# Build parameters
APP_ABI ?= x86
-ANDROID_API ?= 18
all: build
-build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build
-
-#------------------------------------------------------------------------------#
-# Generate standalone toolchain
-generate-ndk-toolchain: ndk-standalone-toolchain/bin/clang
-
-ndk-standalone-toolchain/bin/clang:
- bash generate-standalone-ndk-toolchain.sh
+build: showsetup uuid-install sequoia-ffi-install libetpan-build
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@@ -48,16 +40,11 @@ NDK_TOOLCHAIN = $(APP_ABI)-$(NDK_TOOLCHAIN_COMPILER)
TARGET_ARCH_ABI = $(APP_ABI)
include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk
-ANDROID_NDK_HOME=$(EXTERNAL_ROOT)/ndk-standalone-toolchain
+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)-clang
-CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang
-CC := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang
-CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++
-RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib
-STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip
+CC := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang
+CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang++
+AS := $(CC)
CFLAGS += -DANDROID -I$(LOCAL)/include $(TARGET_CFLAGS) -fPIE -fPIC -std=c99
LDFLAGS += -llog -L$(LOCAL)/lib $(TARGET_LDFLAGS) -pie
@@ -131,9 +118,9 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz
touch $@
libetpan/Makefile: libetpan.src.stamp | libiconv-install
- cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh
- cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/
- cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/
+ cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh $(APP_ABI)
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/$(APP_ABI)/lib/* $(LOCAL)/lib/
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/include/* $(LOCAL)/include/
touch $@
libetpan-build: libetpan/Makefile
@@ -294,15 +281,17 @@ nettle/Makefile: nettle.src.stamp
--host=$(HOST) \
--prefix=$(LOCAL)
-nettle/libnettle.so: nettle/Makefile
+nettle/libnettle.so nettle/libhogweed.so: nettle/Makefile
$(MAKE) -C nettle
-$(LOCAL)/lib/libnettle.so: nettle/libnettle.so
+$(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so: nettle/libnettle.so nettle/libhogweed.so
$(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install
+ cp nettle/libnettle.so $(LOCAL)/lib/libnettle.so
+ cp nettle/libhogweed.so $(LOCAL)/lib/libhogweed.so
-nettle-build: nettle/libnettle.so
+nettle-build: nettle/libnettle.so nettle/libhogweed.so
-nettle-install: $(LOCAL)/lib/libnettle.so
+nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so
#------------------------------------------------------------------------------#
@@ -313,7 +302,11 @@ CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/
sequoia.src.stamp: ../downloads/sequoia.tar.gz
mkdir -p sequoia
cd sequoia && tar xvf ../$<
+ $(SED) -i 's,1.48.0,1.49.0,' sequoia/rust-toolchain
cd sequoia && cargo update -p nettle-sys --precise 2.0.8
+ 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' \;
touch $@
sequoia-ffi-clean:
@@ -322,6 +315,7 @@ sequoia-ffi-clean:
$(CARGO_TARGET_DIR)/i686-linux-android/release/libsequoia_openpgp_ffi.so: sequoia.src.stamp sequoia-deps-build
cd sequoia && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \
+ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
PKG_CONFIG_ALLOW_CROSS=1 \
diff --git a/android/external/x86/generate-standalone-ndk-toolchain.sh b/android/external/x86/generate-standalone-ndk-toolchain.sh
deleted file mode 100755
index 1bc6783..0000000
--- a/android/external/x86/generate-standalone-ndk-toolchain.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-usage="Usage: $(basename "$0") [-h][--force] -- Script to generate android standalone toolchain to build pEp for Android.
-
-where:
- -h Show this help text
- --force Force generating the toolchain"
-
-
-if [ "$1" == "-h" ]; then
-echo "$usage"
- exit 0
-fi
-
-if [ -z "$ANDROID_NDK" ]; then
- echo "Please define \$ANDROID_NDK"
- exit 1
-fi
-
-$ANDROID_NDK/build/tools/make_standalone_toolchain.py $1 --arch x86 --api 18 --install-dir=ndk-standalone-toolchain
-exit 0
-
diff --git a/android/external/x86_64/Makefile b/android/external/x86_64/Makefile
index 2e7649a..d99e3d6 100644
--- a/android/external/x86_64/Makefile
+++ b/android/external/x86_64/Makefile
@@ -14,18 +14,10 @@ include ../Makefile.conf
# Build parameters
APP_ABI ?= x86_64
-ANDROID_API ?= 21
all: build
-build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build
-
-#------------------------------------------------------------------------------#
-# Generate standalone toolchain
-generate-ndk-toolchain: ndk-standalone-toolchain/bin/clang
-
-ndk-standalone-toolchain/bin/clang:
- bash generate-standalone-ndk-toolchain.sh
+build:showsetup uuid-install sequoia-ffi-install libetpan-build
#------------------------------------------------------------------------------#
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
@@ -48,16 +40,11 @@ NDK_TOOLCHAIN = $(APP_ABI)-$(NDK_TOOLCHAIN_COMPILER)
TARGET_ARCH_ABI = $(APP_ABI)
include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk
-ANDROID_NDK_HOME=$(EXTERNAL_ROOT)/ndk-standalone-toolchain
+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)$(ANDROID_API)-clang
-CC := $(ANDROID_NDK_HOME)/bin/$(HOST)$(ANDROID_API)-clang
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
@@ -131,9 +118,9 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz
touch $@
libetpan/Makefile: libetpan.src.stamp | libiconv-install
- cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh
- cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/
- cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/
+ cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh $(APP_ABI)
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/$(APP_ABI)/lib/* $(LOCAL)/lib/
+ cp -r libetpan/build-android/libetpan-android-$(ANDROID_ETPAN_BUILD_VERSION)/include/* $(LOCAL)/include/
touch $@
libetpan-build: libetpan/Makefile
@@ -299,6 +286,8 @@ nettle/libnettle.so: nettle/Makefile
$(LOCAL)/lib/libnettle.so: nettle/libnettle.so
$(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install
+ cp nettle/libnettle.so $(LOCAL)/lib/libnettle.so
+ cp nettle/libhogweed.so $(LOCAL)/lib/libhogweed.so
nettle-build: nettle/libnettle.so
@@ -313,7 +302,11 @@ CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/
sequoia.src.stamp: ../downloads/sequoia.tar.gz
mkdir -p sequoia
cd sequoia && tar xvf ../$<
+ $(SED) -i 's,1.48.0,1.49.0,' sequoia/rust-toolchain
cd sequoia && cargo update -p nettle-sys --precise 2.0.8
+ 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' \;
touch $@
sequoia-ffi-clean:
@@ -322,6 +315,7 @@ sequoia-ffi-clean:
$(CARGO_TARGET_DIR)/x86_64-linux-android/release/libsequoia_openpgp_ffi.so: sequoia.src.stamp sequoia-deps-build
cd sequoia && PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" \
+ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
LD_LIBRARY_PATH=$(LOCAL)/lib/ \
PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \
PKG_CONFIG_ALLOW_CROSS=1 \
diff --git a/android/external/x86_64/generate-standalone-ndk-toolchain.sh b/android/external/x86_64/generate-standalone-ndk-toolchain.sh
deleted file mode 100755
index 0a6c857..0000000
--- a/android/external/x86_64/generate-standalone-ndk-toolchain.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-usage="Usage: $(basename "$0") [-h][--force] -- Script to generate android standalone toolchain to build pEp for Android.
-
-where:
- -h Show this help text
- --force Force generating the toolchain"
-
-
-if [ "$1" == "-h" ]; then
-echo "$usage"
- exit 0
-fi
-
-if [ -z "$ANDROID_NDK" ]; then
- echo "Please define \$ANDROID_NDK"
- exit 1
-fi
-
-$ANDROID_NDK/build/tools/make_standalone_toolchain.py $1 --arch x86_64 --api 21 --install-dir=ndk-standalone-toolchain
-exit 0
-
diff --git a/android/src/foundation/pEp/jniadapter/AndroidHelper.java b/android/src/foundation/pEp/jniadapter/AndroidHelper.java
index 7bc26e0..e746075 100644
--- a/android/src/foundation/pEp/jniadapter/AndroidHelper.java
+++ b/android/src/foundation/pEp/jniadapter/AndroidHelper.java
@@ -31,7 +31,7 @@ public class AndroidHelper {
// TODO : Increment when needed.
// TODO : Check if this version tracking is really needed and Automatize it
- public static String ENGINE_VERSION_CODE = "Release_2.1.37";
+ public static String ENGINE_VERSION_CODE = "Release_2.1.56";
private static File shareDir;
diff --git a/build-windows/generate_code.cmd b/build-windows/generate_code.cmd
new file mode 100644
index 0000000..96d9256
--- /dev/null
+++ b/build-windows/generate_code.cmd
@@ -0,0 +1,52 @@
+SET current_directory=%~dp0
+SET dist_directory=%current_directory:~0,-15%\dist
+SET build_directory=%current_directory:~0,-15%\build
+SET marker_dir=%build_directory%\marker
+SET exceptions_directory=%current_directory:~0,-15%\src\java\foundation\pEp\jniadapter\exceptions
+SET java_build_root=%build_directory%\java
+SET java_pkg_basename=foundation\pEp\jniadapter
+
+:: Create directories as necessary
+MKDIR %marker_dir%
+MKDIR %exceptions_directory%
+
+:: Generate Status files
+SH ..\utils\gen_status_codes.sh ..\..\pEp\pEpEngine.h
+MV passphrase_status_list.yml2 ..\src\codegen\
+MV status_list.yml2 ..\src\codegen\
+
+:: Generate YML2 code
+PUSHD ..
+CD src
+CD codegen
+
+PY -m yml2.yml2proc -E utf-8 -y gen_java_Engine.ysl2 pEp.yml2
+IF %ERRORLEVEL% NEQ 0 GOTO end
+PY -m yml2.yml2proc -E utf-8 -y gen_java_Message.ysl2 pEp.yml2
+IF %ERRORLEVEL% NEQ 0 GOTO end
+PY -m yml2.yml2proc -E utf-8 -y gen_cpp_Engine.ysl2 pEp.yml2
+IF %ERRORLEVEL% NEQ 0 GOTO end
+PY -m yml2.yml2proc -E utf-8 -y gen_cpp_Message.ysl2 pEp.yml2
+IF %ERRORLEVEL% NEQ 0 GOTO end
+PY -m yml2.yml2proc -E utf-8 -y gen_throw_pEp_exception.ysl2 pEp.yml2
+IF %ERRORLEVEL% NEQ 0 GOTO end
+
+:: Compile the Java part
+CD ..
+CD java
+
+"%JAVA_HOME%\bin\javac" -encoding UTF-8 -d "%java_build_root%" -h ..\cxx %java_pkg_basename%\*.java
+IF %ERRORLEVEL% NEQ 0 GOTO end
+"%JAVA_HOME%\bin\javac" -encoding UTF-8 -d "%java_build_root%" %java_pkg_basename%\*.java
+IF %ERRORLEVEL% NEQ 0 GOTO end
+"%JAVA_HOME%\bin\javac" -encoding UTF-8 -d "%java_build_root%" %java_pkg_basename%\exceptions\*.java
+IF %ERRORLEVEL% NEQ 0 GOTO end
+"%JAVA_HOME%\bin\javac" -encoding UTF-8 -d "%java_build_root%" %java_pkg_basename%\interfaces\*.java
+IF %ERRORLEVEL% NEQ 0 GOTO end
+
+"%JAVA_HOME%\bin\jar" -cvf "%java_build_root%\pEp.jar" -C "%java_build_root%" foundation
+IF %ERRORLEVEL% NEQ 0 GOTO end
+
+:end
+POPD
+EXIT /B %ERRORLEVEL%
diff --git a/build-windows/pEpJNIAdapter.vcxproj b/build-windows/pEpJNIAdapter.vcxproj
new file mode 100644
index 0000000..8e7aa6b
--- /dev/null
+++ b/build-windows/pEpJNIAdapter.vcxproj
@@ -0,0 +1,139 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {ec44fec9-2f3a-4a0c-b60e-0f22aa43ef58}
+
+
+ {146e69f8-e1da-456a-b048-6dd29d9acf6b}
+
+
+
+ 16.0
+ Win32Proj
+ {2a1167be-f438-4e08-b32e-25f130d97c33}
+ pEpJNIAdapter
+ 10.0
+
+
+
+ DynamicLibrary
+ true
+ v142
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v142
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(ProjectDir)..\..\pEpForWindowsAdapterSolution\Debug\;$(LibraryPath)
+
+
+ false
+
+
+
+ Level3
+ true
+ __LP64__;WIN32;_DEBUG;PEPJNIADAPTER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ %JAVA_HOME%\include\win32;%JAVA_HOME%\include;$(ProjectDir)..\..\
+
+
+ Windows
+ true
+ false
+
+
+ IF NOT EXIST "..\build" CALL generate_code.cmd
+
+
+ CP "..\build\java\pEp.jar" "$(SolutionDir)\$(Configuration)"
+
+
+
+
+ Level3
+ true
+ true
+ true
+ __LP64__;WIN32;NDEBUG;PEPJNIADAPTER_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+ NotUsing
+
+
+ %JAVA_HOME%\include\win32;%JAVA_HOME%\include;$(ProjectDir)..\..\
+
+
+ Windows
+ true
+ true
+ true
+ false
+
+
+ IF NOT EXIST "..\build" CALL generate_code.cmd
+
+
+ CP "..\build\java\pEp.jar" "$(SolutionDir)\$(Configuration)"
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build-windows/pEpJNIAdapter.vcxproj.filters b/build-windows/pEpJNIAdapter.vcxproj.filters
new file mode 100644
index 0000000..952024d
--- /dev/null
+++ b/build-windows/pEpJNIAdapter.vcxproj.filters
@@ -0,0 +1,75 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
\ No newline at end of file
diff --git a/scripts/debian10/java8.pEpJNIAdapter.debian10.Dockerfile b/scripts/debian10/java8.pEpJNIAdapter.debian10.Dockerfile
index 3a0d415..7be655a 100644
--- a/scripts/debian10/java8.pEpJNIAdapter.debian10.Dockerfile
+++ b/scripts/debian10/java8.pEpJNIAdapter.debian10.Dockerfile
@@ -20,7 +20,7 @@ RUN git clone --depth=1 \
WORKDIR ${BUILDROOT}/libpEpAdapter
### Build libpEpAdapter
-RUN sh ./scripts/${CURRENT_DISTRO}/build_libpEpAdapter.sh && \
+RUN sh ./scripts/common/build_libpEpAdapter.sh && \
rm -rf ${BUILDROOT}/*
diff --git a/scripts/debian10/pEpJNIAdapter.debian10.Dockerfile b/scripts/debian10/pEpJNIAdapter.debian10.Dockerfile
index 77bdb54..f3708fd 100644
--- a/scripts/debian10/pEpJNIAdapter.debian10.Dockerfile
+++ b/scripts/debian10/pEpJNIAdapter.debian10.Dockerfile
@@ -20,7 +20,7 @@ RUN git clone --depth=1 \
WORKDIR ${BUILDROOT}/libpEpAdapter
### Build libpEpAdapter
-RUN sh ./scripts/${CURRENT_DISTRO}/build_libpEpAdapter.sh && \
+RUN sh ./scripts/common/build_libpEpAdapter.sh && \
rm -rf ${BUILDROOT}/*
### Install system dependencies
diff --git a/src/codegen/pEp.yml2 b/src/codegen/pEp.yml2
index ed1549b..ca142e3 100644
--- a/src/codegen/pEp.yml2
+++ b/src/codegen/pEp.yml2
@@ -70,6 +70,7 @@ namespace pEp {
enumitem sync_notify_accepted_device_added > 6
enumitem sync_notify_accepted_group_created > 7
enumitem sync_notify_accepted_device_accepted > 8
+ enumitem sync_notify_outgoing_rating_change > 64
enumitem sync_passphrase_required > 128
enumitem sync_notify_sole > 254
enumitem sync_notify_in_group > 255
@@ -189,7 +190,7 @@ namespace pEp {
in string fpr2,
in string lang,
returns sstring words,
- in bool full
+ in bool full
);
method cached=true get_message_trustwords(
@@ -253,6 +254,8 @@ namespace pEp {
in string fpr
);
+ method cached=true sync_reinit();
+
// "basic" methods are generated on the java side, but
// on the C++ side, manually implemented in basic_api.cc
@@ -273,6 +276,8 @@ namespace pEp {
basic void config_passphrase(string passphrase);
basic void config_passphrase_for_new_keys(bool enable, string passphrase);
basic bytearray export_key(string fpr);
+ basic void config_enable_echo_protocol(bool enable);
+ basic void config_enable_echo_in_outgoing_message_rating_preview(bool enable);
};
struct message {
diff --git a/src/cxx/basic_api.cc b/src/cxx/basic_api.cc
index 543cc0a..18c10b9 100644
--- a/src/cxx/basic_api.cc
+++ b/src/cxx/basic_api.cc
@@ -457,5 +457,33 @@ JNIEXPORT jbyteArray JNICALL Java_foundation_pEp_jniadapter_Engine__1export_1key
return from_string(env, buff);
}
+JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine__1config_1enable_1echo_1protocol(JNIEnv *env,
+ jobject obj,
+ jboolean enable)
+{
+ std::mutex *mutex_local = nullptr;
+ {
+ std::lock_guard l(global_mutex);
+ pEpLog("called with lock_guard");
+ mutex_local = get_engine_java_object_mutex(env, obj);
+ }
+ std::lock_guard l(*mutex_local);
+ ::config_enable_echo_protocol(session(),static_cast(enable));
+}
+
+JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine__1config_1enable_1echo_1in_1outgoing_1message_1rating_1preview(JNIEnv *env,
+ jobject obj,
+ jboolean enable)
+{
+ std::mutex *mutex_local = nullptr;
+ {
+ std::lock_guard l(global_mutex);
+ pEpLog("called with lock_guard");
+ mutex_local = get_engine_java_object_mutex(env, obj);
+ }
+ std::lock_guard l(*mutex_local);
+ ::config_enable_echo_in_outgoing_message_rating_preview(session(),static_cast(enable));
+}
+
} // extern "C"
diff --git a/src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc b/src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc
index b9b9473..3c86927 100644
--- a/src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc
+++ b/src/cxx/foundation_pEp_jniadapter_AbstractEngine.cc
@@ -2,6 +2,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -358,6 +359,26 @@ JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1stopSync(
Adapter::stop_sync();
}
+JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1config_1media_1keys(JNIEnv *env,
+ jobject obj,
+ jobject value)
+{
+ std::mutex *mutex_local = nullptr;
+ {
+ std::lock_guard l(global_mutex);
+ pEpLog("called with lock_guard");
+ mutex_local = get_engine_java_object_mutex(env, obj);
+ }
+ std::lock_guard l(*mutex_local);
+
+ PEP_STATUS status = ::config_media_keys(Adapter::session(),to_stringpairlist(env, value));
+ if (status) {
+ throw_pEp_Exception(env, status);
+ }
+
+}
+
+
JNIEXPORT jboolean JNICALL Java_foundation_pEp_jniadapter_AbstractEngine__1isSyncRunning(JNIEnv *env,
jobject obj)
{
diff --git a/src/cxx/jniutils.cc b/src/cxx/jniutils.cc
index 3d3b2ad..bad064c 100644
--- a/src/cxx/jniutils.cc
+++ b/src/cxx/jniutils.cc
@@ -3,6 +3,17 @@
#include
#include
+#ifdef ANDROID
+ #ifndef __LP64__
+
+ #include
+
+ #define time_t time64_t
+ #define timegm timegm64
+ #define gmtime_r gmtime64_r
+ #endif
+#endif
+
namespace pEp {
namespace JNIAdapter {
@@ -237,7 +248,6 @@ jbyteArray from_string(JNIEnv *env,
const char *str)
{
if (str && str[0]) {
- jboolean isCopy;
size_t l = strlen(str);
jbyteArray _str = env->NewByteArray(l);
env->SetByteArrayRegion(_str, 0, l, (jbyte *) str);
@@ -433,7 +443,7 @@ timestamp *to_timestamp(JNIEnv *env,
if (t) {
time_t clock = t / 1000;
- gmtime_r(&clock, ts);
+ gmtime_r(&clock, (struct tm*)ts);
//LOGD("/* Seconds (0-60) */ TO :%d", ts->tm_sec);
//LOGD("/* Minutes (0-59) */ :%d", ts->tm_min);
diff --git a/src/cxx/jniutils.hh b/src/cxx/jniutils.hh
index 747d55a..0b346b1 100644
--- a/src/cxx/jniutils.hh
+++ b/src/cxx/jniutils.hh
@@ -10,6 +10,7 @@
#include
#include
#include
+#include
#if 0 // Enable if log needed
#include
diff --git a/src/java/foundation/pEp/jniadapter/AbstractEngine.java b/src/java/foundation/pEp/jniadapter/AbstractEngine.java
index 7d160d8..502236c 100644
--- a/src/java/foundation/pEp/jniadapter/AbstractEngine.java
+++ b/src/java/foundation/pEp/jniadapter/AbstractEngine.java
@@ -77,6 +77,19 @@ abstract class AbstractEngine extends UniquelyIdentifiable implements AbstractEn
private native void _stopSync();
+ public void config_media_keys(ArrayList> value) {
+ if (value != null) {
+ ArrayList> list = new ArrayList>();
+ for (Pair i : value) {
+ list.add(new Pair(Utils.toUTF8(i.first), Utils.toUTF8(i.second)));
+ }
+ _config_media_keys(list);
+ } else {
+ _config_media_keys(null);
+ }
+ }
+
+ private native void _config_media_keys(ArrayList> value);
public boolean isSyncRunning() {
return _isSyncRunning();
diff --git a/utils/gen_status_codes.sh b/utils/gen_status_codes.sh
index 238db98..2bd2e83 100644
--- a/utils/gen_status_codes.sh
+++ b/utils/gen_status_codes.sh
@@ -23,6 +23,7 @@ OS="$(uname -s)"
case "${OS}" in
Linux*) SED=sed;;
Darwin*) SED=gsed;;
+ MSYS*) SED=sed;;
CYGWIN*) echo "UNSUPORTED YET" && exit;;
MINGW*) echo "UNSUPORTED YET" && exit;;
*) echo "UNKNOWN:${OS}" && exit;;
diff --git a/utils/ndk_toolchains_path.py b/utils/ndk_toolchains_path.py
index 2c13081..8ede2f2 100644
--- a/utils/ndk_toolchains_path.py
+++ b/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()