diff --git a/Makefile b/Makefile index 1fffc1853..aeff5570a 100644 --- a/Makefile +++ b/Makefile @@ -144,8 +144,8 @@ endif #(ARM_ARCH_MAJOR) ################################################################################ arch-features = ${ARM_ARCH_FEATURE} -ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) - ifneq ($(findstring armclang,$(notdir $($(ARCH)-cc))),) +ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) + ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch32 := -target arm-arm-none-eabi TF_CFLAGS_aarch64 := -target aarch64-arm-none-eabi else @@ -153,7 +153,7 @@ ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) TF_CFLAGS_aarch64 := -target aarch64-elf endif -else ifneq ($(findstring gcc,$(notdir $($(ARCH)-cc))),) +else ifeq ($($(ARCH)-cc-id),gnu-gcc) ifeq ($(ENABLE_LTO),1) # Enable LTO only for aarch64 ifeq (${ARCH},aarch64) @@ -256,7 +256,7 @@ else ifeq (${W},3) endif #(W) # Compiler specific warnings -ifeq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +ifeq ($(filter %-clang,$($(ARCH)-cc-id)),) # not using clang WARNINGS += -Wunused-but-set-variable -Wmaybe-uninitialized \ -Wpacked-bitfield-compat -Wshift-overflow=2 \ @@ -305,13 +305,13 @@ GCC_V_OUTPUT := $(shell $($(ARCH)-cc) -v 2>&1) TF_LDFLAGS += -z noexecstack # LD = armlink -ifneq ($(findstring armlink,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),arm-link) TF_LDFLAGS += --diag_error=warning --lto_level=O1 TF_LDFLAGS += --remove --info=unused,unusedsymbols TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH)) # LD = gcc (used when GCC LTO is enabled) -else ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +else ifeq ($($(ARCH)-ld-id),gnu-gcc) # Pass ld options with Wl or Xlinker switches TF_LDFLAGS += $(call ld_option,-Xlinker --no-warn-rwx-segments) TF_LDFLAGS += -Wl,--fatal-warnings -O1 @@ -353,7 +353,7 @@ else # therefore don't add those in that case. # ld.lld reports section type mismatch warnings, # therefore don't add --fatal-warnings to it. - ifeq ($(findstring ld.lld,$(notdir $($(ARCH)-ld))),) + ifneq ($($(ARCH)-ld-id),llvm-lld) TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH)) --fatal-warnings endif @@ -385,7 +385,7 @@ BL_COMMON_SOURCES += common/bl_common.c \ plat/common/${ARCH}/platform_helpers.S \ ${COMPILER_RT_SRCS} -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) BL_COMMON_SOURCES += lib/${ARCH}/armclang_printf.S endif @@ -566,14 +566,14 @@ include ${MAKE_HELPERS_DIRECTORY}arch_features.mk ifeq (${SUPPORT_STACK_MEMTAG},yes) ifdef mem_tag_arch_support # Check for armclang and clang compilers - ifneq ( ,$(filter $(notdir $($(ARCH)-cc)),armclang clang)) + ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) # Add "memtag" architecture feature modifier if not specified ifeq ( ,$(findstring memtag,$(arch-features))) arch-features := $(arch-features)+memtag endif # memtag - ifeq ($(notdir $($(ARCH)-cc)),armclang) + ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS += -mmemtag-stack - else ifeq ($(notdir $($(ARCH)-cc)),clang) + else ifeq ($($(ARCH)-cc-id),llvm-clang) TF_CFLAGS += -fsanitize=memtag endif # armclang endif @@ -687,12 +687,12 @@ endif PIE_FOUND := $(findstring --enable-default-pie,${GCC_V_OUTPUT}) ifneq ($(PIE_FOUND),) TF_CFLAGS += -fno-PIE -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) TF_LDFLAGS += -no-pie endif endif #(PIE_FOUND) -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) PIE_LDFLAGS += -Wl,-pie -Wl,--no-dynamic-linker else PIE_LDFLAGS += -pie --no-dynamic-linker @@ -1417,7 +1417,7 @@ ifeq (${DYN_DISABLE_AUTH},1) $(eval $(call add_define,DYN_DISABLE_AUTH)) endif -ifneq ($(findstring armlink,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),arm-link) $(eval $(call add_define,USE_ARM_LINK)) endif @@ -1449,7 +1449,7 @@ msg_start: ifeq (${ERROR_DEPRECATED},0) # Check if deprecated declarations and cpp warnings should be treated as error or not. -ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) CPPFLAGS += -Wno-error=deprecated-declarations else CPPFLAGS += -Wno-error=deprecated-declarations -Wno-error=cpp diff --git a/bl1/bl1.mk b/bl1/bl1.mk index d11831793..dbb646bd4 100644 --- a/bl1/bl1.mk +++ b/bl1/bl1.mk @@ -29,9 +29,9 @@ ifeq (${ENABLE_PMF},1) BL1_SOURCES += lib/pmf/pmf_main.c endif -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) BL1_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) BL1_LDFLAGS += --sort-section=alignment endif diff --git a/bl2/bl2.mk b/bl2/bl2.mk index 0a0a8b9ce..850d82668 100644 --- a/bl2/bl2.mk +++ b/bl2/bl2.mk @@ -15,9 +15,9 @@ ifeq (${ARCH},aarch64) BL2_SOURCES += common/aarch64/early_exceptions.S endif -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) BL2_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) BL2_LDFLAGS += --sort-section=alignment endif @@ -52,4 +52,4 @@ endif ifeq (${ENABLE_PMF},1) BL2_SOURCES += lib/pmf/pmf_main.c -endif \ No newline at end of file +endif diff --git a/bl2u/bl2u.mk b/bl2u/bl2u.mk index d7601bb70..a4051ecc6 100644 --- a/bl2u/bl2u.mk +++ b/bl2u/bl2u.mk @@ -14,8 +14,8 @@ endif BL2U_DEFAULT_LINKER_SCRIPT_SOURCE := bl2u/bl2u.ld.S -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) BL2U_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) BL2U_LDFLAGS += --sort-section=alignment endif diff --git a/bl31/bl31.mk b/bl31/bl31.mk index fa6f058c9..cd61d017e 100644 --- a/bl31/bl31.mk +++ b/bl31/bl31.mk @@ -167,9 +167,9 @@ endif BL31_DEFAULT_LINKER_SCRIPT_SOURCE := bl31/bl31.ld.S -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) BL31_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) BL31_LDFLAGS += --sort-section=alignment endif diff --git a/bl32/sp_min/sp_min.mk b/bl32/sp_min/sp_min.mk index baf68cbe6..427e39b3b 100644 --- a/bl32/sp_min/sp_min.mk +++ b/bl32/sp_min/sp_min.mk @@ -57,9 +57,9 @@ endif BL32_DEFAULT_LINKER_SCRIPT_SOURCE := bl32/sp_min/sp_min.ld.S -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) BL32_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) BL32_LDFLAGS += --sort-section=alignment endif diff --git a/bl32/tsp/tsp.mk b/bl32/tsp/tsp.mk index 06efe84af..6d8f74b31 100644 --- a/bl32/tsp/tsp.mk +++ b/bl32/tsp/tsp.mk @@ -24,9 +24,9 @@ BL32_SOURCES += bl32/tsp/aarch64/tsp_entrypoint.S \ BL32_DEFAULT_LINKER_SCRIPT_SOURCE := bl32/tsp/tsp.ld.S -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) BL32_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) BL32_LDFLAGS += --sort-section=alignment endif diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk index 7a780f883..a99d51669 100644 --- a/make_helpers/build_macros.mk +++ b/make_helpers/build_macros.mk @@ -477,7 +477,7 @@ $(eval $(call MAKE_LIB_OBJS,$(BUILD_DIR),$(SOURCES),$(1))) .PHONY : lib${1}_dirs lib${1}_dirs: | ${BUILD_DIR} ${LIB_DIR} ${ROMLIB_DIR} ${LIBWRAPPER_DIR} libraries: ${LIB_DIR}/lib$(1).a -ifneq ($(findstring armlink,$(notdir $(LD))),) +ifeq ($($(ARCH)-ld-id),arm-link) LDPATHS = --userlibpath=${LIB_DIR} LDLIBS += --library=$(1) else @@ -575,14 +575,14 @@ else const char version[] = "${VERSION}";' | \ $($(ARCH)-cc) $$(TF_CFLAGS) $$(CFLAGS) -xc -c - -o $(BUILD_DIR)/build_message.o endif -ifneq ($(findstring armlink,$(notdir $(LD))),) +ifeq ($($(ARCH)-ld-id),arm-link) $$(Q)$($(ARCH)-ld) -o $$@ $$(TF_LDFLAGS) $$(LDFLAGS) $(BL_LDFLAGS) --entry=${1}_entrypoint \ --predefine="-D__LINKER__=$(__LINKER__)" \ --predefine="-DTF_CFLAGS=$(TF_CFLAGS)" \ --map --list="$(MAPFILE)" --scatter=${PLAT_DIR}/scat/${1}.scat \ $(LDPATHS) $(LIBWRAPPER) $(LDLIBS) $(BL_LIBS) \ $(BUILD_DIR)/build_message.o $(OBJS) -else ifneq ($(findstring gcc,$(notdir $(LD))),) +else ifeq ($($(ARCH)-ld-id),gnu-gcc) $$(Q)$($(ARCH)-ld) -o $$@ $$(TF_LDFLAGS) $$(LDFLAGS) $(BL_LDFLAGS) -Wl,-Map=$(MAPFILE) \ $(addprefix -Wl$(comma)--script$(comma),$(LINKER_SCRIPTS)) -Wl,--script,$(DEFAULT_LINKER_SCRIPT) \ $(BUILD_DIR)/build_message.o \ diff --git a/make_helpers/march.mk b/make_helpers/march.mk index 9c42ae686..25bb93607 100644 --- a/make_helpers/march.mk +++ b/make_helpers/march.mk @@ -54,7 +54,7 @@ else provided-march = armv${ARM_ARCH_MAJOR}.${ARM_ARCH_MINOR}-a endif -ifeq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +ifeq ($(filter %-clang,$($(ARCH)-cc-id)),) # We expect from Platform to provide a correct Major/Minor value but expecting something # from compiler with unsupported march means we shouldn't fail without trying anything, diff --git a/plat/amlogic/axg/platform.mk b/plat/amlogic/axg/platform.mk index e6a9b041c..64b35d65a 100644 --- a/plat/amlogic/axg/platform.mk +++ b/plat/amlogic/axg/platform.mk @@ -41,9 +41,9 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \ ${GIC_SOURCES} # Tune compiler for Cortex-A53 -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 -else ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +else ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 else TF_CFLAGS_aarch64 += -mtune=cortex-a53 diff --git a/plat/amlogic/g12a/platform.mk b/plat/amlogic/g12a/platform.mk index 58ca7324c..799e10667 100644 --- a/plat/amlogic/g12a/platform.mk +++ b/plat/amlogic/g12a/platform.mk @@ -41,9 +41,9 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \ ${GIC_SOURCES} # Tune compiler for Cortex-A53 -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 -else ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +else ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 else TF_CFLAGS_aarch64 += -mtune=cortex-a53 diff --git a/plat/amlogic/gxbb/platform.mk b/plat/amlogic/gxbb/platform.mk index f1c1a9ffe..fbebd3e70 100644 --- a/plat/amlogic/gxbb/platform.mk +++ b/plat/amlogic/gxbb/platform.mk @@ -37,9 +37,9 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \ ${GIC_SOURCES} # Tune compiler for Cortex-A53 -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 -else ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +else ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 else TF_CFLAGS_aarch64 += -mtune=cortex-a53 diff --git a/plat/amlogic/gxl/platform.mk b/plat/amlogic/gxl/platform.mk index e8871cd62..0a8848274 100644 --- a/plat/amlogic/gxl/platform.mk +++ b/plat/amlogic/gxl/platform.mk @@ -41,9 +41,9 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \ ${GIC_SOURCES} # Tune compiler for Cortex-A53 -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 -else ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +else ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 else TF_CFLAGS_aarch64 += -mtune=cortex-a53 diff --git a/plat/nvidia/tegra/platform.mk b/plat/nvidia/tegra/platform.mk index 0221b5ec8..6ca90a0af 100644 --- a/plat/nvidia/tegra/platform.mk +++ b/plat/nvidia/tegra/platform.mk @@ -82,7 +82,7 @@ override LIBC_SRCS := $(addprefix lib/libc/, \ INCLUDES += -Iinclude/lib/libc \ -Iinclude/lib/libc/$(ARCH) \ -ifneq ($(findstring armlink,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),arm-link) # o suppress warnings for section mismatches, undefined symbols # o use only those libraries that are specified in the input file # list to resolve references diff --git a/plat/rpi/rpi3/platform.mk b/plat/rpi/rpi3/platform.mk index 3af177cf5..26a3268bc 100644 --- a/plat/rpi/rpi3/platform.mk +++ b/plat/rpi/rpi3/platform.mk @@ -52,9 +52,9 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a53.S \ ${LIBFDT_SRCS} # Tune compiler for Cortex-A53 -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 -else ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +else ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) TF_CFLAGS_aarch64 += -mcpu=cortex-a53 else TF_CFLAGS_aarch64 += -mtune=cortex-a53 diff --git a/plat/rpi/rpi4/platform.mk b/plat/rpi/rpi4/platform.mk index 0b5fef792..42a54164e 100644 --- a/plat/rpi/rpi4/platform.mk +++ b/plat/rpi/rpi4/platform.mk @@ -39,9 +39,9 @@ RESET_TO_BL31 := 1 COLD_BOOT_SINGLE_CPU := 0 # Tune compiler for Cortex-A72 -ifeq ($(notdir $($(ARCH)-cc)),armclang) +ifeq ($($(ARCH)-cc-id),arm-clang) TF_CFLAGS_aarch64 += -mcpu=cortex-a72 -else ifneq ($(findstring clang,$(notdir $($(ARCH)-cc))),) +else ifneq ($(filter %-clang,$($(ARCH)-cc-id)),) TF_CFLAGS_aarch64 += -mcpu=cortex-a72 else TF_CFLAGS_aarch64 += -mtune=cortex-a72 diff --git a/plat/st/common/common_rules.mk b/plat/st/common/common_rules.mk index 7f45bf255..212a67d51 100644 --- a/plat/st/common/common_rules.mk +++ b/plat/st/common/common_rules.mk @@ -57,7 +57,7 @@ $(eval $(call MAKE_LD,${STM32_TF_LINKERFILE},$(STM32_LD_FILE),bl2)) tf-a-%.elf: $(PLAT)-%.o ${STM32_TF_LINKERFILE} @echo " LDS $<" -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) ${Q}$($(ARCH)-ld) -o $@ $(subst --,-Wl$(comma)--,${STM32_TF_ELF_LDFLAGS}) -nostartfiles -Wl,-Map=$(@:.elf=.map) -Wl,-dT ${STM32_TF_LINKERFILE} $< else ${Q}$($(ARCH)-ld) -o $@ ${STM32_TF_ELF_LDFLAGS} -Map=$(@:.elf=.map) --script ${STM32_TF_LINKERFILE} $< diff --git a/services/std_svc/rmmd/trp/trp.mk b/services/std_svc/rmmd/trp/trp.mk index 467a4e2ca..bb9634316 100644 --- a/services/std_svc/rmmd/trp/trp.mk +++ b/services/std_svc/rmmd/trp/trp.mk @@ -10,9 +10,9 @@ RMM_SOURCES += services/std_svc/rmmd/trp/trp_entry.S \ RMM_DEFAULT_LINKER_SCRIPT_SOURCE := services/std_svc/rmmd/trp/linker.ld.S -ifneq ($(findstring gcc,$(notdir $($(ARCH)-ld))),) +ifeq ($($(ARCH)-ld-id),gnu-gcc) RMM_LDFLAGS += -Wl,--sort-section=alignment -else ifneq ($(findstring ld,$(notdir $($(ARCH)-ld))),) +else ifneq ($(filter llvm-lld gnu-ld,$($(ARCH)-ld-id)),) RMM_LDFLAGS += --sort-section=alignment endif