From 92582b57dd4560ef0c3433fac1d993ebb9d8c7d3 Mon Sep 17 00:00:00 2001
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 14 Mar 2018 09:49:29 +0100
Subject: [PATCH] Support legacy compiler

Adds support for legacy compiler
gcc-linaro-4.9-2015.02-3-x86_64_arm-linux-gnueabihf

To compile using this compiler instead on ARMv7 systems supply
COMPILE_LEGACY=y to make.

Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
---
 br-ext/configs/toolchain-aarch32-legacy |  9 +++++++++
 common.mk                               | 16 +++++++++++++++-
 toolchain.mk                            | 12 +++++++++++-
 3 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 br-ext/configs/toolchain-aarch32-legacy

diff --git a/br-ext/configs/toolchain-aarch32-legacy b/br-ext/configs/toolchain-aarch32-legacy
new file mode 100644
index 0000000..fdc1496
--- /dev/null
+++ b/br-ext/configs/toolchain-aarch32-legacy
@@ -0,0 +1,9 @@
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y
+BR2_TOOLCHAIN_EXTERNAL_PATH="%TOP_DIR%/toolchains/aarch32-legacy"
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX="arm-linux-gnueabihf"
+BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y
+BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17=y
+BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y
+BR2_TOOLCHAIN_EXTERNAL_CXX=y
+
diff --git a/common.mk b/common.mk
index 812bbe7..3e5dc54 100644
--- a/common.mk
+++ b/common.mk
@@ -109,10 +109,19 @@ endif
 ################################################################################
 # set the compiler when COMPILE_xxx are defined
 ################################################################################
+
+
+ifeq ($(COMPILE_LEGACY),)
 CROSS_COMPILE_NS_USER   ?= "$(CCACHE)$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)"
 CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH$(COMPILE_NS_KERNEL)_CROSS_COMPILE)"
 CROSS_COMPILE_S_USER    ?= "$(CCACHE)$(AARCH$(COMPILE_S_USER)_CROSS_COMPILE)"
 CROSS_COMPILE_S_KERNEL  ?= "$(CCACHE)$(AARCH$(COMPILE_S_KERNEL)_CROSS_COMPILE)"
+else
+CROSS_COMPILE_NS_USER   ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)"
+CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_NS_KERNEL)_CROSS_COMPILE)"
+CROSS_COMPILE_S_USER    ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_S_USER)_CROSS_COMPILE)"
+CROSS_COMPILE_S_KERNEL  ?= "$(CCACHE)$(LEGACY_AARCH$(COMPILE_S_KERNEL)_CROSS_COMPILE)"
+endif
 
 ifeq ($(COMPILE_S_USER),32)
 OPTEE_OS_TA_DEV_KIT_DIR	?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm32
@@ -176,6 +185,11 @@ busybox-cleaner-common:
 # Build root
 ################################################################################
 BUILDROOT_ARCH=aarch$(COMPILE_NS_USER)
+ifeq ($(COMPILE_LEGACY),)
+BUILDROOT_TOOLCHAIN=toolchain-aarch$(COMPILE_NS_USER)
+else
+BUILDROOT_TOOLCHAIN=toolchain-aarch$(COMPILE_NS_USER)-legacy
+endif
 BUILDROOT_GETTY_PORT ?= \
 	$(if $(CFG_NW_CONSOLE_UART),ttyAMA$(CFG_NW_CONSOLE_UART),ttyAMA0)
 .PHONY: buildroot
@@ -213,7 +227,7 @@ endif
 		--top-dir "$(ROOT)" \
 		--br-defconfig build/br-ext/configs/optee_$(BUILDROOT_ARCH) \
 		--br-defconfig build/br-ext/configs/optee_generic \
-		--br-defconfig build/br-ext/configs/toolchain-$(BUILDROOT_ARCH)\
+		--br-defconfig build/br-ext/configs/$(BUILDROOT_TOOLCHAIN) \
 		--br-defconfig out-br/extra.conf \
 		--make-cmd $(MAKE))
 	@$(MAKE) -C ../out-br all
diff --git a/toolchain.mk b/toolchain.mk
index 331b8b2..bd7abcf 100644
--- a/toolchain.mk
+++ b/toolchain.mk
@@ -21,6 +21,12 @@ LEGACY_AARCH64_CROSS_COMPILE    ?= $(LEGACY_AARCH64_PATH)/bin/aarch64-linux-gnu-
 LEGACY_AARCH64_GCC_VERSION      ?= gcc-linaro-aarch64-linux-gnu-4.9-2014.08_linux
 LEGACY_SRC_AARCH64_GCC          ?= https://releases.linaro.org/archive/14.08/components/toolchain/binaries/${LEGACY_AARCH64_GCC_VERSION}.tar.xz
 
+LEGACY_AARCH32_PATH             ?= $(TOOLCHAIN_ROOT)/aarch32-legacy
+LEGACY_AARCH32_CROSS_COMPILE    ?= $(LEGACY_AARCH32_PATH)/bin/arm-linux-gnueabihf-
+LEGACY_AARCH32_GCC_VERSION      ?= gcc-linaro-4.9-2015.02-3-x86_64_arm-linux-gnueabihf
+LEGACY_SRC_AARCH32_GCC          ?= https://releases.linaro.org/archive/15.02/components/toolchain/binaries/arm-linux-gnueabihf/${LEGACY_AARCH32_GCC_VERSION}.tar.xz
+
+
 # Download toolchain macro for saving some repetition
 # $(1) is $AARCH.._PATH		: i.e., path to the destination
 # $(2) is $SRC_AARCH.._GCC	: is the downloaded tar.gz file
@@ -35,7 +41,7 @@ define dltc
 endef
 
 .PHONY: toolchains
-toolchains: aarch32 aarch64 aarch64-legacy
+toolchains: aarch32 aarch64 aarch64-legacy aarch32-legacy
 
 .PHONY: aarch32
 aarch32:
@@ -49,3 +55,7 @@ aarch64:
 aarch64-legacy:
 	$(call dltc,$(LEGACY_AARCH64_PATH),$(LEGACY_SRC_AARCH64_GCC),$(LEGACY_AARCH64_GCC_VERSION))
 
+.PHONY: aarch32-legacy
+aarch32-legacy:
+	$(call dltc,$(LEGACY_AARCH32_PATH),$(LEGACY_SRC_AARCH32_GCC),$(LEGACY_AARCH32_GCC_VERSION))
+
-- 
GitLab