diff options
author | Tom Rini <trini@konsulko.com> | 2016-03-16 19:55:55 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-04-01 17:17:39 -0400 |
commit | b745e82837e7c285fefdecfd580a343ecbd3baff (patch) | |
tree | d73d1618bf9d7e3c552fe8cb64715608e41ef80a | |
parent | 40345e9ea74b0caef06f205364bb2cf93528cc40 (diff) | |
download | u-boot-imx-b745e82837e7c285fefdecfd580a343ecbd3baff.zip u-boot-imx-b745e82837e7c285fefdecfd580a343ecbd3baff.tar.gz u-boot-imx-b745e82837e7c285fefdecfd580a343ecbd3baff.tar.bz2 |
arm: clang: Update support slightly
- 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>
-rw-r--r-- | arch/arm/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/config.mk | 6 | ||||
-rw-r--r-- | doc/README.clang | 15 |
3 files changed, 15 insertions, 9 deletions
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index ce006ae..09ba027 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 d41f85b..e0491b2 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 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 "$@" |