From 9456cb696caee2aa16195157e3f730717635c028 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 30 Oct 2019 21:48:15 +0100 Subject: [PATCH 01/17] Android: Add script calling OpenSSL configure with the right parameters --- android/external/Makefile | 8 +++++--- utils/configure_openssl.sh | 14 ++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 utils/configure_openssl.sh diff --git a/android/external/Makefile b/android/external/Makefile index c71244c..0cd1753 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -11,7 +11,7 @@ NDK_ABI ?= arm NDK_TOOLCHAIN_VERSION ?= clang APP_ABI ?= armeabi-v7a -APP_PLATFORM ?= android-18 +ANDROID_API ?= 18 PEP_PACKAGE_NAME ?= security.pEp APP_OPTIM ?= debug @@ -242,10 +242,12 @@ openssl-clean: EXTERNAL_SRCS += openssl-src EXTERNAL_SRCS_CLEAN += openssl-clean + +OPENSSL_ARCHITECTURE:=android-arm + openssl/Makefile: openssl.src.stamp cd openssl && \ - PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" ./Configure android-arm --prefix=$(prefix) - + ../../../utils/configure_openssl.sh ${OPENSSL_ARCHITECTURE} $(ANDROID_API) $(LOCAL) openssl/libssl.so: | openssl/Makefile PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" $(MAKE) -C openssl diff --git a/utils/configure_openssl.sh b/utils/configure_openssl.sh new file mode 100644 index 0000000..c013136 --- /dev/null +++ b/utils/configure_openssl.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +###  +# DONT USE IT +###  +CC=clang +TOOLCHAINS_PATH=$(python ../../../utils/ndk_toolchains_path.py --ndk ${ANDROID_NDK}) +PATH=$TOOLCHAINS_PATH/bin:$PATH + +ARCHITECTURE=$1 +ANDROID_API=$2 +echo $3 + +./Configure ${ARCHITECTURE} -D__ANDROID_API__=$ANDROID_API --prefix=$3 From 7359bf6ad6c7b4049f90992f0067a10cee70e32a Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Wed, 30 Oct 2019 21:49:01 +0100 Subject: [PATCH 02/17] Android: libpEpAdapter PATH to Android.mk --- android/jni/Android.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 549e0de..77c8672 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -1,6 +1,7 @@ LOCAL_PATH:= $(call my-dir) SRC_PATH := $(LOCAL_PATH)/../../../ ENGINE_PATH := $(LOCAL_PATH)/../../../pEpEngine +LIB_PEP_ADAPTER_PATH:=$(SRC_PATH)/libpEpAdapter GPGBUILD:= $(LOCAL_PATH)/../external/data/data/security.pEp include $(CLEAR_VARS) From 7bae3ce2dd445424e2519402230aa910defe89cc Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 4 Nov 2019 17:56:19 +0100 Subject: [PATCH 03/17] JNI-81 Add Makefile for armeabi-v7a and WIP Makefile for arm64-v8a --- android/build.gradle | 4 +- android/external/Makefile | 492 +----------------- android/external/arm64-v8a/Makefile | 489 +++++++++++++++++ .../generate-standalone-ndk-toolchain.sh | 21 + android/external/armeabi-v7a/Makefile | 486 +++++++++++++++++ .../generate-standalone-ndk-toolchain.sh | 21 + android/jni/Android.mk | 17 +- android/jni/Application.mk | 2 +- 8 files changed, 1050 insertions(+), 482 deletions(-) create mode 100644 android/external/arm64-v8a/Makefile create mode 100644 android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh create mode 100644 android/external/armeabi-v7a/Makefile create mode 100644 android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh diff --git a/android/build.gradle b/android/build.gradle index 8de57a0..ce61646 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -135,11 +135,11 @@ android { commandLine 'make', 'clean', 'PEP_PACKAGE_NAME='+pEpAppPackageName } - task cleanExternalAssets(type:Exec) { +/* task cleanExternalAssets(type:Exec) { workingDir 'external' commandLine 'make', 'clean-assets', 'PEP_PACKAGE_NAME='+pEpAppPackageName } - +*/ // unzip some of the dependencies task unzipDeps(type: Copy, dependsOn: 'buildExternal') { from zipTree(libEtPanZip) diff --git a/android/external/Makefile b/android/external/Makefile index 0cd1753..5b40efe 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -1,482 +1,32 @@ -#------------------------------------------------------------------------------# -# Makefile to build deps for use with pEpEngine -# based on gnupg-for-android/external/Makefile -#------------------------------------------------------------------------------# +# Copyright 2019, pEp Foundation +# This file is part of pEpJNIAdapter Android Build +# This file may be used under the terms of the GNU General Public License version 3 +# see LICENSE.txt -#------------------------------------------------------------------------------# -# Build parameters +HERE_REL := $(notdir $(CURDIR)) -# TODO: get params from the outside for multiarch build +include Makefile.conf -NDK_ABI ?= arm -NDK_TOOLCHAIN_VERSION ?= clang -APP_ABI ?= armeabi-v7a -ANDROID_API ?= 18 -PEP_PACKAGE_NAME ?= security.pEp -APP_OPTIM ?= debug - -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 = /data/data/$(PEP_PACKAGE_NAME)/$(APP_ABI)/app_opt -LOCAL := $(DESTDIR)$(prefix) - -PATH := ${PATH}:$(NDK_TOOLCHAIN)/bin:$(LOCAL)/bin - -NDK_SYSROOT=$(ANDROID_NDK_HOME)/sysroot -NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]') - -ifeq ($(NDK_ABI),x86) - HOST = i686-linux-android - NDK_TOOLCHAIN = $(NDK_ABI)-$(NDK_TOOLCHAIN_VERSION) -else - HOST = $(NDK_ABI)-linux-androideabi - NDK_TOOLCHAIN = $(HOST)-$(NDK_TOOLCHAIN_VERSION) +ifneq ($(wildcard local.conf),) + $(info ================================================) + $(info Overrides in `local.conf` are used.) + $(info ================================================) endif -# include Android's build flags -TARGET_ARCH_ABI = $(APP_ABI) -include $(ANDROID_NDK)/build/core/toolchains/$(NDK_TOOLCHAIN)/setup.mk -#include $(ANDROID_NDK_HOME)/toolchains/$(NDK_TOOLCHAIN)/setup.mk -ANDROID_NDK_HOME=$(EXTERNAL_ROOT)/ndk-18-arm -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 - -#-D_FILE_OFFSET_BITS=64 -DLARGEFILE_SOURCE=1 -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 -ifeq ($(APP_ABI),armeabi-v7a) - CFLAGS += $(TARGET_arm_debug_CFLAGS) +ifdef BUILD_CONFIG + $(info ================================================) + $(info Overrides in `$(BUILD_CONFIG)` are used.) + $(info ================================================) endif -ifeq ($(APP_ABI),armeabi) - CFLAGS += $(TARGET_thumb_debug_CFLAGS) -endif - -#------------------------------------------------------------------------------# -# 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_VERSION: $(NDK_TOOLCHAIN_VERSION)" - @echo "NDK_TOOLCHAIN: $(NDK_TOOLCHAIN)" - @echo "NDK_SYSROOT: $(NDK_SYSROOT)" - @echo "APP_PLATFORM: $(APP_PLATFORM)" - @echo "APP_ABI: $(APP_ABI)" - @echo "HOST: $(HOST)" - @echo "CC: $(CC)" - @echo "LD: $(LD)" - @echo "CFLAGS: $(CFLAGS)" - @echo "LDFLAGS: $(LDFLAGS)" - -#------------------------------------------------------------------------------# -# libiconv - -# libiconv from git can't autogen with today's debian packages. -#EXTERNAL_GIT_REPOS += libiconv|git://git.savannah.gnu.org/libiconv.git?5365cc8 - -# using released package instead -libiconv-1.15.tar.gz: - wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz - touch $@ - -libiconv.src.stamp: libiconv-1.15.tar.gz - tar xvfz libiconv-1.15.tar.gz - mv libiconv-1.15 libiconv - touch $@ - -libiconv-src: libiconv.src.stamp - -libiconv-clean: - rm -rf libiconv - rm -rf libiconv.src.stamp - -EXTERNAL_SRCS += libiconv-src -EXTERNAL_SRCS_CLEAN += libiconv-clean - -libiconv/Makefile: libiconv.src.stamp - -patch -N -p1 --reject-file=- libiconv/m4/libtool.m4 libtool-Add-Android-Linux-support-iconv.patch - cp config.sub libiconv/build-aux - cp config.guess libiconv/build-aux - cp config.sub libiconv/libcharset/build-aux - cp config.guess libiconv/libcharset/build-aux - 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 - -EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD - -libetpan/Makefile: libetpan.src.stamp | libiconv-install - cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh - touch $@ - -libetpan-build: libetpan/Makefile - -libetpan-cleanzip: - rm -f libetpan/build-android/libetpan-android-1.zip - -#------------------------------------------------------------------------------# -# uuid - -# using released package from debian. official ftp wasn't available today -ossp-uuid_1.6.2.orig.tar.gz: - wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz - md5sum -c ossp-uuid_1.6.2.orig.tar.gz.md5 - touch $@ - -uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz - tar xvfz ossp-uuid_1.6.2.orig.tar.gz - mv uuid-1.6.2 uuid - touch $@ - -uuid-src: uuid.src.stamp - -uuid-clean: - rm -rf uuid - rm -rf uuid.src.stamp - -EXTERNAL_SRCS += uuid-src -EXTERNAL_SRCS_CLEAN += uuid-clean - -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 -OPENSSL_VERSION=1.1.1b -GMP_VERSION=6.1.2 -NETTLE_VERSION=3.4.1 - -sequoia-deps-build: gmp-install nettle-install openssl-install - -#------------------------------------------------------------------------------# -# OpenSSL - -openssl-$(OPENSSL_VERSION).tar.gz: - wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz - md5sum -c openssl-$(OPENSSL_VERSION).tar.gz.md5 - touch $@ - -openssl.src.stamp: openssl-$(OPENSSL_VERSION).tar.gz - tar xvf openssl-$(OPENSSL_VERSION).tar.gz - mv openssl-$(OPENSSL_VERSION) openssl - touch $@ - -openssl-src: openssl.src.stamp - -openssl-clean: - rm -rf openssl - rm -rf openssl.src.stamp - -EXTERNAL_SRCS += openssl-src -EXTERNAL_SRCS_CLEAN += openssl-clean - - -OPENSSL_ARCHITECTURE:=android-arm - -openssl/Makefile: openssl.src.stamp - cd openssl && \ - ../../../utils/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 - PATH="$(ANDROID_NDK_HOME)/bin:$(PATH)" $(MAKE) -C openssl DESTDIR=$(DESTDIR) prefix=$(prefix) install_sw - pwd - ls -l $(LOCAL)/lib/libssl.so - -openssl-build: openssl/libssl.so - -openssl-install: $(LOCAL)/lib/libssl.so - - -#------------------------------------------------------------------------------# -# GMP - -gmp-$(GMP_VERSION).tar.bz2: - wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 - md5sum -c gmp-$(GMP_VERSION).tar.bz2.md5 - touch $@ - -gmp.src.stamp: gmp-$(GMP_VERSION).tar.bz2 - tar xvf gmp-$(GMP_VERSION).tar.bz2 - mv gmp-$(GMP_VERSION) gmp - touch $@ - -gmp-src: gmp.src.stamp - -gmp-clean: - rm -rf gmp - rm -rf gmp.src.stamp - -EXTERNAL_SRCS += gmp-src -EXTERNAL_SRCS_CLEAN += gmp-clean - -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-$(NETTLE_VERSION).tar.gz: $(LOCAL)/lib/libgmp.so - wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz - md5sum -c nettle-$(NETTLE_VERSION).tar.gz.md5 - touch $@ - -nettle.src.stamp: nettle-$(NETTLE_VERSION).tar.gz - tar xvf nettle-$(NETTLE_VERSION).tar.gz - mv nettle-$(NETTLE_VERSION) nettle - touch $@ - -nettle-src: nettle.src.stamp - -nettle-clean: - rm -rf nettle - rm -rf nettle.src.stamp - -EXTERNAL_SRCS += nettle-src -EXTERNAL_SRCS_CLEAN += nettle-clean - -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 \ - --host=$(HOST) \ - --prefix=$(LOCAL) - -nettle/libnettle.so: nettle/Makefile - $(MAKE) -C nettle - -$(LOCAL)/lib/libnettle.so: nettle/libnettle.so nettle/libhogweed.so - $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install - -nettle-build: nettle/libnettle.so nettle/libhogweed.so - -nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so - - -#------------------------------------------------------------------------------# -# Sequoia-ffi -EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/husspEp/sequoia.git?master - -CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/build/$(APP_ABI) - -sequoia-ffi-clean: - rm -rf sequoia - rm -rf sequoia.src.stamp - -EXTERNAL_SRCS_CLEAN += 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)" \ - 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 - -define per_repo_targets -$(1).git.stamp: - git clone $(2) $(1).git - touch $(1).git.stamp - -$(1).git_update: $(1).git.stamp - cd $(1).git; git pull - touch $(1).git.stamp - -$(1).src.stamp: $(1).git.stamp - rm -rf $(1) - mkdir $(1) - (cd $(1).git; git archive --format=tar $(3)) | tar -C $(1) -x - touch $(1).src.stamp - -$(1)-src: $(1).src.stamp - -$(1)-clean: - rm -rf $(1) - rm -f $(1).src.stamp - -EXTERNAL_LOCAL_GITS += $(1).git.stamp -EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update -EXTERNAL_SRCS += $(1)-src -EXTERNAL_SRCS_CLEAN += $(1)-clean -endef - -define per_repo -$(call per_repo_targets,\ - $(1),\ - $(word 1,$(subst ?, ,$(2))),\ - $(word 2,$(subst ?, ,$(2)))) -endef - -$(foreach repo, $(EXTERNAL_GIT_REPOS), $(eval $(call per_repo,\ - $(word 1,$(subst |, ,$(repo))),\ - $(word 2,$(subst |, ,$(repo)))))) - -git_clones: $(EXTERNAL_LOCAL_GITS) - -git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) - -#------------------------------------------------------------------------------# -# clean -clean-assets: - rm -rf $(ASSETS) +.PHONY: all build clean -clean-install: - rm -rf $(DESTDIR)/data +build: + $(MAKE) -C armeabi-v7a -clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip +all: build -clean-all: clean - rm -rf *.git - rm -rf *.stamp -#------------------------------------------------------------------------------# +clean: + $(MAKE) -C armeabi-v7a clean -.PHONY = clean clean-install clean-assets libetpan-cleanzip\ - 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 +assets: diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile new file mode 100644 index 0000000..dc0adb0 --- /dev/null +++ b/android/external/arm64-v8a/Makefile @@ -0,0 +1,489 @@ +# 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 + +# TODO: get params from the outside for multiarch build + +APP_ABI ?= arm64-v8a +ANDROID_API ?= 21 + +all: build assets + +build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build + +#------------------------------------------------------------------------------# +# Generate standalone toolchain +generate-ndk-toolchain: ndk-standalone-toolchain/AndroidVersion.txt + +ndk-standalone-toolchain/AndroidVersion.txt: + bash generate-standalone-ndk-toolchain.sh + +#------------------------------------------------------------------------------# +# 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 + +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 +CXX := $(ANDROID_NDK_HOME)/bin/$(HOST)-clang++ +RANLIB := $(ANDROID_NDK_HOME)/bin/$(HOST)-ranlib +STRIP := $(ANDROID_NDK_HOME)/bin/$(HOST)-strip + +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 from git can't autogen with today's debian packages. +#EXTERNAL_GIT_REPOS += libiconv|git://git.savannah.gnu.org/libiconv.git?5365cc8 + +# using released package instead +libiconv-1.15.tar.gz: + wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz + touch $@ + +libiconv.src.stamp: libiconv-1.15.tar.gz + tar xvfz libiconv-1.15.tar.gz + mv libiconv-1.15 libiconv + touch $@ + +libiconv-src: libiconv.src.stamp + +libiconv-clean: + rm -rf libiconv + rm -rf libiconv.src.stamp + +EXTERNAL_SRCS += libiconv-src +EXTERNAL_SRCS_CLEAN += libiconv-clean + +libiconv/Makefile: libiconv.src.stamp + -patch -N -p1 --reject-file=- libiconv/m4/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch + cp ../config.sub libiconv/build-aux + cp ../config.guess libiconv/build-aux + cp ../config.sub libiconv/libcharset/build-aux + cp ../config.guess libiconv/libcharset/build-aux + 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 + +EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD + +libetpan/Makefile: libetpan.src.stamp | libiconv-install + cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh + touch $@ + +libetpan-build: libetpan/Makefile + +libetpan-cleanzip: + rm -f libetpan/build-android/libetpan-android-1.zip + +#------------------------------------------------------------------------------# +# uuid + +# using released package from debian. official ftp wasn't available today +ossp-uuid_1.6.2.orig.tar.gz: + wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz + md5sum -c ../ossp-uuid_1.6.2.orig.tar.gz.md5 + touch $@ + +uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz + tar xvfz ossp-uuid_1.6.2.orig.tar.gz + mv uuid-1.6.2 uuid + touch $@ + +uuid-src: uuid.src.stamp + +uuid-clean: + rm -rf uuid + rm -rf uuid.src.stamp + +EXTERNAL_SRCS += uuid-src +EXTERNAL_SRCS_CLEAN += uuid-clean + +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 +OPENSSL_VERSION=1.1.1b +GMP_VERSION=6.1.2 +NETTLE_VERSION=3.4.1 + +sequoia-deps-build: gmp-install nettle-install openssl-install + +#------------------------------------------------------------------------------# +# OpenSSL + +openssl-$(OPENSSL_VERSION).tar.gz: + wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz + md5sum -c ../openssl-$(OPENSSL_VERSION).tar.gz.md5 + touch $@ + +openssl.src.stamp: openssl-$(OPENSSL_VERSION).tar.gz + tar xvf openssl-$(OPENSSL_VERSION).tar.gz + mv openssl-$(OPENSSL_VERSION) openssl + touch $@ + +openssl-src: openssl.src.stamp + +openssl-clean: + rm -rf openssl + rm -rf openssl.src.stamp + +EXTERNAL_SRCS += openssl-src +EXTERNAL_SRCS_CLEAN += openssl-clean + + +OPENSSL_ARCHITECTURE:=android-arm + +openssl/Makefile: openssl.src.stamp + cd openssl && \ + ../../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-$(GMP_VERSION).tar.bz2: + wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 + md5sum -c ../gmp-$(GMP_VERSION).tar.bz2.md5 + touch $@ + +gmp.src.stamp: gmp-$(GMP_VERSION).tar.bz2 + tar xvf gmp-$(GMP_VERSION).tar.bz2 + mv gmp-$(GMP_VERSION) gmp + touch $@ + +gmp-src: gmp.src.stamp + +gmp-clean: + rm -rf gmp + rm -rf gmp.src.stamp + +EXTERNAL_SRCS += gmp-src +EXTERNAL_SRCS_CLEAN += gmp-clean + +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 \ + --enable-cxx \ + 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-$(NETTLE_VERSION).tar.gz: $(LOCAL)/lib/libgmp.so + wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz + md5sum -c ../nettle-$(NETTLE_VERSION).tar.gz.md5 + touch $@ + +nettle.src.stamp: nettle-$(NETTLE_VERSION).tar.gz + tar xvf nettle-$(NETTLE_VERSION).tar.gz + mv nettle-$(NETTLE_VERSION) nettle + touch $@ + +nettle-src: nettle.src.stamp + +nettle-clean: + rm -rf nettle + rm -rf nettle.src.stamp + +EXTERNAL_SRCS += nettle-src +EXTERNAL_SRCS_CLEAN += nettle-clean + +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 \ + --host=$(HOST) \ + --prefix=$(LOCAL) + +nettle/libnettle.so: nettle/Makefile + $(MAKE) -C nettle + +$(LOCAL)/lib/libnettle.so: nettle/libnettle.so nettle/libhogweed.so + $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install + +nettle-build: nettle/libnettle.so nettle/libhogweed.so + +nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so + + +#------------------------------------------------------------------------------# +# Sequoia-ffi +EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/husspEp/sequoia.git?master + +CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/build/$(APP_ABI) + +sequoia-ffi-clean: + rm -rf sequoia + rm -rf sequoia.src.stamp + +EXTERNAL_SRCS_CLEAN += 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)" \ + 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)/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 + +define per_repo_targets +$(1).git.stamp: + git clone $(2) $(1).git + touch $(1).git.stamp + +$(1).git_update: $(1).git.stamp + cd $(1).git; git pull + touch $(1).git.stamp + +$(1).src.stamp: $(1).git.stamp + rm -rf $(1) + mkdir $(1) + (cd $(1).git; git archive --format=tar $(3)) | tar -C $(1) -x + touch $(1).src.stamp + +$(1)-src: $(1).src.stamp + +$(1)-clean: + rm -rf $(1) + rm -f $(1).src.stamp + +EXTERNAL_LOCAL_GITS += $(1).git.stamp +EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update +EXTERNAL_SRCS += $(1)-src +EXTERNAL_SRCS_CLEAN += $(1)-clean +endef + +define per_repo +$(call per_repo_targets,\ + $(1),\ + $(word 1,$(subst ?, ,$(2))),\ + $(word 2,$(subst ?, ,$(2)))) +endef + +$(foreach repo, $(EXTERNAL_GIT_REPOS), $(eval $(call per_repo,\ + $(word 1,$(subst |, ,$(repo))),\ + $(word 2,$(subst |, ,$(repo)))))) + +git_clones: $(EXTERNAL_LOCAL_GITS) + +git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) + +#------------------------------------------------------------------------------# +# clean + +clean-assets: + rm -rf $(ASSETS) + +clean-install: + rm -rf $(DESTDIR)/data + +clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip + +clean-all: clean + rm -rf *.git + rm -rf *.stamp +#------------------------------------------------------------------------------# + +.PHONY = clean clean-install clean-assets libetpan-cleanzip\ + 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 diff --git a/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh b/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh new file mode 100644 index 0000000..5a4196f --- /dev/null +++ b/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh @@ -0,0 +1,21 @@ +#!/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 new file mode 100644 index 0000000..4b00ca7 --- /dev/null +++ b/android/external/armeabi-v7a/Makefile @@ -0,0 +1,486 @@ +# 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 + +# TODO: get params from the outside for multiarch build + +APP_ABI ?= armeabi-v7a +ANDROID_API ?= 18 + +all: build +#assets + +build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build + +#------------------------------------------------------------------------------# +# Generate standalone toolchain +generate-ndk-toolchain: ndk-standalone-toolchain/AndroidVersion.txt + +ndk-standalone-toolchain/AndroidVersion.txt: + bash generate-standalone-ndk-toolchain.sh + +#------------------------------------------------------------------------------# +# 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 +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 + +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 + +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 from git can't autogen with today's debian packages. +#EXTERNAL_GIT_REPOS += libiconv|git://git.savannah.gnu.org/libiconv.git?5365cc8 + +# using released package instead +libiconv-1.15.tar.gz: + wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz + touch $@ + +libiconv.src.stamp: libiconv-1.15.tar.gz + tar xvfz libiconv-1.15.tar.gz + mv libiconv-1.15 libiconv + touch $@ + +libiconv-src: libiconv.src.stamp + +libiconv-clean: + rm -rf libiconv + rm -rf libiconv.src.stamp + +EXTERNAL_SRCS += libiconv-src +EXTERNAL_SRCS_CLEAN += libiconv-clean + +libiconv/Makefile: libiconv.src.stamp + -patch -N -p1 --reject-file=- libiconv/m4/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch + cp ../config.sub libiconv/build-aux + cp ../config.guess libiconv/build-aux + cp ../config.sub libiconv/libcharset/build-aux + cp ../config.guess libiconv/libcharset/build-aux + 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 + +EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD + +libetpan/Makefile: libetpan.src.stamp | libiconv-install + cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh + touch $@ + +libetpan-build: libetpan/Makefile + +libetpan-cleanzip: + rm -f libetpan/build-android/libetpan-android-1.zip + +#------------------------------------------------------------------------------# +# uuid + +# using released package from debian. official ftp wasn't available today +ossp-uuid_1.6.2.orig.tar.gz: + wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz + md5sum -c ../ossp-uuid_1.6.2.orig.tar.gz.md5 + touch $@ + +uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz + tar xvfz ossp-uuid_1.6.2.orig.tar.gz + mv uuid-1.6.2 uuid + touch $@ + +uuid-src: uuid.src.stamp + +uuid-clean: + rm -rf uuid + rm -rf uuid.src.stamp + +EXTERNAL_SRCS += uuid-src +EXTERNAL_SRCS_CLEAN += uuid-clean + +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 +OPENSSL_VERSION=1.1.1b +GMP_VERSION=6.1.2 +NETTLE_VERSION=3.4.1 + +sequoia-deps-build: gmp-install nettle-install openssl-install + +#------------------------------------------------------------------------------# +# OpenSSL + +openssl-$(OPENSSL_VERSION).tar.gz: + wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz + md5sum -c ../openssl-$(OPENSSL_VERSION).tar.gz.md5 + touch $@ + +openssl.src.stamp: openssl-$(OPENSSL_VERSION).tar.gz + tar xvf openssl-$(OPENSSL_VERSION).tar.gz + mv openssl-$(OPENSSL_VERSION) openssl + touch $@ + +openssl-src: openssl.src.stamp + +openssl-clean: + rm -rf openssl + rm -rf openssl.src.stamp + +EXTERNAL_SRCS += openssl-src +EXTERNAL_SRCS_CLEAN += openssl-clean + + +OPENSSL_ARCHITECTURE:=android-arm + +openssl/Makefile: openssl.src.stamp + cd openssl && \ + ../../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-$(GMP_VERSION).tar.bz2: + wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 + md5sum -c ../gmp-$(GMP_VERSION).tar.bz2.md5 + touch $@ + +gmp.src.stamp: gmp-$(GMP_VERSION).tar.bz2 + tar xvf gmp-$(GMP_VERSION).tar.bz2 + mv gmp-$(GMP_VERSION) gmp + touch $@ + +gmp-src: gmp.src.stamp + +gmp-clean: + rm -rf gmp + rm -rf gmp.src.stamp + +EXTERNAL_SRCS += gmp-src +EXTERNAL_SRCS_CLEAN += gmp-clean + +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-$(NETTLE_VERSION).tar.gz: $(LOCAL)/lib/libgmp.so + wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz + md5sum -c ../nettle-$(NETTLE_VERSION).tar.gz.md5 + touch $@ + +nettle.src.stamp: nettle-$(NETTLE_VERSION).tar.gz + tar xvf nettle-$(NETTLE_VERSION).tar.gz + mv nettle-$(NETTLE_VERSION) nettle + touch $@ + +nettle-src: nettle.src.stamp + +nettle-clean: + rm -rf nettle + rm -rf nettle.src.stamp + +EXTERNAL_SRCS += nettle-src +EXTERNAL_SRCS_CLEAN += nettle-clean + +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 \ + --host=$(HOST) \ + --prefix=$(LOCAL) + +nettle/libnettle.so: nettle/Makefile + $(MAKE) -C nettle + +$(LOCAL)/lib/libnettle.so: nettle/libnettle.so nettle/libhogweed.so + $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install + +nettle-build: nettle/libnettle.so nettle/libhogweed.so + +nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so + + +#------------------------------------------------------------------------------# +# Sequoia-ffi +EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/husspEp/sequoia.git?master + +CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/$(APP_ABI) + +sequoia-ffi-clean: + rm -rf sequoia + rm -rf sequoia.src.stamp + +EXTERNAL_SRCS_CLEAN += 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)" \ + 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 + +define per_repo_targets +$(1).git.stamp: + git clone $(2) $(1).git + touch $(1).git.stamp + +$(1).git_update: $(1).git.stamp + cd $(1).git; git pull + touch $(1).git.stamp + +$(1).src.stamp: $(1).git.stamp + rm -rf $(1) + mkdir $(1) + (cd $(1).git; git archive --format=tar $(3)) | tar -C $(1) -x + touch $(1).src.stamp + +$(1)-src: $(1).src.stamp + +$(1)-clean: + rm -rf $(1) + rm -f $(1).src.stamp + +EXTERNAL_LOCAL_GITS += $(1).git.stamp +EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update +EXTERNAL_SRCS += $(1)-src +EXTERNAL_SRCS_CLEAN += $(1)-clean +endef + +define per_repo +$(call per_repo_targets,\ + $(1),\ + $(word 1,$(subst ?, ,$(2))),\ + $(word 2,$(subst ?, ,$(2)))) +endef + +$(foreach repo, $(EXTERNAL_GIT_REPOS), $(eval $(call per_repo,\ + $(word 1,$(subst |, ,$(repo))),\ + $(word 2,$(subst |, ,$(repo)))))) + +git_clones: $(EXTERNAL_LOCAL_GITS) + +git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) + +#------------------------------------------------------------------------------# +# clean + +clean-assets: + rm -rf $(ASSETS) + +clean-install: + rm -rf $(DESTDIR)/data + +clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip + +clean-all: clean + rm -rf *.git + rm -rf *.stamp +#------------------------------------------------------------------------------# + +.PHONY = clean clean-install clean-assets libetpan-cleanzip\ + 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 diff --git a/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh b/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh new file mode 100644 index 0000000..d6b5604 --- /dev/null +++ b/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh @@ -0,0 +1,21 @@ +#!/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/jni/Android.mk b/android/jni/Android.mk index 77c8672..500932e 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -2,31 +2,31 @@ LOCAL_PATH:= $(call my-dir) SRC_PATH := $(LOCAL_PATH)/../../../ ENGINE_PATH := $(LOCAL_PATH)/../../../pEpEngine LIB_PEP_ADAPTER_PATH:=$(SRC_PATH)/libpEpAdapter -GPGBUILD:= $(LOCAL_PATH)/../external/data/data/security.pEp +GPGBUILD:= $(LOCAL_PATH)/../external/output/$(TARGET_ARCH_ABI) include $(CLEAR_VARS) LOCAL_MODULE := libiconv -LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/app_opt/lib/libiconv.a +LOCAL_SRC_FILES := $(GPGBUILD)/lib/libiconv.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libsequoia_openpgp_ffi -LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/app_opt/lib/libsequoia_openpgp_ffi.a +LOCAL_SRC_FILES := $(GPGBUILD)/lib/libsequoia_openpgp_ffi.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libhogweed -LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/app_opt/lib/libhogweed.so +LOCAL_SRC_FILES := $(GPGBUILD)/lib/libhogweed.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libgmp -LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/app_opt/lib/libgmp.so +LOCAL_SRC_FILES := $(GPGBUILD)/lib/libgmp.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libnettle -LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/app_opt/lib/libnettle.so +LOCAL_SRC_FILES := $(GPGBUILD)/lib/libnettle.so include $(PREBUILT_SHARED_LIBRARY) @@ -55,8 +55,9 @@ LOCAL_SRC_FILES := \ ../../src/identity_api.cc \ ../../src/jniutils.cc -LOCAL_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/app_opt/include +LOCAL_C_INCLUDES += $(GPGBUILD)/include LOCAL_C_INCLUDES += $(LIB_PEP_ADAPTER_PATH)/build-android/include $(SRC_PATH)/libpEpAdapter + LOCAL_LDFLAGS = -Wl,--allow-multiple-definition LOCAL_LDLIBS += -llog @@ -72,4 +73,4 @@ $(call import-add-path,$(SRC_PATH)) $(call import-module, pEpEngine/build-android/jni/) $(call import-module, libpEpAdapter/build-android/jni/) $(info $(LOCAL_PATH)) -$(call import-module, pEpJNIAdapter/android/external/uuid/jni) +$(call import-module, pEpJNIAdapter/android/external/$(TARGET_ARCH_ABI)/uuid/jni) diff --git a/android/jni/Application.mk b/android/jni/Application.mk index 9c1391f..6154345 100644 --- a/android/jni/Application.mk +++ b/android/jni/Application.mk @@ -1,6 +1,6 @@ APP_STL := c++_shared #APP_OPTIM := debug #APP_PLATFORM=android-18 -APP_ABI := armeabi-v7a +#APP_ABI := armeabi-v7a NDK_TOOLCHAIN_VERSION = clang APP_UNIFIED_HEADERS=true From 31ef7bc0afff16ac984c67368a75715f5ae48463 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 5 Nov 2019 16:32:23 +0100 Subject: [PATCH 04/17] JNI-81: Add missing files --- android/external/Makefile.conf | 16 ++++++++++++++++ android/external/configure_openssl.sh | 17 +++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 android/external/Makefile.conf create mode 100755 android/external/configure_openssl.sh diff --git a/android/external/Makefile.conf b/android/external/Makefile.conf new file mode 100644 index 0000000..2a6aeb9 --- /dev/null +++ b/android/external/Makefile.conf @@ -0,0 +1,16 @@ +# TODO: Tiddy up +### Android NDK Common conf + +NDK_TOOLCHAIN_COMPILER ?= clang + +### Select GNU SED on MacOS. + +NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]') + +ifeq ($(NDK_UNAME),darwin) + SED=gsed +else + SED=sed +endif + +### diff --git a/android/external/configure_openssl.sh b/android/external/configure_openssl.sh new file mode 100755 index 0000000..d919147 --- /dev/null +++ b/android/external/configure_openssl.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +###  +# DONT USE IT +###  +CC=clang +TOOLCHAINS_PATH=$(python ../../../../utils/ndk_toolchains_path.py --ndk ${ANDROID_NDK}) +export OLD_PATH=$PATH +export PATH=$TOOLCHAINS_PATH/bin:$PATH + +ARCHITECTURE=$1 +ANDROID_API=$2 +echo $3 + +./Configure ${ARCHITECTURE} -D__ANDROID_API__=$ANDROID_API --prefix=$3 + +export PATH=$OLD_PATH From 8fc2e66d4c21247f7c6d5c3bbe36c80f54f2ef69 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Sat, 9 Nov 2019 22:36:20 +0100 Subject: [PATCH 05/17] JNI-81 Add missing file to build openssl --- utils/ndk_toolchains_path.py | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 utils/ndk_toolchains_path.py diff --git a/utils/ndk_toolchains_path.py b/utils/ndk_toolchains_path.py new file mode 100644 index 0000000..2c13081 --- /dev/null +++ b/utils/ndk_toolchains_path.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +""" + Get the toolchains path +""" +import argparse +import atexit +import inspect +import os +import shutil +import stat +import sys +import textwrap + +def get_host_tag_or_die(): + """Return the host tag for this platform. Die if not supported.""" + if sys.platform.startswith('linux'): + return 'linux-x86_64' + elif sys.platform == 'darwin': + return 'darwin-x86_64' + elif sys.platform == 'win32' or sys.platform == 'cygwin': + host_tag = 'windows-x86_64' + if not os.path.exists(os.path.join(NDK_DIR, 'prebuilt', host_tag)): + host_tag = 'windows' + return host_tag + sys.exit('Unsupported platform: ' + sys.platform) + + +def get_toolchain_path_or_die(ndk, host_tag): + """Return the toolchain path or die.""" + toolchain_path = os.path.join(ndk, 'toolchains/llvm/prebuilt', + host_tag) + if not os.path.exists(toolchain_path): + sys.exit('Could not find toolchain: {}'.format(toolchain_path)) + return toolchain_path + +def main(): + """Program entry point.""" + parser = argparse.ArgumentParser(description='Optional app description') + parser.add_argument('--ndk', required=True, + help='The NDK Home directory') + args = parser.parse_args() + + host_tag = get_host_tag_or_die() + toolchain_path = get_toolchain_path_or_die(args.ndk, host_tag) + print toolchain_path + +if __name__ == '__main__': + main() From c44f9c66e25b726b136ecde1396522f5eae517ff Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 8 Nov 2019 09:43:26 +0100 Subject: [PATCH 06/17] JNI-81: Update config (autoconfig) scripts to include Arm64 --- android/external/config.guess | 1168 ++++++++------- android/external/config.sub | 2492 +++++++++++++++++---------------- 2 files changed, 1937 insertions(+), 1723 deletions(-) mode change 100755 => 100644 android/external/config.guess diff --git a/android/external/config.guess b/android/external/config.guess old mode 100755 new mode 100644 index 2852378..7f9ebbe --- a/android/external/config.guess +++ b/android/external/config.guess @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. +# Copyright 1992-2019 Free Software Foundation, Inc. -timestamp='2010-08-21' +timestamp='2019-09-10' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -17,26 +15,22 @@ timestamp='2010-08-21' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). # -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + me=`echo "$0" | sed -e 's,.*/,,'` @@ -45,7 +39,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -56,9 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. +Copyright 1992-2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -92,8 +84,6 @@ if test $# != 0; then exit 1 fi -trap 'exit 1' HUP INT TERM - # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a @@ -104,34 +94,38 @@ trap 'exit 1' HUP INT TERM # Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$driver" + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi @@ -140,12 +134,40 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -155,21 +177,31 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -181,7 +213,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in fi ;; *) - os=netbsd + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -189,34 +228,60 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "$machine-${os}${release}${abi-}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + *:OS108:*:*) + echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Twizzler:*:*) + echo "$UNAME_MACHINE"-unknown-twizzler + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in @@ -224,7 +289,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on @@ -234,60 +299,54 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -296,12 +355,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo s390-ibm-zvmoe exit ;; *:OS400:*:*) - echo powerpc-ibm-os400 + echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} + echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) @@ -326,38 +385,38 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} + echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" + set_cc_for_build + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in @@ -366,25 +425,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} + echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not @@ -395,44 +454,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} + echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} + echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} + echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} + echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} + echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -441,23 +500,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} + echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax @@ -481,21 +540,21 @@ EOF echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] then - echo m88k-dg-dgux${UNAME_RELEASE} + echo m88k-dg-dgux"$UNAME_RELEASE" else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else - echo i586-dg-dgux${UNAME_RELEASE} + echo i586-dg-dgux"$UNAME_RELEASE" fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -510,7 +569,7 @@ EOF echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id @@ -522,14 +581,14 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -540,7 +599,7 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else @@ -554,26 +613,27 @@ EOF exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx @@ -588,67 +648,67 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if [ "$HP_ARCH" = "" ]; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" - #define _HPUX_SOURCE - #include - #include + #define _HPUX_SOURCE + #include + #include - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ "$HP_ARCH" = hppa2.0w ] then - eval $set_cc_for_build + set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler @@ -659,23 +719,23 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -700,11 +760,11 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -713,7 +773,7 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) @@ -721,9 +781,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + echo "$UNAME_MACHINE"-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -731,132 +791,137 @@ EOF exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit ;; + exit ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi + else + echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf + fi exit ;; *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo "$UNAME_MACHINE"-pc-mingw32 exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 + echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case "$UNAME_MACHINE" in x86) - echo i586-pc-interix${UNAME_RELEASE} + echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} + echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin + echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin + echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -867,118 +932,171 @@ EOF EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; - esac + esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) - eval $set_cc_for_build + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) - echo cris-axis-linux-gnu + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el + MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} + MIPS_ENDIAN= #else - CPU= + MIPS_ENDIAN= #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-gnu + echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu + echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu + echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -987,54 +1105,54 @@ EOF echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx + echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable + echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp + echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1044,20 +1162,20 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv32 + echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp - exit ;; + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; @@ -1066,9 +1184,9 @@ EOF exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1088,39 +1206,39 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} + echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 @@ -1131,15 +1249,15 @@ EOF *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1151,25 +1269,25 @@ EOF exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos + echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} + echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv"$UNAME_RELEASE" else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv"$UNAME_RELEASE" fi - exit ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; @@ -1182,63 +1300,98 @@ EOF BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} + echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} + echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} + echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} + echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} + echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} + echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1247,18 +1400,19 @@ EOF echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + # shellcheck disable=SC2154 + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1279,14 +1433,14 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; @@ -1295,24 +1449,39 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos + echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; + *:Unleashed:*:*) + echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" exit ;; esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < "$dummy.c" < -# include +#include +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif #endif main () { @@ -1325,20 +1494,12 @@ main () #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" -#endif - ); exit (0); + "" #endif + ); exit (0); #endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) @@ -1380,39 +1541,54 @@ main () #endif #if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); + struct utsname un; + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif #endif #if defined (alliant) && defined (i860) @@ -1423,54 +1599,38 @@ main () } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } +echo "$0: unable to guess system type" >&2 -# Convex versions that predate uname can use getsysinfo(1) +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp @@ -1489,16 +1649,16 @@ hostinfo = `(hostinfo) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/android/external/config.sub b/android/external/config.sub index 320e303..0f2234c 100755 --- a/android/external/config.sub +++ b/android/external/config.sub @@ -1,38 +1,31 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 -# Free Software Foundation, Inc. +# Copyright 1992-2019 Free Software Foundation, Inc. -timestamp='2010-09-11' +timestamp='2019-06-30' -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. +# Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -40,7 +33,7 @@ timestamp='2010-09-11' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -60,12 +53,11 @@ timestamp='2010-09-11' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -75,9 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. +Copyright 1992-2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -99,12 +89,12 @@ while test $# -gt 0 ; do - ) # Use stdin as input. break ;; -* ) - echo "$me: invalid option $1$help" + echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. - echo $1 + echo "$1" exit ;; * ) @@ -120,1151 +110,1164 @@ case $# in exit 1;; esac -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac +# Split fields of configuration type +# shellcheck disable=SC2162 +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # parts + maybe_os=$field2-$field3 + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ + | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ + | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ + | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ + | storm-chaos* | os2-emx* | rtmk-nova*) + basic_machine=$field1 + os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + os=linux-android + ;; + *) + basic_machine=$field1-$field2 + os=$field3 + ;; + esac ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + sun*os*) + basic_machine=$field1 + os=$field2 + ;; + # Manufacturers + dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ + | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ + | unicom* | ibm* | next | hp | isi* | apollo | altos* \ + | convergent* | ncr* | news | 32* | 3600* | 3100* \ + | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ + | ultra | tti* | harris | dolphin | highlevel | gould \ + | cbm | ns | masscomp | apple | axis | knuth | cray \ + | microblaze* | sim | cisco \ + | oki | wec | wrs | winbond) + basic_machine=$field1-$field2 + os= + ;; + *) + basic_machine=$field1 + os=$field2 + ;; + esac + ;; + esac ;; - -clix*) - basic_machine=clipper-intergraph + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + os=bsd + ;; + a29khif) + basic_machine=a29k-amd + os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=scout + ;; + alliant) + basic_machine=fx80-alliant + os= + ;; + altos | altos3068) + basic_machine=m68k-altos + os= + ;; + am29k) + basic_machine=a29k-none + os=bsd + ;; + amdahl) + basic_machine=580-amdahl + os=sysv + ;; + amiga) + basic_machine=m68k-unknown + os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=bsd + ;; + aros) + basic_machine=i386-pc + os=aros + ;; + aux) + basic_machine=m68k-apple + os=aux + ;; + balance) + basic_machine=ns32k-sequent + os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=linux + ;; + cegcc) + basic_machine=arm-unknown + os=cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=bsd + ;; + convex-c2) + basic_machine=c2-convex + os=bsd + ;; + convex-c32) + basic_machine=c32-convex + os=bsd + ;; + convex-c34) + basic_machine=c34-convex + os=bsd + ;; + convex-c38) + basic_machine=c38-convex + os=bsd + ;; + cray) + basic_machine=j90-cray + os=unicos + ;; + crds | unos) + basic_machine=m68k-crds + os= + ;; + da30) + basic_machine=m68k-da30 + os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + os= + ;; + delta88) + basic_machine=m88k-motorola + os=sysv3 + ;; + dicos) + basic_machine=i686-pc + os=dicos + ;; + djgpp) + basic_machine=i586-pc + os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=ose + ;; + gmicro) + basic_machine=tron-gmicro + os=sysv + ;; + go32) + basic_machine=i386-pc + os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=hms + ;; + harris) + basic_machine=m88k-harris + os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=proelf + ;; + i386mach) + basic_machine=i386-mach + os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=sysv + ;; + merlin) + basic_machine=ns32k-utek + os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + os=coff + ;; + morphos) + basic_machine=powerpc-unknown + os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=moxiebox + ;; + msdos) + basic_machine=i386-pc + os=msdos + ;; + msys) + basic_machine=i686-pc + os=msys + ;; + mvs) + basic_machine=i370-ibm + os=mvs + ;; + nacl) + basic_machine=le32-unknown + os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=newsos + ;; + news1000) + basic_machine=m68030-sony + os=newsos + ;; + necv70) + basic_machine=v70-nec + os=sysv + ;; + nh3000) + basic_machine=m68k-harris + os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=cxux + ;; + nindy960) + basic_machine=i960-intel + os=nindy + ;; + mon960) + basic_machine=i960-intel + os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=ose + ;; + os68k) + basic_machine=m68k-none + os=os68k + ;; + paragon) + basic_machine=i860-intel + os=osf + ;; + parisc) + basic_machine=hppa-unknown + os=linux + ;; + pw32) + basic_machine=i586-unknown + os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=rdos + ;; + rdos32) + basic_machine=i386-pc + os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=coff + ;; + sa29200) + basic_machine=a29k-amd + os=udi + ;; + sei) + basic_machine=mips-sei + os=seiux + ;; + sequent) + basic_machine=i386-sequent + os= + ;; + sps7) + basic_machine=m68k-bull + os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + os= + ;; + stratus) + basic_machine=i860-stratus + os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + os= + ;; + sun2os3) + basic_machine=m68000-sun + os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + os= + ;; + sun3os3) + basic_machine=m68k-sun + os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + os= + ;; + sun4os3) + basic_machine=sparc-sun + os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + os= + ;; + sv1) + basic_machine=sv1-cray + os=unicos + ;; + symmetry) + basic_machine=i386-sequent + os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=unicos + ;; + t90) + basic_machine=t90-cray + os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + os=tpf + ;; + udi29k) + basic_machine=a29k-amd + os=udi + ;; + ultra3) + basic_machine=a29k-nyu + os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=none + ;; + vaxv) + basic_machine=vax-dec + os=sysv + ;; + vms) + basic_machine=vax-dec + os=vms + ;; + vsta) + basic_machine=i386-pc + os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=vxworks + ;; + xbox) + basic_machine=i686-pc + os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + os=unicos + ;; + *) + basic_machine=$1 + os= + ;; + esac ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond ;; - -lynx*) - os=-lynxos + op50n) + cpu=hppa1.1 + vendor=oki ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + op60c) + cpu=hppa1.1 + vendor=oki ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` + ibm*) + cpu=i370 + vendor=ibm ;; - -psos*) - os=-psos + orion105) + cpu=clipper + vendor=highlevel ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown + pmac | pmac-mpw) + cpu=powerpc + vendor=apple ;; - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile-* | tilegx-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att + cpu=m68000 + vendor=att ;; 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + cpu=we32k + vendor=att ;; bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec + cpu=powerpc + vendor=ibm + os=cnk ;; decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 + cpu=pdp10 + vendor=dec + os=tops10 ;; decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 + cpu=pdp10 + vendor=dec + os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 + cpu=m68k + vendor=motorola ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd + dpx2*) + cpu=m68k + vendor=bull + os=sysv3 ;; encore | umax | mmax) - basic_machine=ns32k-encore + cpu=ns32k + vendor=encore ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose + elxsi) + cpu=elxsi + vendor=elxsi + os=${os:-bsd} ;; fx2800) - basic_machine=i860-alliant + cpu=i860 + vendor=alliant ;; genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 + cpu=ns32k + vendor=ns ;; h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp + cpu=m68000 + vendor=hp ;; hp9k3[2-9][0-9]) - basic_machine=m68k-hp + cpu=m68k + vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf + cpu=hppa1.0 + vendor=hp ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv32 ;; i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv4 ;; i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv ;; i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=solaris2 ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta + j90 | j90-cray) + cpu=j90 + vendor=cray + os=${os:-unicos} ;; iris | iris4d) - basic_machine=mips-sgi + cpu=mips + vendor=sgi case $os in - -irix*) + irix*) ;; *) - os=-irix4 + os=irix4 ;; esac ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs + cpu=m68000 + vendor=convergent ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + os=mint ;; news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv + cpu=mips + vendor=sony + os=newsos ;; - next | m*-next ) - basic_machine=m68k-next + next | m*-next) + cpu=m68k + vendor=next case $os in - -nextstep* ) + openstep*) + ;; + nextstep*) ;; - -ns2*) - os=-nextstep2 + ns2*) + os=nextstep2 ;; *) - os=-nextstep3 + os=nextstep3 ;; esac ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem + cpu=np1 + vendor=gould ;; op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k + cpu=hppa1.1 + vendor=oki + os=proelf ;; pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 ;; pbd) - basic_machine=sparc-tti + cpu=sparc + vendor=tti ;; pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + cpu=m68k + vendor=tti ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + pc532) + cpu=ns32k + vendor=pc532 ;; pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + cpu=pn + vendor=gould ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + power) + cpu=power + vendor=ibm ;; ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff + cpu=i386 + vendor=ibm ;; rm[46]00) - basic_machine=mips-siemens + cpu=mips + vendor=siemens ;; rtpc | rtpc-*) - basic_machine=romp-ibm + cpu=romp + vendor=ibm ;; - s390 | s390-*) - basic_machine=s390-ibm + sde) + cpu=mipsisa32 + vendor=sde + os=${os:-elf} ;; - s390x | s390x-*) - basic_machine=s390x-ibm + simso-wrs) + cpu=sparclite + vendor=wrs + os=vxworks ;; - sa29200) - basic_machine=a29k-amd - os=-udi + tower | tower-32) + cpu=m68k + vendor=ncr ;; - sb1) - basic_machine=mipsisa64sb1-unknown + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown + w65) + cpu=w65 + vendor=wdc ;; - sde) - basic_machine=mipsisa32-sde - os=-elf + w89k-*) + cpu=hppa1.1 + vendor=winbond + os=proelf ;; - sei) - basic_machine=mips-sei - os=-seiux + none) + cpu=none + vendor=none ;; - sequent) - basic_machine=i386-sequent + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine ;; - sh) - basic_machine=sh-hitachi - os=-hms + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - sh5el) - basic_machine=sh5le-unknown + + *-*) + # shellcheck disable=SC2162 + IFS="-" read cpu vendor <&2 - exit 1 + # Recognize the canonical CPU types that are allowed with any + # company name. + case $cpu in + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | abacus \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ + | alphapca5[67] | alpha64pca5[67] \ + | am33_2.0 \ + | amdgcn \ + | arc | arceb \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | bpf | bs2000 \ + | c[123]* | c30 | [cjt]90 | c4x \ + | c8051 | clipper | craynv | csky | cydra \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | elxsi | epiphany \ + | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | h8300 | h8500 \ + | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i*86 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle \ + | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ + | m88110 | m88k | maxq | mb | mcore | mep | metag \ + | microblaze | microblazeel \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64eb | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mmix \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k | nvptx \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | picochip \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv64 \ + | rl78 | romp | rs6000 | rx \ + | score \ + | sh | shl \ + | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \ + | sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \ + | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ + | spu \ + | tahoe \ + | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ + | tron \ + | ubicom32 \ + | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | visium \ + | w65 \ + | wasm32 | wasm64 \ + | we32k \ + | x86 | x86_64 | xc16x | xgate | xps100 \ + | xstormy16 | xtensa* \ + | ymp \ + | z8k | z80) + ;; + + *) + echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + exit 1 + ;; + esac ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1272,200 +1275,244 @@ esac # Decode manufacturer-specific aliases for certain operating systems. -if [ x"$os" != x"" ] +if [ x$os != x ] then case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux + # First match some system type aliases that might get confused + # with valid system types. + # solaris* is a basic system type, with this one exception. + auroraux) + os=auroraux ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` + bluegene*) + os=cnk ;; - -solaris) - os=-solaris2 + solaris1 | solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; - -svr4*) - os=-sysv4 + solaris) + os=solaris2 ;; - -unixware*) - os=-sysv4.2uw + unixware*) + os=sysv4.2uw ;; - -gnu/linux*) + gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; - # First accept the basic system types. + # es1800 is here to avoid being matched by es* (a different OS) + es1800*) + os=ose + ;; + # Some version numbers need modification + chorusos*) + os=chorusos + ;; + isc) + os=isc2.2 + ;; + sco6) + os=sco5v6 + ;; + sco5) + os=sco3.2v5 + ;; + sco4) + os=sco3.2v4 + ;; + sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + ;; + sco3.2v[4-9]* | sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + ;; + scout) + # Don't match below + ;; + sco*) + os=sco3.2v2 + ;; + psos*) + os=psos + ;; + # Now accept the basic system types. # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Each alternative MUST end in a * to match a version number. + # sysv* is not here because it comes later, after sysvr4. + gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ + | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ + | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ + | sym* | kopensolaris* | plan9* \ + | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ + | aos* | aros* | cloudabi* | sortix* | twizzler* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ + | knetbsd* | mirbsd* | netbsd* \ + | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ + | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ + | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ + | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ + | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ + | linux-newlib* | linux-musl* | linux-uclibc* \ + | uxpv* | beos* | mpeix* | udk* | moxiebox* \ + | interix* | uwin* | mks* | rhapsody* | darwin* \ + | openstep* | oskit* | conix* | pw32* | nonstopux* \ + | storm-chaos* | tops10* | tenex* | tops20* | its* \ + | os2* | vos* | palmos* | uclinux* | nucleus* \ + | morphos* | superux* | rtmk* | windiss* \ + | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ + | skyos* | haiku* | rdos* | toppers* | drops* | es* \ + | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ + | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ + | nsk* | powerunix) # Remember, each alternative MUST END IN *, to match a version number. ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) + qnx*) + case $cpu in + x86 | i*86) ;; *) - os=-nto$os + os=nto-$os ;; esac ;; - -nto-qnx*) + hiux*) + os=hiuxwe2 ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` + nto-qnx*) ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; - -linux-dietlibc) - os=-linux-dietlibc + linux-dietlibc) + os=linux-dietlibc ;; - -linux*) + linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` + lynx*178) + os=lynxos178 + ;; + lynx*5) + os=lynxos5 ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` + lynx*) + os=lynxos ;; - -opened*) - os=-openedition + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` ;; - -os400*) - os=-os400 + opened*) + os=openedition ;; - -wince*) - os=-wince + os400*) + os=os400 ;; - -osfrose*) - os=-osfrose + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; - -osf*) - os=-osf + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; - -utek*) - os=-bsd + wince*) + os=wince ;; - -dynix*) - os=-bsd + utek*) + os=bsd ;; - -acis*) - os=-aos + dynix*) + os=bsd ;; - -atheos*) - os=-atheos + acis*) + os=aos ;; - -syllable*) - os=-syllable + atheos*) + os=atheos ;; - -386bsd) - os=-bsd + syllable*) + os=syllable ;; - -ctix* | -uts*) - os=-sysv + 386bsd) + os=bsd ;; - -nova*) - os=-rtmk-nova + ctix* | uts*) + os=sysv ;; - -ns2 ) - os=-nextstep2 + nova*) + os=rtmk-nova ;; - -nsk*) - os=-nsk + ns2) + os=nextstep2 ;; # Preserve the version number of sinix5. - -sinix5.*) + sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; - -sinix*) - os=-sysv4 + sinix*) + os=sysv4 ;; - -tpf*) - os=-tpf + tpf*) + os=tpf ;; - -triton*) - os=-sysv3 + triton*) + os=sysv3 ;; - -oss*) - os=-sysv3 + oss*) + os=sysv3 ;; - -svr4) - os=-sysv4 + svr4*) + os=sysv4 ;; - -svr3) - os=-sysv3 + svr3) + os=sysv3 ;; - -sysvr4) - os=-sysv4 + sysvr4) + os=sysv4 ;; - # This must come after -sysvr4. - -sysv*) + # This must come after sysvr4. + sysv*) ;; - -ose*) - os=-ose + ose*) + os=ose ;; - -es1800*) - os=-ose + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + os=mint ;; - -xenix) - os=-xenix + zvmoe) + os=zvmoe ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint + dicos*) + os=dicos ;; - -aros*) - os=-aros + pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $cpu in + arm*) + os=eabi + ;; + *) + os=elf + ;; + esac ;; - -kaos*) - os=-kaos + nacl*) ;; - -zvmoe) - os=-zvmoe + ios) ;; - -dicos*) - os=-dicos + none) ;; - -nacl*) - ;; - -none) + *-eabi) ;; *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac @@ -1481,258 +1528,265 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in - score-*) - os=-elf +case $cpu-$vendor in + score-*) + os=elf ;; - spu-*) - os=-elf + spu-*) + os=elf ;; *-acorn) - os=-riscix1.2 + os=riscix1.2 ;; arm*-rebel) - os=-linux + os=linux ;; arm*-semi) - os=-aout + os=aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=coff + ;; + c8051-*) + os=elf + ;; + clipper-intergraph) + os=clix + ;; + hexagon-*) + os=elf ;; tic54x-*) - os=-coff + os=coff ;; tic55x-*) - os=-coff + os=coff ;; tic6x-*) - os=-coff + os=coff ;; # This must come before the *-dec entry. pdp10-*) - os=-tops20 + os=tops20 ;; pdp11-*) - os=-none + os=none ;; *-dec | vax-*) - os=-ultrix4.2 + os=ultrix4.2 ;; m68*-apollo) - os=-domain + os=domain ;; i386-sun) - os=-sunos4.0.2 + os=sunos4.0.2 ;; m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 + os=sunos3 ;; m68*-cisco) - os=-aout + os=aout ;; - mep-*) - os=-elf + mep-*) + os=elf ;; mips*-cisco) - os=-elf + os=elf ;; mips*-*) - os=-elf + os=elf ;; or32-*) - os=-coff + os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 + os=sysv3 ;; sparc-* | *-sun) - os=-sunos4.1.1 + os=sunos4.1.1 ;; - *-be) - os=-beos + pru-*) + os=elf ;; - *-haiku) - os=-haiku + *-be) + os=beos ;; *-ibm) - os=-aix + os=aix ;; - *-knuth) - os=-mmixware + *-knuth) + os=mmixware ;; *-wec) - os=-proelf + os=proelf ;; *-winbond) - os=-proelf + os=proelf ;; *-oki) - os=-proelf + os=proelf ;; *-hp) - os=-hpux + os=hpux ;; *-hitachi) - os=-hiux + os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv + os=sysv ;; *-cbm) - os=-amigaos + os=amigaos ;; *-dg) - os=-dgux + os=dgux ;; *-dolphin) - os=-sysv3 + os=sysv3 ;; m68k-ccur) - os=-rtu + os=rtu ;; m88k-omron*) - os=-luna + os=luna ;; - *-next ) - os=-nextstep + *-next) + os=nextstep ;; *-sequent) - os=-ptx + os=ptx ;; *-crds) - os=-unos + os=unos ;; *-ns) - os=-genix + os=genix ;; i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 + os=mvs ;; *-gould) - os=-sysv + os=sysv ;; *-highlevel) - os=-bsd + os=bsd ;; *-encore) - os=-bsd + os=bsd ;; *-sgi) - os=-irix + os=irix ;; *-siemens) - os=-sysv4 + os=sysv4 ;; *-masscomp) - os=-rtu + os=rtu ;; f30[01]-fujitsu | f700-fujitsu) - os=-uxpv + os=uxpv ;; *-rom68k) - os=-coff + os=coff ;; *-*bug) - os=-coff + os=coff ;; *-apple) - os=-macos + os=macos ;; *-atari*) - os=-mint + os=mint + ;; + *-wrs) + os=vxworks ;; *) - os=-none + os=none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) +case $vendor in + unknown) case $os in - -riscix*) + riscix*) vendor=acorn ;; - -sunos*) + sunos*) vendor=sun ;; - -cnk*|-aix*) + cnk*|-aix*) vendor=ibm ;; - -beos*) + beos*) vendor=be ;; - -hpux*) + hpux*) vendor=hp ;; - -mpeix*) + mpeix*) vendor=hp ;; - -hiux*) + hiux*) vendor=hitachi ;; - -unos*) + unos*) vendor=crds ;; - -dgux*) + dgux*) vendor=dg ;; - -luna*) + luna*) vendor=omron ;; - -genix*) + genix*) vendor=ns ;; - -mvs* | -opened*) + clix*) + vendor=intergraph + ;; + mvs* | opened*) vendor=ibm ;; - -os400*) + os400*) vendor=ibm ;; - -ptx*) + ptx*) vendor=sequent ;; - -tpf*) + tpf*) vendor=ibm ;; - -vxsim* | -vxworks* | -windiss*) + vxsim* | vxworks* | windiss*) vendor=wrs ;; - -aux*) + aux*) vendor=apple ;; - -hms*) + hms*) vendor=hitachi ;; - -mpw* | -macos*) + mpw* | macos*) vendor=apple ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) vendor=atari ;; - -vos*) + vos*) vendor=stratus ;; esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac -echo $basic_machine$os +echo "$cpu-$vendor-$os" exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" From 484c7a4a1fa45299f9ab1bbb28cbb5f72176a9c7 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 8 Nov 2019 09:44:49 +0100 Subject: [PATCH 07/17] JNI-81: Arm64 first approach --- android/build.gradle | 4 ++-- android/external/Makefile | 7 +++++-- android/external/Makefile.conf | 5 ++++- android/external/arm64-v8a/Makefile | 22 ++++++++++------------ android/external/armeabi-v7a/Makefile | 1 + src/jniutils.cc | 2 +- 6 files changed, 23 insertions(+), 18 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index ce61646..fe3697b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,7 +4,7 @@ def pEpEngineSrc = hasProperty('pEpEngineSrc') ? pEpEngineSrc : "../../pEpEngine def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true" def pEpAppPackageName = hasProperty('pEpAppPackageName') ? pEpAppPackageName : "pep.android.k9" -def libetpanAndroid = file('external/libetpan/build-android') +def libetpanAndroid = file('external') def pEpEngineDB = new File(new File(pEpEngineSrc), 'db') @@ -39,7 +39,7 @@ android { externalNativeBuild { ndkBuild { - abiFilters "armeabi-v7a" + //abiFilters "armeabi-v7a" //abiFilters ["armeabi-v7a"] //abiFilters ["arm64-v8a, armeabi-v7a"] } diff --git a/android/external/Makefile b/android/external/Makefile index 5b40efe..42913f1 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -21,12 +21,15 @@ endif .PHONY: all build clean +all: build + build: $(MAKE) -C armeabi-v7a - -all: build + $(MAKE) -C arm64-v8a clean: $(MAKE) -C armeabi-v7a clean + $(MAKE) -C arm64-v8a clean + assets: diff --git a/android/external/Makefile.conf b/android/external/Makefile.conf index 2a6aeb9..e0f26fd 100644 --- a/android/external/Makefile.conf +++ b/android/external/Makefile.conf @@ -13,4 +13,7 @@ else SED=sed endif -### +### Sequoia deps versions +OPENSSL_VERSION=1.1.1b +GMP_VERSION=6.1.2 +NETTLE_VERSION=3.4.1 diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index dc0adb0..fc97c11 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -1,5 +1,5 @@ # Copyright 2019, pEp Foundation -# This file is part of pEpJNIAdapter for Android - ARMv7 build +# 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 @@ -18,7 +18,7 @@ include ../Makefile.conf APP_ABI ?= arm64-v8a ANDROID_API ?= 21 -all: build assets +all: build build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpan-build @@ -56,6 +56,7 @@ 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 @@ -147,6 +148,7 @@ EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh + mv libetpan/build-android/libetpan-android-1.zip ../ touch $@ libetpan-build: libetpan/Makefile @@ -213,9 +215,6 @@ uuid/jni/Android.mk: uuid.src.stamp #------------------------------------------------------------------------------# # Sequoia -OPENSSL_VERSION=1.1.1b -GMP_VERSION=6.1.2 -NETTLE_VERSION=3.4.1 sequoia-deps-build: gmp-install nettle-install openssl-install @@ -242,7 +241,7 @@ EXTERNAL_SRCS += openssl-src EXTERNAL_SRCS_CLEAN += openssl-clean -OPENSSL_ARCHITECTURE:=android-arm +OPENSSL_ARCHITECTURE:=android-arm64 openssl/Makefile: openssl.src.stamp cd openssl && \ @@ -292,7 +291,6 @@ gmp/Makefile: gmp.src.stamp --host=$(HOST) \ --prefix=$(LOCAL) \ --disable-static \ - --enable-cxx \ MPN_PATH="arm64 generic" @@ -366,7 +364,7 @@ sequoia-ffi-clean: EXTERNAL_SRCS_CLEAN += sequoia-ffi-clean -$(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so: sequoia.src.stamp sequoia-deps-build +$(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)" \ LD_LIBRARY_PATH=$(LOCAL)/lib/ \ PKG_CONFIG_PATH=$(LOCAL)/lib/pkgconfig \ @@ -374,15 +372,15 @@ $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so: 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 + 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)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so - cp $(CARGO_TARGET_DIR)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/ +$(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)/armv7-linux-androideabi/release/libsequoia_openpgp_ffi.so +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 diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 4b00ca7..9988fc3 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -148,6 +148,7 @@ EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh + mv libetpan/build-android/libetpan-android-1.zip ../ touch $@ libetpan-build: libetpan/Makefile diff --git a/src/jniutils.cc b/src/jniutils.cc index 718f66d..87c7a24 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -7,7 +7,7 @@ #include #include -#ifdef ANDROID +#ifndef __aarch64__ #include #define time_t time64_t #define timegm timegm64 From 4b11f1dbf21172ca2ae8d565a3c640ede487011b Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 8 Nov 2019 17:20:59 +0100 Subject: [PATCH 08/17] JNI-81 Clean Android build: Move libiconv download to common Makefile. --- android/external/Makefile | 4 +++- android/external/Makefile.conf | 21 +++++++++++++++++ android/external/arm64-v8a/Makefile | 33 ++------------------------- android/external/armeabi-v7a/Makefile | 30 ++---------------------- android/external/common/Makefile | 28 +++++++++++++++++++++++ 5 files changed, 56 insertions(+), 60 deletions(-) create mode 100644 android/external/common/Makefile diff --git a/android/external/Makefile b/android/external/Makefile index 42913f1..6ff5f38 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -23,7 +23,7 @@ endif all: build -build: +build: libiconv-1.15.tar.gz $(MAKE) -C armeabi-v7a $(MAKE) -C arm64-v8a @@ -31,5 +31,7 @@ clean: $(MAKE) -C armeabi-v7a clean $(MAKE) -C arm64-v8a clean +libiconv-1.15.tar.gz: + $(MAKE) -C common assets: diff --git a/android/external/Makefile.conf b/android/external/Makefile.conf index e0f26fd..7e692b4 100644 --- a/android/external/Makefile.conf +++ b/android/external/Makefile.conf @@ -17,3 +17,24 @@ endif OPENSSL_VERSION=1.1.1b GMP_VERSION=6.1.2 NETTLE_VERSION=3.4.1 + +### Git deps repos +EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD +EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/husspEp/sequoia.git?master + +### Common variables +#### Source code targets +EXTERNAL_SRCS += libiconv-src +EXTERNAL_SRCS += uuid-src +EXTERNAL_SRCS += openssl-src +EXTERNAL_SRCS += gmp-src +EXTERNAL_SRCS += nettle-src + +#### Clean source code targets. +EXTERNAL_SRCS_CLEAN += libiconv-clean +EXTERNAL_SRCS_CLEAN += uuid-clean +EXTERNAL_SRCS_CLEAN += openssl-clean +EXTERNAL_SRCS_CLEAN += gmp-clean +EXTERNAL_SRCS_CLEAN += nettle-clean +EXTERNAL_SRCS_CLEAN += sequoia-ffi-clean + diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index fc97c11..74cc591 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -96,12 +96,9 @@ showsetup: #EXTERNAL_GIT_REPOS += libiconv|git://git.savannah.gnu.org/libiconv.git?5365cc8 # using released package instead -libiconv-1.15.tar.gz: - wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz - touch $@ -libiconv.src.stamp: libiconv-1.15.tar.gz - tar xvfz libiconv-1.15.tar.gz +libiconv.src.stamp: ../libiconv-1.15.tar.gz + tar xvfz ../libiconv-1.15.tar.gz mv libiconv-1.15 libiconv touch $@ @@ -111,15 +108,7 @@ libiconv-clean: rm -rf libiconv rm -rf libiconv.src.stamp -EXTERNAL_SRCS += libiconv-src -EXTERNAL_SRCS_CLEAN += libiconv-clean - libiconv/Makefile: libiconv.src.stamp - -patch -N -p1 --reject-file=- libiconv/m4/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch - cp ../config.sub libiconv/build-aux - cp ../config.guess libiconv/build-aux - cp ../config.sub libiconv/libcharset/build-aux - cp ../config.guess libiconv/libcharset/build-aux cd libiconv && \ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ @@ -144,8 +133,6 @@ libiconv-install: $(LOCAL)/lib/libiconv.a #------------------------------------------------------------------------------# # libetpan -EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD - libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh mv libetpan/build-android/libetpan-android-1.zip ../ @@ -176,9 +163,6 @@ uuid-clean: rm -rf uuid rm -rf uuid.src.stamp -EXTERNAL_SRCS += uuid-src -EXTERNAL_SRCS_CLEAN += uuid-clean - uuid/Makefile: uuid.src.stamp $(SED) -i 's,AC_CHECK_VA_COPY(),,' uuid/uuid.ac cd uuid && autoconf @@ -237,10 +221,6 @@ openssl-clean: rm -rf openssl rm -rf openssl.src.stamp -EXTERNAL_SRCS += openssl-src -EXTERNAL_SRCS_CLEAN += openssl-clean - - OPENSSL_ARCHITECTURE:=android-arm64 openssl/Makefile: openssl.src.stamp @@ -281,9 +261,6 @@ gmp-clean: rm -rf gmp rm -rf gmp.src.stamp -EXTERNAL_SRCS += gmp-src -EXTERNAL_SRCS_CLEAN += gmp-clean - gmp/Makefile: gmp.src.stamp cd gmp && \ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ @@ -327,9 +304,6 @@ nettle-clean: rm -rf nettle rm -rf nettle.src.stamp -EXTERNAL_SRCS += nettle-src -EXTERNAL_SRCS_CLEAN += nettle-clean - 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 @@ -354,7 +328,6 @@ nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so #------------------------------------------------------------------------------# # Sequoia-ffi -EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/husspEp/sequoia.git?master CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/build/$(APP_ABI) @@ -362,8 +335,6 @@ sequoia-ffi-clean: rm -rf sequoia rm -rf sequoia.src.stamp -EXTERNAL_SRCS_CLEAN += 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)" \ LD_LIBRARY_PATH=$(LOCAL)/lib/ \ diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 9988fc3..1572b32 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -100,8 +100,8 @@ libiconv-1.15.tar.gz: wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz touch $@ -libiconv.src.stamp: libiconv-1.15.tar.gz - tar xvfz libiconv-1.15.tar.gz +libiconv.src.stamp: ../libiconv-1.15.tar.gz + tar xvfz ../libiconv-1.15.tar.gz mv libiconv-1.15 libiconv touch $@ @@ -111,15 +111,7 @@ libiconv-clean: rm -rf libiconv rm -rf libiconv.src.stamp -EXTERNAL_SRCS += libiconv-src -EXTERNAL_SRCS_CLEAN += libiconv-clean - libiconv/Makefile: libiconv.src.stamp - -patch -N -p1 --reject-file=- libiconv/m4/libtool.m4 ../libtool-Add-Android-Linux-support-iconv.patch - cp ../config.sub libiconv/build-aux - cp ../config.guess libiconv/build-aux - cp ../config.sub libiconv/libcharset/build-aux - cp ../config.guess libiconv/libcharset/build-aux cd libiconv && \ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ ./configure \ @@ -144,8 +136,6 @@ libiconv-install: $(LOCAL)/lib/libiconv.a #------------------------------------------------------------------------------# # libetpan -EXTERNAL_GIT_REPOS += libetpan|https://github.com/fdik/libetpan.git?HEAD - libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh mv libetpan/build-android/libetpan-android-1.zip ../ @@ -176,9 +166,6 @@ uuid-clean: rm -rf uuid rm -rf uuid.src.stamp -EXTERNAL_SRCS += uuid-src -EXTERNAL_SRCS_CLEAN += uuid-clean - uuid/Makefile: uuid.src.stamp $(SED) -i 's,AC_CHECK_VA_COPY(),,' uuid/uuid.ac cd uuid && autoconf @@ -240,9 +227,6 @@ openssl-clean: rm -rf openssl rm -rf openssl.src.stamp -EXTERNAL_SRCS += openssl-src -EXTERNAL_SRCS_CLEAN += openssl-clean - OPENSSL_ARCHITECTURE:=android-arm @@ -284,9 +268,6 @@ gmp-clean: rm -rf gmp rm -rf gmp.src.stamp -EXTERNAL_SRCS += gmp-src -EXTERNAL_SRCS_CLEAN += gmp-clean - gmp/Makefile: gmp.src.stamp cd gmp && \ CC="$(CC)" LD="$(LD)" AR="$(AR)" AS="$(AS)" RANLIB=$(RANLIB) STRIP="$(STRIP)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" \ @@ -327,9 +308,6 @@ nettle-clean: rm -rf nettle rm -rf nettle.src.stamp -EXTERNAL_SRCS += nettle-src -EXTERNAL_SRCS_CLEAN += nettle-clean - 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 @@ -354,16 +332,12 @@ nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so #------------------------------------------------------------------------------# # Sequoia-ffi -EXTERNAL_GIT_REPOS += sequoia|https://gitlab.com/husspEp/sequoia.git?master - CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/$(APP_ABI) sequoia-ffi-clean: rm -rf sequoia rm -rf sequoia.src.stamp -EXTERNAL_SRCS_CLEAN += 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)" \ LD_LIBRARY_PATH=$(LOCAL)/lib/ \ diff --git a/android/external/common/Makefile b/android/external/common/Makefile new file mode 100644 index 0000000..fd9e7d3 --- /dev/null +++ b/android/external/common/Makefile @@ -0,0 +1,28 @@ +# 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 + +all: download-iconv #download-uuid build-etpan download sequoia + +download-iconv: ../libiconv-1.15.tar.gz + + +# Download source and patch it +../libiconv-1.15.tar.gz: + wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz -P ../ + +clean: + rm -rf ../libiconv-1.15.tar.gz + +.PHONY: clean download-iconv \ No newline at end of file From 96ad4681d11c35b5686e6b52b64e43a1c65e664a Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 8 Nov 2019 18:27:42 +0100 Subject: [PATCH 09/17] JNI-81 Clean Android build: Move libuuid download to common Makefile. --- android/external/arm64-v8a/Makefile | 15 +-------------- android/external/armeabi-v7a/Makefile | 12 +----------- android/external/common/Makefile | 10 ++++++++-- 3 files changed, 10 insertions(+), 27 deletions(-) diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index 74cc591..c901a7d 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -13,8 +13,6 @@ include ../Makefile.conf #------------------------------------------------------------------------------# # Build parameters -# TODO: get params from the outside for multiarch build - APP_ABI ?= arm64-v8a ANDROID_API ?= 21 @@ -92,11 +90,6 @@ showsetup: #------------------------------------------------------------------------------# # libiconv -# libiconv from git can't autogen with today's debian packages. -#EXTERNAL_GIT_REPOS += libiconv|git://git.savannah.gnu.org/libiconv.git?5365cc8 - -# using released package instead - libiconv.src.stamp: ../libiconv-1.15.tar.gz tar xvfz ../libiconv-1.15.tar.gz mv libiconv-1.15 libiconv @@ -146,14 +139,8 @@ libetpan-cleanzip: #------------------------------------------------------------------------------# # uuid -# using released package from debian. official ftp wasn't available today -ossp-uuid_1.6.2.orig.tar.gz: - wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz - md5sum -c ../ossp-uuid_1.6.2.orig.tar.gz.md5 - touch $@ - uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz - tar xvfz ossp-uuid_1.6.2.orig.tar.gz + tar xvfz ../ossp-uuid_1.6.2.orig.tar.gz mv uuid-1.6.2 uuid touch $@ diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 1572b32..28d4c62 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -13,8 +13,6 @@ include ../Makefile.conf #------------------------------------------------------------------------------# # Build parameters -# TODO: get params from the outside for multiarch build - APP_ABI ?= armeabi-v7a ANDROID_API ?= 18 @@ -92,10 +90,6 @@ showsetup: #------------------------------------------------------------------------------# # libiconv -# libiconv from git can't autogen with today's debian packages. -#EXTERNAL_GIT_REPOS += libiconv|git://git.savannah.gnu.org/libiconv.git?5365cc8 - -# using released package instead libiconv-1.15.tar.gz: wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz touch $@ @@ -150,13 +144,9 @@ libetpan-cleanzip: # uuid # using released package from debian. official ftp wasn't available today -ossp-uuid_1.6.2.orig.tar.gz: - wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz - md5sum -c ../ossp-uuid_1.6.2.orig.tar.gz.md5 - touch $@ uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz - tar xvfz ossp-uuid_1.6.2.orig.tar.gz + tar xvfz ../ossp-uuid_1.6.2.orig.tar.gz mv uuid-1.6.2 uuid touch $@ diff --git a/android/external/common/Makefile b/android/external/common/Makefile index fd9e7d3..3a29c63 100644 --- a/android/external/common/Makefile +++ b/android/external/common/Makefile @@ -13,16 +13,22 @@ include ../Makefile.conf #------------------------------------------------------------------------------# # Build parameters -all: download-iconv #download-uuid build-etpan download sequoia +all: download-iconv download-uuid #build-etpan download sequoia download-iconv: ../libiconv-1.15.tar.gz +download-uuid: ../ossp-uuid_1.6.2.orig.tar.gz # Download source and patch it ../libiconv-1.15.tar.gz: wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz -P ../ +../ossp-uuid_1.6.2.orig.tar.gz: + wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz -P ../ + cd .. && md5sum -c ossp-uuid_1.6.2.orig.tar.gz.md5 + clean: rm -rf ../libiconv-1.15.tar.gz + rm -rf ../ossp-uuid_1.6.2.orig.tar.gz -.PHONY: clean download-iconv \ No newline at end of file +.PHONY: clean download-iconv download-uuid \ No newline at end of file From dc6ee73fdf7df03108eb78f472fe6ead67e81964 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 8 Nov 2019 20:14:37 +0100 Subject: [PATCH 10/17] JNI-81 Clean Android build: Move all non-git-hosted libs to common Makefile. --- android/external/Makefile | 7 +++++- android/external/arm64-v8a/Makefile | 31 +++++++-------------------- android/external/armeabi-v7a/Makefile | 31 +++++++-------------------- android/external/common/Makefile | 21 +++++++++++++++++- 4 files changed, 42 insertions(+), 48 deletions(-) diff --git a/android/external/Makefile b/android/external/Makefile index 6ff5f38..6962a34 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -19,7 +19,7 @@ ifdef BUILD_CONFIG $(info ================================================) endif -.PHONY: all build clean +.PHONY: all build clean clean-all all: build @@ -31,6 +31,11 @@ clean: $(MAKE) -C armeabi-v7a clean $(MAKE) -C arm64-v8a clean +clean-all: + $(MAKE) -C common clean + $(MAKE) -C armeabi-v7a clean-all + $(MAKE) -C arm64-v8a clean-all + libiconv-1.15.tar.gz: $(MAKE) -C common diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index c901a7d..f3c943c 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -139,7 +139,7 @@ libetpan-cleanzip: #------------------------------------------------------------------------------# # uuid -uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz +uuid.src.stamp: ../ossp-uuid_1.6.2.orig.tar.gz tar xvfz ../ossp-uuid_1.6.2.orig.tar.gz mv uuid-1.6.2 uuid touch $@ @@ -192,13 +192,8 @@ sequoia-deps-build: gmp-install nettle-install openssl-install #------------------------------------------------------------------------------# # OpenSSL -openssl-$(OPENSSL_VERSION).tar.gz: - wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz - md5sum -c ../openssl-$(OPENSSL_VERSION).tar.gz.md5 - touch $@ - -openssl.src.stamp: openssl-$(OPENSSL_VERSION).tar.gz - tar xvf openssl-$(OPENSSL_VERSION).tar.gz +openssl.src.stamp: ../openssl-$(OPENSSL_VERSION).tar.gz + tar xvf ../openssl-$(OPENSSL_VERSION).tar.gz mv openssl-$(OPENSSL_VERSION) openssl touch $@ @@ -232,13 +227,8 @@ openssl-install: $(LOCAL)/lib/libssl.so #------------------------------------------------------------------------------# # GMP -gmp-$(GMP_VERSION).tar.bz2: - wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 - md5sum -c ../gmp-$(GMP_VERSION).tar.bz2.md5 - touch $@ - -gmp.src.stamp: gmp-$(GMP_VERSION).tar.bz2 - tar xvf gmp-$(GMP_VERSION).tar.bz2 +gmp.src.stamp: ../gmp-$(GMP_VERSION).tar.bz2 + tar xvf ../gmp-$(GMP_VERSION).tar.bz2 mv gmp-$(GMP_VERSION) gmp touch $@ @@ -275,13 +265,8 @@ gmp-install: $(LOCAL)/lib/libgmp.so #------------------------------------------------------------------------------# # NETTLE -nettle-$(NETTLE_VERSION).tar.gz: $(LOCAL)/lib/libgmp.so - wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz - md5sum -c ../nettle-$(NETTLE_VERSION).tar.gz.md5 - touch $@ - -nettle.src.stamp: nettle-$(NETTLE_VERSION).tar.gz - tar xvf nettle-$(NETTLE_VERSION).tar.gz +nettle.src.stamp: ../nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so + tar xvf ../nettle-$(NETTLE_VERSION).tar.gz mv nettle-$(NETTLE_VERSION) nettle touch $@ @@ -422,7 +407,7 @@ clean-assets: rm -rf $(ASSETS) clean-install: - rm -rf $(DESTDIR)/data + rm -rf $(LOCAL) clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 28d4c62..49067d3 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -145,7 +145,7 @@ libetpan-cleanzip: # using released package from debian. official ftp wasn't available today -uuid.src.stamp: ossp-uuid_1.6.2.orig.tar.gz +uuid.src.stamp: ../ossp-uuid_1.6.2.orig.tar.gz tar xvfz ../ossp-uuid_1.6.2.orig.tar.gz mv uuid-1.6.2 uuid touch $@ @@ -201,13 +201,8 @@ sequoia-deps-build: gmp-install nettle-install openssl-install #------------------------------------------------------------------------------# # OpenSSL -openssl-$(OPENSSL_VERSION).tar.gz: - wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz - md5sum -c ../openssl-$(OPENSSL_VERSION).tar.gz.md5 - touch $@ - -openssl.src.stamp: openssl-$(OPENSSL_VERSION).tar.gz - tar xvf openssl-$(OPENSSL_VERSION).tar.gz +openssl.src.stamp: ../openssl-$(OPENSSL_VERSION).tar.gz + tar xvf ../openssl-$(OPENSSL_VERSION).tar.gz mv openssl-$(OPENSSL_VERSION) openssl touch $@ @@ -242,13 +237,8 @@ openssl-install: $(LOCAL)/lib/libssl.so #------------------------------------------------------------------------------# # GMP -gmp-$(GMP_VERSION).tar.bz2: - wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 - md5sum -c ../gmp-$(GMP_VERSION).tar.bz2.md5 - touch $@ - -gmp.src.stamp: gmp-$(GMP_VERSION).tar.bz2 - tar xvf gmp-$(GMP_VERSION).tar.bz2 +gmp.src.stamp: ../gmp-$(GMP_VERSION).tar.bz2 + tar xvf ../gmp-$(GMP_VERSION).tar.bz2 mv gmp-$(GMP_VERSION) gmp touch $@ @@ -282,13 +272,8 @@ gmp-install: $(LOCAL)/lib/libgmp.so #------------------------------------------------------------------------------# # NETTLE -nettle-$(NETTLE_VERSION).tar.gz: $(LOCAL)/lib/libgmp.so - wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz - md5sum -c ../nettle-$(NETTLE_VERSION).tar.gz.md5 - touch $@ - -nettle.src.stamp: nettle-$(NETTLE_VERSION).tar.gz - tar xvf nettle-$(NETTLE_VERSION).tar.gz +nettle.src.stamp: ../nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so + tar xvf ../nettle-$(NETTLE_VERSION).tar.gz mv nettle-$(NETTLE_VERSION) nettle touch $@ @@ -428,7 +413,7 @@ clean-assets: rm -rf $(ASSETS) clean-install: - rm -rf $(DESTDIR)/data + rm -rf $(LOCAL) clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip diff --git a/android/external/common/Makefile b/android/external/common/Makefile index 3a29c63..d405578 100644 --- a/android/external/common/Makefile +++ b/android/external/common/Makefile @@ -13,12 +13,14 @@ include ../Makefile.conf #------------------------------------------------------------------------------# # Build parameters -all: download-iconv download-uuid #build-etpan download sequoia +all: download-iconv download-uuid download-sequoia-deps #build-etpan download sequoia download-iconv: ../libiconv-1.15.tar.gz download-uuid: ../ossp-uuid_1.6.2.orig.tar.gz +download-sequoia-deps: ../openssl-$(OPENSSL_VERSION).tar.gz ../gmp-$(GMP_VERSION).tar.bz2 ../nettle-$(NETTLE_VERSION).tar.gz + # Download source and patch it ../libiconv-1.15.tar.gz: wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz -P ../ @@ -27,8 +29,25 @@ download-uuid: ../ossp-uuid_1.6.2.orig.tar.gz wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz -P ../ cd .. && md5sum -c ossp-uuid_1.6.2.orig.tar.gz.md5 +../openssl-$(OPENSSL_VERSION).tar.gz: + wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz -P ../ + cd .. && md5sum -c openssl-$(OPENSSL_VERSION).tar.gz.md5 + +../gmp-$(GMP_VERSION).tar.bz2: + wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 -P ../ + cd .. && md5sum -c gmp-$(GMP_VERSION).tar.bz2.md5 + +../nettle-$(NETTLE_VERSION).tar.gz: + wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz -P ../ + cd .. && md5sum -c nettle-$(NETTLE_VERSION).tar.gz.md5 + + + clean: rm -rf ../libiconv-1.15.tar.gz rm -rf ../ossp-uuid_1.6.2.orig.tar.gz + rm -rf ../openssl-$(OPENSSL_VERSION).tar.gz + rm -rf ../gmp-$(GMP_VERSION).tar.bz2 + rm -rf ../nettle-$(NETTLE_VERSION).tar.gz .PHONY: clean download-iconv download-uuid \ No newline at end of file From 179fc860eba316a2fff7a1f04ddc784cd1362c50 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Fri, 8 Nov 2019 22:02:28 +0100 Subject: [PATCH 11/17] JNI-81 Clean android build: Move common to downloads --- android/external/Makefile | 8 +- android/external/arm64-v8a/Makefile | 88 +++++---------- android/external/armeabi-v7a/Makefile | 87 +++++---------- android/external/common/Makefile | 53 --------- android/external/downloads/Makefile | 102 ++++++++++++++++++ .../{ => downloads}/gmp-6.1.2.tar.bz2.md5 | 0 .../{ => downloads}/nettle-3.4.1.tar.gz.md5 | 0 .../{ => downloads}/openssl-1.1.1b.tar.gz.md5 | 0 .../ossp-uuid_1.6.2.orig.tar.gz.md5 | 0 9 files changed, 158 insertions(+), 180 deletions(-) delete mode 100644 android/external/common/Makefile create mode 100644 android/external/downloads/Makefile rename android/external/{ => downloads}/gmp-6.1.2.tar.bz2.md5 (100%) rename android/external/{ => downloads}/nettle-3.4.1.tar.gz.md5 (100%) rename android/external/{ => downloads}/openssl-1.1.1b.tar.gz.md5 (100%) rename android/external/{ => downloads}/ossp-uuid_1.6.2.orig.tar.gz.md5 (100%) diff --git a/android/external/Makefile b/android/external/Makefile index 6962a34..cbede80 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -23,7 +23,7 @@ endif all: build -build: libiconv-1.15.tar.gz +build: downloads/downloads.stamp $(MAKE) -C armeabi-v7a $(MAKE) -C arm64-v8a @@ -32,11 +32,11 @@ clean: $(MAKE) -C arm64-v8a clean clean-all: - $(MAKE) -C common clean + $(MAKE) -C downloads clean $(MAKE) -C armeabi-v7a clean-all $(MAKE) -C arm64-v8a clean-all -libiconv-1.15.tar.gz: - $(MAKE) -C common +downloads/downloads.stamp: + $(MAKE) -C downloads assets: diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index f3c943c..8d72d9a 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -90,8 +90,8 @@ showsetup: #------------------------------------------------------------------------------# # libiconv -libiconv.src.stamp: ../libiconv-1.15.tar.gz - tar xvfz ../libiconv-1.15.tar.gz +libiconv.src.stamp: ../downloads/libiconv-1.15.tar.gz + tar xvfz $< mv libiconv-1.15 libiconv touch $@ @@ -125,6 +125,10 @@ libiconv-install: $(LOCAL)/lib/libiconv.a #------------------------------------------------------------------------------# # libetpan +libetpan.src.stamp: ../downloads/libetpan.tar.gz + mkdir -p libetpan + cd libetpan && tar xvfz ../$< + touch $@ libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh @@ -139,8 +143,8 @@ libetpan-cleanzip: #------------------------------------------------------------------------------# # uuid -uuid.src.stamp: ../ossp-uuid_1.6.2.orig.tar.gz - tar xvfz ../ossp-uuid_1.6.2.orig.tar.gz +uuid.src.stamp: ../downloads/ossp-uuid_1.6.2.orig.tar.gz + tar xvf $< mv uuid-1.6.2 uuid touch $@ @@ -187,13 +191,13 @@ uuid/jni/Android.mk: uuid.src.stamp #------------------------------------------------------------------------------# # Sequoia -sequoia-deps-build: gmp-install nettle-install openssl-install +sequoia-deps-build: openssl-install nettle-install #------------------------------------------------------------------------------# # OpenSSL -openssl.src.stamp: ../openssl-$(OPENSSL_VERSION).tar.gz - tar xvf ../openssl-$(OPENSSL_VERSION).tar.gz +openssl.src.stamp: ../downloads/openssl-$(OPENSSL_VERSION).tar.gz + tar xvf $< mv openssl-$(OPENSSL_VERSION) openssl touch $@ @@ -227,8 +231,8 @@ openssl-install: $(LOCAL)/lib/libssl.so #------------------------------------------------------------------------------# # GMP -gmp.src.stamp: ../gmp-$(GMP_VERSION).tar.bz2 - tar xvf ../gmp-$(GMP_VERSION).tar.bz2 +gmp.src.stamp: ../downloads/gmp-$(GMP_VERSION).tar.bz2 + tar xvf $< mv gmp-$(GMP_VERSION) gmp touch $@ @@ -265,12 +269,12 @@ gmp-install: $(LOCAL)/lib/libgmp.so #------------------------------------------------------------------------------# # NETTLE -nettle.src.stamp: ../nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so - tar xvf ../nettle-$(NETTLE_VERSION).tar.gz +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-src: nettle.src.stamp gmp-install nettle-clean: rm -rf nettle @@ -284,18 +288,20 @@ nettle/Makefile: nettle.src.stamp ./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 nettle/libhogweed.so +$(LOCAL)/lib/libnettle.so: nettle/libnettle.so $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install -nettle-build: nettle/libnettle.so nettle/libhogweed.so +nettle-build: nettle/libnettle.so -nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so +nettle-install: $(LOCAL)/lib/libnettle.so #------------------------------------------------------------------------------# @@ -303,6 +309,11 @@ nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/build/$(APP_ABI) +sequoia.src.stamp: ../downloads/sequoia.tar.gz + mkdir -p sequoia + cd sequoia && tar xvf ../$< + touch $@ + sequoia-ffi-clean: rm -rf sequoia rm -rf sequoia.src.stamp @@ -353,53 +364,6 @@ sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so # 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 - -define per_repo_targets -$(1).git.stamp: - git clone $(2) $(1).git - touch $(1).git.stamp - -$(1).git_update: $(1).git.stamp - cd $(1).git; git pull - touch $(1).git.stamp - -$(1).src.stamp: $(1).git.stamp - rm -rf $(1) - mkdir $(1) - (cd $(1).git; git archive --format=tar $(3)) | tar -C $(1) -x - touch $(1).src.stamp - -$(1)-src: $(1).src.stamp - -$(1)-clean: - rm -rf $(1) - rm -f $(1).src.stamp - -EXTERNAL_LOCAL_GITS += $(1).git.stamp -EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update -EXTERNAL_SRCS += $(1)-src -EXTERNAL_SRCS_CLEAN += $(1)-clean -endef - -define per_repo -$(call per_repo_targets,\ - $(1),\ - $(word 1,$(subst ?, ,$(2))),\ - $(word 2,$(subst ?, ,$(2)))) -endef - -$(foreach repo, $(EXTERNAL_GIT_REPOS), $(eval $(call per_repo,\ - $(word 1,$(subst |, ,$(repo))),\ - $(word 2,$(subst |, ,$(repo)))))) - -git_clones: $(EXTERNAL_LOCAL_GITS) - -git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) - #------------------------------------------------------------------------------# # clean diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 49067d3..beccf6e 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -90,12 +90,8 @@ showsetup: #------------------------------------------------------------------------------# # libiconv -libiconv-1.15.tar.gz: - wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz - touch $@ - -libiconv.src.stamp: ../libiconv-1.15.tar.gz - tar xvfz ../libiconv-1.15.tar.gz +libiconv.src.stamp: ../downloads/libiconv-1.15.tar.gz + tar xvf $< mv libiconv-1.15 libiconv touch $@ @@ -129,6 +125,10 @@ libiconv-install: $(LOCAL)/lib/libiconv.a #------------------------------------------------------------------------------# # libetpan +libetpan.src.stamp: ../downloads/libetpan.tar.gz + mkdir -p sequoia + cd sequoia && tar xvf ../$< + touch $@ libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh @@ -145,8 +145,8 @@ libetpan-cleanzip: # using released package from debian. official ftp wasn't available today -uuid.src.stamp: ../ossp-uuid_1.6.2.orig.tar.gz - tar xvfz ../ossp-uuid_1.6.2.orig.tar.gz +uuid.src.stamp: ../downloads/ossp-uuid_1.6.2.orig.tar.gz + tar xvfz $< mv uuid-1.6.2 uuid touch $@ @@ -196,13 +196,13 @@ OPENSSL_VERSION=1.1.1b GMP_VERSION=6.1.2 NETTLE_VERSION=3.4.1 -sequoia-deps-build: gmp-install nettle-install openssl-install +sequoia-deps-build: openssl-install nettle-install #------------------------------------------------------------------------------# # OpenSSL -openssl.src.stamp: ../openssl-$(OPENSSL_VERSION).tar.gz - tar xvf ../openssl-$(OPENSSL_VERSION).tar.gz +openssl.src.stamp: ../downloads/openssl-$(OPENSSL_VERSION).tar.gz + tar xvf $< mv openssl-$(OPENSSL_VERSION) openssl touch $@ @@ -226,7 +226,7 @@ $(LOCAL)/lib/libssl.so: openssl/libssl.so cp libcrypto.so $(LOCAL)/lib && \ cp libcrypto.a $(LOCAL)/lib && \ cp libssl.so $(LOCAL)/lib && \ - cp libssl.a $(LOCAL)/lib + cp libssl.a $(LOCAL)/lib ls -l $(LOCAL)/lib/libssl.so openssl-build: openssl/libssl.so @@ -237,8 +237,8 @@ openssl-install: $(LOCAL)/lib/libssl.so #------------------------------------------------------------------------------# # GMP -gmp.src.stamp: ../gmp-$(GMP_VERSION).tar.bz2 - tar xvf ../gmp-$(GMP_VERSION).tar.bz2 +gmp.src.stamp: ../downloads/gmp-$(GMP_VERSION).tar.bz2 + tar xvf $< mv gmp-$(GMP_VERSION) gmp touch $@ @@ -272,8 +272,8 @@ gmp-install: $(LOCAL)/lib/libgmp.so #------------------------------------------------------------------------------# # NETTLE -nettle.src.stamp: ../nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so - tar xvf ../nettle-$(NETTLE_VERSION).tar.gz +nettle.src.stamp: ../downloads/nettle-$(NETTLE_VERSION).tar.gz $(LOCAL)/lib/libgmp.so + tar xvf $< mv nettle-$(NETTLE_VERSION) nettle touch $@ @@ -291,24 +291,31 @@ nettle/Makefile: nettle.src.stamp ./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 nettle/libhogweed.so +$(LOCAL)/lib/libnettle.so: nettle/libnettle.so $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install -nettle-build: nettle/libnettle.so nettle/libhogweed.so +nettle-build: nettle/libnettle.so -nettle-install: $(LOCAL)/lib/libnettle.so $(LOCAL)/lib/libhogweed.so +nettle-install: $(LOCAL)/lib/libnettle.so #------------------------------------------------------------------------------# # Sequoia-ffi CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/$(APP_ABI) +sequoia.src.stamp: ../downloads/sequoia.tar.gz + mkdir -p sequoia + cd sequoia && tar xvf ../$< + touch $@ + sequoia-ffi-clean: rm -rf sequoia rm -rf sequoia.src.stamp @@ -364,48 +371,6 @@ sequoia-ffi-install: sequoia-deps-build $(LOCAL)/lib/libsequoia_openpgp_ffi.so # Local clone is in external/$project.git while # selected commit is archived in external/$project -define per_repo_targets -$(1).git.stamp: - git clone $(2) $(1).git - touch $(1).git.stamp - -$(1).git_update: $(1).git.stamp - cd $(1).git; git pull - touch $(1).git.stamp - -$(1).src.stamp: $(1).git.stamp - rm -rf $(1) - mkdir $(1) - (cd $(1).git; git archive --format=tar $(3)) | tar -C $(1) -x - touch $(1).src.stamp - -$(1)-src: $(1).src.stamp - -$(1)-clean: - rm -rf $(1) - rm -f $(1).src.stamp - -EXTERNAL_LOCAL_GITS += $(1).git.stamp -EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update -EXTERNAL_SRCS += $(1)-src -EXTERNAL_SRCS_CLEAN += $(1)-clean -endef - -define per_repo -$(call per_repo_targets,\ - $(1),\ - $(word 1,$(subst ?, ,$(2))),\ - $(word 2,$(subst ?, ,$(2)))) -endef - -$(foreach repo, $(EXTERNAL_GIT_REPOS), $(eval $(call per_repo,\ - $(word 1,$(subst |, ,$(repo))),\ - $(word 2,$(subst |, ,$(repo)))))) - -git_clones: $(EXTERNAL_LOCAL_GITS) - -git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) - #------------------------------------------------------------------------------# # clean diff --git a/android/external/common/Makefile b/android/external/common/Makefile deleted file mode 100644 index d405578..0000000 --- a/android/external/common/Makefile +++ /dev/null @@ -1,53 +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 - -all: download-iconv download-uuid download-sequoia-deps #build-etpan download sequoia - -download-iconv: ../libiconv-1.15.tar.gz - -download-uuid: ../ossp-uuid_1.6.2.orig.tar.gz - -download-sequoia-deps: ../openssl-$(OPENSSL_VERSION).tar.gz ../gmp-$(GMP_VERSION).tar.bz2 ../nettle-$(NETTLE_VERSION).tar.gz - -# Download source and patch it -../libiconv-1.15.tar.gz: - wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz -P ../ - -../ossp-uuid_1.6.2.orig.tar.gz: - wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz -P ../ - cd .. && md5sum -c ossp-uuid_1.6.2.orig.tar.gz.md5 - -../openssl-$(OPENSSL_VERSION).tar.gz: - wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz -P ../ - cd .. && md5sum -c openssl-$(OPENSSL_VERSION).tar.gz.md5 - -../gmp-$(GMP_VERSION).tar.bz2: - wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 -P ../ - cd .. && md5sum -c gmp-$(GMP_VERSION).tar.bz2.md5 - -../nettle-$(NETTLE_VERSION).tar.gz: - wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz -P ../ - cd .. && md5sum -c nettle-$(NETTLE_VERSION).tar.gz.md5 - - - -clean: - rm -rf ../libiconv-1.15.tar.gz - rm -rf ../ossp-uuid_1.6.2.orig.tar.gz - rm -rf ../openssl-$(OPENSSL_VERSION).tar.gz - rm -rf ../gmp-$(GMP_VERSION).tar.bz2 - rm -rf ../nettle-$(NETTLE_VERSION).tar.gz - -.PHONY: clean download-iconv download-uuid \ No newline at end of file diff --git a/android/external/downloads/Makefile b/android/external/downloads/Makefile new file mode 100644 index 0000000..91e3e3c --- /dev/null +++ b/android/external/downloads/Makefile @@ -0,0 +1,102 @@ +# 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 + +all: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia downloads.stamp + +downloads.stamp: + touch $@ + +download-iconv: libiconv-1.15.tar.gz + +download-uuid: ossp-uuid_1.6.2.orig.tar.gz + +download-sequoia-deps: openssl-$(OPENSSL_VERSION).tar.gz gmp-$(GMP_VERSION).tar.bz2 nettle-$(NETTLE_VERSION).tar.gz + +download-etpan: libetpan.git.stamp + +download-sequoia: sequoia.git.stamp + +# Download source and patch it +libiconv-1.15.tar.gz: + wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz + +ossp-uuid_1.6.2.orig.tar.gz: + wget http://http.debian.net/debian/pool/main/o/ossp-uuid/ossp-uuid_1.6.2.orig.tar.gz + md5sum -c ossp-uuid_1.6.2.orig.tar.gz.md5 + +openssl-$(OPENSSL_VERSION).tar.gz: + wget -nc https://www.openssl.org/source/openssl-$(OPENSSL_VERSION).tar.gz + md5sum -c openssl-$(OPENSSL_VERSION).tar.gz.md5 + +gmp-$(GMP_VERSION).tar.bz2: + wget -nc https://gmplib.org/download/gmp/gmp-$(GMP_VERSION).tar.bz2 + md5sum -c gmp-$(GMP_VERSION).tar.bz2.md5 + +nettle-$(NETTLE_VERSION).tar.gz: + wget -nc https://ftp.gnu.org/gnu/nettle/nettle-$(NETTLE_VERSION).tar.gz + md5sum -c nettle-$(NETTLE_VERSION).tar.gz.md5 + + +#------------------------------------------------------------------------------# +# Clone update and archive external projects GIT repos +# Local clone is in external/$project.git while +# selected commit is archived in external/$project + +define per_repo_targets +$(1).git.stamp: + git clone $(2) $(1).git + (cd $(1).git; git archive --format=tar $(3)) > $(1).tar.gz + touch $(1).git.stamp + +$(1).git_update: $(1).git.stamp + cd $(1).git; git pull + rm -rf $(1).tar.gz + (cd $(1).git; git archive --format=tar $(3)) > $(1).tar.gz + touch $(1).git.stamp + +$(1)-clean: + rm -rf $(1) + rm -f $(1).src.stamp + +EXTERNAL_LOCAL_GITS += $(1).git.stamp +EXTERNAL_LOCAL_GITS_UPDATE += $(1).git_update +EXTERNAL_SRCS += $(1)-src +EXTERNAL_SRCS_CLEAN += $(1)-clean +endef + +define per_repo +$(call per_repo_targets,\ + $(1),\ + $(word 1,$(subst ?, ,$(2))),\ + $(word 2,$(subst ?, ,$(2)))) +endef + +$(foreach repo, $(EXTERNAL_GIT_REPOS), $(eval $(call per_repo,\ + $(word 1,$(subst |, ,$(repo))),\ + $(word 2,$(subst |, ,$(repo)))))) + +git_clones: $(EXTERNAL_LOCAL_GITS) + +git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) + +clean: + rm -rf *.git + rm -rf *.stamp + rm -rf *.tar.gz + rm -rf *.tar.bz2 + +.PHONY: all clean download-iconv \ + download-uuid download-etpan \ + download-sequoia-deps download-sequoia \ No newline at end of file diff --git a/android/external/gmp-6.1.2.tar.bz2.md5 b/android/external/downloads/gmp-6.1.2.tar.bz2.md5 similarity index 100% rename from android/external/gmp-6.1.2.tar.bz2.md5 rename to android/external/downloads/gmp-6.1.2.tar.bz2.md5 diff --git a/android/external/nettle-3.4.1.tar.gz.md5 b/android/external/downloads/nettle-3.4.1.tar.gz.md5 similarity index 100% rename from android/external/nettle-3.4.1.tar.gz.md5 rename to android/external/downloads/nettle-3.4.1.tar.gz.md5 diff --git a/android/external/openssl-1.1.1b.tar.gz.md5 b/android/external/downloads/openssl-1.1.1b.tar.gz.md5 similarity index 100% rename from android/external/openssl-1.1.1b.tar.gz.md5 rename to android/external/downloads/openssl-1.1.1b.tar.gz.md5 diff --git a/android/external/ossp-uuid_1.6.2.orig.tar.gz.md5 b/android/external/downloads/ossp-uuid_1.6.2.orig.tar.gz.md5 similarity index 100% rename from android/external/ossp-uuid_1.6.2.orig.tar.gz.md5 rename to android/external/downloads/ossp-uuid_1.6.2.orig.tar.gz.md5 From 1a376391a4ce892785faa0e631411f7ca0060be4 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Sat, 9 Nov 2019 22:21:22 +0100 Subject: [PATCH 12/17] JNI-81 Chmod +x ndk-generators script --- android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh | 0 android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh mode change 100644 => 100755 android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh diff --git a/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh b/android/external/arm64-v8a/generate-standalone-ndk-toolchain.sh old mode 100644 new mode 100755 diff --git a/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh b/android/external/armeabi-v7a/generate-standalone-ndk-toolchain.sh old mode 100644 new mode 100755 From 646a28e3b644362fd371ab19133c420b17a74534 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Sat, 9 Nov 2019 23:11:39 +0100 Subject: [PATCH 13/17] JNI-81 Fix bad copypaste --- android/external/armeabi-v7a/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index beccf6e..36fd236 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -126,8 +126,8 @@ libiconv-install: $(LOCAL)/lib/libiconv.a #------------------------------------------------------------------------------# # libetpan libetpan.src.stamp: ../downloads/libetpan.tar.gz - mkdir -p sequoia - cd sequoia && tar xvf ../$< + mkdir -p libetpan + cd libetpan && tar xvf ../$< touch $@ libetpan/Makefile: libetpan.src.stamp | libiconv-install From 7210d4ae63cbe82fed4e5e1e60c5749f4c6c4b3e Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 11 Nov 2019 18:53:28 +0100 Subject: [PATCH 14/17] JNI-81 Make can build arm and arm64 concurrently --- .hgignore | 2 + android/external/Makefile | 6 +- android/external/arm64-v8a/Makefile | 6 +- android/external/armeabi-v7a/Makefile | 6 +- android/external/downloads/Makefile | 17 ++- ...-pEpJNIAdapter-android-pEpJNIAdapter~2.iml | 120 ------------------ 6 files changed, 26 insertions(+), 131 deletions(-) delete mode 100644 android/src-pEpJNIAdapter-android-pEpJNIAdapter~2.iml diff --git a/.hgignore b/.hgignore index fbfd9cb..2d31c0b 100644 --- a/.hgignore +++ b/.hgignore @@ -78,6 +78,8 @@ androidTests/gradlew.bat src/org.tar.gz src/local.conf +*.iml + syntax: regexp android/external/[^.]* diff --git a/android/external/Makefile b/android/external/Makefile index cbede80..c99ac77 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -21,10 +21,12 @@ endif .PHONY: all build clean clean-all -all: build +all: build-arm build-arm64 -build: downloads/downloads.stamp +build-arm: downloads/downloads.stamp $(MAKE) -C armeabi-v7a + +build-arm64: downloads/downloads.stamp $(MAKE) -C arm64-v8a clean: diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index 8d72d9a..4ae2960 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -22,9 +22,9 @@ build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpa #------------------------------------------------------------------------------# # Generate standalone toolchain -generate-ndk-toolchain: ndk-standalone-toolchain/AndroidVersion.txt +generate-ndk-toolchain: ndk-standalone-toolchain/bin/clang -ndk-standalone-toolchain/AndroidVersion.txt: +ndk-standalone-toolchain/bin/clang: bash generate-standalone-ndk-toolchain.sh #------------------------------------------------------------------------------# @@ -307,7 +307,7 @@ nettle-install: $(LOCAL)/lib/libnettle.so #------------------------------------------------------------------------------# # Sequoia-ffi -CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/build/$(APP_ABI) +CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/ sequoia.src.stamp: ../downloads/sequoia.tar.gz mkdir -p sequoia diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 36fd236..db0ad25 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -23,9 +23,9 @@ build: generate-ndk-toolchain showsetup uuid-install sequoia-ffi-install libetpa #------------------------------------------------------------------------------# # Generate standalone toolchain -generate-ndk-toolchain: ndk-standalone-toolchain/AndroidVersion.txt +generate-ndk-toolchain: ndk-standalone-toolchain/bin/clang -ndk-standalone-toolchain/AndroidVersion.txt: +ndk-standalone-toolchain/bin/clang: bash generate-standalone-ndk-toolchain.sh #------------------------------------------------------------------------------# @@ -309,7 +309,7 @@ nettle-install: $(LOCAL)/lib/libnettle.so #------------------------------------------------------------------------------# # Sequoia-ffi -CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build/$(APP_ABI) +CARGO_TARGET_DIR=$(EXTERNAL_ROOT)/../build sequoia.src.stamp: ../downloads/sequoia.tar.gz mkdir -p sequoia diff --git a/android/external/downloads/Makefile b/android/external/downloads/Makefile index 91e3e3c..ff8af1e 100644 --- a/android/external/downloads/Makefile +++ b/android/external/downloads/Makefile @@ -13,16 +13,24 @@ include ../Makefile.conf #------------------------------------------------------------------------------# # Build parameters -all: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia downloads.stamp +all: downloads.stamp -downloads.stamp: +downloads.stamp: download-iconv download-uuid download-sequoia-deps download-etpan download-sequoia \ + generate-ndk-arm generate-ndk-arm64 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 + download-iconv: libiconv-1.15.tar.gz download-uuid: ossp-uuid_1.6.2.orig.tar.gz -download-sequoia-deps: openssl-$(OPENSSL_VERSION).tar.gz gmp-$(GMP_VERSION).tar.bz2 nettle-$(NETTLE_VERSION).tar.gz +download-sequoia-deps: openssl-$(OPENSSL_VERSION).tar.gz gmp-$(GMP_VERSION).tar.bz2 \ + nettle-$(NETTLE_VERSION).tar.gz download-etpan: libetpan.git.stamp @@ -91,11 +99,14 @@ git_clones: $(EXTERNAL_LOCAL_GITS) git_update: $(EXTERNAL_LOCAL_GITS_UPDATE) +#------------------------------------------------------------------------------# clean: rm -rf *.git rm -rf *.stamp rm -rf *.tar.gz rm -rf *.tar.bz2 + rm -rf ../arm64-v8a/ndk-standalone-toolchain + rm -rf ../armeabi-v7a/ndk-standalone-toolchain .PHONY: all clean download-iconv \ download-uuid download-etpan \ diff --git a/android/src-pEpJNIAdapter-android-pEpJNIAdapter~2.iml b/android/src-pEpJNIAdapter-android-pEpJNIAdapter~2.iml deleted file mode 100644 index 8e36636..0000000 --- a/android/src-pEpJNIAdapter-android-pEpJNIAdapter~2.iml +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From f8d6c883d87f9866f40ab46712be45627c416dfc Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Mon, 11 Nov 2019 23:29:49 +0100 Subject: [PATCH 15/17] JNI-81 Add x86 and x64_86 support --- android/build.gradle | 31 +- android/external/Makefile | 12 +- android/external/downloads/Makefile | 8 +- android/external/x86/Makefile | 393 ++++++++++++++++++ .../x86/generate-standalone-ndk-toolchain.sh | 21 + android/external/x86_64/Makefile | 393 ++++++++++++++++++ .../generate-standalone-ndk-toolchain.sh | 21 + src/jniutils.cc | 2 +- 8 files changed, 863 insertions(+), 18 deletions(-) create mode 100644 android/external/x86/Makefile create mode 100755 android/external/x86/generate-standalone-ndk-toolchain.sh create mode 100644 android/external/x86_64/Makefile create mode 100755 android/external/x86_64/generate-standalone-ndk-toolchain.sh diff --git a/android/build.gradle b/android/build.gradle index fe3697b..23a8daa 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,7 +2,7 @@ def pEpEngineSrc = hasProperty('pEpEngineSrc') ? pEpEngineSrc : "../../pEpEngine" def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true" -def pEpAppPackageName = hasProperty('pEpAppPackageName') ? pEpAppPackageName : "pep.android.k9" +def threadsToUse = hasProperty('threadsToUse') ? buildAutomatic : 2 def libetpanAndroid = file('external') @@ -14,7 +14,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.5.2' } } @@ -80,6 +80,7 @@ android { jniDebuggable true externalNativeBuild { ndkBuild { + arguments "-j${threadsToUse}" // arguments '-B', 'NDK_DEBUG=1', 'NDEBUG=null', 'NDK_LOG=1' } } @@ -100,46 +101,46 @@ android { // call source generation makefile target task genSources(type:Exec, dependsOn: 'genpEpEngineAsn1Sources') { workingDir '../src' - commandLine 'make', 'pEp.jar' + commandLine 'make', "-j${threadsToUse}", 'pEp.jar' } task genpEpEngineSyncSources(type:Exec) { - workingDir '../../pEpEngine' - commandLine 'make', '-C', 'sync' + workingDir "${pEpEngineSrc}" + commandLine 'make', "-j${threadsToUse}", '-C', 'sync' } task genpEpEngineAsn1Sources(type:Exec, dependsOn: 'genpEpEngineSyncSources') { - workingDir '../../pEpEngine' - commandLine 'make', '-C', 'asn.1' + workingDir "${pEpEngineSrc}" + commandLine 'make', "-j${threadsToUse}", '-C', 'asn.1' } task cleanGenSource(type:Exec) { workingDir '../src' - commandLine 'make', 'clean' + commandLine 'make', "-j${threadsToUse}", 'clean' } // call external build (GnuPG, GPGME, etc) task buildExternal(type:Exec, dependsOn: 'genSources') { workingDir 'external' - commandLine 'make', 'build', 'PEP_PACKAGE_NAME='+pEpAppPackageName + commandLine 'make', "-j${threadsToUse}", 'build' } task externalAssets(type:Exec) { workingDir 'external' - commandLine 'make', 'assets', 'PEP_PACKAGE_NAME='+pEpAppPackageName + commandLine 'make', "-j${threadsToUse}", 'assets' } task cleanExternal(type:Exec) { workingDir 'external' - commandLine 'make', 'clean', 'PEP_PACKAGE_NAME='+pEpAppPackageName + commandLine 'make', "-j${threadsToUse}", 'clean' } -/* task cleanExternalAssets(type:Exec) { + task cleanExternalAssets(type:Exec) { workingDir 'external' - commandLine 'make', 'clean-assets', 'PEP_PACKAGE_NAME='+pEpAppPackageName + commandLine 'make', 'clean-assets' } -*/ + // unzip some of the dependencies task unzipDeps(type: Copy, dependsOn: 'buildExternal') { from zipTree(libEtPanZip) @@ -149,7 +150,7 @@ android { // builds pEpEnginge's system.db task buildpEpEngineSystemDB(type:Exec) { workingDir pEpEngineDB - commandLine 'make', 'system.db' + commandLine 'make', "-j${threadsToUse}", 'system.db' } // copy pEpEnginge's system.db to asset diff --git a/android/external/Makefile b/android/external/Makefile index c99ac77..008296e 100644 --- a/android/external/Makefile +++ b/android/external/Makefile @@ -21,7 +21,7 @@ endif .PHONY: all build clean clean-all -all: build-arm build-arm64 +all: build-arm build-arm64 build-x86 build-x86_64 build-arm: downloads/downloads.stamp $(MAKE) -C armeabi-v7a @@ -29,14 +29,24 @@ build-arm: downloads/downloads.stamp build-arm64: downloads/downloads.stamp $(MAKE) -C arm64-v8a +build-x86: downloads/downloads.stamp + $(MAKE) -C x86 + +build-x86_64: downloads/downloads.stamp + $(MAKE) -C x86_64 + clean: $(MAKE) -C armeabi-v7a clean $(MAKE) -C arm64-v8a clean + $(MAKE) -C x86 clean + $(MAKE) -C x86_64 clean clean-all: $(MAKE) -C downloads clean $(MAKE) -C armeabi-v7a clean-all $(MAKE) -C arm64-v8a clean-all + $(MAKE) -C x86 clean-all + $(MAKE) -C x86_64 clean-all downloads/downloads.stamp: $(MAKE) -C downloads diff --git a/android/external/downloads/Makefile b/android/external/downloads/Makefile index ff8af1e..957f01f 100644 --- a/android/external/downloads/Makefile +++ b/android/external/downloads/Makefile @@ -16,7 +16,7 @@ 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-arm generate-ndk-arm64 generate-ndk-x86 generate-ndk-x86_64 touch $@ generate-ndk-arm64: @@ -25,6 +25,12 @@ generate-ndk-arm64: 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 diff --git a/android/external/x86/Makefile b/android/external/x86/Makefile new file mode 100644 index 0000000..0221506 --- /dev/null +++ b/android/external/x86/Makefile @@ -0,0 +1,393 @@ +# 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 +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 + +#------------------------------------------------------------------------------# +# 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=$(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 + +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 xvfz $< + 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 xvfz ../$< + touch $@ + +libetpan/Makefile: libetpan.src.stamp | libiconv-install + cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh + mv libetpan/build-android/libetpan-android-1.zip ../ + touch $@ + +libetpan-build: libetpan/Makefile + +libetpan-cleanzip: + rm -f libetpan/build-android/libetpan-android-1.zip + +#------------------------------------------------------------------------------# +# 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 && \ + ../../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/Makefile + $(MAKE) -C nettle + +$(LOCAL)/lib/libnettle.so: nettle/libnettle.so + $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install + +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 ../$< + 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)" \ + 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-cleanzip + +clean-all: clean + rm -rf *.git + rm -rf *.stamp +#------------------------------------------------------------------------------# + +.PHONY = clean clean-install clean-assets libetpan-cleanzip\ + 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 diff --git a/android/external/x86/generate-standalone-ndk-toolchain.sh b/android/external/x86/generate-standalone-ndk-toolchain.sh new file mode 100755 index 0000000..1bc6783 --- /dev/null +++ b/android/external/x86/generate-standalone-ndk-toolchain.sh @@ -0,0 +1,21 @@ +#!/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 new file mode 100644 index 0000000..29cd0a6 --- /dev/null +++ b/android/external/x86_64/Makefile @@ -0,0 +1,393 @@ +# Copyright 2019, pEp Foundation +# This file is part of pEpJNIAdapter for Android - x86_64 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_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 + +#------------------------------------------------------------------------------# +# 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 = x86_64-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=$(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)$(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 + +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_64_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 xvfz $< + 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 xvfz ../$< + touch $@ + +libetpan/Makefile: libetpan.src.stamp | libiconv-install + cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh + mv libetpan/build-android/libetpan-android-1.zip ../ + touch $@ + +libetpan-build: libetpan/Makefile + +libetpan-cleanzip: + rm -f libetpan/build-android/libetpan-android-1.zip + +#------------------------------------------------------------------------------# +# 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 && \ + ../../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/Makefile + $(MAKE) -C nettle + +$(LOCAL)/lib/libnettle.so: nettle/libnettle.so + $(MAKE) -C nettle DESTDIR=$(DESTDIR) prefix=$(prefix) install + +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 ../$< + touch $@ + +sequoia-ffi-clean: + rm -rf sequoia + rm -rf sequoia.src.stamp + +$(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)" \ + 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 x86_64-linux-android -p sequoia-openpgp-ffi --release + + +$(LOCAL)/lib/libsequoia_openpgp_ffi.so: $(CARGO_TARGET_DIR)/x86_64-linux-android/release/libsequoia_openpgp_ffi.so + cp $(CARGO_TARGET_DIR)/x86_64-linux-android/release/libsequoia_openpgp_ffi.* $(LOCAL)/lib/ + cp -r sequoia/openpgp-ffi/include/* $(LOCAL)/include + + +sequoia-ffi-build: $(CARGO_TARGET_DIR)/x86_64-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-cleanzip + +clean-all: clean + rm -rf *.git + rm -rf *.stamp +#------------------------------------------------------------------------------# + +.PHONY = clean clean-install clean-assets libetpan-cleanzip\ + 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 diff --git a/android/external/x86_64/generate-standalone-ndk-toolchain.sh b/android/external/x86_64/generate-standalone-ndk-toolchain.sh new file mode 100755 index 0000000..0a6c857 --- /dev/null +++ b/android/external/x86_64/generate-standalone-ndk-toolchain.sh @@ -0,0 +1,21 @@ +#!/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/src/jniutils.cc b/src/jniutils.cc index 87c7a24..f7a4e10 100644 --- a/src/jniutils.cc +++ b/src/jniutils.cc @@ -7,7 +7,7 @@ #include #include -#ifndef __aarch64__ +#ifndef __LP64__ #include #define time_t time64_t #define timegm timegm64 From a061c3fcf5d7b104af1e6980d7748b1eab31aabf Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 12 Nov 2019 18:37:17 +0100 Subject: [PATCH 16/17] JNI-81: Update libetpan build to use output dir and avoid unziping --- android/build.gradle | 17 ++--------------- android/external/arm64-v8a/Makefile | 3 ++- android/external/armeabi-v7a/Makefile | 3 ++- android/external/x86/Makefile | 3 ++- android/external/x86_64/Makefile | 3 ++- android/jni/Android.mk | 18 +++++++++--------- 6 files changed, 19 insertions(+), 28 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 23a8daa..a926e8c 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,8 +4,6 @@ def pEpEngineSrc = hasProperty('pEpEngineSrc') ? pEpEngineSrc : "../../pEpEngine def buildAutomatic = hasProperty('buildAutomatic') ? buildAutomatic : "true" def threadsToUse = hasProperty('threadsToUse') ? buildAutomatic : 2 -def libetpanAndroid = file('external') - def pEpEngineDB = new File(new File(pEpEngineSrc), 'db') buildscript { @@ -80,7 +78,7 @@ android { jniDebuggable true externalNativeBuild { ndkBuild { - arguments "-j${threadsToUse}" + arguments "-j${threadsToUse}", 'NDK_LOG=1' // arguments '-B', 'NDK_DEBUG=1', 'NDEBUG=null', 'NDK_LOG=1' } } @@ -93,11 +91,6 @@ android { } } - ext { - //FIXME> improve that build to be able to build without the need of unzip deps // Get rid of unziping - libEtPanZip = new File(libetpanAndroid, 'libetpan-android-1.zip') - } - // call source generation makefile target task genSources(type:Exec, dependsOn: 'genpEpEngineAsn1Sources') { workingDir '../src' @@ -141,12 +134,6 @@ android { commandLine 'make', 'clean-assets' } - // unzip some of the dependencies - task unzipDeps(type: Copy, dependsOn: 'buildExternal') { - from zipTree(libEtPanZip) - into file("${buildDir}") - } - // builds pEpEnginge's system.db task buildpEpEngineSystemDB(type:Exec) { workingDir pEpEngineDB @@ -160,7 +147,7 @@ android { } if(buildAutomatic == "true") { - buildpEpEngineSystemDB.dependsOn(unzipDeps) + buildpEpEngineSystemDB.dependsOn(buildExternal) } // This ensures that assets are populated before collecting resources. diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index 4ae2960..87162ec 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -132,7 +132,8 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh - mv libetpan/build-android/libetpan-android-1.zip ../ + cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/ + cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/ touch $@ libetpan-build: libetpan/Makefile diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index db0ad25..478e693 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -132,7 +132,8 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh - mv libetpan/build-android/libetpan-android-1.zip ../ + cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/ + cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/ touch $@ libetpan-build: libetpan/Makefile diff --git a/android/external/x86/Makefile b/android/external/x86/Makefile index 0221506..e412535 100644 --- a/android/external/x86/Makefile +++ b/android/external/x86/Makefile @@ -132,7 +132,8 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh - mv libetpan/build-android/libetpan-android-1.zip ../ + cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/ + cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/ touch $@ libetpan-build: libetpan/Makefile diff --git a/android/external/x86_64/Makefile b/android/external/x86_64/Makefile index 29cd0a6..dc512e5 100644 --- a/android/external/x86_64/Makefile +++ b/android/external/x86_64/Makefile @@ -132,7 +132,8 @@ libetpan.src.stamp: ../downloads/libetpan.tar.gz libetpan/Makefile: libetpan.src.stamp | libiconv-install cd libetpan/build-android; ICONV_PREFIX=$(LOCAL) bash ./build.sh - mv libetpan/build-android/libetpan-android-1.zip ../ + cp -r libetpan/build-android/libetpan-android-1/$(APP_ABI)/lib/* $(LOCAL)/lib/ + cp -r libetpan/build-android/libetpan-android-1/include/* $(LOCAL)/include/ touch $@ libetpan-build: libetpan/Makefile diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 500932e..4a800e7 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -2,38 +2,38 @@ LOCAL_PATH:= $(call my-dir) SRC_PATH := $(LOCAL_PATH)/../../../ ENGINE_PATH := $(LOCAL_PATH)/../../../pEpEngine LIB_PEP_ADAPTER_PATH:=$(SRC_PATH)/libpEpAdapter -GPGBUILD:= $(LOCAL_PATH)/../external/output/$(TARGET_ARCH_ABI) +GPGBUILD:= $(LOCAL_PATH)/../external/output/ include $(CLEAR_VARS) LOCAL_MODULE := libiconv -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libiconv.a +LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libiconv.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libsequoia_openpgp_ffi -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libsequoia_openpgp_ffi.a +LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libsequoia_openpgp_ffi.a include $(PREBUILT_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libhogweed -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libhogweed.so +LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libhogweed.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libgmp -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libgmp.so +LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libgmp.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libnettle -LOCAL_SRC_FILES := $(GPGBUILD)/lib/libnettle.so +LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libnettle.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libetpan -LOCAL_SRC_FILES := $(LOCAL_PATH)/../build/libetpan-android-1/libs/$(TARGET_ARCH_ABI)/libetpan.a -LOCAL_EXPORT_C_INCLUDES += $(LOCAL_PATH)/../build/libetpan-android-1/include +LOCAL_SRC_FILES := $(GPGBUILD)/$(TARGET_ARCH_ABI)/lib/libetpan.a +LOCAL_EXPORT_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include LOCAL_EXPORT_LDLIBS := -lz include $(PREBUILT_STATIC_LIBRARY) @@ -55,7 +55,7 @@ LOCAL_SRC_FILES := \ ../../src/identity_api.cc \ ../../src/jniutils.cc -LOCAL_C_INCLUDES += $(GPGBUILD)/include +LOCAL_C_INCLUDES += $(GPGBUILD)/$(TARGET_ARCH_ABI)/include LOCAL_C_INCLUDES += $(LIB_PEP_ADAPTER_PATH)/build-android/include $(SRC_PATH)/libpEpAdapter LOCAL_LDFLAGS = -Wl,--allow-multiple-definition From 6786a9b0aaad60ba08d61c20166500e2b07c84c5 Mon Sep 17 00:00:00 2001 From: Hussein Kasem Date: Tue, 12 Nov 2019 20:19:58 +0100 Subject: [PATCH 17/17] JNI-81: Add missing libetpan clean --- android/external/arm64-v8a/Makefile | 8 ++++---- android/external/armeabi-v7a/Makefile | 8 ++++---- android/external/downloads/Makefile | 2 ++ android/external/x86/Makefile | 8 ++++---- android/external/x86_64/Makefile | 8 ++++---- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/android/external/arm64-v8a/Makefile b/android/external/arm64-v8a/Makefile index 87162ec..f52473c 100644 --- a/android/external/arm64-v8a/Makefile +++ b/android/external/arm64-v8a/Makefile @@ -138,8 +138,8 @@ libetpan/Makefile: libetpan.src.stamp | libiconv-install libetpan-build: libetpan/Makefile -libetpan-cleanzip: - rm -f libetpan/build-android/libetpan-android-1.zip +libetpan-clean: + rm -rf libetpan #------------------------------------------------------------------------------# # uuid @@ -374,14 +374,14 @@ clean-assets: clean-install: rm -rf $(LOCAL) -clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip +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-cleanzip\ +.PHONY = clean clean-install clean-assets libetpan-clean\ libiconv-build libiconv-install \ libetpan-build \ uuid-build uuid-prebuild uuid-install \ diff --git a/android/external/armeabi-v7a/Makefile b/android/external/armeabi-v7a/Makefile index 478e693..f87d5d5 100644 --- a/android/external/armeabi-v7a/Makefile +++ b/android/external/armeabi-v7a/Makefile @@ -138,8 +138,8 @@ libetpan/Makefile: libetpan.src.stamp | libiconv-install libetpan-build: libetpan/Makefile -libetpan-cleanzip: - rm -f libetpan/build-android/libetpan-android-1.zip +libetpan-clean: + rm -rf libetpan #------------------------------------------------------------------------------# # uuid @@ -381,14 +381,14 @@ clean-assets: clean-install: rm -rf $(LOCAL) -clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip +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-cleanzip\ +.PHONY = clean clean-install clean-assets libetpan-clean \ libiconv-build libiconv-install \ libetpan-build \ uuid-build uuid-prebuild uuid-install \ diff --git a/android/external/downloads/Makefile b/android/external/downloads/Makefile index 957f01f..38218b0 100644 --- a/android/external/downloads/Makefile +++ b/android/external/downloads/Makefile @@ -113,6 +113,8 @@ clean: rm -rf *.tar.bz2 rm -rf ../arm64-v8a/ndk-standalone-toolchain rm -rf ../armeabi-v7a/ndk-standalone-toolchain + rm -rf ../x86/ndk-standalone-toolchain + rm -rf ../x86_64/ndk-standalone-toolchain .PHONY: all clean download-iconv \ download-uuid download-etpan \ diff --git a/android/external/x86/Makefile b/android/external/x86/Makefile index e412535..44fbcc8 100644 --- a/android/external/x86/Makefile +++ b/android/external/x86/Makefile @@ -138,8 +138,8 @@ libetpan/Makefile: libetpan.src.stamp | libiconv-install libetpan-build: libetpan/Makefile -libetpan-cleanzip: - rm -f libetpan/build-android/libetpan-android-1.zip +libetpan-clean: + rm -rf libetpan #------------------------------------------------------------------------------# # uuid @@ -373,14 +373,14 @@ clean-assets: clean-install: rm -rf $(LOCAL) -clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip +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-cleanzip\ +.PHONY = clean clean-install clean-assets libetpan-clean \ libiconv-build libiconv-install \ libetpan-build \ uuid-build uuid-prebuild uuid-install \ diff --git a/android/external/x86_64/Makefile b/android/external/x86_64/Makefile index dc512e5..0118575 100644 --- a/android/external/x86_64/Makefile +++ b/android/external/x86_64/Makefile @@ -138,8 +138,8 @@ libetpan/Makefile: libetpan.src.stamp | libiconv-install libetpan-build: libetpan/Makefile -libetpan-cleanzip: - rm -f libetpan/build-android/libetpan-android-1.zip +libetpan-clean: + rm -rf libetpan #------------------------------------------------------------------------------# # uuid @@ -373,14 +373,14 @@ clean-assets: clean-install: rm -rf $(LOCAL) -clean: $(EXTERNAL_SRCS_CLEAN) clean-assets clean-install libetpan-cleanzip +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-cleanzip\ +.PHONY = clean clean-install clean-assets libetpan-clean \ libiconv-build libiconv-install \ libetpan-build \ uuid-build uuid-prebuild uuid-install \