diff options
Diffstat (limited to 'core/cortex-m/build.mk')
-rw-r--r-- | core/cortex-m/build.mk | 14 |
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 |