2 # Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved.
4 # SPDX-License-Identifier: BSD-3-Clause
8 # Trusted Firmware Version
13 # Default goal is build all images
16 # Avoid any implicit propagation of command line variable definitions to
17 # sub-Makefiles, like CFLAGS that we reserved for the firmware images'
18 # usage. Other command line options like "-s" are still propagated as usual.
21 MAKE_HELPERS_DIRECTORY
:= make_helpers
/
22 include ${MAKE_HELPERS_DIRECTORY}build_macros.mk
23 include ${MAKE_HELPERS_DIRECTORY}build_env.mk
25 ################################################################################
26 # Default values for build configurations, and their dependencies
27 ################################################################################
30 $(warning ASM_ASSERTION is removed
, use ENABLE_ASSERTIONS instead.
)
33 include ${MAKE_HELPERS_DIRECTORY}defaults.mk
35 # Assertions enabled for DEBUG builds by default
36 ENABLE_ASSERTIONS
:= ${DEBUG}
37 ENABLE_PMF
:= ${ENABLE_RUNTIME_INSTRUMENTATION}
38 PLAT
:= ${DEFAULT_PLAT}
40 ################################################################################
41 # Checkpatch script options
42 ################################################################################
44 CHECKCODE_ARGS
:= --no-patch
45 # Do not check the coding style on imported library files or documentation files
46 INC_LIB_DIRS_TO_CHECK
:= $(sort $(filter-out \
49 $(wildcard include/lib
/*)))
50 INC_DIRS_TO_CHECK
:= $(sort $(filter-out \
52 $(wildcard include/*)))
53 LIB_DIRS_TO_CHECK
:= $(sort $(filter-out \
57 ROOT_DIRS_TO_CHECK
:= $(sort $(filter-out \
63 CHECK_PATHS
:= ${ROOT_DIRS_TO_CHECK} \
64 ${INC_DIRS_TO_CHECK} \
65 ${INC_LIB_DIRS_TO_CHECK} \
69 ################################################################################
70 # Process build options
71 ################################################################################
76 CHECKCODE_ARGS
+= --no-summary
--terse
83 $(eval
$(call add_define
,DEBUG
))
87 ASFLAGS
+= -g
-Wa
,--gdwarf-2
88 # Use LOG_LEVEL_INFO by default for debug builds
92 $(eval
$(call add_define
,NDEBUG
))
93 # Use LOG_LEVEL_NOTICE by default for release builds
97 # Default build string (git branch and commit)
98 ifeq (${BUILD_STRING},)
99 BUILD_STRING
:= $(shell git describe
--always
--dirty
--tags 2> /dev
/null
)
101 VERSION_STRING
:= v
${VERSION_MAJOR}.
${VERSION_MINOR}(${BUILD_TYPE}):${BUILD_STRING}
103 # The cert_create tool cannot generate certificates individually, so we use the
104 # target 'certificates' to create them all
105 ifneq (${GENERATE_COT},0)
106 FIP_DEPS
+= certificates
107 FWU_FIP_DEPS
+= fwu_certificates
111 ################################################################################
113 ################################################################################
115 CC
:= ${CROSS_COMPILE}gcc
116 CPP
:= ${CROSS_COMPILE}cpp
117 AS
:= ${CROSS_COMPILE}gcc
118 AR
:= ${CROSS_COMPILE}ar
119 LD
:= ${CROSS_COMPILE}ld
120 OC
:= ${CROSS_COMPILE}objcopy
121 OD
:= ${CROSS_COMPILE}objdump
122 NM
:= ${CROSS_COMPILE}nm
123 PP
:= ${CROSS_COMPILE}gcc
-E
125 ASFLAGS_aarch64
= -mgeneral-regs-only
126 TF_CFLAGS_aarch64
= -mgeneral-regs-only
-mstrict-align
128 ASFLAGS_aarch32
= -march
=armv8-a
129 TF_CFLAGS_aarch32
= -march
=armv8-a
131 CPPFLAGS
= ${DEFINES} ${INCLUDES} -nostdinc \
132 -Wmissing-include-dirs
-Werror
133 ASFLAGS
+= $(CPPFLAGS
) $(ASFLAGS_
$(ARCH
)) \
134 -D__ASSEMBLY__
-ffreestanding \
136 TF_CFLAGS
+= $(CPPFLAGS
) $(TF_CFLAGS_
$(ARCH
)) \
137 -ffreestanding
-fno-builtin
-Wall
-std
=c99
-Os \
138 -ffunction-sections
-fdata-sections
140 LDFLAGS
+= --fatal-warnings
-O1
141 LDFLAGS
+= --gc-sections
144 ################################################################################
145 # Common sources and include directories
146 ################################################################################
147 include lib
/stdlib
/stdlib.mk
149 BL_COMMON_SOURCES
+= common
/bl_common.c \
151 common
/${ARCH}/debug.S \
152 lib
/${ARCH}/cache_helpers.S \
153 lib
/${ARCH}/misc_helpers.S \
154 plat
/common
/${ARCH}/plat_common.c \
155 plat
/common
/${ARCH}/platform_helpers.S \
158 INCLUDES
+= -Iinclude
/bl1 \
161 -Iinclude
/common
/${ARCH} \
163 -Iinclude
/drivers
/arm \
164 -Iinclude
/drivers
/auth \
165 -Iinclude
/drivers
/io \
166 -Iinclude
/drivers
/ti
/uart \
168 -Iinclude
/lib
/${ARCH} \
170 -Iinclude
/lib
/cpus
/${ARCH} \
171 -Iinclude
/lib
/el3_runtime \
172 -Iinclude
/lib
/el3_runtime
/${ARCH} \
175 -Iinclude
/lib
/xlat_tables \
176 -Iinclude
/plat
/common \
182 ################################################################################
183 # Generic definitions
184 ################################################################################
186 include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk
188 BUILD_BASE
:= .
/build
189 BUILD_PLAT
:= ${BUILD_BASE}/${PLAT}/${BUILD_TYPE}
191 SPDS
:= $(sort $(filter-out none
, $(patsubst services
/spd
/%,%,$(wildcard services
/spd
/*))))
193 # Platforms providing their own TBB makefile may override this value
197 ################################################################################
198 # Include SPD Makefile if one has been specified
199 ################################################################################
202 ifeq (${ARCH},aarch32
)
203 $(error
"Error: SPD is incompatible with AArch32.")
205 ifdef EL3_PAYLOAD_BASE
206 $(warning
"SPD and EL3_PAYLOAD_BASE are incompatible build options.")
207 $(warning
"The SPD and its BL32 companion will be present but ignored.")
209 # We expect to locate an spd.mk under the specified SPD directory
210 SPD_MAKE
:= $(wildcard services
/spd
/${SPD}/${SPD}.mk
)
213 $(error Error
: No services
/spd
/${SPD}/${SPD}.mk located
)
215 $(info Including
${SPD_MAKE})
218 # If there's BL32 companion for the chosen SPD, we expect that the SPD's
219 # Makefile would set NEED_BL32 to "yes". In this case, the build system
220 # supports two mutually exclusive options:
221 # * BL32 is built from source: then BL32_SOURCES must contain the list
222 # of source files to build BL32
223 # * BL32 is a prebuilt binary: then BL32 must point to the image file
224 # that will be included in the FIP
225 # If both BL32_SOURCES and BL32 are defined, the binary takes precedence
229 ################################################################################
230 # Include libraries' Makefile that are used in all BL
231 ################################################################################
233 include lib
/stack_protector
/stack_protector.mk
236 ################################################################################
237 # Include the platform specific Makefile after the SPD Makefile (the platform
238 # makefile may use all previous definitions in this file)
239 ################################################################################
241 include ${PLAT_MAKEFILE_FULL}
243 # Platform compatibility is not supported in AArch32
244 ifneq (${ARCH},aarch32
)
245 # If the platform has not defined ENABLE_PLAT_COMPAT, then enable it by default
246 ifndef ENABLE_PLAT_COMPAT
247 ENABLE_PLAT_COMPAT
:= 1
250 # Include the platform compatibility helpers for PSCI
251 ifneq (${ENABLE_PLAT_COMPAT}, 0)
252 include plat
/compat
/plat_compat.mk
256 # Include the CPU specific operations makefile, which provides default
257 # values for all CPU errata workarounds and CPU specific optimisations.
258 # This can be overridden by the platform.
259 include lib
/cpus
/cpu-ops.mk
262 ################################################################################
263 # Check incompatible options
264 ################################################################################
266 ifdef EL3_PAYLOAD_BASE
267 ifdef PRELOADED_BL33_BASE
268 $(warning
"PRELOADED_BL33_BASE and EL3_PAYLOAD_BASE are \
269 incompatible build options. EL3_PAYLOAD_BASE has priority.")
273 ifeq (${NEED_BL33},yes
)
274 ifdef EL3_PAYLOAD_BASE
275 $(warning
"BL33 image is not needed when option \
276 BL33_PAYLOAD_BASE is used and won't be added to the FIP file.")
278 ifdef PRELOADED_BL33_BASE
279 $(warning
"BL33 image is not needed when option \
280 PRELOADED_BL33_BASE is used and won't be added to the FIP \
285 ifeq (${ARCH},aarch32
)
286 # For AArch32, LOAD_IMAGE_V2 must be enabled.
287 ifeq (${LOAD_IMAGE_V2}, 0)
288 $(error
"For AArch32, LOAD_IMAGE_V2 must be enabled.")
290 # TRUSTED_BOARD_BOOT is currently not supported for AArch32.
291 ifeq (${TRUSTED_BOARD_BOOT},1)
292 $(error
"TRUSTED_BOARD_BOOT is currently not supported for AArch32")
296 # When building for systems with hardware-assisted coherency, there's no need to
297 # use USE_COHERENT_MEM. Require that USE_COHERENT_MEM must be set to 0 too.
298 ifeq ($(HW_ASSISTED_COHERENCY
)-$(USE_COHERENT_MEM
),1-1)
299 $(error USE_COHERENT_MEM cannot be enabled with HW_ASSISTED_COHERENCY
)
302 ################################################################################
303 # Process platform overrideable behaviour
304 ################################################################################
306 # Check if -pedantic option should be used
307 ifeq (${DISABLE_PEDANTIC},0)
308 TF_CFLAGS
+= -pedantic
311 # Using the ARM Trusted Firmware BL2 implies that a BL33 image also needs to be
312 # supplied for the FIP and Certificate generation tools. This flag can be
313 # overridden by the platform.
315 ifdef EL3_PAYLOAD_BASE
316 # If booting an EL3 payload there is no need for a BL33 image
320 ifdef PRELOADED_BL33_BASE
321 # If booting a BL33 preloaded image there is no need of
322 # another one in the FIP file.
330 # If SCP_BL2 is given, we always want FIP to include it.
335 # Process TBB related flags
336 ifneq (${GENERATE_COT},0)
337 # Common cert_create options
338 ifneq (${CREATE_KEYS},0)
339 $(eval CRT_ARGS
+= -n
)
340 $(eval FWU_CRT_ARGS
+= -n
)
341 ifneq (${SAVE_KEYS},0)
342 $(eval CRT_ARGS
+= -k
)
343 $(eval FWU_CRT_ARGS
+= -k
)
346 # Include TBBR makefile (unless the platform indicates otherwise)
347 ifeq (${INCLUDE_TBBR_MK},1)
348 include make_helpers
/tbbr
/tbbr_tools.mk
352 ifneq (${FIP_ALIGN},0)
353 FIP_ARGS
+= --align
${FIP_ALIGN}
356 ################################################################################
357 # Auxiliary tools (fiptool, cert_create, etc)
358 ################################################################################
360 # Variables for use with Certificate Generation Tool
361 CRTTOOLPATH ?
= tools
/cert_create
362 CRTTOOL ?
= ${CRTTOOLPATH}/cert_create
${BIN_EXT}
364 # Variables for use with Firmware Image Package
365 FIPTOOLPATH ?
= tools
/fiptool
366 FIPTOOL ?
= ${FIPTOOLPATH}/fiptool
${BIN_EXT}
368 ################################################################################
369 # Include BL specific makefiles
370 ################################################################################
381 # For AArch32, BL31 is not applicable, and BL2U is not supported at present.
382 ifneq (${ARCH},aarch32
)
389 # When booting an EL3 payload, there is no need to compile the BL31 image nor
391 ifndef EL3_PAYLOAD_BASE
398 ifeq (${ARCH},aarch32
)
401 ################################################################################
402 # Build `AARCH32_SP` as BL32 image for AArch32
403 ################################################################################
404 ifneq (${AARCH32_SP},none
)
405 # We expect to locate an sp.mk under the specified AARCH32_SP directory
406 AARCH32_SP_MAKE
:= $(wildcard bl32
/${AARCH32_SP}/${AARCH32_SP}.mk
)
408 ifeq (${AARCH32_SP_MAKE},)
409 $(error Error
: No bl32
/${AARCH32_SP}/${AARCH32_SP}.mk located
)
412 $(info Including
${AARCH32_SP_MAKE})
413 include ${AARCH32_SP_MAKE}
418 ################################################################################
419 # Build options checks
420 ################################################################################
422 $(eval
$(call assert_boolean
,COLD_BOOT_SINGLE_CPU
))
423 $(eval
$(call assert_boolean
,CREATE_KEYS
))
424 $(eval
$(call assert_boolean
,CTX_INCLUDE_AARCH32_REGS
))
425 $(eval
$(call assert_boolean
,CTX_INCLUDE_FPREGS
))
426 $(eval
$(call assert_boolean
,DEBUG
))
427 $(eval
$(call assert_boolean
,DISABLE_PEDANTIC
))
428 $(eval
$(call assert_boolean
,ENABLE_ASSERTIONS
))
429 $(eval
$(call assert_boolean
,ENABLE_PLAT_COMPAT
))
430 $(eval
$(call assert_boolean
,ENABLE_PMF
))
431 $(eval
$(call assert_boolean
,ENABLE_PSCI_STAT
))
432 $(eval
$(call assert_boolean
,ENABLE_RUNTIME_INSTRUMENTATION
))
433 $(eval
$(call assert_boolean
,ERROR_DEPRECATED
))
434 $(eval
$(call assert_boolean
,GENERATE_COT
))
435 $(eval
$(call assert_boolean
,HW_ASSISTED_COHERENCY
))
436 $(eval
$(call assert_boolean
,LOAD_IMAGE_V2
))
437 $(eval
$(call assert_boolean
,NS_TIMER_SWITCH
))
438 $(eval
$(call assert_boolean
,PL011_GENERIC_UART
))
439 $(eval
$(call assert_boolean
,PROGRAMMABLE_RESET_ADDRESS
))
440 $(eval
$(call assert_boolean
,PSCI_EXTENDED_STATE_ID
))
441 $(eval
$(call assert_boolean
,RESET_TO_BL31
))
442 $(eval
$(call assert_boolean
,SAVE_KEYS
))
443 $(eval
$(call assert_boolean
,SEPARATE_CODE_AND_RODATA
))
444 $(eval
$(call assert_boolean
,SPIN_ON_BL1_EXIT
))
445 $(eval
$(call assert_boolean
,TRUSTED_BOARD_BOOT
))
446 $(eval
$(call assert_boolean
,USE_COHERENT_MEM
))
447 $(eval
$(call assert_boolean
,WARMBOOT_ENABLE_DCACHE_EARLY
))
449 $(eval
$(call assert_numeric
,ARM_ARCH_MAJOR
))
450 $(eval
$(call assert_numeric
,ARM_ARCH_MINOR
))
452 ################################################################################
453 # Add definitions to the cpp preprocessor based on the current build options.
454 # This is done after including the platform specific makefile to allow the
455 # platform to overwrite the default options
456 ################################################################################
458 $(eval
$(call add_define
,ARM_CCI_PRODUCT_ID
))
459 $(eval
$(call add_define
,ARM_ARCH_MAJOR
))
460 $(eval
$(call add_define
,ARM_ARCH_MINOR
))
461 $(eval
$(call add_define
,ARM_GIC_ARCH
))
462 $(eval
$(call add_define
,COLD_BOOT_SINGLE_CPU
))
463 $(eval
$(call add_define
,CTX_INCLUDE_AARCH32_REGS
))
464 $(eval
$(call add_define
,CTX_INCLUDE_FPREGS
))
465 $(eval
$(call add_define
,ENABLE_ASSERTIONS
))
466 $(eval
$(call add_define
,ENABLE_PLAT_COMPAT
))
467 $(eval
$(call add_define
,ENABLE_PMF
))
468 $(eval
$(call add_define
,ENABLE_PSCI_STAT
))
469 $(eval
$(call add_define
,ENABLE_RUNTIME_INSTRUMENTATION
))
470 $(eval
$(call add_define
,ERROR_DEPRECATED
))
471 $(eval
$(call add_define
,HW_ASSISTED_COHERENCY
))
472 $(eval
$(call add_define
,LOAD_IMAGE_V2
))
473 $(eval
$(call add_define
,LOG_LEVEL
))
474 $(eval
$(call add_define
,NS_TIMER_SWITCH
))
475 $(eval
$(call add_define
,PL011_GENERIC_UART
))
476 $(eval
$(call add_define
,PLAT_
${PLAT}))
477 $(eval
$(call add_define
,PROGRAMMABLE_RESET_ADDRESS
))
478 $(eval
$(call add_define
,PSCI_EXTENDED_STATE_ID
))
479 $(eval
$(call add_define
,RESET_TO_BL31
))
480 $(eval
$(call add_define
,SEPARATE_CODE_AND_RODATA
))
481 $(eval
$(call add_define
,SPD_
${SPD}))
482 $(eval
$(call add_define
,SPIN_ON_BL1_EXIT
))
483 $(eval
$(call add_define
,TRUSTED_BOARD_BOOT
))
484 $(eval
$(call add_define
,USE_COHERENT_MEM
))
485 $(eval
$(call add_define
,WARMBOOT_ENABLE_DCACHE_EARLY
))
487 # Define the EL3_PAYLOAD_BASE flag only if it is provided.
488 ifdef EL3_PAYLOAD_BASE
489 $(eval
$(call add_define
,EL3_PAYLOAD_BASE
))
491 # Define the PRELOADED_BL33_BASE flag only if it is provided and
492 # EL3_PAYLOAD_BASE is not defined, as it has priority.
493 ifdef PRELOADED_BL33_BASE
494 $(eval
$(call add_define
,PRELOADED_BL33_BASE
))
497 # Define the AARCH32/AARCH64 flag based on the ARCH flag
498 ifeq (${ARCH},aarch32
)
499 $(eval
$(call add_define
,AARCH32
))
501 $(eval
$(call add_define
,AARCH64
))
504 ################################################################################
506 ################################################################################
508 .PHONY
: all msg_start
clean realclean distclean cscope locate-checkpatch checkcodebase checkpatch fiptool fip fwu_fip certtool
514 @echo
"Building ${PLAT}"
516 # Check if deprecated declarations should be treated as error or not.
517 ifeq (${ERROR_DEPRECATED},0)
518 TF_CFLAGS
+= -Wno-error
=deprecated-declarations
521 # Expand build macros for the different images
522 ifeq (${NEED_BL1},yes
)
523 $(eval
$(call MAKE_BL
,1))
526 ifeq (${NEED_BL2},yes
)
527 $(if
${BL2}, $(eval
$(call MAKE_TOOL_ARGS
,2,${BL2},tb-fw
)),\
528 $(eval
$(call MAKE_BL
,2,tb-fw
)))
531 ifeq (${NEED_SCP_BL2},yes
)
532 $(eval
$(call FIP_ADD_IMG
,SCP_BL2
,--scp-fw
))
535 ifeq (${NEED_BL31},yes
)
536 BL31_SOURCES
+= ${SPD_SOURCES}
537 $(if
${BL31}, $(eval
$(call MAKE_TOOL_ARGS
,31,${BL31},soc-fw
)),\
538 $(eval
$(call MAKE_BL
,31,soc-fw
)))
541 # If a BL32 image is needed but neither BL32 nor BL32_SOURCES is defined, the
542 # build system will call FIP_ADD_IMG to print a warning message and abort the
543 # process. Note that the dependency on BL32 applies to the FIP only.
544 ifeq (${NEED_BL32},yes
)
545 $(if
${BL32}, $(eval
$(call MAKE_TOOL_ARGS
,32,${BL32},tos-fw
)),\
546 $(if
${BL32_SOURCES}, $(eval
$(call MAKE_BL
,32,tos-fw
)),\
547 $(eval
$(call FIP_ADD_IMG
,BL32
,--tos-fw
))))
550 # Add the BL33 image if required by the platform
551 ifeq (${NEED_BL33},yes
)
552 $(eval
$(call FIP_ADD_IMG
,BL33
,--nt-fw
))
555 ifeq (${NEED_BL2U},yes
)
556 BL2U_PATH
:= $(if
${BL2U},${BL2U},$(call IMG_BIN
,2u))
557 $(if
${BL2U}, ,$(eval
$(call MAKE_BL
,2u)))
558 $(eval
$(call FWU_FIP_ADD_PAYLOAD
,${BL2U_PATH},--ap-fwu-cfg
))
563 $(error
"Please set CHECKPATCH to point to the Linux checkpatch.pl file, eg: CHECKPATCH=../linux/script/checkpatch.pl")
565 ifeq (,$(wildcard ${CHECKPATCH}))
566 $(error
"The file CHECKPATCH points to cannot be found, use eg: CHECKPATCH=../linux/script/checkpatch.pl")
572 $(call SHELL_REMOVE_DIR
,${BUILD_PLAT})
573 ${Q}${MAKE} --no-print-directory
-C
${FIPTOOLPATH} clean
574 ${Q}${MAKE} PLAT
=${PLAT} --no-print-directory
-C
${CRTTOOLPATH} clean
578 $(call SHELL_REMOVE_DIR
,${BUILD_BASE})
579 $(call SHELL_DELETE_ALL
, ${CURDIR}/cscope.
*)
580 ${Q}${MAKE} --no-print-directory
-C
${FIPTOOLPATH} clean
581 ${Q}${MAKE} PLAT
=${PLAT} --no-print-directory
-C
${CRTTOOLPATH} clean
583 checkcodebase
: locate-checkpatch
584 @echo
" CHECKING STYLE"
585 @if
test -d .git
; then \
586 git ls-files | grep
-E
-v
'libfdt|stdlib|docs|\.md' | \
587 while read GIT_FILE
; \
588 do
${CHECKPATCH} ${CHECKCODE_ARGS} -f
$$GIT_FILE ; \
591 find .
-type f
-not
-iwholename
"*.git*" \
592 -not
-iwholename
"*build*" \
593 -not
-iwholename
"*libfdt*" \
594 -not
-iwholename
"*stdlib*" \
595 -not
-iwholename
"*docs*" \
596 -not
-iwholename
"*.md" \
597 -exec
${CHECKPATCH} ${CHECKCODE_ARGS} -f
{} \
; ; \
600 checkpatch
: locate-checkpatch
601 @echo
" CHECKING STYLE"
602 ${Q}git format-patch
--stdout
${BASE_COMMIT}..HEAD
-- ${CHECK_PATHS} |
${CHECKPATCH} - || true
608 ${Q}${MAKE} PLAT
=${PLAT} --no-print-directory
-C
${CRTTOOLPATH}
610 @echo
"Built $@ successfully"
613 ifneq (${GENERATE_COT},0)
614 certificates
: ${CRT_DEPS} ${CRTTOOL}
615 ${Q}${CRTTOOL} ${CRT_ARGS}
617 @echo
"Built $@ successfully"
618 @echo
"Certificates can be found in ${BUILD_PLAT}"
622 ${BUILD_PLAT}/${FIP_NAME}: ${FIP_DEPS} ${FIPTOOL}
623 ${Q}${FIPTOOL} create
${FIP_ARGS} $@
624 ${Q}${FIPTOOL} info $@
626 @echo
"Built $@ successfully"
629 ifneq (${GENERATE_COT},0)
630 fwu_certificates
: ${FWU_CRT_DEPS} ${CRTTOOL}
631 ${Q}${CRTTOOL} ${FWU_CRT_ARGS}
633 @echo
"Built $@ successfully"
634 @echo
"FWU certificates can be found in ${BUILD_PLAT}"
638 ${BUILD_PLAT}/${FWU_FIP_NAME}: ${FWU_FIP_DEPS} ${FIPTOOL}
639 ${Q}${FIPTOOL} create
${FWU_FIP_ARGS} $@
640 ${Q}${FIPTOOL} info $@
642 @echo
"Built $@ successfully"
646 fip
: ${BUILD_PLAT}/${FIP_NAME}
647 fwu_fip
: ${BUILD_PLAT}/${FWU_FIP_NAME}
651 ${Q}${MAKE} CPPFLAGS
="-DVERSION='\"${VERSION_STRING}\"'" --no-print-directory
-C
${FIPTOOLPATH}
655 ${Q}find
${CURDIR} -name
"*.[chsS]" > cscope.files
659 @echo
"usage: ${MAKE} PLAT=<${PLATFORM_LIST}> [OPTIONS] [TARGET]"
661 @echo
"PLAT is used to specify which platform you wish to build."
662 @echo
"If no platform is specified, PLAT defaults to: ${DEFAULT_PLAT}"
664 @echo
"Please refer to the User Guide for a list of all supported options."
665 @echo
"Note that the build system doesn't track dependencies for build "
666 @echo
"options. Therefore, if any of the build options are changed "
667 @echo
"from a previous build, a clean build must be performed."
669 @echo
"Supported Targets:"
670 @echo
" all Build all individual bootloader binaries"
671 @echo
" bl1 Build the BL1 binary"
672 @echo
" bl2 Build the BL2 binary"
673 @echo
" bl2u Build the BL2U binary"
674 @echo
" bl31 Build the BL31 binary"
675 @echo
" bl32 Build the BL32 binary. If ARCH=aarch32, then "
676 @echo
" this builds secure payload specified by AARCH32_SP"
677 @echo
" certificates Build the certificates (requires 'GENERATE_COT=1')"
678 @echo
" fip Build the Firmware Image Package (FIP)"
679 @echo
" fwu_fip Build the FWU Firmware Image Package (FIP)"
680 @echo
" checkcodebase Check the coding style of the entire source tree"
681 @echo
" checkpatch Check the coding style on changes in the current"
682 @echo
" branch against BASE_COMMIT (default origin/master)"
683 @echo
" clean Clean the build for the selected platform"
684 @echo
" cscope Generate cscope index"
685 @echo
" distclean Remove all build artifacts for all platforms"
686 @echo
" certtool Build the Certificate generation tool"
687 @echo
" fiptool Build the Firmware Image Package (FIP) creation tool"
689 @echo
"Note: most build targets require PLAT to be set to a specific platform."
691 @echo
"example: build all targets for the FVP platform:"
692 @echo
" CROSS_COMPILE=aarch64-none-elf- make PLAT=fvp all"