summaryrefslogtreecommitdiff
path: root/core/cortex-m/build.mk
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2019-02-13 16:14:26 -0800
committerCommit Bot <commit-bot@chromium.org>2021-10-25 18:03:13 +0000
commit03874334eac1b2bf77e33ea60a6587e6801faf6a (patch)
tree112b634a7489b6358c8ed9e92f44b367784c046d /core/cortex-m/build.mk
parent3610a23adb72eac769e1f819604fce8fb8822b5b (diff)
downloadchrome-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/cortex-m/build.mk')
-rw-r--r--core/cortex-m/build.mk14
1 files changed, 12 insertions, 2 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