From bee5054077e8e178cb5dfe1b4ecd1b20d67ee93f Mon Sep 17 00:00:00 2001
From: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Date: Wed, 7 Dec 2022 20:53:18 +0300
Subject: build/roms: Make coreboot crossgcc usable for payloads and modules

Add the coreboot-built cross-architecture toolchains to the PATH so that
modules and payloads can use them. When building for a foreign-arch
board, also export CROSS_COMPILE pointing to the appropriate prefix.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
---
 resources/scripts/build/boot/roms_helper | 14 ++++++++++++++
 resources/scripts/build/payload/u-boot   |  8 --------
 2 files changed, 14 insertions(+), 8 deletions(-)

(limited to 'resources/scripts/build')

diff --git a/resources/scripts/build/boot/roms_helper b/resources/scripts/build/boot/roms_helper
index ff0681f3..abec7402 100755
--- a/resources/scripts/build/boot/roms_helper
+++ b/resources/scripts/build/boot/roms_helper
@@ -184,12 +184,20 @@ if [ "${arch}" = "x86_32" ] || [ "${arch}" = "x86_64" ]; then
 				# 32-bit ROM images, so we only need to worry about i386-elf
 		)
 	fi
+	case "$(uname -m)" in
+		x86*|i*86|amd64) : ;;
+		*) export CROSS_COMPILE=i386-elf- ;;
+	esac
 elif [ "${arch}" = "ARMv7" ]; then
 	(
 		cat version > "${cbdir}/.coreboot-version"
 		cd "${cbdir}"
 		make crossgcc-arm CPUS=$(nproc) # This is for armv7, doesn't apply to aarch64
 	)
+	case "$(uname -m)" in
+		arm|arm32|armv6*|armv7*) : ;;
+		*) export CROSS_COMPILE=arm-eabi- ;;
+	esac
 elif [ "${arch}" = "AArch64" ]; then
 	(
 		cat version > "${cbdir}/.coreboot-version"
@@ -197,8 +205,14 @@ elif [ "${arch}" = "AArch64" ]; then
 		# aarch64 needs armv7 toolchain for arm-trusted-firmware
 		make crossgcc-arm crossgcc-aarch64 CPUS=$(nproc)
 	)
+	case "$(uname -m)" in
+		arm64|aarch64) : ;;
+		*) export CROSS_COMPILE=aarch64-elf- ;;
+	esac
 fi
 
+export PATH="$(pwd)/${cbdir}/util/crossgcc/xgcc/bin:$PATH"
+
 if [ ! -f "${cbfstool}" ]; then
 	./build module cbutils ${cbtree}
 fi
diff --git a/resources/scripts/build/payload/u-boot b/resources/scripts/build/payload/u-boot
index 6c94a441..3ead3a6c 100755
--- a/resources/scripts/build/payload/u-boot
+++ b/resources/scripts/build/payload/u-boot
@@ -94,14 +94,6 @@ for board in "$@"; do
 		continue
 	fi
 
-	if [ "${arch}" = "x86_32" ] || [ "${arch}" = "x86_64" ]; then
-		export CROSS_COMPILE=x86_64-linux-
-	elif [ "${arch}" = "ARMv7" ]; then
-		export CROSS_COMPILE=arm-linux-gnueabi-
-	elif [ "${arch}" = "AArch64" ]; then
-		export CROSS_COMPILE=aarch64-linux-gnu-
-	fi
-
 	for config in "${board_dir}/config"/*; do
 		if [ ! -f "${config}" ]; then
 			printf "%s: Target %s has no configs to build for. Skipping build.\n" \
-- 
cgit v1.2.1