diff --git a/build/arm-tools.mk b/build/arm-tools.mk index 22cd57845d..5d449ab856 100644 --- a/build/arm-tools.mk +++ b/build/arm-tools.mk @@ -68,10 +68,9 @@ endif CFLAGS += --specs=nano.specs # Check if the compiler version is the minimum required -version_to_number=$(shell v=$1; v=($${v//./ }); echo $$((v[0] * 10000 + v[1] * 100 + v[2]))) -get_major_version=$(shell v=$1; v=($${v//./ }); echo $${v[0]}) -arm_gcc_version_str:=$(shell $(CC) -dumpversion) -arm_gcc_version:=$(call version_to_number,$(arm_gcc_version_str)) +include $(COMMON_BUILD)/gcc-version.mk +arm_gcc_version_str:=$(gcc_version_str) +arm_gcc_version:=$(gcc_version) expected_version_str:=10.2.1 ifeq ($(shell test $(arm_gcc_version) -lt $(call version_to_number,$(expected_version_str)); echo $$?),0) $(error "ARM gcc version $(expected_version_str) or later required, but found $(arm_gcc_version_str)") diff --git a/build/gcc-tools.mk b/build/gcc-tools.mk index 74efb867c0..26d2733d51 100644 --- a/build/gcc-tools.mk +++ b/build/gcc-tools.mk @@ -35,3 +35,5 @@ ifeq ($(BUILD_STANDALONE_LIB),y) CFLAGS += -fPIC -fpic -rdynamic -fno-plt LDFLAGS += -fPIC -fpic -rdynamic -fno-plt endif + +include $(COMMON_BUILD)/gcc-version.mk diff --git a/build/gcc-version.mk b/build/gcc-version.mk new file mode 100644 index 0000000000..bb28deca7b --- /dev/null +++ b/build/gcc-version.mk @@ -0,0 +1,4 @@ +version_to_number=$(shell v=$1; v=($${v//./ }); echo $$((v[0] * 10000 + v[1] * 100 + v[2]))) +get_major_version=$(shell v=$1; v=($${v//./ }); echo $${v[0]}) +gcc_version_str:=$(shell $(CC) -dumpfullversion) +gcc_version:=$(call version_to_number,$(arm_gcc_version_str)) diff --git a/build/module-defaults.mk b/build/module-defaults.mk index 855755c7aa..56d0bbcdd9 100644 --- a/build/module-defaults.mk +++ b/build/module-defaults.mk @@ -5,6 +5,7 @@ START_YMODEM_FLASHER_SERIAL_SPEED=28800 include $(COMMON_BUILD)/version.mk include $(COMMON_BUILD)/os.mk +include $(COMMON_BUILD)/gcc-version.mk QUOTE=' @@ -63,7 +64,10 @@ CFLAGS += -fno-strict-aliasing CFLAGS += -DSPARK=1 -DPARTICLE=1 CFLAGS += -Werror=return-type CFLAGS += -Wundef + +ifeq ($(shell test $(gcc_version) -lt $(call version_to_number,"11.0.0"); echo $$?),0) CFLAGS += -Wno-error=cast-function-type +endif ifdef START_DFU_FLASHER_SERIAL_SPEED CFLAGS += -DSTART_DFU_FLASHER_SERIAL_SPEED=$(START_DFU_FLASHER_SERIAL_SPEED)