Browse Source
Reviewed-on: https://gitea.pep.foundation/pEp.foundation/pEpJNIAdapter/pulls/25pull/35/head

15 changed files with 471 additions and 1362 deletions
@ -0,0 +1,9 @@ |
|||||
|
# This file holds variables that *should only be accessed from the Makefiles in each architecture*, which are generated from MakefileTemplate. |
||||
|
|
||||
|
# install root for built files |
||||
|
EXTERNAL_ROOT = $(shell pwd) |
||||
|
DESTDIR = $(EXTERNAL_ROOT)/.. |
||||
|
prefix = /output/$(APP_ABI) |
||||
|
LOCAL = $(DESTDIR)$(prefix) |
||||
|
NDK_TOOLCHAIN = $(NDK_TOOLCHAIN_TARGET)-$(NDK_TOOLCHAIN_COMPILER) |
||||
|
TEMP_WORK_PATH = "$(ANDROID_NDK_HOME)/bin:${PATH}:$(NDK_TOOLCHAIN)/bin:$(LOCAL)/bin" |
@ -1,388 +0,0 @@ |
|||||
# Copyright 2019, pEp Foundation
|
|
||||
# This file is part of pEpJNIAdapter for Android - ARM64 v8a build
|
|
||||
# This file may be used under the terms of the GNU General Public License version 3
|
|
||||
# see LICENSE.txt
|
|
||||
|
|
||||
include ../Makefile.conf |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Makefile to build deps for use with pEpEngine
|
|
||||
# based on gnupg-for-android/external/Makefile
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Build parameters
|
|
||||
|
|
||||
APP_ABI ?= arm64-v8a |
|
||||
|
|
||||
all: build |
|
||||
|
|
||||
build: showsetup uuid-install sequoia-ffi-install libetpan-build |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
|
|
||||
|
|
||||
EXTERNAL_ROOT := $(shell pwd) |
|
||||
|
|
||||
# install root for built files
|
|
||||
DESTDIR = $(EXTERNAL_ROOT)/.. |
|
||||
prefix = /output/$(APP_ABI) |
|
||||
LOCAL := $(DESTDIR)$(prefix) |
|
||||
|
|
||||
PATH := ${PATH}:$(NDK_TOOLCHAIN)/bin:$(LOCAL)/bin |
|
||||
|
|
||||
NDK_SYSROOT=$(ANDROID_NDK_HOME)/sysroot |
|
||||
|
|
||||
HOST = aarch64-linux-android |
|
||||
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 |
|
||||
|
|
||||
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 |
|
||||
|
|
||||
# change 'release' to 'debug' for unoptimized debug builds
|
|
||||
CFLAGS += $(TARGET_arm64_debug_CFLAGS) |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# GNU Tools trickery
|
|
||||
|
|
||||
# point pkg-config to the .pc files generated from these builds
|
|
||||
export PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig |
|
||||
|
|
||||
# workaround for cross-compiling bug in autoconf
|
|
||||
export ac_cv_func_malloc_0_nonnull=yes |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# debugging stuff
|
|
||||
|
|
||||
showsetup: |
|
||||
@echo "NDK_TOOLCHAIN: $(NDK_TOOLCHAIN)" |
|
||||
@echo "NDK_SYSROOT: $(NDK_SYSROOT)" |
|
||||
@echo "APP_ABI: $(APP_ABI)" |
|
||||
@echo "HOST: $(HOST)" |
|
||||
@echo "CC: $(CC)" |
|
||||
@echo "LD: $(LD)" |
|
||||
@echo "CFLAGS: $(CFLAGS)" |
|
||||
@echo "LDFLAGS: $(LDFLAGS)" |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# libiconv
|
|
||||
|
|
||||
libiconv.src.stamp: ../downloads/libiconv-1.15.tar.gz |
|
||||
tar xvf $< |
|
||||
mv libiconv-1.15 libiconv |
|
||||
touch $@ |
|
||||
|
|
||||
libiconv-src: libiconv.src.stamp |
|
||||
|
|
||||
libiconv-clean: |
|
||||
rm -rf libiconv |
|
||||
rm -rf libiconv.src.stamp |
|
||||
|
|
||||
libiconv/Makefile: libiconv.src.stamp |
|
||||
cd libiconv && \
|
|
||||
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 \
|
|
||||
--host=$(HOST) \
|
|
||||
--enable-static \
|
|
||||
--disable-shared \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
libiconv/lib/.libs/libiconv.a: libiconv/Makefile |
|
||||
$(MAKE) -C libiconv |
|
||||
|
|
||||
$(LOCAL)/lib/libiconv.a: libiconv/lib/.libs/libiconv.a |
|
||||
$(MAKE) -C libiconv DESTDIR=$(DESTDIR) prefix=$(prefix) install |
|
||||
ls -l $(LOCAL)/lib/libiconv.a |
|
||||
|
|
||||
libiconv-build: libiconv/lib/.libs/libiconv.a |
|
||||
|
|
||||
libiconv-install: $(LOCAL)/lib/libiconv.a |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# libetpan
|
|
||||
libetpan.src.stamp: ../downloads/libetpan.tar.gz |
|
||||
mkdir -p libetpan |
|
||||
cd libetpan && tar xvf ../$< |
|
||||
touch $@ |
|
||||
|
|
||||
libetpan/Makefile: libetpan.src.stamp | libiconv-install |
|
||||
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 |
|
||||
|
|
||||
libetpan-clean: |
|
||||
rm -rf libetpan |
|
||||
rm -rf libetpan.src.stamp |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# uuid
|
|
||||
|
|
||||
uuid.src.stamp: ../downloads/ossp-uuid_1.6.2.orig.tar.gz |
|
||||
tar xvf $< |
|
||||
mv uuid-1.6.2 uuid |
|
||||
touch $@ |
|
||||
|
|
||||
uuid-src: uuid.src.stamp |
|
||||
|
|
||||
uuid-clean: |
|
||||
rm -rf uuid |
|
||||
rm -rf uuid.src.stamp |
|
||||
|
|
||||
uuid/Makefile: uuid.src.stamp |
|
||||
$(SED) -i 's,AC_CHECK_VA_COPY(),,' uuid/uuid.ac |
|
||||
cd uuid && autoconf |
|
||||
-patch -N -p1 --reject-file=- uuid/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch |
|
||||
cp ../config.sub uuid |
|
||||
cp ../config.guess uuid |
|
||||
cd uuid && \
|
|
||||
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
||||
./configure \
|
|
||||
--enable-static \
|
|
||||
--host=$(HOST) \
|
|
||||
--with-gnu-ld \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
uuid/.libs/libuuid.so: uuid/Makefile |
|
||||
$(MAKE) -C uuid |
|
||||
|
|
||||
$(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 |
|
||||
|
|
||||
uuid-build: uuid/.libs/libuuid.so |
|
||||
|
|
||||
uuid-prebuild: uuid/jni/Android.mk uuid/Makefile |
|
||||
|
|
||||
uuid-install: $(LOCAL)/lib/libuuid.so | uuid-prebuild |
|
||||
|
|
||||
uuid/jni/Android.mk: uuid.src.stamp |
|
||||
mkdir -p uuid/jni |
|
||||
cp ../libuuid.Android.mk uuid/jni/Android.mk |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Sequoia
|
|
||||
|
|
||||
sequoia-deps-build: openssl-install nettle-install |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# OpenSSL
|
|
||||
|
|
||||
openssl.src.stamp: ../downloads/openssl-$(OPENSSL_VERSION).tar.gz |
|
||||
tar xvf $< |
|
||||
mv openssl-$(OPENSSL_VERSION) openssl |
|
||||
touch $@ |
|
||||
|
|
||||
openssl-src: openssl.src.stamp |
|
||||
|
|
||||
openssl-clean: |
|
||||
rm -rf openssl |
|
||||
rm -rf openssl.src.stamp |
|
||||
|
|
||||
OPENSSL_ARCHITECTURE:=android-arm64 |
|
||||
|
|
||||
openssl/Makefile: openssl.src.stamp |
|
||||
cd openssl && \
|
|
||||
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ../../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 |
|
||||
|
|
||||
openssl-build: openssl/libssl.so |
|
||||
|
|
||||
openssl-install: $(LOCAL)/lib/libssl.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# GMP
|
|
||||
|
|
||||
gmp.src.stamp: ../downloads/gmp-$(GMP_VERSION).tar.bz2 |
|
||||
tar xvf $< |
|
||||
mv gmp-$(GMP_VERSION) gmp |
|
||||
touch $@ |
|
||||
|
|
||||
gmp-src: gmp.src.stamp |
|
||||
|
|
||||
gmp-clean: |
|
||||
rm -rf gmp |
|
||||
rm -rf gmp.src.stamp |
|
||||
|
|
||||
gmp/Makefile: gmp.src.stamp |
|
||||
cd gmp && \
|
|
||||
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
||||
./configure \
|
|
||||
--host=$(HOST) \
|
|
||||
--prefix=$(LOCAL) \
|
|
||||
--disable-static \
|
|
||||
MPN_PATH="arm64 generic" |
|
||||
|
|
||||
|
|
||||
gmp/.libs/libgmp.so: gmp/Makefile |
|
||||
$(MAKE) -C gmp |
|
||||
|
|
||||
$(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 |
|
||||
touch $@ |
|
||||
|
|
||||
gmp-build: gmp/.libs/libgmp.so |
|
||||
|
|
||||
gmp-install: $(LOCAL)/lib/libgmp.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# NETTLE
|
|
||||
|
|
||||
nettle.src.stamp: ../downloads/nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so |
|
||||
tar xvf $< |
|
||||
mv nettle-$(NETTLE_VERSION) nettle |
|
||||
touch $@ |
|
||||
|
|
||||
nettle-src: nettle.src.stamp gmp-install |
|
||||
|
|
||||
nettle-clean: |
|
||||
rm -rf nettle |
|
||||
rm -rf nettle.src.stamp |
|
||||
|
|
||||
nettle/Makefile: nettle.src.stamp |
|
||||
-patch -N -p1 --reject-file=- nettle/configure.ac ../nettle-3.4.1-remove-so-versioning.patch |
|
||||
-patch -N -p1 --reject-file=- nettle/Makefile.in ../nettle-3.4.1-remove-so-versioning-link.patch |
|
||||
cd nettle && \
|
|
||||
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-static \
|
|
||||
--disable-documentation \
|
|
||||
--host=$(HOST) \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
nettle/libnettle.so: nettle/Makefile |
|
||||
$(MAKE) -C nettle |
|
||||
|
|
||||
$(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 |
|
||||
|
|
||||
nettle-install: $(LOCAL)/lib/libnettle.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Sequoia-ffi
|
|
||||
|
|
||||
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: |
|
||||
rm -rf sequoia |
|
||||
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)" \
|
|
||||
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 \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_LIB_DIR="$(LOCAL)/lib" \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_INCLUDE_DIR="$(LOCAL)/include" \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_DIR="$(LOCAL)/bin" \
|
|
||||
CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) cargo build --target aarch64-linux-android -p sequoia-openpgp-ffi --release |
|
||||
|
|
||||
$(LOCAL)/lib/libsequoia_openpgp_ffi.so: $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.so |
|
||||
cp $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/ |
|
||||
cp -r sequoia/openpgp-ffi/include/* $(LOCAL)/include |
|
||||
|
|
||||
|
|
||||
sequoia-ffi-build: $(CARGO_TARGET_DIR)/aarch64-linux-android/release/libsequoia_openpgp_ffi.so |
|
||||
|
|
||||
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# assets for Android app
|
|
||||
|
|
||||
#ASSETS := $(EXTERNAL_ROOT)/assets
|
|
||||
#
|
|
||||
#assets: clean-assets
|
|
||||
# # add the new stuff
|
|
||||
# install -d $(ASSETS)
|
|
||||
# cp -a $(LOCAL)/* $(ASSETS)
|
|
||||
# # remove all the stuff we don't need
|
|
||||
# rm -f $(ASSETS)/bin/*-static
|
|
||||
# rm -f $(ASSETS)/bin/curl*
|
|
||||
# rm -f $(ASSETS)/lib/*.a $(ASSETS)/lib/*.la
|
|
||||
# # remove lib symlinks since Android AssetManager copies them as files
|
|
||||
# rm -f $(ASSETS)/lib/*.so
|
|
||||
# # remove .so.0 symlink and rename the .so.0.12.0 file to it
|
|
||||
# for f in $(ASSETS)/lib/*.so.[0-9]*; do \
|
|
||||
# echo $$f; \
|
|
||||
# test ! -L $$f || \
|
|
||||
# (rm $$f && mv $$f.[0-9]* $$f); \
|
|
||||
# done
|
|
||||
# rm -rf $(ASSETS)/include
|
|
||||
# rm -rf $(ASSETS)/share/man $(ASSETS)/share/info $(ASSETS)/share/doc
|
|
||||
# rm -rf $(ASSETS)/tests
|
|
||||
#
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# clean
|
|
||||
|
|
||||
clean-assets: |
|
||||
rm -rf $(ASSETS) |
|
||||
|
|
||||
clean-install: |
|
||||
rm -rf $(LOCAL) |
|
||||
|
|
||||
clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-clean |
|
||||
|
|
||||
clean-all: clean |
|
||||
rm -rf *.git |
|
||||
rm -rf *.stamp |
|
||||
#------------------------------------------------------------------------------#
|
|
||||
|
|
||||
.PHONY = clean clean-install clean-assets libetpan-clean\
|
|
||||
libiconv-build libiconv-install \
|
|
||||
libetpan-build \
|
|
||||
uuid-build uuid-prebuild uuid-install \
|
|
||||
gmp-build gmp-install \
|
|
||||
sequoia-deps-build \
|
|
||||
openssl-build openssl-install \
|
|
||||
nettle-build nettle-install \
|
|
||||
sequoia-ffi-build sequoia-ffi-install\
|
|
||||
assets \
|
|
||||
$(EXTERNAL_LOCAL_GITS_UPDATE) $(EXTERNAL_SRCS) $(EXTERNAL_SRCS_CLEAN)\
|
|
||||
showsetup |
|
@ -1,398 +0,0 @@ |
|||||
# Copyright 2019, pEp Foundation
|
|
||||
# This file is part of pEpJNIAdapter for Android - ARMv7 build
|
|
||||
# This file may be used under the terms of the GNU General Public License version 3
|
|
||||
# see LICENSE.txt
|
|
||||
|
|
||||
include ../Makefile.conf |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Makefile to build deps for use with pEpEngine
|
|
||||
# based on gnupg-for-android/external/Makefile
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Build parameters
|
|
||||
|
|
||||
APP_ABI ?= armeabi-v7a |
|
||||
|
|
||||
all: build |
|
||||
#assets
|
|
||||
|
|
||||
build: showsetup uuid-install sequoia-ffi-install libetpan-build |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
|
|
||||
|
|
||||
EXTERNAL_ROOT := $(shell pwd) |
|
||||
|
|
||||
# install root for built files
|
|
||||
DESTDIR = $(EXTERNAL_ROOT)/.. |
|
||||
prefix = /output/$(APP_ABI) |
|
||||
LOCAL := $(DESTDIR)$(prefix) |
|
||||
|
|
||||
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=$(ANDROID_NDK)/toolchains/llvm/prebuilt/$(TOOLCHAIN_ARCH) |
|
||||
|
|
||||
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 |
|
||||
|
|
||||
# change 'release' to 'debug' for unoptimized debug builds
|
|
||||
CFLAGS += $(TARGET_arm_debug_CFLAGS) |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# GNU Tools trickery
|
|
||||
|
|
||||
# point pkg-config to the .pc files generated from these builds
|
|
||||
export PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig |
|
||||
|
|
||||
# workaround for cross-compiling bug in autoconf
|
|
||||
export ac_cv_func_malloc_0_nonnull=yes |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# debugging stuff
|
|
||||
|
|
||||
showsetup: |
|
||||
@echo "NDK_TOOLCHAIN: $(NDK_TOOLCHAIN)" |
|
||||
@echo "NDK_SYSROOT: $(NDK_SYSROOT)" |
|
||||
@echo "APP_ABI: $(APP_ABI)" |
|
||||
@echo "HOST: $(HOST)" |
|
||||
@echo "CC: $(CC)" |
|
||||
@echo "LD: $(LD)" |
|
||||
@echo "CFLAGS: $(CFLAGS)" |
|
||||
@echo "LDFLAGS: $(LDFLAGS)" |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# libiconv
|
|
||||
|
|
||||
libiconv.src.stamp: ../downloads/libiconv-1.15.tar.gz |
|
||||
tar xvf $< |
|
||||
mv libiconv-1.15 libiconv |
|
||||
touch $@ |
|
||||
|
|
||||
libiconv-src: libiconv.src.stamp |
|
||||
|
|
||||
libiconv-clean: |
|
||||
rm -rf libiconv |
|
||||
rm -rf libiconv.src.stamp |
|
||||
|
|
||||
libiconv/Makefile: libiconv.src.stamp |
|
||||
cd libiconv && \
|
|
||||
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 \
|
|
||||
--host=$(HOST) \
|
|
||||
--enable-static \
|
|
||||
--disable-shared \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
libiconv/lib/.libs/libiconv.a: libiconv/Makefile |
|
||||
$(MAKE) -C libiconv |
|
||||
|
|
||||
$(LOCAL)/lib/libiconv.a: libiconv/lib/.libs/libiconv.a |
|
||||
$(MAKE) -C libiconv DESTDIR=$(DESTDIR) prefix=$(prefix) install |
|
||||
ls -l $(LOCAL)/lib/libiconv.a |
|
||||
|
|
||||
libiconv-build: libiconv/lib/.libs/libiconv.a |
|
||||
|
|
||||
libiconv-install: $(LOCAL)/lib/libiconv.a |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# libetpan
|
|
||||
libetpan.src.stamp: ../downloads/libetpan.tar.gz |
|
||||
mkdir -p libetpan |
|
||||
cd libetpan && tar xvf ../$< |
|
||||
touch $@ |
|
||||
|
|
||||
libetpan/Makefile: libetpan.src.stamp | libiconv-install |
|
||||
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 |
|
||||
|
|
||||
libetpan-clean: |
|
||||
rm -rf libetpan |
|
||||
rm -rf libetpan.src.stamp |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# uuid
|
|
||||
|
|
||||
# using released package from debian. official ftp wasn't available today
|
|
||||
|
|
||||
uuid.src.stamp: ../downloads/ossp-uuid_1.6.2.orig.tar.gz |
|
||||
tar xvf $< |
|
||||
mv uuid-1.6.2 uuid |
|
||||
touch $@ |
|
||||
|
|
||||
uuid-src: uuid.src.stamp |
|
||||
|
|
||||
uuid-clean: |
|
||||
rm -rf uuid |
|
||||
rm -rf uuid.src.stamp |
|
||||
|
|
||||
uuid/Makefile: uuid.src.stamp |
|
||||
$(SED) -i 's,AC_CHECK_VA_COPY(),,' uuid/uuid.ac |
|
||||
cd uuid && autoconf |
|
||||
-patch -N -p1 --reject-file=- uuid/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch |
|
||||
cp ../config.sub uuid |
|
||||
cp ../config.guess uuid |
|
||||
cd uuid && \
|
|
||||
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
||||
./configure \
|
|
||||
--enable-static \
|
|
||||
--host=$(HOST) \
|
|
||||
--with-gnu-ld \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
uuid/.libs/libuuid.so: uuid/Makefile |
|
||||
$(MAKE) -C uuid |
|
||||
|
|
||||
$(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 |
|
||||
|
|
||||
uuid-build: uuid/.libs/libuuid.so |
|
||||
|
|
||||
uuid-prebuild: uuid/jni/Android.mk uuid/Makefile |
|
||||
|
|
||||
uuid-install: $(LOCAL)/lib/libuuid.so | uuid-prebuild |
|
||||
|
|
||||
uuid/jni/Android.mk: uuid.src.stamp |
|
||||
mkdir -p uuid/jni |
|
||||
cp ../libuuid.Android.mk uuid/jni/Android.mk |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Sequoia
|
|
||||
|
|
||||
sequoia-deps-build: openssl-install nettle-install |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# OpenSSL
|
|
||||
|
|
||||
openssl.src.stamp: ../downloads/openssl-$(OPENSSL_VERSION).tar.gz |
|
||||
tar xvf $< |
|
||||
mv openssl-$(OPENSSL_VERSION) openssl |
|
||||
touch $@ |
|
||||
|
|
||||
openssl-src: openssl.src.stamp |
|
||||
|
|
||||
openssl-clean: |
|
||||
rm -rf openssl |
|
||||
rm -rf openssl.src.stamp |
|
||||
|
|
||||
|
|
||||
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) |
|
||||
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 |
|
||||
|
|
||||
openssl-build: openssl/libssl.so |
|
||||
|
|
||||
openssl-install: $(LOCAL)/lib/libssl.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# GMP
|
|
||||
|
|
||||
gmp.src.stamp: ../downloads/gmp-$(GMP_VERSION).tar.bz2 |
|
||||
tar xvf $< |
|
||||
mv gmp-$(GMP_VERSION) gmp |
|
||||
touch $@ |
|
||||
|
|
||||
gmp-src: gmp.src.stamp |
|
||||
|
|
||||
gmp-clean: |
|
||||
rm -rf gmp |
|
||||
rm -rf gmp.src.stamp |
|
||||
|
|
||||
gmp/Makefile: gmp.src.stamp |
|
||||
cd gmp && \
|
|
||||
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
||||
./configure \
|
|
||||
--host=$(HOST) \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
gmp/.libs/libgmp.so: gmp/Makefile |
|
||||
$(MAKE) -C gmp |
|
||||
|
|
||||
$(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 |
|
||||
touch $@ |
|
||||
|
|
||||
gmp-build: gmp/.libs/libgmp.so |
|
||||
|
|
||||
gmp-install: $(LOCAL)/lib/libgmp.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# NETTLE
|
|
||||
|
|
||||
nettle.src.stamp: ../downloads/nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so |
|
||||
tar xvf $< |
|
||||
mv nettle-$(NETTLE_VERSION) nettle |
|
||||
touch $@ |
|
||||
|
|
||||
nettle-src: nettle.src.stamp |
|
||||
|
|
||||
nettle-clean: |
|
||||
rm -rf nettle |
|
||||
rm -rf nettle.src.stamp |
|
||||
|
|
||||
nettle/Makefile: nettle.src.stamp |
|
||||
-patch -N -p1 --reject-file=- nettle/configure.ac ../nettle-3.4.1-remove-so-versioning.patch |
|
||||
-patch -N -p1 --reject-file=- nettle/Makefile.in ../nettle-3.4.1-remove-so-versioning-link.patch |
|
||||
cd nettle && \
|
|
||||
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-static \
|
|
||||
--disable-documentation \
|
|
||||
--host=$(HOST) \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
nettle/libnettle.so: nettle/Makefile |
|
||||
$(MAKE) -C nettle |
|
||||
|
|
||||
$(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 |
|
||||
|
|
||||
nettle-install: $(LOCAL)/lib/libnettle.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Sequoia-ffi
|
|
||||
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: |
|
||||
rm -rf sequoia |
|
||||
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)" \
|
|
||||
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 \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_LIB_DIR="$(LOCAL)/lib" \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_INCLUDE_DIR="$(LOCAL)/include" \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_DIR="$(LOCAL)/bin" \
|
|
||||
CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) cargo build --target armv7-linux-androideabi -p sequoia-openpgp-ffi --release |
|
||||
|
|
||||
|
|
||||
$(LOCAL)/lib/libsequoia_openpgp_ffi.so: $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so |
|
||||
cp $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/ |
|
||||
cp -r sequoia/openpgp-ffi/include/* $(LOCAL)/include |
|
||||
|
|
||||
|
|
||||
sequoia-ffi-build: $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so |
|
||||
|
|
||||
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# assets for Android app
|
|
||||
|
|
||||
#ASSETS := $(EXTERNAL_ROOT)/assets
|
|
||||
#
|
|
||||
#assets: clean-assets
|
|
||||
# # add the new stuff
|
|
||||
# install -d $(ASSETS)
|
|
||||
# cp -a $(LOCAL)/* $(ASSETS)
|
|
||||
# # remove all the stuff we don't need
|
|
||||
# rm -f $(ASSETS)/bin/*-static
|
|
||||
# rm -f $(ASSETS)/bin/curl*
|
|
||||
# rm -f $(ASSETS)/lib/*.a $(ASSETS)/lib/*.la
|
|
||||
# # remove lib symlinks since Android AssetManager copies them as files
|
|
||||
# rm -f $(ASSETS)/lib/*.so
|
|
||||
# # remove .so.0 symlink and rename the .so.0.12.0 file to it
|
|
||||
# for f in $(ASSETS)/lib/*.so.[0-9]*; do \
|
|
||||
# echo $$f; \
|
|
||||
# test ! -L $$f || \
|
|
||||
# (rm $$f && mv $$f.[0-9]* $$f); \
|
|
||||
# done
|
|
||||
# rm -rf $(ASSETS)/include
|
|
||||
# rm -rf $(ASSETS)/share/man $(ASSETS)/share/info $(ASSETS)/share/doc
|
|
||||
# rm -rf $(ASSETS)/tests
|
|
||||
#
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Clone update and archive external projects GIT repos
|
|
||||
# Local clone is in external/$project.git while
|
|
||||
# selected commit is archived in external/$project
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# clean
|
|
||||
|
|
||||
clean-assets: |
|
||||
rm -rf $(ASSETS) |
|
||||
|
|
||||
clean-install: |
|
||||
rm -rf $(LOCAL) |
|
||||
|
|
||||
clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-clean |
|
||||
|
|
||||
clean-all: clean |
|
||||
rm -rf *.git |
|
||||
rm -rf *.stamp |
|
||||
#------------------------------------------------------------------------------#
|
|
||||
|
|
||||
.PHONY = clean clean-install clean-assets libetpan-clean \
|
|
||||
libiconv-build libiconv-install \
|
|
||||
libetpan-build \
|
|
||||
uuid-build uuid-prebuild uuid-install \
|
|
||||
gmp-build gmp-install \
|
|
||||
sequoia-deps-build \
|
|
||||
openssl-build openssl-install \
|
|
||||
nettle-build nettle-install \
|
|
||||
sequoia-ffi-build sequoia-ffi-install\
|
|
||||
assets \
|
|
||||
$(EXTERNAL_LOCAL_GITS_UPDATE) $(EXTERNAL_SRCS) $(EXTERNAL_SRCS_CLEAN)\
|
|
||||
showsetup |
|
@ -0,0 +1,76 @@ |
|||||
|
#!/bin/zsh |
||||
|
#emulate -LR bash |
||||
|
|
||||
|
ARCH_DEST="$1" |
||||
|
mkdir "$ARCH_DEST" |
||||
|
cp MakefileTemplate "$ARCH_DEST"/Makefile |
||||
|
FILE_DEST=$ARCH_DEST/Makefile |
||||
|
|
||||
|
################################################################################ |
||||
|
# Select TEMPLATE FIELDS FOR ARCH # |
||||
|
################################################################################ |
||||
|
|
||||
|
case $ARCH_DEST in |
||||
|
x86) |
||||
|
HOST=i686-linux-android |
||||
|
COMPILER_PREFIX="$HOST" |
||||
|
NDK_TOOLCHAIN_TARGET="$ARCH_DEST" |
||||
|
ARCH_DEBUG_CFLAGS=TARGET_x86_debug_CFLAGS |
||||
|
OPENSSL_ARCHITECTURE=android-x86 |
||||
|
SEQUOIA_ARCH=i686-linux-android |
||||
|
;; |
||||
|
x86_64) |
||||
|
HOST=x86_64-linux-android |
||||
|
COMPILER_PREFIX="$HOST" |
||||
|
NDK_TOOLCHAIN_TARGET="$ARCH_DEST" |
||||
|
ARCH_DEBUG_CFLAGS=TARGET_x86_64_debug_CFLAGS |
||||
|
OPENSSL_ARCHITECTURE=android-x86_64 |
||||
|
SEQUOIA_ARCH=x86_64-linux-android |
||||
|
;; |
||||
|
armeabi-v7a) |
||||
|
HOST=arm-linux-androideabi |
||||
|
COMPILER_PREFIX=armv7a-linux-androideabi |
||||
|
NDK_TOOLCHAIN_TARGET="$HOST" |
||||
|
ARCH_DEBUG_CFLAGS=TARGET_arm_debug_CFLAGS |
||||
|
OPENSSL_ARCHITECTURE=android-arm |
||||
|
SEQUOIA_ARCH=armv7-linux-androideabi |
||||
|
;; |
||||
|
arm64-v8a) |
||||
|
HOST=aarch64-linux-android |
||||
|
COMPILER_PREFIX="$HOST" |
||||
|
NDK_TOOLCHAIN_TARGET="$HOST" |
||||
|
ARCH_DEBUG_CFLAGS=TARGET_arm64_debug_CFLAGS |
||||
|
OPENSSL_ARCHITECTURE=android-arm64 |
||||
|
GMP_MAKEFILE_EXTRA=' MPN_PATH=\"arm64 generic\"' |
||||
|
SEQUOIA_ARCH=aarch64-linux-android |
||||
|
;; |
||||
|
esac |
||||
|
|
||||
|
################################################################################ |
||||
|
# Select GNU SED # |
||||
|
################################################################################ |
||||
|
|
||||
|
OS="$(uname -s)" |
||||
|
|
||||
|
case "${OS}" in |
||||
|
Linux*) SED=sed;; |
||||
|
Darwin*) SED=gsed;; |
||||
|
CYGWIN*) echo "UNSUPORTED YET" && exit;; |
||||
|
MINGW*) echo "UNSUPORTED YET" && exit;; |
||||
|
*) echo "UNKNOWN:${OS}" && exit;; |
||||
|
esac |
||||
|
|
||||
|
################################################################################ |
||||
|
# REPLACE FIELDS IN TEMPLATE # |
||||
|
################################################################################ |
||||
|
|
||||
|
$SED -i 's/\[ARCH\]/'"$ARCH_DEST"'/g' "$FILE_DEST" |
||||
|
$SED -i 's/\[HOST\]/'"$HOST"'/g' "$FILE_DEST" |
||||
|
$SED -i 's@\[COMPILER_PREFIX\]@'"$COMPILER_PREFIX"'@g' "$FILE_DEST" |
||||
|
$SED -i 's@\[NDK_TOOLCHAIN_TARGET\]@'"$NDK_TOOLCHAIN_TARGET"'@g' "$FILE_DEST" |
||||
|
$SED -i 's/\[ARCH_DEBUG_CFLAGS\]/'"$ARCH_DEBUG_CFLAGS"'/g' "$FILE_DEST" |
||||
|
$SED -i 's/\[OPENSSL_ARCHITECTURE\]/'"$OPENSSL_ARCHITECTURE"'/g' "$FILE_DEST" |
||||
|
$SED -i 's/\[GMP_MAKEFILE_EXTRA\]/'"$GMP_MAKEFILE_EXTRA"'/g' "$FILE_DEST" |
||||
|
$SED -i 's/\[SEQUOIA_ARCH\]/'"$SEQUOIA_ARCH"'/g' "$FILE_DEST" |
||||
|
|
||||
|
cat "$FILE_DEST" |
@ -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-18-arm |
|
||||
exit 0 |
|
||||
|
|
@ -0,0 +1,27 @@ |
|||||
|
mkfileName = $(firstword $(MAKEFILE_LIST)) |
||||
|
helpHeader = $(notdir $(abspath $(dir $(mkfileName))))/$(mkfileName) |
||||
|
|
||||
|
TARGET_MAX_CHAR_NUM=21 |
||||
|
## Show help
|
||||
|
help: |
||||
|
@echo '' |
||||
|
@echo '${BOLD}${CYAN}============= $(helpHeader) =============${RESET}' |
||||
|
@echo '' |
||||
|
@echo '${BOLD}Purpose:${RESET}' |
||||
|
@echo ' $(helpPurpose)' |
||||
|
@echo '' |
||||
|
@echo '${BOLD}Usage:${RESET}' |
||||
|
@echo ' ${YELLOW}make${RESET} ${GREEN}<target>${RESET}' |
||||
|
@echo '' |
||||
|
@echo '${BOLD}Targets:${RESET}' |
||||
|
@awk '/^[a-zA-Z\-\_0-9]+:/ { \
|
||||
|
helpMessage = match(lastLine, /^## (.*)/); \
|
||||
|
if (helpMessage) { \
|
||||
|
helpCommand = substr($$1, 0, index($$1, ":")-1); \
|
||||
|
helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \
|
||||
|
printf " ${YELLOW}%-$(TARGET_MAX_CHAR_NUM)s${RESET} ${GREEN}%s${RESET}\n", helpCommand, helpMessage; \
|
||||
|
} \
|
||||
|
} \
|
||||
|
{ lastLine = $$0 }' $(MAKEFILE_LIST) |
||||
|
|
||||
|
.PHONY: help-base |
@ -1,390 +0,0 @@ |
|||||
# Copyright 2019, pEp Foundation
|
|
||||
# This file is part of pEpJNIAdapter for Android - x86 build
|
|
||||
# This file may be used under the terms of the GNU General Public License version 3
|
|
||||
# see LICENSE.txt
|
|
||||
|
|
||||
include ../Makefile.conf |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Makefile to build deps for use with pEpEngine
|
|
||||
# based on gnupg-for-android/external/Makefile
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Build parameters
|
|
||||
|
|
||||
APP_ABI ?= x86 |
|
||||
|
|
||||
all: build |
|
||||
|
|
||||
build: showsetup uuid-install sequoia-ffi-install libetpan-build |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Manage paths for PREFIX, DESTDIR, LOCAL and PATH
|
|
||||
|
|
||||
EXTERNAL_ROOT := $(shell pwd) |
|
||||
|
|
||||
# install root for built files
|
|
||||
DESTDIR = $(EXTERNAL_ROOT)/.. |
|
||||
prefix = /output/$(APP_ABI) |
|
||||
LOCAL := $(DESTDIR)$(prefix) |
|
||||
|
|
||||
PATH := ${PATH}:$(NDK_TOOLCHAIN)/bin:$(LOCAL)/bin |
|
||||
|
|
||||
NDK_SYSROOT=$(ANDROID_NDK_HOME)/sysroot |
|
||||
|
|
||||
HOST = i686-linux-android |
|
||||
NDK_TOOLCHAIN = $(APP_ABI)-$(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=$(ANDROID_NDK)/toolchains/llvm/prebuilt/$(TOOLCHAIN_ARCH) |
|
||||
|
|
||||
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 |
|
||||
|
|
||||
# change 'release' to 'debug' for unoptimized debug builds
|
|
||||
CFLAGS += $(TARGET_x86_debug_CFLAGS) |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# GNU Tools trickery
|
|
||||
|
|
||||
# point pkg-config to the .pc files generated from these builds
|
|
||||
export PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig |
|
||||
|
|
||||
# workaround for cross-compiling bug in autoconf
|
|
||||
export ac_cv_func_malloc_0_nonnull=yes |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# debugging stuff
|
|
||||
|
|
||||
showsetup: |
|
||||
@echo "NDK_TOOLCHAIN: $(NDK_TOOLCHAIN)" |
|
||||
@echo "NDK_SYSROOT: $(NDK_SYSROOT)" |
|
||||
@echo "APP_ABI: $(APP_ABI)" |
|
||||
@echo "HOST: $(HOST)" |
|
||||
@echo "CC: $(CC)" |
|
||||
@echo "LD: $(LD)" |
|
||||
@echo "CFLAGS: $(CFLAGS)" |
|
||||
@echo "LDFLAGS: $(LDFLAGS)" |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# libiconv
|
|
||||
|
|
||||
libiconv.src.stamp: ../downloads/libiconv-1.15.tar.gz |
|
||||
tar xvf $< |
|
||||
mv libiconv-1.15 libiconv |
|
||||
touch $@ |
|
||||
|
|
||||
libiconv-src: libiconv.src.stamp |
|
||||
|
|
||||
libiconv-clean: |
|
||||
rm -rf libiconv |
|
||||
rm -rf libiconv.src.stamp |
|
||||
|
|
||||
libiconv/Makefile: libiconv.src.stamp |
|
||||
cd libiconv && \
|
|
||||
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 \
|
|
||||
--host=$(HOST) \
|
|
||||
--enable-static \
|
|
||||
--disable-shared \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
libiconv/lib/.libs/libiconv.a: libiconv/Makefile |
|
||||
$(MAKE) -C libiconv |
|
||||
|
|
||||
$(LOCAL)/lib/libiconv.a: libiconv/lib/.libs/libiconv.a |
|
||||
$(MAKE) -C libiconv DESTDIR=$(DESTDIR) prefix=$(prefix) install |
|
||||
ls -l $(LOCAL)/lib/libiconv.a |
|
||||
|
|
||||
libiconv-build: libiconv/lib/.libs/libiconv.a |
|
||||
|
|
||||
libiconv-install: $(LOCAL)/lib/libiconv.a |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# libetpan
|
|
||||
libetpan.src.stamp: ../downloads/libetpan.tar.gz |
|
||||
mkdir -p libetpan |
|
||||
cd libetpan && tar xvf ../$< |
|
||||
touch $@ |
|
||||
|
|
||||
libetpan/Makefile: libetpan.src.stamp | libiconv-install |
|
||||
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 |
|
||||
|
|
||||
libetpan-clean: |
|
||||
rm -rf libetpan |
|
||||
rm -rf libetpan.src.stamp |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# uuid
|
|
||||
|
|
||||
uuid.src.stamp: ../downloads/ossp-uuid_1.6.2.orig.tar.gz |
|
||||
tar xvf $< |
|
||||
mv uuid-1.6.2 uuid |
|
||||
touch $@ |
|
||||
|
|
||||
uuid-src: uuid.src.stamp |
|
||||
|
|
||||
uuid-clean: |
|
||||
rm -rf uuid |
|
||||
rm -rf uuid.src.stamp |
|
||||
|
|
||||
uuid/Makefile: uuid.src.stamp |
|
||||
$(SED) -i 's,AC_CHECK_VA_COPY(),,' uuid/uuid.ac |
|
||||
cd uuid && autoconf |
|
||||
-patch -N -p1 --reject-file=- uuid/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch |
|
||||
cp ../config.sub uuid |
|
||||
cp ../config.guess uuid |
|
||||
cd uuid && \
|
|
||||
CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
||||
./configure \
|
|
||||
--enable-static \
|
|
||||
--host=$(HOST) \
|
|
||||
--with-gnu-ld \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
uuid/.libs/libuuid.so: uuid/Makefile |
|
||||
$(MAKE) -C uuid |
|
||||
|
|
||||
$(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 |
|
||||
|
|
||||
uuid-build: uuid/.libs/libuuid.so |
|
||||
|
|
||||
uuid-prebuild: uuid/jni/Android.mk uuid/Makefile |
|
||||
|
|
||||
uuid-install: $(LOCAL)/lib/libuuid.so | uuid-prebuild |
|
||||
|
|
||||
uuid/jni/Android.mk: uuid.src.stamp |
|
||||
mkdir -p uuid/jni |
|
||||
cp ../libuuid.Android.mk uuid/jni/Android.mk |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Sequoia
|
|
||||
|
|
||||
sequoia-deps-build: openssl-install nettle-install |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# OpenSSL
|
|
||||
|
|
||||
openssl.src.stamp: ../downloads/openssl-$(OPENSSL_VERSION).tar.gz |
|
||||
tar xvf $< |
|
||||
mv openssl-$(OPENSSL_VERSION) openssl |
|
||||
touch $@ |
|
||||
|
|
||||
openssl-src: openssl.src.stamp |
|
||||
|
|
||||
openssl-clean: |
|
||||
rm -rf openssl |
|
||||
rm -rf openssl.src.stamp |
|
||||
|
|
||||
OPENSSL_ARCHITECTURE:=android-x86 |
|
||||
|
|
||||
openssl/Makefile: openssl.src.stamp |
|
||||
cd openssl && \
|
|
||||
PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ../../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 |
|
||||
|
|
||||
openssl-build: openssl/libssl.so |
|
||||
|
|
||||
openssl-install: $(LOCAL)/lib/libssl.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# GMP
|
|
||||
|
|
||||
gmp.src.stamp: ../downloads/gmp-$(GMP_VERSION).tar.bz2 |
|
||||
tar xvf $< |
|
||||
mv gmp-$(GMP_VERSION) gmp |
|
||||
touch $@ |
|
||||
|
|
||||
gmp-src: gmp.src.stamp |
|
||||
|
|
||||
gmp-clean: |
|
||||
rm -rf gmp |
|
||||
rm -rf gmp.src.stamp |
|
||||
|
|
||||
gmp/Makefile: gmp.src.stamp |
|
||||
cd gmp && \
|
|
||||
CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \
|
|
||||
./configure \
|
|
||||
--host=$(HOST) \
|
|
||||
--prefix=$(LOCAL) \
|
|
||||
--disable-static |
|
||||
|
|
||||
|
|
||||
gmp/.libs/libgmp.so: gmp/Makefile |
|
||||
$(MAKE) -C gmp |
|
||||
|
|
||||
$(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 |
|
||||
touch $@ |
|
||||
|
|
||||
gmp-build: gmp/.libs/libgmp.so |
|
||||
|
|
||||
gmp-install: $(LOCAL)/lib/libgmp.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# NETTLE
|
|
||||
|
|
||||
nettle.src.stamp: ../downloads/nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so |
|
||||
tar xvf $< |
|
||||
mv nettle-$(NETTLE_VERSION) nettle |
|
||||
touch $@ |
|
||||
|
|
||||
nettle-src: nettle.src.stamp gmp-install |
|
||||
|
|
||||
nettle-clean: |
|
||||
rm -rf nettle |
|
||||
rm -rf nettle.src.stamp |
|
||||
|
|
||||
nettle/Makefile: nettle.src.stamp |
|
||||
-patch -N -p1 --reject-file=- nettle/configure.ac ../nettle-3.4.1-remove-so-versioning.patch |
|
||||
-patch -N -p1 --reject-file=- nettle/Makefile.in ../nettle-3.4.1-remove-so-versioning-link.patch |
|
||||
cd nettle && \
|
|
||||
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-static \
|
|
||||
--disable-documentation \
|
|
||||
--host=$(HOST) \
|
|
||||
--prefix=$(LOCAL) |
|
||||
|
|
||||
nettle/libnettle.so nettle/libhogweed.so: nettle/Makefile |
|
||||
$(MAKE) -C nettle |
|
||||
|
|
||||
$(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/libhogweed.so |
|
||||
|
|
||||
nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so |
|
||||
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# Sequoia-ffi
|
|
||||
|
|
||||
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: |
|
||||
rm -rf sequoia |
|
||||
rm -rf sequoia.src.stamp |
|
||||
|
|
||||
$(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 \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_LIB_DIR="$(LOCAL)/lib" \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_INCLUDE_DIR="$(LOCAL)/include" \
|
|
||||
ARMV7_LINUX_ANDROIDEABI_OPENSSL_DIR="$(LOCAL)/bin" \
|
|
||||
CARGO_TARGET_DIR=$(CARGO_TARGET_DIR) cargo build --target i686-linux-android -p sequoia-openpgp-ffi --release |
|
||||
|
|
||||
|
|
||||
$(LOCAL)/lib/libsequoia_openpgp_ffi.so: $(CARGO_TARGET_DIR)/i686-linux-android/release/libsequoia_openpgp_ffi.so |
|
||||
cp $(CARGO_TARGET_DIR)/i686-linux-android/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/ |
|
||||
cp -r sequoia/openpgp-ffi/include/* $(LOCAL)/include |
|
||||
|
|
||||
|
|
||||
sequoia-ffi-build: $(CARGO_TARGET_DIR)/i686-linux-android/release/libsequoia_openpgp_ffi.so |
|
||||
|
|
||||
sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so |
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# assets for Android app
|
|
||||
|
|
||||
#ASSETS := $(EXTERNAL_ROOT)/assets
|
|
||||
#
|
|
||||
#assets: clean-assets
|
|
||||
# # add the new stuff
|
|
||||
# install -d $(ASSETS)
|
|
||||
# cp -a $(LOCAL)/* $(ASSETS)
|
|
||||
# # remove all the stuff we don't need
|
|
||||
# rm -f $(ASSETS)/bin/*-static
|
|
||||
# rm -f $(ASSETS)/bin/curl*
|
|
||||
# rm -f $(ASSETS)/lib/*.a $(ASSETS)/lib/*.la
|
|
||||
# # remove lib symlinks since Android AssetManager copies them as files
|
|
||||
# rm -f $(ASSETS)/lib/*.so
|
|
||||
# # remove .so.0 symlink and rename the .so.0.12.0 file to it
|
|
||||
# for f in $(ASSETS)/lib/*.so.[0-9]*; do \
|
|
||||
# echo $$f; \
|
|
||||
# test ! -L $$f || \
|
|
||||
# (rm $$f && mv $$f.[0-9]* $$f); \
|
|
||||
# done
|
|
||||
# rm -rf $(ASSETS)/include
|
|
||||
# rm -rf $(ASSETS)/share/man $(ASSETS)/share/info $(ASSETS)/share/doc
|
|
||||
# rm -rf $(ASSETS)/tests
|
|
||||
#
|
|
||||
|
|
||||
#------------------------------------------------------------------------------#
|
|
||||
# clean
|
|
||||
|
|
||||
clean-assets: |
|
||||
rm -rf $(ASSETS) |
|
||||
|
|
||||
clean-install: |
|
||||
rm -rf $(LOCAL) |
|
||||
|
|
||||
clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-clean |
|
||||
|
|
||||
clean-all: clean |
|
||||
rm -rf *.git |
|
||||
rm -rf *.stamp |
|
||||
#------------------------------------------------------------------------------#
|
|
||||
|
|
||||
.PHONY = clean clean-install clean-assets libetpan-clean \
|
|
||||
libiconv-build libiconv-install \
|
|
||||
libetpan-build \
|
|
||||
uuid-build uuid-prebuild uuid-install \
|
|
||||
gmp-build gmp-install \
|
|
||||
sequoia-deps-build \
|
|
||||
openssl-build openssl-install \
|
|
||||
nettle-build nettle-install \
|
|
||||
sequoia-ffi-build sequoia-ffi-install\
|
|
||||
assets \
|
|
||||
$(EXTERNAL_LOCAL_GITS_UPDATE) $(EXTERNAL_SRCS) $(EXTERNAL_SRCS_CLEAN)\
|
|
||||
showsetup |
|
@ -0,0 +1,56 @@ |
|||||
|
task setpEpJNIAdapterArchs { |
||||
|
|
||||
|
description = "Prepare pEpJNIAdapter to build with the first archs of each connected device." |
||||
|
|
||||
|
doLast { |
||||
|
def serialNos = getConnectedDevicesIds() |
||||
|
println("Connected devices: $serialNos") |
||||
|
def abis = serialNos.collect { serialNo -> |
||||
|
convertAbiName(execCommand("adb -s ${serialNo} shell getprop ro.product.cpu.abilist", true).trim().split(",")[0]) |
||||
|
}.toSet() |
||||
|
def sb = new StringBuilder() |
||||
|
for (String s : abis) { |
||||
|
sb.append(s) |
||||
|
sb.append(" ") |
||||
|
} |
||||
|
if (!abis.isEmpty()) { |
||||
|
project.archsToCompile = sb.toString().trim() |
||||
|
println("got archs to compile: ${project.archsToCompile}") |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private List<String> getConnectedDevicesIds(boolean verbose = false) { |
||||
|
def lines = execCommand("adb devices", true, verbose).readLines() |
||||
|
lines.removeIf { it.trim().isEmpty() } |
||||
|
lines.remove(0) |
||||
|
if (lines.isEmpty()) return lines |
||||
|
return lines.collect { line -> |
||||
|
line.substring(0, line.indexOf("device")).trim() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
static String convertAbiName(name) { |
||||
|
if (name == "armeabi-v7a") return "arm" |
||||
|
else if (name == "arm64-v8a") return "arm64" |
||||
|
else return name |
||||
|
} |
||||
|
|
||||
|
private String execCommand(String command, boolean captureOutput = false, boolean verbose = false) { |
||||
|
def stdout = captureOutput ? new ByteArrayOutputStream() : null |
||||
|
exec { |
||||
|
if (verbose) { |
||||
|
println("running command: $command") |
||||
|
} |
||||
|
commandLine command.split(' ') |
||||
|
if (stdout != null) { |
||||
|
standardOutput = stdout |
||||
|
} |
||||
|
} |
||||
|
String out = null |
||||
|
if (stdout != null) { |
||||
|
out = stdout.toString() |
||||
|
stdout.close() |
||||
|
} |
||||
|
return out |
||||
|
} |
Loading…
Reference in new issue