arm: clang: Update support slightly
authorTom Rini <trini@konsulko.com>
Wed, 16 Mar 2016 23:55:55 +0000 (19:55 -0400)
committerTom Rini <trini@konsulko.com>
Fri, 1 Apr 2016 21:17:39 +0000 (17:17 -0400)
- 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@myspectrum.nl>
Signed-off-by: Tom Rini <trini@konsulko.com>
arch/arm/Makefile
arch/arm/config.mk
doc/README.clang

index ce006aed7722909dc534d6307215e8be64f6ac0f..09ba027cff48472d86e2cccd28767b0932a2da9b 100644 (file)
@@ -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
index 9af6c37218e9ee46f74be23e8dace155f1fd113c..9a5a9747c48a4b82380c34f568fb1239be0cb6cd 100644 (file)
@@ -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
index d41f85b3edad116bf9d48f3dd19e845624c9d076..e0491b2d7e6bff8e5af318870032149186118dd3 100644 (file)
@@ -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
 
 It can also be used to compile sandbox:
 make HOSTCC=clang sandbox_defconfig
@@ -46,8 +46,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.
@@ -56,5 +56,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 "$@"