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 /Makefile.toolchain | |
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 'Makefile.toolchain')
-rw-r--r-- | Makefile.toolchain | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/Makefile.toolchain b/Makefile.toolchain index ecfaeb6dd6..a79f248ea2 100644 --- a/Makefile.toolchain +++ b/Makefile.toolchain @@ -26,10 +26,18 @@ endif # Extract cc-name cc-name:=$(shell $(CC) -v 2>&1 | grep -q "clang version" && echo clang || echo gcc) +# Assume we want to use same compiler for both C and C++ +ifeq ($(cc-name),gcc) +cxx-name:=g++ +else +cxx-name:=clang++ +CROSS_COMPILE_arm:=arm-none-eabi- +endif + # Try not to assume too much about optional tools and prefixes CCACHE:=$(shell which ccache 2>/dev/null) ifeq ($(origin HOST_CROSS_COMPILE),undefined) -HOST_CROSS_COMPILE:=$(if $(shell which x86_64-pc-linux-gnu-gcc 2>/dev/null),x86_64-pc-linux-gnu-,) +HOST_CROSS_COMPILE:=$(if $(shell which x86_64-pc-linux-gnu-$(cc-name) 2>/dev/null),x86_64-pc-linux-gnu-,) endif AR=$(CROSS_COMPILE)ar @@ -42,8 +50,8 @@ OBJCOPY=$(CROSS_COMPILE)objcopy OBJDUMP=$(CROSS_COMPILE)objdump ADDR2LINE=$(CROSS_COMPILE)addr2line PKG_CONFIG?=pkg-config -BUILDCC?=$(CCACHE) gcc -HOSTCC?=$(CCACHE) $(HOST_CROSS_COMPILE)gcc +BUILDCC?=$(CCACHE) $(cc-name) +HOSTCC?=$(CCACHE) $(HOST_CROSS_COMPILE)$(cc-name) HOSTCXX?=$(CCACHE) $(HOST_CROSS_COMPILE)clang++ HOST_PKG_CONFIG?=$(HOST_CROSS_COMPILE)pkg-config PROTOC?=protoc @@ -61,6 +69,11 @@ ifeq ($(cc-name),gcc) COMMON_WARN+=-Werror=maybe-uninitialized endif +ifeq ($(cc-name),clang) +# TODO(b/172020503): Re-enabling this warning requires a large CL. +C_WARN+= -Wno-ignored-attributes +endif + UBSAN_FLAGS=-fsanitize=array-bounds,vla-bound \ -fno-sanitize=vptr \ -fno-sanitize-recover=all |