diff options
author | Tom Hughes <tomhughes@chromium.org> | 2019-02-13 16:14:26 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-10-25 18:03:13 +0000 |
commit | 03874334eac1b2bf77e33ea60a6587e6801faf6a (patch) | |
tree | 112b634a7489b6358c8ed9e92f44b367784c046d /core | |
parent | 3610a23adb72eac769e1f819604fce8fb8822b5b (diff) | |
download | chrome-ec-03874334eac1b2bf77e33ea60a6587e6801faf6a.tar.gz |
Add support for building dartmonkey firmware with clang
By default all builds will use gcc. To build with clang, set
the environment variable CC=clang.
At this point only dartmonkey has been tested with clang.
BRANCH=none
BUG=b:172020503
TEST=Using icetower, Segger J-Trace, and servo micro:
make BOARD=dartmonkey -j
./flash_jlink.py -b dartmonkey -i ./build/dartmonkey/ec.bin
--remote 127.0.0.1:2551
=> console on icetower works
TEST=CC=clang make BOARD=dartmonkey -j
./flash_jlink.py -b dartmonkey -i ./build/dartmonkey/ec.bin
--remote 127.0.0.1:2551
=> console on icetower works
TEST=make buildall -j
TEST=CC=clang make BOARD=dartmonkey tests -j
TEST=make BOARD=dartmonkey tests -j
TEST=./util/compare_build.sh -b all -j 120
=> MATCH
Change-Id: Ib7c067d0ebe0561becfd70373216adb445501f94
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1474577
Reviewed-by: Eric Yilun Lin <yllin@google.com>
Diffstat (limited to 'core')
-rw-r--r-- | core/cortex-m/build.mk | 14 | ||||
-rw-r--r-- | core/cortex-m0/build.mk | 5 |
2 files changed, 16 insertions, 3 deletions
diff --git a/core/cortex-m/build.mk b/core/cortex-m/build.mk index ad7ab6eacc..be41a12b9e 100644 --- a/core/cortex-m/build.mk +++ b/core/cortex-m/build.mk @@ -15,7 +15,13 @@ $(call set-option,CROSS_COMPILE,\ CFLAGS_FPU-$(CONFIG_FPU)=-mfpu=fpv4-sp-d16 -mfloat-abi=hard # CPU specific compilation flags -CFLAGS_CPU+=-mthumb -Os -mno-sched-prolog +CFLAGS_CPU+=-mthumb -Os +ifeq ($(cc-name),clang) +# Link compiler-rt when using clang, so clang finds the builtins it provides. +LDFLAGS_EXTRA+=-lclang_rt.builtins-arm +else +CFLAGS_CPU+=-mno-sched-prolog +endif CFLAGS_CPU+=-mno-unaligned-access CFLAGS_CPU+=$(CFLAGS_FPU-y) @@ -24,7 +30,11 @@ CFLAGS_CPU+=-flto LDFLAGS_EXTRA+=-flto endif -core-y=cpu.o debug.o init.o ldivmod.o llsr.o uldivmod.o vecttable.o +core-y=cpu.o debug.o init.o vecttable.o +# When using clang, we get these as builtins from compiler-rt. +ifneq ($(cc-name),clang) +core-y+=ldivmod.o llsr.o uldivmod.o +endif core-$(CONFIG_AES)+=aes.o core-$(CONFIG_AES_GCM)+=ghash.o core-$(CONFIG_ARMV7M_CACHE)+=cache.o diff --git a/core/cortex-m0/build.mk b/core/cortex-m0/build.mk index b0136f347e..44093b93ff 100644 --- a/core/cortex-m0/build.mk +++ b/core/cortex-m0/build.mk @@ -12,7 +12,10 @@ $(call set-option,CROSS_COMPILE,\ /opt/coreboot-sdk/bin/arm-eabi-) # CPU specific compilation flags -CFLAGS_CPU+=-mthumb -Os -mno-sched-prolog +CFLAGS_CPU+=-mthumb -Os +ifneq ($(cc-name),clang) +CFLAGS_CPU+=-mno-sched-prolog +endif CFLAGS_CPU+=-mno-unaligned-access ifneq ($(CONFIG_LTO),) |