diff --git a/Makefile.rules b/Makefile.rules index c148af4173e0ec81cca516efc368f57f9080e379..24ecf7f6af3a119220071b62dfdd7f38c8b1b8c6 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -70,11 +70,16 @@ ifneq ($(findstring darwin,$(OSARCH)),) endif endif -# gcc version 8.2.1 and above must have partial-inlining disabled to avoid documented bug -GCC_VER_GTE821:=$(shell expr `gcc --version | grep ^gcc | cut -d ' ' -f 3 | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 80201) +# gcc version 8.2.1 and above must have partial-inlining disabled to avoid documented bug. +# We must handle cross-compiling and clang so make sure the compiler version string has "gcc" +# somewhere in it before testing the version. +CC_VERS_STRING=$(shell $(CC) --version | grep -i gcc) +ifneq ($(CC_VERS_STRING),) +GCC_VER_GTE821:=$(shell expr `echo '$(CC_VERS_STRING)' | cut -d ' ' -f 3 | sed -e 's/\.\([0-9][0-9]\)/\1/g' -e 's/\.\([0-9]\)/0\1/g' -e 's/^[0-9]\{3,4\}$$/&00/'` \>= 80201) ifeq ($(GCC_VER_GTE821),1) OPTIMIZE+=-fno-partial-inlining endif +endif ifeq ($(findstring DONT_OPTIMIZE,$(MENUSELECT_CFLAGS))$(AST_CODE_COVERAGE),no) _ASTCFLAGS+=$(OPTIMIZE)