1*3df79ae7SBoyan Karatotev# 2*3df79ae7SBoyan Karatotev# Copyright (c) 2025, Arm Limited. All rights reserved. 3*3df79ae7SBoyan Karatotev# 4*3df79ae7SBoyan Karatotev# SPDX-License-Identifier: BSD-3-Clause 5*3df79ae7SBoyan Karatotev# 6*3df79ae7SBoyan Karatotev 7*3df79ae7SBoyan KaratotevGCC_V_OUTPUT := $(if $($(ARCH)-cc),$(shell $($(ARCH)-cc) -v 2>&1)) 8*3df79ae7SBoyan KaratotevPIE_FOUND := $(findstring --enable-default-pie,${GCC_V_OUTPUT}) 9*3df79ae7SBoyan Karatotev 10*3df79ae7SBoyan Karatotev################################################################################ 11*3df79ae7SBoyan Karatotev# Compiler Configuration based on ARCH_MAJOR and ARCH_MINOR flags 12*3df79ae7SBoyan Karatotev################################################################################ 13*3df79ae7SBoyan Karatotevifeq (${ARM_ARCH_MAJOR},7) 14*3df79ae7SBoyan Karatotev target32-directive = -target arm-none-eabi 15*3df79ae7SBoyan Karatotev# Will set march-directive from platform configuration 16*3df79ae7SBoyan Karatotevelse 17*3df79ae7SBoyan Karatotev target32-directive = -target armv8a-none-eabi 18*3df79ae7SBoyan Karatotevendif #(ARM_ARCH_MAJOR) 19*3df79ae7SBoyan Karatotev 20*3df79ae7SBoyan Karatotevifneq ($(filter %-clang,$($(ARCH)-cc-id)),) 21*3df79ae7SBoyan Karatotev ifeq ($($(ARCH)-cc-id),arm-clang) 22*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch32 := -target arm-arm-none-eabi 23*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch64 := -target aarch64-arm-none-eabi 24*3df79ae7SBoyan Karatotev else 25*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch32 = $(target32-directive) 26*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch64 := -target aarch64-elf 27*3df79ae7SBoyan Karatotev endif 28*3df79ae7SBoyan Karatotevendif #(clang) 29*3df79ae7SBoyan Karatotev 30*3df79ae7SBoyan Karatotev# Process Debug flag 31*3df79ae7SBoyan Karatotevifneq (${DEBUG}, 0) 32*3df79ae7SBoyan Karatotev TF_CFLAGS += -g -gdwarf-4 33*3df79ae7SBoyan Karatotev ASFLAGS += -g -Wa,-gdwarf-4 34*3df79ae7SBoyan Karatotevendif #(Debug) 35*3df79ae7SBoyan Karatotev 36*3df79ae7SBoyan Karatotevifeq (${AARCH32_INSTRUCTION_SET},A32) 37*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch32 += -marm 38*3df79ae7SBoyan Karatotevelse ifeq (${AARCH32_INSTRUCTION_SET},T32) 39*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch32 += -mthumb 40*3df79ae7SBoyan Karatotevendif #(AARCH32_INSTRUCTION_SET) 41*3df79ae7SBoyan Karatotev 42*3df79ae7SBoyan KaratotevTF_CFLAGS_aarch32 += -mno-unaligned-access 43*3df79ae7SBoyan KaratotevTF_CFLAGS_aarch64 += -mgeneral-regs-only -mstrict-align 44*3df79ae7SBoyan Karatotev 45*3df79ae7SBoyan Karatotev############################################################################## 46*3df79ae7SBoyan Karatotev# WARNINGS Configuration 47*3df79ae7SBoyan Karatotev############################################################################### 48*3df79ae7SBoyan Karatotev# General warnings 49*3df79ae7SBoyan KaratotevWARNINGS := -Wall -Wmissing-include-dirs -Wunused \ 50*3df79ae7SBoyan Karatotev -Wdisabled-optimization -Wvla -Wshadow \ 51*3df79ae7SBoyan Karatotev -Wredundant-decls 52*3df79ae7SBoyan Karatotev# stricter warnings 53*3df79ae7SBoyan KaratotevWARNINGS += -Wextra -Wno-trigraphs 54*3df79ae7SBoyan Karatotev# too verbose for generic build 55*3df79ae7SBoyan KaratotevWARNINGS += -Wno-missing-field-initializers \ 56*3df79ae7SBoyan Karatotev -Wno-type-limits -Wno-sign-compare \ 57*3df79ae7SBoyan Karatotev# on clang this flag gets reset if -Wextra is set after it. No difference on gcc 58*3df79ae7SBoyan KaratotevWARNINGS += -Wno-unused-parameter 59*3df79ae7SBoyan Karatotev 60*3df79ae7SBoyan Karatotev# Additional warnings 61*3df79ae7SBoyan Karatotev# Level 1 - infrequent warnings we should have none of 62*3df79ae7SBoyan Karatotev# full -Wextra 63*3df79ae7SBoyan KaratotevWARNING1 += -Wsign-compare 64*3df79ae7SBoyan KaratotevWARNING1 += -Wtype-limits 65*3df79ae7SBoyan KaratotevWARNING1 += -Wmissing-field-initializers 66*3df79ae7SBoyan Karatotev 67*3df79ae7SBoyan Karatotev# Level 2 - problematic warnings that we want 68*3df79ae7SBoyan Karatotev# zlib, compiler-rt, coreboot, and mbdedtls blow up with these 69*3df79ae7SBoyan Karatotev# TODO: disable just for them and move into default build 70*3df79ae7SBoyan KaratotevWARNING2 += -Wold-style-definition 71*3df79ae7SBoyan KaratotevWARNING2 += -Wmissing-prototypes 72*3df79ae7SBoyan KaratotevWARNING2 += -Wmissing-format-attribute 73*3df79ae7SBoyan Karatotev# TF-A aims to comply with this eventually. Effort too large at present 74*3df79ae7SBoyan KaratotevWARNING2 += -Wundef 75*3df79ae7SBoyan Karatotev# currently very involved and many platforms set this off 76*3df79ae7SBoyan KaratotevWARNING2 += -Wunused-const-variable=2 77*3df79ae7SBoyan Karatotev 78*3df79ae7SBoyan Karatotev# Level 3 - very pedantic, frequently ignored 79*3df79ae7SBoyan KaratotevWARNING3 := -Wbad-function-cast 80*3df79ae7SBoyan KaratotevWARNING3 += -Waggregate-return 81*3df79ae7SBoyan KaratotevWARNING3 += -Wnested-externs 82*3df79ae7SBoyan KaratotevWARNING3 += -Wcast-align 83*3df79ae7SBoyan KaratotevWARNING3 += -Wcast-qual 84*3df79ae7SBoyan KaratotevWARNING3 += -Wconversion 85*3df79ae7SBoyan KaratotevWARNING3 += -Wpacked 86*3df79ae7SBoyan KaratotevWARNING3 += -Wpointer-arith 87*3df79ae7SBoyan KaratotevWARNING3 += -Wswitch-default 88*3df79ae7SBoyan Karatotev 89*3df79ae7SBoyan Karatotevifeq (${W},1) 90*3df79ae7SBoyan Karatotev WARNINGS += $(WARNING1) 91*3df79ae7SBoyan Karatotevelse ifeq (${W},2) 92*3df79ae7SBoyan Karatotev WARNINGS += $(WARNING1) $(WARNING2) 93*3df79ae7SBoyan Karatotevelse ifeq (${W},3) 94*3df79ae7SBoyan Karatotev WARNINGS += $(WARNING1) $(WARNING2) $(WARNING3) 95*3df79ae7SBoyan Karatotevendif #(W) 96*3df79ae7SBoyan Karatotev 97*3df79ae7SBoyan Karatotevifneq (${E},0) 98*3df79ae7SBoyan Karatotev ERRORS := -Werror 99*3df79ae7SBoyan Karatotevendif #(E) 100*3df79ae7SBoyan Karatotev 101*3df79ae7SBoyan Karatotev# Compiler specific warnings 102*3df79ae7SBoyan Karatotevifeq ($(filter %-clang,$($(ARCH)-cc-id)),) 103*3df79ae7SBoyan Karatotev# not using clang 104*3df79ae7SBoyan Karatotev# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523 105*3df79ae7SBoyan KaratotevTF_CFLAGS_MIN_PAGE_SIZE := $(call cc_option, --param=min-pagesize=0) 106*3df79ae7SBoyan KaratotevTF_CFLAGS += $(TF_CFLAGS_MIN_PAGE_SIZE) 107*3df79ae7SBoyan Karatotev 108*3df79ae7SBoyan Karatotevifeq ($(HARDEN_SLS), 1) 109*3df79ae7SBoyan Karatotev TF_CFLAGS_MHARDEN_SLS := $(call cc_option, -mharden-sls=all) 110*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch64 += $(TF_CFLAGS_MHARDEN_SLS) 111*3df79ae7SBoyan Karatotevendif 112*3df79ae7SBoyan Karatotev 113*3df79ae7SBoyan KaratotevWARNINGS += -Wunused-but-set-variable -Wmaybe-uninitialized \ 114*3df79ae7SBoyan Karatotev -Wpacked-bitfield-compat -Wshift-overflow=2 \ 115*3df79ae7SBoyan Karatotev -Wlogical-op 116*3df79ae7SBoyan Karatotev 117*3df79ae7SBoyan Karatotevelse 118*3df79ae7SBoyan Karatotev# using clang 119*3df79ae7SBoyan KaratotevWARNINGS += -Wshift-overflow -Wshift-sign-overflow \ 120*3df79ae7SBoyan Karatotev -Wlogical-op-parentheses 121*3df79ae7SBoyan Karatotevendif #(Clang Warning) 122*3df79ae7SBoyan Karatotev 123*3df79ae7SBoyan KaratotevCPPFLAGS = ${DEFINES} ${INCLUDES} ${MBEDTLS_INC} -nostdinc \ 124*3df79ae7SBoyan Karatotev $(ERRORS) $(WARNINGS) 125*3df79ae7SBoyan Karatotev 126*3df79ae7SBoyan Karatotev 127*3df79ae7SBoyan KaratotevTF_CFLAGS += -ffunction-sections -fdata-sections \ 128*3df79ae7SBoyan Karatotev -ffreestanding -fno-common \ 129*3df79ae7SBoyan Karatotev -Os -std=gnu99 130*3df79ae7SBoyan Karatotev 131*3df79ae7SBoyan Karatotevifneq (${BP_OPTION},none) 132*3df79ae7SBoyan Karatotev TF_CFLAGS_aarch64 += -mbranch-protection=${BP_OPTION} 133*3df79ae7SBoyan Karatotevendif #(BP_OPTION) 134*3df79ae7SBoyan Karatotev 135*3df79ae7SBoyan Karatotevifeq (${SANITIZE_UB},on) 136*3df79ae7SBoyan Karatotev TF_CFLAGS += -fsanitize=undefined -fno-sanitize-recover 137*3df79ae7SBoyan Karatotevendif #(${SANITIZE_UB},on) 138*3df79ae7SBoyan Karatotev 139*3df79ae7SBoyan Karatotevifeq (${SANITIZE_UB},trap) 140*3df79ae7SBoyan Karatotev TF_CFLAGS += -fsanitize=undefined -fno-sanitize-recover \ 141*3df79ae7SBoyan Karatotev -fsanitize-undefined-trap-on-error 142*3df79ae7SBoyan Karatotevendif #(${SANITIZE_UB},trap) 143*3df79ae7SBoyan Karatotev 144*3df79ae7SBoyan Karatotevifeq ($($(ARCH)-cc-id),gnu-gcc) 145*3df79ae7SBoyan Karatotev # Enable LTO only for aarch64 146*3df79ae7SBoyan Karatotev LTO_CFLAGS = $(if $(filter-out 0,$(ENABLE_LTO)),-flto) 147*3df79ae7SBoyan Karatotevendif #(gnu-gcc) 148*3df79ae7SBoyan Karatotev 149*3df79ae7SBoyan Karatotevifeq (${ERROR_DEPRECATED},0) 150*3df79ae7SBoyan Karatotev# Check if deprecated declarations and cpp warnings should be treated as error or not. 151*3df79ae7SBoyan Karatotevifneq ($(filter %-clang,$($(ARCH)-cc-id)),) 152*3df79ae7SBoyan Karatotev CPPFLAGS += -Wno-error=deprecated-declarations 153*3df79ae7SBoyan Karatotevelse 154*3df79ae7SBoyan Karatotev CPPFLAGS += -Wno-error=deprecated-declarations -Wno-error=cpp 155*3df79ae7SBoyan Karatotevendif 156*3df79ae7SBoyan Karatotevendif #(!ERROR_DEPRECATED) 157*3df79ae7SBoyan Karatotev 158*3df79ae7SBoyan Karatotev################################################################################ 159*3df79ae7SBoyan Karatotev# Platform specific Makefile might provide us ARCH_MAJOR/MINOR use that to come 160*3df79ae7SBoyan Karatotev# up with appropriate march values for compiler. 161*3df79ae7SBoyan Karatotev################################################################################ 162*3df79ae7SBoyan Karatotevinclude ${MAKE_HELPERS_DIRECTORY}march.mk 163*3df79ae7SBoyan Karatotevifeq (${ARM_ARCH_MAJOR},7) 164*3df79ae7SBoyan Karatotevinclude make_helpers/armv7-a-cpus.mk 165*3df79ae7SBoyan Karatotevendif 166*3df79ae7SBoyan Karatotev 167*3df79ae7SBoyan KaratotevTF_CFLAGS += $(march-directive) 168*3df79ae7SBoyan KaratotevASFLAGS += $(march-directive) 169*3df79ae7SBoyan Karatotev 170*3df79ae7SBoyan Karatotevifneq ($(PIE_FOUND),) 171*3df79ae7SBoyan Karatotev TF_CFLAGS += -fno-PIE 172*3df79ae7SBoyan Karatotevendif 173*3df79ae7SBoyan Karatotev 174*3df79ae7SBoyan KaratotevTF_CFLAGS += $(CPPFLAGS) $(TF_CFLAGS_$(ARCH)) 175*3df79ae7SBoyan KaratotevASFLAGS += $(CPPFLAGS) \ 176*3df79ae7SBoyan Karatotev -ffreestanding -Wa,--fatal-warnings 177*3df79ae7SBoyan KaratotevTF_LDFLAGS += -z noexecstack 178*3df79ae7SBoyan Karatotev 179*3df79ae7SBoyan Karatotev# LD = armlink 180*3df79ae7SBoyan Karatotevifeq ($($(ARCH)-ld-id),arm-link) 181*3df79ae7SBoyan Karatotev TF_LDFLAGS += --diag_error=warning --lto_level=O1 182*3df79ae7SBoyan Karatotev TF_LDFLAGS += --remove --info=unused,unusedsymbols 183*3df79ae7SBoyan Karatotev TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH)) 184*3df79ae7SBoyan Karatotev 185*3df79ae7SBoyan Karatotev# LD = gcc (used when GCC LTO is enabled) 186*3df79ae7SBoyan Karatotevelse ifeq ($($(ARCH)-ld-id),gnu-gcc) 187*3df79ae7SBoyan Karatotev # Pass ld options with Wl or Xlinker switches 188*3df79ae7SBoyan Karatotev TF_LDFLAGS += $(call ld_option,-Xlinker --no-warn-rwx-segments) 189*3df79ae7SBoyan Karatotev TF_LDFLAGS += -Wl,--fatal-warnings -O1 190*3df79ae7SBoyan Karatotev TF_LDFLAGS += -Wl,--gc-sections 191*3df79ae7SBoyan Karatotev 192*3df79ae7SBoyan Karatotev TF_LDFLAGS += -Wl,-z,common-page-size=4096 #Configure page size constants 193*3df79ae7SBoyan Karatotev TF_LDFLAGS += -Wl,-z,max-page-size=4096 194*3df79ae7SBoyan Karatotev TF_LDFLAGS += -Wl,--build-id=none 195*3df79ae7SBoyan Karatotev 196*3df79ae7SBoyan Karatotev ifeq ($(ENABLE_LTO),1) 197*3df79ae7SBoyan Karatotev TF_LDFLAGS += -flto -fuse-linker-plugin 198*3df79ae7SBoyan Karatotev TF_LDFLAGS += -flto-partition=one 199*3df79ae7SBoyan Karatotev endif #(ENABLE_LTO) 200*3df79ae7SBoyan Karatotev 201*3df79ae7SBoyan Karatotev# GCC automatically adds fix-cortex-a53-843419 flag when used to link 202*3df79ae7SBoyan Karatotev# which breaks some builds, so disable if errata fix is not explicitly enabled 203*3df79ae7SBoyan Karatotev ifeq (${ARCH},aarch64) 204*3df79ae7SBoyan Karatotev ifneq (${ERRATA_A53_843419},1) 205*3df79ae7SBoyan Karatotev TF_LDFLAGS += -mno-fix-cortex-a53-843419 206*3df79ae7SBoyan Karatotev endif 207*3df79ae7SBoyan Karatotev endif 208*3df79ae7SBoyan Karatotev TF_LDFLAGS += -nostdlib 209*3df79ae7SBoyan Karatotev TF_LDFLAGS += $(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) 210*3df79ae7SBoyan Karatotev 211*3df79ae7SBoyan Karatotev# LD = gcc-ld (ld) or llvm-ld (ld.lld) or other 212*3df79ae7SBoyan Karatotevelse 213*3df79ae7SBoyan Karatotev# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we 214*3df79ae7SBoyan Karatotev# are not loaded by a elf loader. 215*3df79ae7SBoyan Karatotev TF_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) 216*3df79ae7SBoyan Karatotev TF_LDFLAGS += -O1 217*3df79ae7SBoyan Karatotev TF_LDFLAGS += --gc-sections 218*3df79ae7SBoyan Karatotev 219*3df79ae7SBoyan Karatotev TF_LDFLAGS += -z common-page-size=4096 # Configure page size constants 220*3df79ae7SBoyan Karatotev TF_LDFLAGS += -z max-page-size=4096 221*3df79ae7SBoyan Karatotev TF_LDFLAGS += --build-id=none 222*3df79ae7SBoyan Karatotev 223*3df79ae7SBoyan Karatotev# ld.lld doesn't recognize the errata flags, 224*3df79ae7SBoyan Karatotev# therefore don't add those in that case. 225*3df79ae7SBoyan Karatotev# ld.lld reports section type mismatch warnings, 226*3df79ae7SBoyan Karatotev# therefore don't add --fatal-warnings to it. 227*3df79ae7SBoyan Karatotev ifneq ($($(ARCH)-ld-id),llvm-lld) 228*3df79ae7SBoyan Karatotev TF_LDFLAGS += $(TF_LDFLAGS_$(ARCH)) --fatal-warnings 229*3df79ae7SBoyan Karatotev endif 230*3df79ae7SBoyan Karatotev 231*3df79ae7SBoyan Karatotevendif #(LD = armlink) 232*3df79ae7SBoyan Karatotev 233*3df79ae7SBoyan Karatotevifneq ($(PIE_FOUND),) 234*3df79ae7SBoyan Karatotevifeq ($($(ARCH)-ld-id),gnu-gcc) 235*3df79ae7SBoyan Karatotev TF_LDFLAGS += -no-pie 236*3df79ae7SBoyan Karatotevendif 237*3df79ae7SBoyan Karatotevendif #(PIE_FOUND) 238*3df79ae7SBoyan Karatotev 239*3df79ae7SBoyan Karatotevifeq ($($(ARCH)-ld-id),gnu-gcc) 240*3df79ae7SBoyan Karatotev PIE_LDFLAGS += -Wl,-pie -Wl,--no-dynamic-linker 241*3df79ae7SBoyan Karatotevelse 242*3df79ae7SBoyan Karatotev PIE_LDFLAGS += -pie --no-dynamic-linker 243*3df79ae7SBoyan Karatotevendif 244*3df79ae7SBoyan Karatotev 245*3df79ae7SBoyan Karatotevifeq ($(ENABLE_PIE),1) 246*3df79ae7SBoyan Karatotev ifeq ($(RESET_TO_BL2),1) 247*3df79ae7SBoyan Karatotev ifneq ($(BL2_IN_XIP_MEM),1) 248*3df79ae7SBoyan Karatotev BL2_CPPFLAGS += -fpie 249*3df79ae7SBoyan Karatotev BL2_CFLAGS += -fpie 250*3df79ae7SBoyan Karatotev BL2_LDFLAGS += $(PIE_LDFLAGS) 251*3df79ae7SBoyan Karatotev endif #(BL2_IN_XIP_MEM) 252*3df79ae7SBoyan Karatotev endif #(RESET_TO_BL2) 253*3df79ae7SBoyan Karatotev BL31_CPPFLAGS += -fpie 254*3df79ae7SBoyan Karatotev BL31_CFLAGS += -fpie 255*3df79ae7SBoyan Karatotev BL31_LDFLAGS += $(PIE_LDFLAGS) 256*3df79ae7SBoyan Karatotev 257*3df79ae7SBoyan Karatotev BL32_CPPFLAGS += -fpie 258*3df79ae7SBoyan Karatotev BL32_CFLAGS += -fpie 259*3df79ae7SBoyan Karatotev BL32_LDFLAGS += $(PIE_LDFLAGS) 260*3df79ae7SBoyan Karatotevendif #(ENABLE_PIE) 261*3df79ae7SBoyan Karatotev 262*3df79ae7SBoyan KaratotevBL1_CPPFLAGS += -DREPORT_ERRATA=${DEBUG} 263*3df79ae7SBoyan KaratotevBL31_CPPFLAGS += -DREPORT_ERRATA=${DEBUG} 264*3df79ae7SBoyan KaratotevBL32_CPPFLAGS += -DREPORT_ERRATA=${DEBUG} 265*3df79ae7SBoyan Karatotev 266*3df79ae7SBoyan KaratotevBL1_CPPFLAGS += -DIMAGE_AT_EL3 267*3df79ae7SBoyan Karatotevifeq ($(RESET_TO_BL2),1) 268*3df79ae7SBoyan Karatotev BL2_CPPFLAGS += -DIMAGE_AT_EL3 269*3df79ae7SBoyan Karatotevelse 270*3df79ae7SBoyan Karatotev BL2_CPPFLAGS += -DIMAGE_AT_EL1 271*3df79ae7SBoyan Karatotevendif #(RESET_TO_BL2) 272*3df79ae7SBoyan Karatotev 273*3df79ae7SBoyan Karatotevifeq (${ARCH},aarch64) 274*3df79ae7SBoyan Karatotev BL2U_CPPFLAGS += -DIMAGE_AT_EL1 275*3df79ae7SBoyan Karatotev BL31_CPPFLAGS += -DIMAGE_AT_EL3 276*3df79ae7SBoyan Karatotev BL32_CPPFLAGS += -DIMAGE_AT_EL1 277*3df79ae7SBoyan Karatotevelse 278*3df79ae7SBoyan Karatotev BL32_CPPFLAGS += -DIMAGE_AT_EL3 279*3df79ae7SBoyan Karatotevendif 280*3df79ae7SBoyan Karatotev 281*3df79ae7SBoyan Karatotevifeq (${SPD},spmd) 282*3df79ae7SBoyan Karatotev ifeq ($(findstring optee_sp,$(ARM_SPMC_MANIFEST_DTS)),optee_sp) 283*3df79ae7SBoyan Karatotev DTC_CPPFLAGS += -DOPTEE_SP_FW_CONFIG 284*3df79ae7SBoyan Karatotev endif 285*3df79ae7SBoyan Karatotev 286*3df79ae7SBoyan Karatotev ifeq ($(findstring trusty_sp,$(ARM_SPMC_MANIFEST_DTS)),trusty_sp) 287*3df79ae7SBoyan Karatotev DTC_CPPFLAGS += -DTRUSTY_SP_FW_CONFIG 288*3df79ae7SBoyan Karatotev endif 289*3df79ae7SBoyan Karatotev 290*3df79ae7SBoyan Karatotev ifeq ($(TS_SP_FW_CONFIG),1) 291*3df79ae7SBoyan Karatotev DTC_CPPFLAGS += -DTS_SP_FW_CONFIG 292*3df79ae7SBoyan Karatotev endif 293*3df79ae7SBoyan Karatotev 294*3df79ae7SBoyan Karatotev ifneq ($(ARM_BL2_SP_LIST_DTS),) 295*3df79ae7SBoyan Karatotev DTC_CPPFLAGS += -DARM_BL2_SP_LIST_DTS=$(ARM_BL2_SP_LIST_DTS) 296*3df79ae7SBoyan Karatotev endif 297*3df79ae7SBoyan Karatotevendif 298*3df79ae7SBoyan Karatotev 299*3df79ae7SBoyan Karatotev 300*3df79ae7SBoyan KaratotevDTC_FLAGS += -I dts -O dtb 301*3df79ae7SBoyan KaratotevDTC_CPPFLAGS += -P -nostdinc $(INCLUDES) -Ifdts -undef \ 302*3df79ae7SBoyan Karatotev -x assembler-with-cpp $(DEFINES) 303*3df79ae7SBoyan Karatotev 304