From 62e0fa04a7a6f9044db1bb0f20ea7a2e00599921 Mon Sep 17 00:00:00 2001 From: Andrew Leech Date: Wed, 5 Jun 2024 12:01:12 +1000 Subject: [PATCH] nrf/Makefile: Enable LTO by default only on newer gcc. Older gcc/binutils linker does not support lto with wrap. Signed-off-by: Andrew Leech --- ports/nrf/Makefile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/ports/nrf/Makefile b/ports/nrf/Makefile index d955d183a1..621f7d33c6 100644 --- a/ports/nrf/Makefile +++ b/ports/nrf/Makefile @@ -129,7 +129,15 @@ CFLAGS_MCU_m4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4 -mfpu=fpv4-s CFLAGS_MCU_m0 = $(CFLAGS_CORTEX_M) -fshort-enums -mtune=cortex-m0 -mcpu=cortex-m0 -mfloat-abi=soft +# linker wrap does not work with lto on older gcc/binutils: https://sourceware.org/bugzilla/show_bug.cgi?id=24406 +GCC_VERSION = $(shell arm-none-eabi-gcc --version | sed -n -E 's:^arm.*([0-9]+\.[0-9]+\.[0-9]+).*$$:\1:p') +GCC_MAJOR_VERS = $(word 1,$(subst ., ,$(GCC_VERSION))) +ifeq ($(shell test $(GCC_MAJOR_VERS) -ge 10; echo $$?),0) LTO ?= 1 +else +LTO ?= 0 +endif + ifeq ($(LTO),1) CFLAGS += -flto else