[U-Boot] [PATCH] arm: clang: Update support slightly
Tom Rini
trini at konsulko.com
Thu Mar 17 00:55:55 CET 2016
- Move most of the flags required into LLVM_RELFLAGS to test at build
time instead of requiring them to be passed in.
- Update doc/README.clang to reflect this
- Switch to rpi_2 as the example as it's closer to working out of the
box than rpi is.
Cc: Jeroen Hofstee <jeroen at myspectrum.nl>
Signed-off-by: Tom Rini <trini at konsulko.com>
---
arch/arm/Makefile | 3 ++-
arch/arm/config.mk | 6 ++++++
doc/README.clang | 15 +++++++--------
3 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 6defdfb..797f00c 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -16,7 +16,8 @@ arch-$(CONFIG_CPU_SA1100) =-march=armv4
arch-$(CONFIG_CPU_PXA) =
arch-$(CONFIG_CPU_ARM1136) =-march=armv5
arch-$(CONFIG_CPU_ARM1176) =-march=armv5t
-arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, -march=armv5)
+arch-$(CONFIG_CPU_V7) =$(call cc-option, -march=armv7-a, \
+ $(call cc-option, -march=armv7, -march=armv5))
arch-$(CONFIG_ARM64) =-march=armv8-a
# Evaluate arch cc-option calls now
diff --git a/arch/arm/config.mk b/arch/arm/config.mk
index 9af6c37..9a5a974 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -19,6 +19,12 @@ PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections \
PLATFORM_RELFLAGS += $(call cc-option, -msoft-float) \
$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
+# LLVM support
+LLVMS_RELFLAGS := $(call cc-option,-mllvm,) \
+ $(call cc-option,-target arm-none-eabi,) \
+ $(call cc-option,-arm-use-movt=0,)
+PLATFORM_RELFLAGS += $(LLVM_RELFLAGS)
+
PLATFORM_CPPFLAGS += -D__ARM__
# Choose between ARM/Thumb instruction sets
diff --git a/doc/README.clang b/doc/README.clang
index 7ce5ae4..b4ba653 100644
--- a/doc/README.clang
+++ b/doc/README.clang
@@ -26,10 +26,10 @@ Debian (based)
Binary packages can be installed as usual, e.g.:
sudo apt-get install clang
-To compile U-Boot with clang on linux without IAS use e.g.:
-export TRIPLET=arm-linux-gnueabi && export CROSS_COMPILE="$TRIPLET-"
-make HOSTCC=clang CC="clang -target $TRIPLET -mllvm -arm-use-movt=0 -no-integrated-as" rpi_defconfig
-make HOSTCC=clang CC="clang -target $TRIPLET -mllvm -arm-use-movt=0 -no-integrated-as" all V=1 -j8
+Note that we still use binutils for some tools so we must continue to set
+CROSS_COMPILE. To compile U-Boot with clang on linux without IAS use e.g.:
+make HOSTCC=clang rpi_2_defconfig
+make HOSTCC=clang CROSS_COMPILE=arm-linux-gnueabi- CC=clang -j8
FreeBSD 11 (Current):
--------------------
@@ -42,8 +42,8 @@ ln -s /usr/local/bin/arm-gnueabi-freebsd-as /usr/bin/arm-freebsd-eabi-as
# The following commands compile U-Boot using the clang xdev toolchain.
# NOTE: CROSS_COMPILE and target differ on purpose!
export CROSS_COMPILE=arm-gnueabi-freebsd-
-gmake CC="clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd -no-integrated-as -mllvm -arm-use-movt=0" rpi_defconfig
-gmake CC="clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd -no-integrated-as -mllvm -arm-use-movt=0" -j8
+gmake rpi_2_defconfig
+gmake CC="clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd" -j8
Given that U-Boot will default to gcc, above commands can be
simplified with a simple wrapper script, listed below.
@@ -52,5 +52,4 @@ simplified with a simple wrapper script, listed below.
---
#!/bin/sh
-exec clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd -no-integrated-as -mllvm -arm-use-movt=0 "$@"
-
+exec clang -target arm-freebsd-eabi --sysroot /usr/arm-freebsd "$@"
--
1.7.9.5
More information about the U-Boot
mailing list