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()