[coreboot] [PATCH] [v3] Let the user chose a toolchain explicitly

Philip Schulz philip.s.schulz at googlemail.com
Wed Jul 30 21:58:26 CEST 2008


Hi,

 I don't know if this is the right way, but here's a diff to xcompile
that lets the user pick a toolchain by setting the $CROSS environment
variable. Yes, the idea is shamelessly stolen from SLOF ;-) I found
this usefuly as the host compiler on my system won't produce a working
binary whereas GCC 4.3.1 and binutils 2.18 compiled from the GNU
tarballs work.

Regards,

Philip

---

Make xcompile less smart and allow user to pick a toolchain by setting $CROSS

Signed-off-by: Philip Schulz <philip.s.schulz at googlemail.com>

diff -r 9bfb3ac80f66 util/xcompile/xcompile
--- a/util/xcompile/xcompile	Tue Jul 29 20:42:48 2008 +0200
+++ b/util/xcompile/xcompile	Wed Jul 30 21:32:26 2008 +0200
@@ -53,54 +53,69 @@
 	exit 1
 }

-case  "$ARCH" in
-"x86_64")
-	echo "CC_x86 := gcc -m32"
-	CC="gcc -m32"
+if [ -n "${CROSS:+1}" ] ; then
+	# If $CROSS is set, assume the user knows what he/she is doing

-	searchgnu ar >/dev/null && echo "AR_x86 := $(searchgnu ar)"
-	searchgnu as >/dev/null && echo "AS_x86 := $(searchgnu as) --32"
-	searchgnu ld >/dev/null && echo "LD_x86 := $(searchgnu ld) -b
elf32-i386 -melf_i386"
-	searchgnu nm >/dev/null && echo "NM_x86 := $(searchgnu nm)"
-	searchgnu objcopy >/dev/null && echo "OBJCOPY_x86 := $(searchgnu objcopy)"
-	;;
-"x86")
-	if [ "$OS" != "Darwin" ]; then
-		echo "CC_x86 := gcc"
-		CC="gcc"
+	CC="${CROSS}gcc"
+	echo "CC_${ARCH} := ${CROSS}gcc"
+	echo "AR_${ARCH} := ${CROSS}ar"
+	echo "AS_${ARCH} := ${CROSS}as"
+	echo "LD_${ARCH} := ${CROSS}ld"
+	echo "NM_${ARCH} := ${CROSS}nm"
+	echo "OBJCOPY_${ARCH} := ${CROSS}objcopy"
+else
+	# $CROSS is not set, so try to be smart and figure out the right
+	# settings automatically
+
+	case  "$ARCH" in
+	"x86_64")
+		echo "CC_x86 := gcc -m32"
+		CC="gcc -m32"

 		searchgnu ar >/dev/null && echo "AR_x86 := $(searchgnu ar)"
-		searchgnu as >/dev/null && echo "AS_x86 := $(searchgnu as)"
-		searchgnu ld >/dev/null && echo "LD_x86 := $(searchgnu ld)"
+		searchgnu as >/dev/null && echo "AS_x86 := $(searchgnu as) --32"
+		searchgnu ld >/dev/null && echo "LD_x86 := $(searchgnu ld) -b
elf32-i386 -melf_i386"
 		searchgnu nm >/dev/null && echo "NM_x86 := $(searchgnu nm)"
 		searchgnu objcopy >/dev/null && echo "OBJCOPY_x86 := $(searchgnu objcopy)"
-	else
-		CC=`find /opt/local/bin/ -name "i386-elf-gcc-*"`
-		if [ "$CC" == "" ]; then
-			echo "ERROR: Please install i386-elf-gcc from MacPorts" >&2
-			exit 1
+		;;
+	"x86")
+		if [ "$OS" != "Darwin" ]; then
+			echo "CC_x86 := gcc"
+			CC="gcc"
+
+			searchgnu ar >/dev/null && echo "AR_x86 := $(searchgnu ar)"
+			searchgnu as >/dev/null && echo "AS_x86 := $(searchgnu as)"
+			searchgnu ld >/dev/null && echo "LD_x86 := $(searchgnu ld)"
+			searchgnu nm >/dev/null && echo "NM_x86 := $(searchgnu nm)"
+			searchgnu objcopy >/dev/null && echo "OBJCOPY_x86 := $(searchgnu objcopy)"
+		else
+			CC=`find /opt/local/bin/ -name "i386-elf-gcc-*"`
+			if [ "$CC" == "" ]; then
+				echo "ERROR: Please install i386-elf-gcc from MacPorts" >&2
+				exit 1
+			fi
+			echo "CC_x86 := $CC"
+			echo "AR_x86 := i386-elf-ar"
+			echo "AS_x86 := i386-elf-as --divide"
+			echo "LD_x86 := i386-elf-ld"
+			echo "NM_x86 := i386-elf-nm"
+			echo "OBJCOPY_x86 := i386-elf-objcopy"
+			echo "INTLCFLAGS  := -I/opt/local/include"
+			echo "INTLLIBS    := -L/opt/local/lib -lintl"
 		fi
-		echo "CC_x86 := $CC"
-		echo "AR_x86 := i386-elf-ar"
-		echo "AS_x86 := i386-elf-as --divide"
-		echo "LD_x86 := i386-elf-ld"
-		echo "NM_x86 := i386-elf-nm"
-		echo "OBJCOPY_x86 := i386-elf-objcopy"
-		echo "INTLCFLAGS  := -I/opt/local/include"
-		echo "INTLLIBS    := -L/opt/local/lib -lintl"
-	fi
-	;;
-*)
-	# FIXME: This should be detected.
-	CC="i386-linux-gcc"
-	echo "CC_x86 := i386-linux-gcc"
-	echo "AR_x86 := i386-linux-ar"
-	echo "AS_x86 := i386-linux-as"
-	echo "LD_x86 := i386-linux-ld"
-	echo "NM_x86 := i386-linux-nm"
-	echo "OBJCOPY_x86 := i386-linux-objcopy"
-	;;
-esac
+		;;
+	*)
+		# FIXME: This should be detected.
+		CC="i386-linux-gcc"
+		echo "CC_x86 := i386-linux-gcc"
+		echo "AR_x86 := i386-linux-ar"
+		echo "AS_x86 := i386-linux-as"
+		echo "LD_x86 := i386-linux-ld"
+		echo "NM_x86 := i386-linux-nm"
+		echo "OBJCOPY_x86 := i386-linux-objcopy"
+		;;
+	esac
+fi

 # This is where we test for various flags and other things




More information about the coreboot mailing list