summaryrefslogtreecommitdiff
path: root/Makefile.toolchain
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.toolchain')
-rw-r--r--Makefile.toolchain19
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