xref: /rk3399_ARM-atf/make_helpers/cflags.mk (revision 3df79ae7175a9a02c6df4d2b63796d8b3c18efc3)
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