| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 1 | # | 
| Balint Dobszay | 2d51b55 | 2020-01-10 17:16:27 +0100 | [diff] [blame] | 2 | # Copyright (c) 2013-2020, ARM Limited and Contributors. All rights reserved. | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 3 | # | 
| dp-arm | 82cb2c1 | 2017-05-03 09:38:09 +0100 | [diff] [blame] | 4 | # SPDX-License-Identifier: BSD-3-Clause | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 5 | # | 
|  | 6 |  | 
| Jeenu Viswambharan | e35c404 | 2014-05-15 14:40:58 +0100 | [diff] [blame] | 7 | # | 
| Juan Castillo | aaa3e72 | 2014-06-30 11:41:46 +0100 | [diff] [blame] | 8 | # Trusted Firmware Version | 
|  | 9 | # | 
| Soby Mathew | 1a0f112 | 2018-10-01 16:16:34 +0100 | [diff] [blame] | 10 | VERSION_MAJOR			:= 2 | 
| Deepika Bhavnani | 2ee6b2b | 2019-10-15 10:47:09 -0500 | [diff] [blame] | 11 | VERSION_MINOR			:= 2 | 
| Juan Castillo | aaa3e72 | 2014-06-30 11:41:46 +0100 | [diff] [blame] | 12 |  | 
| Juan Castillo | 8815467 | 2015-10-22 11:34:44 +0100 | [diff] [blame] | 13 | # Default goal is build all images | 
|  | 14 | .DEFAULT_GOAL			:= all | 
|  | 15 |  | 
| Douglas Raillard | 72fc70e | 2016-12-28 14:47:50 +0000 | [diff] [blame] | 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. | 
|  | 19 | MAKEOVERRIDES = | 
|  | 20 |  | 
| Evan Lloyd | 231c147 | 2015-12-02 18:17:37 +0000 | [diff] [blame] | 21 | MAKE_HELPERS_DIRECTORY := make_helpers/ | 
|  | 22 | include ${MAKE_HELPERS_DIRECTORY}build_macros.mk | 
| Evan Lloyd | e7f54db | 2015-12-02 18:56:06 +0000 | [diff] [blame] | 23 | include ${MAKE_HELPERS_DIRECTORY}build_env.mk | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 24 |  | 
|  | 25 | ################################################################################ | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 26 | # Default values for build configurations, and their dependencies | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 27 | ################################################################################ | 
| Jeenu Viswambharan | e35c404 | 2014-05-15 14:40:58 +0100 | [diff] [blame] | 28 |  | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 29 | include ${MAKE_HELPERS_DIRECTORY}defaults.mk | 
| dp-arm | 872be88 | 2016-09-19 11:18:44 +0100 | [diff] [blame] | 30 |  | 
| Antonio Nino Diaz | cc8b563 | 2017-04-18 15:16:05 +0100 | [diff] [blame] | 31 | # Assertions enabled for DEBUG builds by default | 
| Antonio Nino Diaz | cc8b563 | 2017-04-18 15:16:05 +0100 | [diff] [blame] | 32 | ENABLE_ASSERTIONS		:= ${DEBUG} | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 33 | ENABLE_PMF			:= ${ENABLE_RUNTIME_INSTRUMENTATION} | 
|  | 34 | PLAT				:= ${DEFAULT_PLAT} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 35 |  | 
|  | 36 | ################################################################################ | 
|  | 37 | # Checkpatch script options | 
|  | 38 | ################################################################################ | 
|  | 39 |  | 
| Sandrine Bailleux | f607739 | 2016-06-02 11:19:59 +0100 | [diff] [blame] | 40 | CHECKCODE_ARGS		:=	--no-patch | 
| Dan Handley | f0b489c | 2016-06-02 17:15:13 +0100 | [diff] [blame] | 41 | # Do not check the coding style on imported library files or documentation files | 
|  | 42 | INC_LIB_DIRS_TO_CHECK	:=	$(sort $(filter-out			\ | 
| Dan Handley | 1a41e8c | 2016-06-02 18:21:02 +0100 | [diff] [blame] | 43 | include/lib/libfdt		\ | 
| Roberto Vargas | 61f72a3 | 2018-05-08 10:27:10 +0100 | [diff] [blame] | 44 | include/lib/libc,		\ | 
| Dan Handley | f0b489c | 2016-06-02 17:15:13 +0100 | [diff] [blame] | 45 | $(wildcard include/lib/*))) | 
|  | 46 | INC_DIRS_TO_CHECK	:=	$(sort $(filter-out			\ | 
|  | 47 | include/lib,			\ | 
|  | 48 | $(wildcard include/*))) | 
|  | 49 | LIB_DIRS_TO_CHECK	:=	$(sort $(filter-out			\ | 
| dp-arm | d801fbb | 2017-05-04 12:15:35 +0100 | [diff] [blame] | 50 | lib/compiler-rt			\ | 
| Antonio Nino Diaz | 55cdcf7 | 2017-01-16 17:20:45 +0000 | [diff] [blame] | 51 | lib/libfdt%			\ | 
| Roberto Vargas | 61f72a3 | 2018-05-08 10:27:10 +0100 | [diff] [blame] | 52 | lib/libc,			\ | 
| Dan Handley | f0b489c | 2016-06-02 17:15:13 +0100 | [diff] [blame] | 53 | $(wildcard lib/*))) | 
|  | 54 | ROOT_DIRS_TO_CHECK	:=	$(sort $(filter-out			\ | 
|  | 55 | lib				\ | 
|  | 56 | include				\ | 
|  | 57 | docs				\ | 
| Paul Beesley | 1ef3551 | 2019-03-07 16:42:31 +0000 | [diff] [blame] | 58 | %.rst,				\ | 
| Dan Handley | f0b489c | 2016-06-02 17:15:13 +0100 | [diff] [blame] | 59 | $(wildcard *))) | 
|  | 60 | CHECK_PATHS		:=	${ROOT_DIRS_TO_CHECK}			\ | 
|  | 61 | ${INC_DIRS_TO_CHECK}			\ | 
|  | 62 | ${INC_LIB_DIRS_TO_CHECK}		\ | 
|  | 63 | ${LIB_DIRS_TO_CHECK} | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 64 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 65 |  | 
|  | 66 | ################################################################################ | 
|  | 67 | # Process build options | 
|  | 68 | ################################################################################ | 
|  | 69 |  | 
|  | 70 | # Verbose flag | 
| Jeenu Viswambharan | e35c404 | 2014-05-15 14:40:58 +0100 | [diff] [blame] | 71 | ifeq (${V},0) | 
| Evan Lloyd | b169f6a | 2015-12-03 09:47:51 +0000 | [diff] [blame] | 72 | Q:=@ | 
| Andre Przywara | ee1ba6d | 2018-09-27 10:56:05 +0100 | [diff] [blame] | 73 | ECHO:=@echo | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 74 | CHECKCODE_ARGS	+=	--no-summary --terse | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 75 | else | 
| Evan Lloyd | b169f6a | 2015-12-03 09:47:51 +0000 | [diff] [blame] | 76 | Q:= | 
| Antonio Nino Diaz | b5a0f4b | 2018-10-19 15:44:30 +0100 | [diff] [blame] | 77 | ECHO:=$(ECHO_QUIET) | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 78 | endif | 
| Andre Przywara | ee1ba6d | 2018-09-27 10:56:05 +0100 | [diff] [blame] | 79 |  | 
|  | 80 | ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),) | 
|  | 81 | Q:=@ | 
| Antonio Nino Diaz | b5a0f4b | 2018-10-19 15:44:30 +0100 | [diff] [blame] | 82 | ECHO:=$(ECHO_QUIET) | 
| Andre Przywara | ee1ba6d | 2018-09-27 10:56:05 +0100 | [diff] [blame] | 83 | endif | 
|  | 84 |  | 
|  | 85 | export Q ECHO | 
| Jeenu Viswambharan | 2f2cef4 | 2014-02-19 09:38:18 +0000 | [diff] [blame] | 86 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 87 | # Process Debug flag | 
|  | 88 | $(eval $(call add_define,DEBUG)) | 
| James Morrissey | eaaeece | 2013-11-01 13:56:59 +0000 | [diff] [blame] | 89 | ifneq (${DEBUG}, 0) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 90 | BUILD_TYPE	:=	debug | 
| Sandrine Bailleux | 403973c | 2016-04-11 13:01:17 +0100 | [diff] [blame] | 91 | TF_CFLAGS	+= 	-g | 
| Roberto Vargas | 1684b87 | 2018-04-16 11:29:45 +0100 | [diff] [blame] | 92 |  | 
|  | 93 | ifneq ($(findstring clang,$(notdir $(CC))),) | 
|  | 94 | ASFLAGS		+= 	-g | 
|  | 95 | else | 
|  | 96 | ASFLAGS		+= 	-g -Wa,--gdwarf-2 | 
|  | 97 | endif | 
|  | 98 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 99 | # Use LOG_LEVEL_INFO by default for debug builds | 
|  | 100 | LOG_LEVEL	:=	40 | 
| James Morrissey | eaaeece | 2013-11-01 13:56:59 +0000 | [diff] [blame] | 101 | else | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 102 | BUILD_TYPE	:=	release | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 103 | # Use LOG_LEVEL_NOTICE by default for release builds | 
|  | 104 | LOG_LEVEL	:=	20 | 
| James Morrissey | eaaeece | 2013-11-01 13:56:59 +0000 | [diff] [blame] | 105 | endif | 
|  | 106 |  | 
| Juan Castillo | aaa3e72 | 2014-06-30 11:41:46 +0100 | [diff] [blame] | 107 | # Default build string (git branch and commit) | 
|  | 108 | ifeq (${BUILD_STRING},) | 
| Masahiro Yamada | bee71c7 | 2017-02-03 11:47:27 +0900 | [diff] [blame] | 109 | BUILD_STRING	:=	$(shell git describe --always --dirty --tags 2> /dev/null) | 
| Juan Castillo | aaa3e72 | 2014-06-30 11:41:46 +0100 | [diff] [blame] | 110 | endif | 
| Juan Castillo | aaa3e72 | 2014-06-30 11:41:46 +0100 | [diff] [blame] | 111 | VERSION_STRING		:=	v${VERSION_MAJOR}.${VERSION_MINOR}(${BUILD_TYPE}):${BUILD_STRING} | 
|  | 112 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 113 | # The cert_create tool cannot generate certificates individually, so we use the | 
|  | 114 | # target 'certificates' to create them all | 
|  | 115 | ifneq (${GENERATE_COT},0) | 
|  | 116 | FIP_DEPS += certificates | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 117 | FWU_FIP_DEPS += fwu_certificates | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 118 | endif | 
|  | 119 |  | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 120 | # Process BRANCH_PROTECTION value and set | 
|  | 121 | # Pointer Authentication and Branch Target Identification flags | 
|  | 122 | ifeq (${BRANCH_PROTECTION},0) | 
|  | 123 | # Default value turns off all types of branch protection | 
|  | 124 | BP_OPTION := none | 
|  | 125 | else ifneq (${ARCH},aarch64) | 
|  | 126 | $(error BRANCH_PROTECTION requires AArch64) | 
|  | 127 | else ifeq (${BRANCH_PROTECTION},1) | 
|  | 128 | # Enables all types of branch protection features | 
|  | 129 | BP_OPTION := standard | 
|  | 130 | ENABLE_BTI := 1 | 
|  | 131 | ENABLE_PAUTH := 1 | 
|  | 132 | else ifeq (${BRANCH_PROTECTION},2) | 
|  | 133 | # Return address signing to its standard level | 
|  | 134 | BP_OPTION := pac-ret | 
|  | 135 | ENABLE_PAUTH := 1 | 
|  | 136 | else ifeq (${BRANCH_PROTECTION},3) | 
|  | 137 | # Extend the signing to include leaf functions | 
|  | 138 | BP_OPTION := pac-ret+leaf | 
|  | 139 | ENABLE_PAUTH := 1 | 
|  | 140 | else | 
|  | 141 | $(error Unknown BRANCH_PROTECTION value ${BRANCH_PROTECTION}) | 
|  | 142 | endif | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 143 |  | 
| Soby Mathew | c97cba4 | 2019-09-25 14:03:41 +0100 | [diff] [blame] | 144 | # USE_SPINLOCK_CAS requires AArch64 build | 
|  | 145 | ifeq (${USE_SPINLOCK_CAS},1) | 
|  | 146 | ifneq (${ARCH},aarch64) | 
|  | 147 | $(error USE_SPINLOCK_CAS requires AArch64) | 
|  | 148 | else | 
|  | 149 | $(info USE_SPINLOCK_CAS is an experimental feature) | 
|  | 150 | endif | 
|  | 151 | endif | 
|  | 152 |  | 
| Olivier Deprez | 0ca3913 | 2019-09-19 17:46:46 +0200 | [diff] [blame] | 153 | # USE_DEBUGFS experimental feature recommended only in debug builds | 
|  | 154 | ifeq (${USE_DEBUGFS},1) | 
|  | 155 | ifeq (${DEBUG},1) | 
|  | 156 | $(warning DEBUGFS experimental feature is enabled.) | 
|  | 157 | else | 
|  | 158 | $(warning DEBUGFS experimental, recommended in DEBUG builds ONLY) | 
|  | 159 | endif | 
|  | 160 | endif | 
|  | 161 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 162 | ################################################################################ | 
|  | 163 | # Toolchain | 
|  | 164 | ################################################################################ | 
|  | 165 |  | 
| dp-arm | 72610c4 | 2017-05-02 11:09:11 +0100 | [diff] [blame] | 166 | HOSTCC			:=	gcc | 
|  | 167 | export HOSTCC | 
|  | 168 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 169 | CC			:=	${CROSS_COMPILE}gcc | 
|  | 170 | CPP			:=	${CROSS_COMPILE}cpp | 
|  | 171 | AS			:=	${CROSS_COMPILE}gcc | 
|  | 172 | AR			:=	${CROSS_COMPILE}ar | 
| Roberto Vargas | 2adee76 | 2018-04-13 14:26:47 +0100 | [diff] [blame] | 173 | LINKER			:=	${CROSS_COMPILE}ld | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 174 | OC			:=	${CROSS_COMPILE}objcopy | 
|  | 175 | OD			:=	${CROSS_COMPILE}objdump | 
|  | 176 | NM			:=	${CROSS_COMPILE}nm | 
|  | 177 | PP			:=	${CROSS_COMPILE}gcc -E | 
| Soby Mathew | 38c14d8 | 2017-12-14 17:44:56 +0000 | [diff] [blame] | 178 | DTC			:=	dtc | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 179 |  | 
| Julius Werner | b25a577 | 2018-01-10 15:12:47 -0800 | [diff] [blame] | 180 | # Use ${LD}.bfd instead if it exists (as absolute path or together with $PATH). | 
|  | 181 | ifneq ($(strip $(wildcard ${LD}.bfd) \ | 
| Roberto Vargas | 2adee76 | 2018-04-13 14:26:47 +0100 | [diff] [blame] | 182 | $(foreach dir,$(subst :, ,${PATH}),$(wildcard ${dir}/${LINKER}.bfd))),) | 
|  | 183 | LINKER			:=	${LINKER}.bfd | 
| Julius Werner | b25a577 | 2018-01-10 15:12:47 -0800 | [diff] [blame] | 184 | endif | 
|  | 185 |  | 
| Etienne Carriere | 26e63c4 | 2017-11-08 13:48:40 +0100 | [diff] [blame] | 186 | ifeq (${ARM_ARCH_MAJOR},7) | 
|  | 187 | target32-directive	= 	-target arm-none-eabi | 
|  | 188 | # Will set march32-directive from platform configuration | 
|  | 189 | else | 
|  | 190 | target32-directive	= 	-target armv8a-none-eabi | 
| Alexei Fedorov | fa6f774 | 2019-03-11 16:51:47 +0000 | [diff] [blame] | 191 |  | 
|  | 192 | # Set the compiler's target architecture profile based on ARM_ARCH_MINOR option | 
|  | 193 | ifeq (${ARM_ARCH_MINOR},0) | 
| Sandrine Bailleux | da547d4 | 2017-11-24 08:43:40 +0000 | [diff] [blame] | 194 | march32-directive	= 	-march=armv8-a | 
| Alexei Fedorov | fa6f774 | 2019-03-11 16:51:47 +0000 | [diff] [blame] | 195 | march64-directive	= 	-march=armv8-a | 
|  | 196 | else | 
|  | 197 | march32-directive	= 	-march=armv8.${ARM_ARCH_MINOR}-a | 
|  | 198 | march64-directive	= 	-march=armv8.${ARM_ARCH_MINOR}-a | 
|  | 199 | endif | 
| Etienne Carriere | 26e63c4 | 2017-11-08 13:48:40 +0100 | [diff] [blame] | 200 | endif | 
|  | 201 |  | 
| Varun Wadekar | fd18a8f | 2018-12-12 15:22:27 -0800 | [diff] [blame] | 202 | ifneq ($(findstring armclang,$(notdir $(CC))),) | 
| Etienne Carriere | 26e63c4 | 2017-11-08 13:48:40 +0100 | [diff] [blame] | 203 | TF_CFLAGS_aarch32	=	-target arm-arm-none-eabi $(march32-directive) | 
| Alexei Fedorov | fa6f774 | 2019-03-11 16:51:47 +0000 | [diff] [blame] | 204 | TF_CFLAGS_aarch64	=	-target aarch64-arm-none-eabi $(march64-directive) | 
| Roberto Vargas | 2adee76 | 2018-04-13 14:26:47 +0100 | [diff] [blame] | 205 | LD			=	$(LINKER) | 
| Roberto Vargas | 1684b87 | 2018-04-16 11:29:45 +0100 | [diff] [blame] | 206 | AS			=	$(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) | 
| Roberto Vargas | 7040155 | 2018-05-10 13:38:19 +0100 | [diff] [blame] | 207 | CPP			=	$(CC) -E $(TF_CFLAGS_$(ARCH)) | 
|  | 208 | PP			=	$(CC) -E $(TF_CFLAGS_$(ARCH)) | 
| dp-arm | 7559633 | 2017-05-03 16:30:32 +0100 | [diff] [blame] | 209 | else ifneq ($(findstring clang,$(notdir $(CC))),) | 
| Arve Hjønnevåg | eff737c | 2020-02-04 15:50:24 -0800 | [diff] [blame] | 210 | CLANG_CCDIR		=	$(if $(filter-out ./,$(dir $(CC))),$(dir $(CC)),) | 
| Yann Gautier | e2bfec0 | 2018-12-18 10:46:34 +0100 | [diff] [blame] | 211 | TF_CFLAGS_aarch32	=	$(target32-directive) $(march32-directive) | 
| Alexei Fedorov | fa6f774 | 2019-03-11 16:51:47 +0000 | [diff] [blame] | 212 | TF_CFLAGS_aarch64	=	-target aarch64-elf $(march64-directive) | 
| Arve Hjønnevåg | eff737c | 2020-02-04 15:50:24 -0800 | [diff] [blame] | 213 | LD			=	$(CLANG_CCDIR)ld.lld | 
| Ambroise Vincent | 641f16e | 2019-07-17 11:08:38 +0100 | [diff] [blame] | 214 | ifeq (, $(shell which $(LD))) | 
|  | 215 | $(error "No $(LD) in PATH, make sure it is installed or set LD to a different linker") | 
|  | 216 | endif | 
| Roberto Vargas | 1684b87 | 2018-04-16 11:29:45 +0100 | [diff] [blame] | 217 | AS			=	$(CC) -c -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) | 
| Roberto Vargas | 7040155 | 2018-05-10 13:38:19 +0100 | [diff] [blame] | 218 | CPP			=	$(CC) -E | 
|  | 219 | PP			=	$(CC) -E | 
| zelalem-aweke | edbce9a | 2019-11-12 16:20:17 -0600 | [diff] [blame] | 220 | else ifneq ($(findstring gcc,$(notdir $(CC))),) | 
|  | 221 | TF_CFLAGS_aarch32	=	$(march32-directive) | 
|  | 222 | TF_CFLAGS_aarch64	=	$(march64-directive) | 
|  | 223 | ifeq ($(ENABLE_LTO),1) | 
|  | 224 | # Enable LTO only for aarch64 | 
|  | 225 | ifeq (${ARCH},aarch64) | 
|  | 226 | LTO_CFLAGS	=	-flto | 
|  | 227 | # Use gcc as a wrapper for the ld, recommended for LTO | 
|  | 228 | LINKER		:=	${CROSS_COMPILE}gcc | 
|  | 229 | endif | 
|  | 230 | endif | 
|  | 231 | LD			=	$(LINKER) | 
| dp-arm | d546185 | 2017-05-02 12:00:08 +0100 | [diff] [blame] | 232 | else | 
| Etienne Carriere | 26e63c4 | 2017-11-08 13:48:40 +0100 | [diff] [blame] | 233 | TF_CFLAGS_aarch32	=	$(march32-directive) | 
| Alexei Fedorov | fa6f774 | 2019-03-11 16:51:47 +0000 | [diff] [blame] | 234 | TF_CFLAGS_aarch64	=	$(march64-directive) | 
| Roberto Vargas | 2adee76 | 2018-04-13 14:26:47 +0100 | [diff] [blame] | 235 | LD			=	$(LINKER) | 
| dp-arm | d546185 | 2017-05-02 12:00:08 +0100 | [diff] [blame] | 236 | endif | 
|  | 237 |  | 
| Antonio Nino Diaz | 8fd9d4d | 2018-08-08 16:28:43 +0100 | [diff] [blame] | 238 | ifeq (${AARCH32_INSTRUCTION_SET},A32) | 
|  | 239 | TF_CFLAGS_aarch32	+=	-marm | 
|  | 240 | else ifeq (${AARCH32_INSTRUCTION_SET},T32) | 
|  | 241 | TF_CFLAGS_aarch32	+=	-mthumb | 
|  | 242 | else | 
|  | 243 | $(error Error: Unknown AArch32 instruction set ${AARCH32_INSTRUCTION_SET}) | 
|  | 244 | endif | 
|  | 245 |  | 
| Sandrine Bailleux | a9c4dde | 2018-07-03 09:14:45 +0200 | [diff] [blame] | 246 | TF_CFLAGS_aarch32	+=	-mno-unaligned-access | 
| dp-arm | d546185 | 2017-05-02 12:00:08 +0100 | [diff] [blame] | 247 | TF_CFLAGS_aarch64	+=	-mgeneral-regs-only -mstrict-align | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 248 |  | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 249 | ifneq (${BP_OPTION},none) | 
|  | 250 | TF_CFLAGS_aarch64	+=	-mbranch-protection=${BP_OPTION} | 
|  | 251 | endif | 
|  | 252 |  | 
| Etienne Carriere | 26e63c4 | 2017-11-08 13:48:40 +0100 | [diff] [blame] | 253 | ASFLAGS_aarch32		=	$(march32-directive) | 
| Alexei Fedorov | fa6f774 | 2019-03-11 16:51:47 +0000 | [diff] [blame] | 254 | ASFLAGS_aarch64		=	$(march64-directive) | 
| Antonio Nino Diaz | b86048c | 2019-02-19 11:53:51 +0000 | [diff] [blame] | 255 |  | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 256 | # General warnings | 
|  | 257 | WARNINGS		:=	-Wall -Wmissing-include-dirs -Wunused	\ | 
| Justin Chadwell | b7f6525 | 2019-09-17 15:21:50 +0100 | [diff] [blame] | 258 | -Wdisabled-optimization	-Wvla -Wshadow	\ | 
| Madhukar Pappireddy | ca661a0 | 2019-12-23 14:49:52 -0600 | [diff] [blame] | 259 | -Wno-unused-parameter -Wredundant-decls | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 260 |  | 
|  | 261 | # Additional warnings | 
|  | 262 | # Level 1 | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 263 | WARNING1 := -Wextra | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 264 | WARNING1 += -Wmissing-format-attribute | 
|  | 265 | WARNING1 += -Wmissing-prototypes | 
|  | 266 | WARNING1 += -Wold-style-definition | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 267 |  | 
| Justin Chadwell | b7f6525 | 2019-09-17 15:21:50 +0100 | [diff] [blame] | 268 | # Level 2 | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 269 | WARNING2 := -Waggregate-return | 
|  | 270 | WARNING2 += -Wcast-align | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 271 | WARNING2 += -Wnested-externs | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 272 |  | 
|  | 273 | WARNING3 := -Wbad-function-cast | 
|  | 274 | WARNING3 += -Wcast-qual | 
|  | 275 | WARNING3 += -Wconversion | 
|  | 276 | WARNING3 += -Wpacked | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 277 | WARNING3 += -Wpointer-arith | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 278 | WARNING3 += -Wswitch-default | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 279 |  | 
|  | 280 | ifeq (${W},1) | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 281 | WARNINGS += $(WARNING1) | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 282 | else ifeq (${W},2) | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 283 | WARNINGS += $(WARNING1) $(WARNING2) | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 284 | else ifeq (${W},3) | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 285 | WARNINGS += $(WARNING1) $(WARNING2) $(WARNING3) | 
| Yann Gautier | e7c645b | 2018-12-10 18:00:26 +0100 | [diff] [blame] | 286 | endif | 
|  | 287 |  | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 288 | # Compiler specific warnings | 
| Ambroise Vincent | 0029657 | 2019-05-24 12:47:43 +0100 | [diff] [blame] | 289 | ifeq ($(findstring clang,$(notdir $(CC))),) | 
| Justin Chadwell | 93c690e | 2019-07-03 14:15:56 +0100 | [diff] [blame] | 290 | # not using clang | 
| Justin Chadwell | d7b4cd4 | 2019-09-18 14:13:42 +0100 | [diff] [blame] | 291 | WARNINGS	+=		-Wunused-but-set-variable -Wmaybe-uninitialized	\ | 
|  | 292 | -Wpacked-bitfield-compat -Wshift-overflow=2 \ | 
|  | 293 | -Wlogical-op | 
| Justin Chadwell | 93c690e | 2019-07-03 14:15:56 +0100 | [diff] [blame] | 294 | else | 
|  | 295 | # using clang | 
| Justin Chadwell | d7b4cd4 | 2019-09-18 14:13:42 +0100 | [diff] [blame] | 296 | WARNINGS	+=		-Wshift-overflow -Wshift-sign-overflow \ | 
|  | 297 | -Wlogical-op-parentheses | 
| Ambroise Vincent | 0029657 | 2019-05-24 12:47:43 +0100 | [diff] [blame] | 298 | endif | 
|  | 299 |  | 
| Yann Gautier | 6336b07 | 2018-12-10 18:08:53 +0100 | [diff] [blame] | 300 | ifneq (${E},0) | 
|  | 301 | ERRORS := -Werror | 
|  | 302 | endif | 
|  | 303 |  | 
| Justin Chadwell | 9ab81b5 | 2019-07-31 11:36:41 +0100 | [diff] [blame] | 304 | CPPFLAGS		=	${DEFINES} ${INCLUDES} ${MBEDTLS_INC} -nostdinc	\ | 
|  | 305 | $(ERRORS) $(WARNINGS) | 
| Masahiro Yamada | 59de509 | 2016-12-22 12:51:53 +0900 | [diff] [blame] | 306 | ASFLAGS			+=	$(CPPFLAGS) $(ASFLAGS_$(ARCH))			\ | 
| Julius Werner | d5dfdeb | 2019-07-09 13:49:11 -0700 | [diff] [blame] | 307 | -ffreestanding -Wa,--fatal-warnings | 
| Masahiro Yamada | 59de509 | 2016-12-22 12:51:53 +0900 | [diff] [blame] | 308 | TF_CFLAGS		+=	$(CPPFLAGS) $(TF_CFLAGS_$(ARCH))		\ | 
| Samuel Holland | ebd6efa | 2019-10-20 16:11:25 -0500 | [diff] [blame] | 309 | -ffunction-sections -fdata-sections		\ | 
|  | 310 | -ffreestanding -fno-builtin -fno-common		\ | 
|  | 311 | -Os -std=gnu99 | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 312 |  | 
| Justin Chadwell | 1f46197 | 2019-08-20 11:01:52 +0100 | [diff] [blame] | 313 | ifeq (${SANITIZE_UB},on) | 
|  | 314 | TF_CFLAGS		+=	-fsanitize=undefined -fno-sanitize-recover | 
|  | 315 | endif | 
|  | 316 | ifeq (${SANITIZE_UB},trap) | 
|  | 317 | TF_CFLAGS		+=	-fsanitize=undefined -fno-sanitize-recover	\ | 
|  | 318 | -fsanitize-undefined-trap-on-error | 
|  | 319 | endif | 
|  | 320 |  | 
| david cunado | f7ec31d | 2017-11-30 21:58:01 +0000 | [diff] [blame] | 321 | GCC_V_OUTPUT		:=	$(shell $(CC) -v 2>&1) | 
| david cunado | f7ec31d | 2017-11-30 21:58:01 +0000 | [diff] [blame] | 322 |  | 
| Ambroise Vincent | 641f16e | 2019-07-17 11:08:38 +0100 | [diff] [blame] | 323 | # LD = armlink | 
| Varun Wadekar | c2ad38c | 2019-01-11 14:47:48 -0800 | [diff] [blame] | 324 | ifneq ($(findstring armlink,$(notdir $(LD))),) | 
|  | 325 | TF_LDFLAGS		+=	--diag_error=warning --lto_level=O1 | 
|  | 326 | TF_LDFLAGS		+=	--remove --info=unused,unusedsymbols | 
| zelalem-aweke | edbce9a | 2019-11-12 16:20:17 -0600 | [diff] [blame] | 327 | TF_LDFLAGS		+=	$(TF_LDFLAGS_$(ARCH)) | 
| Ambroise Vincent | 641f16e | 2019-07-17 11:08:38 +0100 | [diff] [blame] | 328 |  | 
|  | 329 | # LD = gcc (used when GCC LTO is enabled) | 
| zelalem-aweke | edbce9a | 2019-11-12 16:20:17 -0600 | [diff] [blame] | 330 | else ifneq ($(findstring gcc,$(notdir $(LD))),) | 
|  | 331 | # Pass ld options with Wl or Xlinker switches | 
|  | 332 | TF_LDFLAGS		+=	-Wl,--fatal-warnings -O1 | 
|  | 333 | TF_LDFLAGS		+=	-Wl,--gc-sections | 
|  | 334 | ifeq ($(ENABLE_LTO),1) | 
|  | 335 | ifeq (${ARCH},aarch64) | 
|  | 336 | TF_LDFLAGS	+=	-flto -fuse-linker-plugin | 
|  | 337 | endif | 
|  | 338 | endif | 
|  | 339 | # GCC automatically adds fix-cortex-a53-843419 flag when used to link | 
|  | 340 | # which breaks some builds, so disable if errata fix is not explicitly enabled | 
|  | 341 | ifneq (${ERRATA_A53_843419},1) | 
|  | 342 | TF_LDFLAGS	+= 	-mno-fix-cortex-a53-843419 | 
|  | 343 | endif | 
|  | 344 | TF_LDFLAGS		+= 	-nostdlib | 
|  | 345 | TF_LDFLAGS		+=	$(subst --,-Xlinker --,$(TF_LDFLAGS_$(ARCH))) | 
| Ambroise Vincent | 641f16e | 2019-07-17 11:08:38 +0100 | [diff] [blame] | 346 |  | 
|  | 347 | # LD = gcc-ld (ld) or llvm-ld (ld.lld) or other | 
| Varun Wadekar | c2ad38c | 2019-01-11 14:47:48 -0800 | [diff] [blame] | 348 | else | 
| Douglas Raillard | c2b8806 | 2017-06-22 14:44:48 +0100 | [diff] [blame] | 349 | TF_LDFLAGS		+=	--fatal-warnings -O1 | 
|  | 350 | TF_LDFLAGS		+=	--gc-sections | 
| Ambroise Vincent | 641f16e | 2019-07-17 11:08:38 +0100 | [diff] [blame] | 351 | # ld.lld doesn't recognize the errata flags, | 
|  | 352 | # therefore don't add those in that case | 
|  | 353 | ifeq ($(findstring ld.lld,$(notdir $(LD))),) | 
| Douglas Raillard | c2b8806 | 2017-06-22 14:44:48 +0100 | [diff] [blame] | 354 | TF_LDFLAGS		+=	$(TF_LDFLAGS_$(ARCH)) | 
| zelalem-aweke | edbce9a | 2019-11-12 16:20:17 -0600 | [diff] [blame] | 355 | endif | 
| Ambroise Vincent | 641f16e | 2019-07-17 11:08:38 +0100 | [diff] [blame] | 356 | endif | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 357 |  | 
| Nishanth Menon | 03b397a | 2016-10-14 01:13:57 +0000 | [diff] [blame] | 358 | DTC_FLAGS		+=	-I dts -O dtb | 
| Balint Dobszay | 2d51b55 | 2020-01-10 17:16:27 +0100 | [diff] [blame] | 359 | DTC_CPPFLAGS		+=	-P -nostdinc -Iinclude -Ifdts -undef -x assembler-with-cpp | 
| Nishanth Menon | 03b397a | 2016-10-14 01:13:57 +0000 | [diff] [blame] | 360 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 361 | ################################################################################ | 
|  | 362 | # Common sources and include directories | 
|  | 363 | ################################################################################ | 
| dp-arm | d801fbb | 2017-05-04 12:15:35 +0100 | [diff] [blame] | 364 | include lib/compiler-rt/compiler-rt.mk | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 365 |  | 
|  | 366 | BL_COMMON_SOURCES	+=	common/bl_common.c			\ | 
| Soby Mathew | 7f56e9a | 2017-09-04 11:49:29 +0100 | [diff] [blame] | 367 | common/tf_log.c				\ | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 368 | common/${ARCH}/debug.S			\ | 
| Julius Werner | 91b48c9 | 2018-11-27 22:10:56 -0800 | [diff] [blame] | 369 | drivers/console/multi_console.c		\ | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 370 | lib/${ARCH}/cache_helpers.S		\ | 
|  | 371 | lib/${ARCH}/misc_helpers.S		\ | 
| Soby Mathew | 566034f | 2018-02-08 17:45:12 +0000 | [diff] [blame] | 372 | plat/common/plat_bl_common.c		\ | 
| Soby Mathew | 7f56e9a | 2017-09-04 11:49:29 +0100 | [diff] [blame] | 373 | plat/common/plat_log_common.c		\ | 
| dp-arm | 7531120 | 2017-03-07 11:02:47 +0000 | [diff] [blame] | 374 | plat/common/${ARCH}/plat_common.c	\ | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 375 | plat/common/${ARCH}/platform_helpers.S	\ | 
| Roberto Vargas | 61f72a3 | 2018-05-08 10:27:10 +0100 | [diff] [blame] | 376 | ${COMPILER_RT_SRCS} | 
| Ryan Harkin | d7a6b0f | 2014-01-13 14:40:13 +0000 | [diff] [blame] | 377 |  | 
| Antonio Nino Diaz | 8422a84 | 2018-08-16 15:42:44 +0100 | [diff] [blame] | 378 | ifeq ($(notdir $(CC)),armclang) | 
|  | 379 | BL_COMMON_SOURCES	+=	lib/${ARCH}/armclang_printf.S | 
|  | 380 | endif | 
|  | 381 |  | 
| Justin Chadwell | 1f46197 | 2019-08-20 11:01:52 +0100 | [diff] [blame] | 382 | ifeq (${SANITIZE_UB},on) | 
|  | 383 | BL_COMMON_SOURCES	+=	plat/common/ubsan.c | 
|  | 384 | endif | 
|  | 385 |  | 
| Yann Gautier | 01d237c | 2018-06-18 16:00:23 +0200 | [diff] [blame] | 386 | INCLUDES		+=	-Iinclude				\ | 
| Antonio Nino Diaz | f5478de | 2018-12-17 17:20:57 +0000 | [diff] [blame] | 387 | -Iinclude/arch/${ARCH}			\ | 
| Antonio Nino Diaz | 09d40e0 | 2018-12-14 00:18:21 +0000 | [diff] [blame] | 388 | -Iinclude/lib/cpus/${ARCH}		\ | 
|  | 389 | -Iinclude/lib/el3_runtime/${ARCH}	\ | 
|  | 390 | ${PLAT_INCLUDES}			\ | 
|  | 391 | ${SPD_INCLUDES} | 
|  | 392 |  | 
| Antonio Nino Diaz | 9c6d1c5 | 2018-11-19 11:48:30 +0000 | [diff] [blame] | 393 | include common/backtrace/backtrace.mk | 
|  | 394 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 395 | ################################################################################ | 
|  | 396 | # Generic definitions | 
|  | 397 | ################################################################################ | 
|  | 398 |  | 
| Evan Lloyd | 231c147 | 2015-12-02 18:17:37 +0000 | [diff] [blame] | 399 | include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk | 
|  | 400 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 401 | BUILD_BASE		:=	./build | 
|  | 402 | BUILD_PLAT		:=	${BUILD_BASE}/${PLAT}/${BUILD_TYPE} | 
|  | 403 |  | 
| Evan Lloyd | 231c147 | 2015-12-02 18:17:37 +0000 | [diff] [blame] | 404 | SPDS			:=	$(sort $(filter-out none, $(patsubst services/spd/%,%,$(wildcard services/spd/*)))) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 405 |  | 
|  | 406 | # Platforms providing their own TBB makefile may override this value | 
|  | 407 | INCLUDE_TBBR_MK		:=	1 | 
|  | 408 |  | 
|  | 409 |  | 
|  | 410 | ################################################################################ | 
|  | 411 | # Include SPD Makefile if one has been specified | 
|  | 412 | ################################################################################ | 
|  | 413 |  | 
|  | 414 | ifneq (${SPD},none) | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 415 | ifeq (${ARCH},aarch32) | 
| Sandrine Bailleux | 44a8738 | 2018-10-03 14:56:38 +0200 | [diff] [blame] | 416 | $(error "Error: SPD is incompatible with AArch32.") | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 417 | endif | 
| Sandrine Bailleux | 4c117f6 | 2015-11-26 16:31:34 +0000 | [diff] [blame] | 418 | ifdef EL3_PAYLOAD_BASE | 
|  | 419 | $(warning "SPD and EL3_PAYLOAD_BASE are incompatible build options.") | 
|  | 420 | $(warning "The SPD and its BL32 companion will be present but ignored.") | 
|  | 421 | endif | 
| Achin Gupta | c3fb00d | 2019-10-11 15:50:43 +0100 | [diff] [blame] | 422 | ifeq (${SPD},spmd) | 
|  | 423 | # SPMD is located in std_svc directory | 
|  | 424 | SPD_DIR := std_svc | 
|  | 425 | else | 
|  | 426 | # All other SPDs in spd directory | 
|  | 427 | SPD_DIR := spd | 
|  | 428 | endif | 
|  | 429 |  | 
|  | 430 | # We expect to locate an spd.mk under the specified SPD directory | 
|  | 431 | SPD_MAKE	:=	$(wildcard services/${SPD_DIR}/${SPD}/${SPD}.mk) | 
|  | 432 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 433 |  | 
|  | 434 | ifeq (${SPD_MAKE},) | 
| Achin Gupta | c3fb00d | 2019-10-11 15:50:43 +0100 | [diff] [blame] | 435 | $(error Error: No services/${SPD_DIR}/${SPD}/${SPD}.mk located) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 436 | endif | 
|  | 437 | $(info Including ${SPD_MAKE}) | 
|  | 438 | include ${SPD_MAKE} | 
|  | 439 |  | 
| Juan Castillo | 70d1fc5 | 2015-11-12 10:59:26 +0000 | [diff] [blame] | 440 | # If there's BL32 companion for the chosen SPD, we expect that the SPD's | 
|  | 441 | # Makefile would set NEED_BL32 to "yes". In this case, the build system | 
|  | 442 | # supports two mutually exclusive options: | 
|  | 443 | # * BL32 is built from source: then BL32_SOURCES must contain the list | 
|  | 444 | #   of source files to build BL32 | 
|  | 445 | # * BL32 is a prebuilt binary: then BL32 must point to the image file | 
|  | 446 | #   that will be included in the FIP | 
|  | 447 | # If both BL32_SOURCES and BL32 are defined, the binary takes precedence | 
|  | 448 | # over the sources. | 
| Jeenu Viswambharan | e35c404 | 2014-05-15 14:40:58 +0100 | [diff] [blame] | 449 | endif | 
|  | 450 |  | 
| Douglas Raillard | 51faada | 2017-02-24 18:14:15 +0000 | [diff] [blame] | 451 | ################################################################################ | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 452 | # Include the platform specific Makefile after the SPD Makefile (the platform | 
|  | 453 | # makefile may use all previous definitions in this file) | 
|  | 454 | ################################################################################ | 
| Jeenu Viswambharan | 2da8d8b | 2014-05-12 15:28:47 +0100 | [diff] [blame] | 455 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 456 | include ${PLAT_MAKEFILE_FULL} | 
| Juan Castillo | 0f21c54 | 2014-06-25 17:26:36 +0100 | [diff] [blame] | 457 |  | 
| Masahiro Yamada | 8012cc5 | 2017-11-04 03:12:28 +0900 | [diff] [blame] | 458 | $(eval $(call MAKE_PREREQ_DIR,${BUILD_PLAT})) | 
|  | 459 |  | 
| Etienne Carriere | 26e63c4 | 2017-11-08 13:48:40 +0100 | [diff] [blame] | 460 | ifeq (${ARM_ARCH_MAJOR},7) | 
|  | 461 | include make_helpers/armv7-a-cpus.mk | 
|  | 462 | endif | 
|  | 463 |  | 
| Masahiro Yamada | 320920c | 2020-01-17 13:44:37 +0900 | [diff] [blame] | 464 | PIE_FOUND		:=	$(findstring --enable-default-pie,${GCC_V_OUTPUT}) | 
|  | 465 | ifneq ($(PIE_FOUND),) | 
|  | 466 | TF_CFLAGS	+=	-fno-PIE | 
|  | 467 | endif | 
|  | 468 |  | 
|  | 469 | ifneq ($(findstring gcc,$(notdir $(LD))),) | 
|  | 470 | PIE_LDFLAGS	+=	-Wl,-pie -Wl,--no-dynamic-linker | 
| Soby Mathew | 3bd17c0 | 2018-08-28 11:13:55 +0100 | [diff] [blame] | 471 | else | 
| Masahiro Yamada | 320920c | 2020-01-17 13:44:37 +0900 | [diff] [blame] | 472 | PIE_LDFLAGS	+=	-pie --no-dynamic-linker | 
|  | 473 | endif | 
|  | 474 |  | 
|  | 475 | ifeq ($(ENABLE_PIE),1) | 
| Masahiro Yamada | 69af7fc | 2020-01-17 13:45:02 +0900 | [diff] [blame] | 476 | ifeq ($(BL2_AT_EL3),1) | 
|  | 477 | ifneq ($(BL2_IN_XIP_MEM),1) | 
|  | 478 | BL2_CFLAGS	+=	-fpie | 
|  | 479 | BL2_LDFLAGS	+=	$(PIE_LDFLAGS) | 
|  | 480 | endif | 
|  | 481 | endif | 
| Masahiro Yamada | 320920c | 2020-01-17 13:44:37 +0900 | [diff] [blame] | 482 | BL31_CFLAGS	+=	-fpie | 
|  | 483 | BL31_LDFLAGS	+=	$(PIE_LDFLAGS) | 
| Masahiro Yamada | d974301 | 2020-01-17 13:45:14 +0900 | [diff] [blame] | 484 | ifeq ($(ARCH),aarch64) | 
|  | 485 | BL32_CFLAGS	+=	-fpie | 
|  | 486 | BL32_LDFLAGS	+=	$(PIE_LDFLAGS) | 
|  | 487 | endif | 
| Soby Mathew | 3bd17c0 | 2018-08-28 11:13:55 +0100 | [diff] [blame] | 488 | endif | 
|  | 489 |  | 
| Sandrine Bailleux | 54035fc | 2016-01-13 14:57:38 +0000 | [diff] [blame] | 490 | # Include the CPU specific operations makefile, which provides default | 
|  | 491 | # values for all CPU errata workarounds and CPU specific optimisations. | 
|  | 492 | # This can be overridden by the platform. | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 493 | include lib/cpus/cpu-ops.mk | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 494 |  | 
| dp-arm | a440900 | 2017-02-15 11:07:55 +0000 | [diff] [blame] | 495 | ifeq (${ARCH},aarch32) | 
|  | 496 | NEED_BL32 := yes | 
|  | 497 |  | 
|  | 498 | ################################################################################ | 
|  | 499 | # Build `AARCH32_SP` as BL32 image for AArch32 | 
|  | 500 | ################################################################################ | 
|  | 501 | ifneq (${AARCH32_SP},none) | 
|  | 502 | # We expect to locate an sp.mk under the specified AARCH32_SP directory | 
|  | 503 | AARCH32_SP_MAKE	:=	$(wildcard bl32/${AARCH32_SP}/${AARCH32_SP}.mk) | 
|  | 504 |  | 
|  | 505 | ifeq (${AARCH32_SP_MAKE},) | 
|  | 506 | $(error Error: No bl32/${AARCH32_SP}/${AARCH32_SP}.mk located) | 
|  | 507 | endif | 
|  | 508 |  | 
|  | 509 | $(info Including ${AARCH32_SP_MAKE}) | 
|  | 510 | include ${AARCH32_SP_MAKE} | 
|  | 511 | endif | 
|  | 512 |  | 
|  | 513 | endif | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 514 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 515 | ################################################################################ | 
| Varun Wadekar | 77f1f7a | 2019-01-31 09:22:30 -0800 | [diff] [blame] | 516 | # Include libc if not overridden | 
|  | 517 | ################################################################################ | 
|  | 518 | ifeq (${OVERRIDE_LIBC},0) | 
|  | 519 | include lib/libc/libc.mk | 
|  | 520 | endif | 
|  | 521 |  | 
|  | 522 | ################################################################################ | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 523 | # Check incompatible options | 
|  | 524 | ################################################################################ | 
|  | 525 |  | 
|  | 526 | ifdef EL3_PAYLOAD_BASE | 
| Antonio Nino Diaz | 68450a6 | 2016-04-06 17:31:57 +0100 | [diff] [blame] | 527 | ifdef PRELOADED_BL33_BASE | 
|  | 528 | $(warning "PRELOADED_BL33_BASE and EL3_PAYLOAD_BASE are \ | 
|  | 529 | incompatible build options. EL3_PAYLOAD_BASE has priority.") | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 530 | endif | 
| Qixiang Xu | 76580f3 | 2017-08-24 11:03:23 +0800 | [diff] [blame] | 531 | ifneq (${GENERATE_COT},0) | 
|  | 532 | $(error "GENERATE_COT and EL3_PAYLOAD_BASE are incompatible build options.") | 
|  | 533 | endif | 
|  | 534 | ifneq (${TRUSTED_BOARD_BOOT},0) | 
|  | 535 | $(error "TRUSTED_BOARD_BOOT and EL3_PAYLOAD_BASE are incompatible build options.") | 
|  | 536 | endif | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 537 | endif | 
|  | 538 |  | 
|  | 539 | ifeq (${NEED_BL33},yes) | 
|  | 540 | ifdef EL3_PAYLOAD_BASE | 
|  | 541 | $(warning "BL33 image is not needed when option \ | 
|  | 542 | BL33_PAYLOAD_BASE is used and won't be added to the FIP file.") | 
|  | 543 | endif | 
| Antonio Nino Diaz | 68450a6 | 2016-04-06 17:31:57 +0100 | [diff] [blame] | 544 | ifdef PRELOADED_BL33_BASE | 
|  | 545 | $(warning "BL33 image is not needed when option \ | 
|  | 546 | PRELOADED_BL33_BASE is used and won't be added to the FIP \ | 
|  | 547 | file.") | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 548 | endif | 
|  | 549 | endif | 
|  | 550 |  | 
| Jeenu Viswambharan | d4593e4 | 2017-01-06 16:14:42 +0000 | [diff] [blame] | 551 | # When building for systems with hardware-assisted coherency, there's no need to | 
|  | 552 | # use USE_COHERENT_MEM. Require that USE_COHERENT_MEM must be set to 0 too. | 
|  | 553 | ifeq ($(HW_ASSISTED_COHERENCY)-$(USE_COHERENT_MEM),1-1) | 
|  | 554 | $(error USE_COHERENT_MEM cannot be enabled with HW_ASSISTED_COHERENCY) | 
|  | 555 | endif | 
| Yatharth Kochar | 1a0a3f0 | 2016-06-28 16:58:26 +0100 | [diff] [blame] | 556 |  | 
| Jiafei Pan | 7d173fc | 2018-03-21 07:20:09 +0000 | [diff] [blame] | 557 | #For now, BL2_IN_XIP_MEM is only supported when BL2_AT_EL3 is 1. | 
|  | 558 | ifeq ($(BL2_AT_EL3)-$(BL2_IN_XIP_MEM),0-1) | 
|  | 559 | $(error "BL2_IN_XIP_MEM is only supported when BL2_AT_EL3 is enabled") | 
|  | 560 | endif | 
|  | 561 |  | 
| Jeenu Viswambharan | 14c6016 | 2018-04-04 16:07:11 +0100 | [diff] [blame] | 562 | # For RAS_EXTENSION, require that EAs are handled in EL3 first | 
|  | 563 | ifeq ($(RAS_EXTENSION),1) | 
|  | 564 | ifneq ($(HANDLE_EA_EL3_FIRST),1) | 
|  | 565 | $(error For RAS_EXTENSION, HANDLE_EA_EL3_FIRST must also be 1) | 
|  | 566 | endif | 
|  | 567 | endif | 
|  | 568 |  | 
| Jeenu Viswambharan | 1a7c1cf | 2017-12-08 12:13:51 +0000 | [diff] [blame] | 569 | # When FAULT_INJECTION_SUPPORT is used, require that RAS_EXTENSION is enabled | 
|  | 570 | ifeq ($(FAULT_INJECTION_SUPPORT),1) | 
|  | 571 | ifneq ($(RAS_EXTENSION),1) | 
|  | 572 | $(error For FAULT_INJECTION_SUPPORT, RAS_EXTENSION must also be 1) | 
|  | 573 | endif | 
|  | 574 | endif | 
|  | 575 |  | 
| Roberto Vargas | ed51b51 | 2018-09-24 17:20:48 +0100 | [diff] [blame] | 576 | # DYN_DISABLE_AUTH can be set only when TRUSTED_BOARD_BOOT=1 | 
| Soby Mathew | 209a60c | 2018-03-26 12:43:37 +0100 | [diff] [blame] | 577 | ifeq ($(DYN_DISABLE_AUTH), 1) | 
|  | 578 | ifeq (${TRUSTED_BOARD_BOOT}, 0) | 
|  | 579 | $(error "TRUSTED_BOARD_BOOT must be enabled for DYN_DISABLE_AUTH to be set.") | 
|  | 580 | endif | 
| Soby Mathew | 209a60c | 2018-03-26 12:43:37 +0100 | [diff] [blame] | 581 | endif | 
|  | 582 |  | 
| Antonio Nino Diaz | b86048c | 2019-02-19 11:53:51 +0000 | [diff] [blame] | 583 | # If pointer authentication is used in the firmware, make sure that all the | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 584 | # registers associated to it are also saved and restored. | 
|  | 585 | # Not doing it would leak the value of the keys used by EL3 to EL1 and S-EL1. | 
| Antonio Nino Diaz | b86048c | 2019-02-19 11:53:51 +0000 | [diff] [blame] | 586 | ifeq ($(ENABLE_PAUTH),1) | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 587 | ifeq ($(CTX_INCLUDE_PAUTH_REGS),0) | 
|  | 588 | $(error Pointer Authentication requires CTX_INCLUDE_PAUTH_REGS=1) | 
|  | 589 | endif | 
|  | 590 | endif | 
|  | 591 |  | 
|  | 592 | ifeq ($(CTX_INCLUDE_PAUTH_REGS),1) | 
|  | 593 | ifneq (${ARCH},aarch64) | 
|  | 594 | $(error CTX_INCLUDE_PAUTH_REGS requires AArch64) | 
| Alexei Fedorov | 06715f8 | 2019-03-13 11:05:07 +0000 | [diff] [blame] | 595 | else | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 596 | $(info CTX_INCLUDE_PAUTH_REGS is an experimental feature) | 
| Alexei Fedorov | 06715f8 | 2019-03-13 11:05:07 +0000 | [diff] [blame] | 597 | endif | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 598 | endif | 
|  | 599 |  | 
|  | 600 | ifeq ($(ENABLE_PAUTH),1) | 
|  | 601 | $(info Pointer Authentication is an experimental feature) | 
|  | 602 | endif | 
|  | 603 |  | 
|  | 604 | ifeq ($(ENABLE_BTI),1) | 
|  | 605 | $(info Branch Protection is an experimental feature) | 
| Antonio Nino Diaz | b86048c | 2019-02-19 11:53:51 +0000 | [diff] [blame] | 606 | endif | 
|  | 607 |  | 
| Justin Chadwell | 9dd9438 | 2019-07-18 14:25:33 +0100 | [diff] [blame] | 608 | ifeq ($(CTX_INCLUDE_MTE_REGS),1) | 
|  | 609 | ifneq (${ARCH},aarch64) | 
|  | 610 | $(error CTX_INCLUDE_MTE_REGS requires AArch64) | 
|  | 611 | else | 
|  | 612 | $(info CTX_INCLUDE_MTE_REGS is an experimental feature) | 
|  | 613 | endif | 
|  | 614 | endif | 
|  | 615 |  | 
| Alexei Fedorov | 8c10529 | 2020-01-23 14:27:38 +0000 | [diff] [blame] | 616 | ifeq ($(MEASURED_BOOT),1) | 
|  | 617 | ifneq (${TRUSTED_BOARD_BOOT},1) | 
|  | 618 | $(error MEASURED_BOOT requires TRUSTED_BOARD_BOOT=1") | 
|  | 619 | else | 
|  | 620 | $(info MEASURED_BOOT is an experimental feature) | 
|  | 621 | endif | 
|  | 622 | endif | 
|  | 623 |  | 
| Petre-Ionut Tudor | 60e8f3c | 2019-11-07 15:18:03 +0000 | [diff] [blame^] | 624 | ifeq (${ARM_XLAT_TABLES_LIB_V1}, 1) | 
|  | 625 | ifeq (${ALLOW_RO_XLAT_TABLES}, 1) | 
|  | 626 | $(error "ALLOW_RO_XLAT_TABLES requires translation tables library v2") | 
|  | 627 | endif | 
|  | 628 | endif | 
|  | 629 |  | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 630 | ################################################################################ | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 631 | # Process platform overrideable behaviour | 
|  | 632 | ################################################################################ | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 633 |  | 
| John Tsichritzis | bd97f83 | 2019-07-05 14:22:12 +0100 | [diff] [blame] | 634 | # Using BL2 implies that a BL33 image also needs to be supplied for the FIP and | 
|  | 635 | # Certificate generation tools. This flag can be overridden by the platform. | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 636 | ifdef BL2_SOURCES | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 637 | ifdef EL3_PAYLOAD_BASE | 
|  | 638 | # If booting an EL3 payload there is no need for a BL33 image | 
|  | 639 | # in the FIP file. | 
|  | 640 | NEED_BL33		:=	no | 
|  | 641 | else | 
| Antonio Nino Diaz | 68450a6 | 2016-04-06 17:31:57 +0100 | [diff] [blame] | 642 | ifdef PRELOADED_BL33_BASE | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 643 | # If booting a BL33 preloaded image there is no need of | 
|  | 644 | # another one in the FIP file. | 
|  | 645 | NEED_BL33		:=	no | 
|  | 646 | else | 
|  | 647 | NEED_BL33		?=	yes | 
|  | 648 | endif | 
|  | 649 | endif | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 650 | endif | 
|  | 651 |  | 
| Masahiro Yamada | 4d045d0 | 2017-04-05 19:11:41 +0900 | [diff] [blame] | 652 | # If SCP_BL2 is given, we always want FIP to include it. | 
|  | 653 | ifdef SCP_BL2 | 
|  | 654 | NEED_SCP_BL2		:=	yes | 
|  | 655 | endif | 
|  | 656 |  | 
| Soby Mathew | 5744e87 | 2017-11-14 14:10:10 +0000 | [diff] [blame] | 657 | # For AArch32, BL31 is not currently supported. | 
|  | 658 | ifneq (${ARCH},aarch32) | 
|  | 659 | ifdef BL31_SOURCES | 
|  | 660 | # When booting an EL3 payload, there is no need to compile the BL31 image nor | 
|  | 661 | # put it in the FIP. | 
|  | 662 | ifndef EL3_PAYLOAD_BASE | 
|  | 663 | NEED_BL31 := yes | 
|  | 664 | endif | 
|  | 665 | endif | 
|  | 666 | endif | 
|  | 667 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 668 | # Process TBB related flags | 
|  | 669 | ifneq (${GENERATE_COT},0) | 
|  | 670 | # Common cert_create options | 
|  | 671 | ifneq (${CREATE_KEYS},0) | 
|  | 672 | $(eval CRT_ARGS += -n) | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 673 | $(eval FWU_CRT_ARGS += -n) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 674 | ifneq (${SAVE_KEYS},0) | 
|  | 675 | $(eval CRT_ARGS += -k) | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 676 | $(eval FWU_CRT_ARGS += -k) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 677 | endif | 
|  | 678 | endif | 
|  | 679 | # Include TBBR makefile (unless the platform indicates otherwise) | 
|  | 680 | ifeq (${INCLUDE_TBBR_MK},1) | 
|  | 681 | include make_helpers/tbbr/tbbr_tools.mk | 
|  | 682 | endif | 
|  | 683 | endif | 
|  | 684 |  | 
| Masahiro Yamada | 1c75d5d | 2016-12-25 13:52:22 +0900 | [diff] [blame] | 685 | ifneq (${FIP_ALIGN},0) | 
|  | 686 | FIP_ARGS += --align ${FIP_ALIGN} | 
|  | 687 | endif | 
|  | 688 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 689 | ################################################################################ | 
| Michalis Pappas | 46e5e03 | 2018-03-20 13:01:27 +0800 | [diff] [blame] | 690 | # Include libraries' Makefile that are used in all BL | 
|  | 691 | ################################################################################ | 
|  | 692 |  | 
|  | 693 | include lib/stack_protector/stack_protector.mk | 
|  | 694 |  | 
|  | 695 | ################################################################################ | 
| dp-arm | 819281e | 2016-05-25 16:20:20 +0100 | [diff] [blame] | 696 | # Auxiliary tools (fiptool, cert_create, etc) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 697 | ################################################################################ | 
| Harry Liebel | f58ad36 | 2014-01-10 18:00:33 +0000 | [diff] [blame] | 698 |  | 
| Juan Castillo | 6f97162 | 2014-10-21 11:30:42 +0100 | [diff] [blame] | 699 | # Variables for use with Certificate Generation Tool | 
|  | 700 | CRTTOOLPATH		?=	tools/cert_create | 
| Evan Lloyd | 42a45b5 | 2015-12-03 11:35:40 +0000 | [diff] [blame] | 701 | CRTTOOL			?=	${CRTTOOLPATH}/cert_create${BIN_EXT} | 
| Juan Castillo | 6f97162 | 2014-10-21 11:30:42 +0100 | [diff] [blame] | 702 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 703 | # Variables for use with Firmware Image Package | 
| dp-arm | 819281e | 2016-05-25 16:20:20 +0100 | [diff] [blame] | 704 | FIPTOOLPATH		?=	tools/fiptool | 
|  | 705 | FIPTOOL			?=	${FIPTOOLPATH}/fiptool${BIN_EXT} | 
| Juan Castillo | 6f97162 | 2014-10-21 11:30:42 +0100 | [diff] [blame] | 706 |  | 
| Antonio Nino Diaz | 26010da | 2018-11-27 14:58:04 +0000 | [diff] [blame] | 707 | # Variables for use with sptool | 
|  | 708 | SPTOOLPATH		?=	tools/sptool | 
|  | 709 | SPTOOL			?=	${SPTOOLPATH}/sptool${BIN_EXT} | 
|  | 710 |  | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 711 | # Variables for use with ROMLIB | 
|  | 712 | ROMLIBPATH		?=	lib/romlib | 
|  | 713 |  | 
| Louis Mayencourt | cfe8391 | 2019-10-16 14:30:51 +0100 | [diff] [blame] | 714 | # Variable for use with Python | 
|  | 715 | PYTHON			?=	python3 | 
|  | 716 |  | 
|  | 717 | # Variables for use with PRINT_MEMORY_MAP | 
|  | 718 | PRINT_MEMORY_MAP_PATH		?=	tools/memory | 
|  | 719 | PRINT_MEMORY_MAP		?=	${PRINT_MEMORY_MAP_PATH}/print_memory_map.py | 
|  | 720 |  | 
| Madhukar Pappireddy | 6de3237 | 2020-01-28 12:41:20 -0600 | [diff] [blame] | 721 | # Variables for use with documentation build using Sphinx tool | 
|  | 722 | DOCS_PATH		?=	docs | 
|  | 723 |  | 
| Soby Mathew | 8a86052 | 2017-02-14 10:05:07 +0000 | [diff] [blame] | 724 | ################################################################################ | 
|  | 725 | # Include BL specific makefiles | 
|  | 726 | ################################################################################ | 
|  | 727 | ifdef BL1_SOURCES | 
|  | 728 | NEED_BL1 := yes | 
|  | 729 | include bl1/bl1.mk | 
|  | 730 | endif | 
|  | 731 |  | 
|  | 732 | ifdef BL2_SOURCES | 
|  | 733 | NEED_BL2 := yes | 
|  | 734 | include bl2/bl2.mk | 
|  | 735 | endif | 
|  | 736 |  | 
| Soby Mathew | 8a86052 | 2017-02-14 10:05:07 +0000 | [diff] [blame] | 737 | ifdef BL2U_SOURCES | 
|  | 738 | NEED_BL2U := yes | 
|  | 739 | include bl2u/bl2u.mk | 
|  | 740 | endif | 
|  | 741 |  | 
| Soby Mathew | 5744e87 | 2017-11-14 14:10:10 +0000 | [diff] [blame] | 742 | ifeq (${NEED_BL31},yes) | 
| Soby Mathew | 8a86052 | 2017-02-14 10:05:07 +0000 | [diff] [blame] | 743 | ifdef BL31_SOURCES | 
| Soby Mathew | 8a86052 | 2017-02-14 10:05:07 +0000 | [diff] [blame] | 744 | include bl31/bl31.mk | 
|  | 745 | endif | 
|  | 746 | endif | 
| Soby Mathew | 8a86052 | 2017-02-14 10:05:07 +0000 | [diff] [blame] | 747 |  | 
| Nishanth Menon | 03b397a | 2016-10-14 01:13:57 +0000 | [diff] [blame] | 748 | ifdef FDT_SOURCES | 
|  | 749 | NEED_FDT := yes | 
|  | 750 | endif | 
|  | 751 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 752 | ################################################################################ | 
|  | 753 | # Build options checks | 
|  | 754 | ################################################################################ | 
| Juan Castillo | b7124ea | 2014-11-04 17:36:40 +0000 | [diff] [blame] | 755 |  | 
| Petre-Ionut Tudor | 60e8f3c | 2019-11-07 15:18:03 +0000 | [diff] [blame^] | 756 | $(eval $(call assert_boolean,ALLOW_RO_XLAT_TABLES)) | 
| Sandrine Bailleux | a9bec67 | 2015-10-30 15:05:17 +0000 | [diff] [blame] | 757 | $(eval $(call assert_boolean,COLD_BOOT_SINGLE_CPU)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 758 | $(eval $(call assert_boolean,CREATE_KEYS)) | 
|  | 759 | $(eval $(call assert_boolean,CTX_INCLUDE_AARCH32_REGS)) | 
|  | 760 | $(eval $(call assert_boolean,CTX_INCLUDE_FPREGS)) | 
| Antonio Nino Diaz | 5283962 | 2019-01-31 11:58:00 +0000 | [diff] [blame] | 761 | $(eval $(call assert_boolean,CTX_INCLUDE_PAUTH_REGS)) | 
| Justin Chadwell | 9dd9438 | 2019-07-18 14:25:33 +0100 | [diff] [blame] | 762 | $(eval $(call assert_boolean,CTX_INCLUDE_MTE_REGS)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 763 | $(eval $(call assert_boolean,DEBUG)) | 
| Soby Mathew | 209a60c | 2018-03-26 12:43:37 +0100 | [diff] [blame] | 764 | $(eval $(call assert_boolean,DYN_DISABLE_AUTH)) | 
| Jeenu Viswambharan | c8b55b8 | 2018-02-06 07:50:18 +0000 | [diff] [blame] | 765 | $(eval $(call assert_boolean,EL3_EXCEPTION_HANDLING)) | 
| Dimitris Papastamos | 0319a97 | 2017-10-16 11:40:10 +0100 | [diff] [blame] | 766 | $(eval $(call assert_boolean,ENABLE_AMU)) | 
| Antonio Nino Diaz | cc8b563 | 2017-04-18 15:16:05 +0100 | [diff] [blame] | 767 | $(eval $(call assert_boolean,ENABLE_ASSERTIONS)) | 
| Jeenu Viswambharan | 5f83591 | 2018-07-31 16:13:33 +0100 | [diff] [blame] | 768 | $(eval $(call assert_boolean,ENABLE_MPAM_FOR_LOWER_ELS)) | 
| Soby Mathew | 3bd17c0 | 2018-08-28 11:13:55 +0100 | [diff] [blame] | 769 | $(eval $(call assert_boolean,ENABLE_PIE)) | 
| Yatharth Kochar | a31d898 | 2016-03-11 14:20:19 +0000 | [diff] [blame] | 770 | $(eval $(call assert_boolean,ENABLE_PMF)) | 
| Yatharth Kochar | 170fb93 | 2016-05-09 18:26:35 +0100 | [diff] [blame] | 771 | $(eval $(call assert_boolean,ENABLE_PSCI_STAT)) | 
| dp-arm | 872be88 | 2016-09-19 11:18:44 +0100 | [diff] [blame] | 772 | $(eval $(call assert_boolean,ENABLE_RUNTIME_INSTRUMENTATION)) | 
| Jeenu Viswambharan | c1232c3 | 2017-07-19 13:52:12 +0100 | [diff] [blame] | 773 | $(eval $(call assert_boolean,ENABLE_SPE_FOR_LOWER_ELS)) | 
| David Cunado | 1a85337 | 2017-10-20 11:30:57 +0100 | [diff] [blame] | 774 | $(eval $(call assert_boolean,ENABLE_SVE_FOR_NS)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 775 | $(eval $(call assert_boolean,ERROR_DEPRECATED)) | 
| Jeenu Viswambharan | 1a7c1cf | 2017-12-08 12:13:51 +0000 | [diff] [blame] | 776 | $(eval $(call assert_boolean,FAULT_INJECTION_SUPPORT)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 777 | $(eval $(call assert_boolean,GENERATE_COT)) | 
| Jeenu Viswambharan | 74dce7f | 2017-09-22 08:32:09 +0100 | [diff] [blame] | 778 | $(eval $(call assert_boolean,GICV2_G0_FOR_EL3)) | 
| Jeenu Viswambharan | 76454ab | 2017-11-30 12:54:15 +0000 | [diff] [blame] | 779 | $(eval $(call assert_boolean,HANDLE_EA_EL3_FIRST)) | 
| Jeenu Viswambharan | 3c251af | 2017-01-04 13:51:42 +0000 | [diff] [blame] | 780 | $(eval $(call assert_boolean,HW_ASSISTED_COHERENCY)) | 
| Alexei Fedorov | 8c10529 | 2020-01-23 14:27:38 +0000 | [diff] [blame] | 781 | $(eval $(call assert_boolean,MEASURED_BOOT)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 782 | $(eval $(call assert_boolean,NS_TIMER_SWITCH)) | 
| Varun Wadekar | 77f1f7a | 2019-01-31 09:22:30 -0800 | [diff] [blame] | 783 | $(eval $(call assert_boolean,OVERRIDE_LIBC)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 784 | $(eval $(call assert_boolean,PL011_GENERIC_UART)) | 
|  | 785 | $(eval $(call assert_boolean,PROGRAMMABLE_RESET_ADDRESS)) | 
|  | 786 | $(eval $(call assert_boolean,PSCI_EXTENDED_STATE_ID)) | 
| Jeenu Viswambharan | 14c6016 | 2018-04-04 16:07:11 +0100 | [diff] [blame] | 787 | $(eval $(call assert_boolean,RAS_EXTENSION)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 788 | $(eval $(call assert_boolean,RESET_TO_BL31)) | 
|  | 789 | $(eval $(call assert_boolean,SAVE_KEYS)) | 
|  | 790 | $(eval $(call assert_boolean,SEPARATE_CODE_AND_RODATA)) | 
| Samuel Holland | f8578e6 | 2018-10-17 21:40:18 -0500 | [diff] [blame] | 791 | $(eval $(call assert_boolean,SEPARATE_NOBITS_REGION)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 792 | $(eval $(call assert_boolean,SPIN_ON_BL1_EXIT)) | 
| Antonio Nino Diaz | 8855e52 | 2019-01-21 11:53:29 +0000 | [diff] [blame] | 793 | $(eval $(call assert_boolean,SPM_MM)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 794 | $(eval $(call assert_boolean,TRUSTED_BOARD_BOOT)) | 
|  | 795 | $(eval $(call assert_boolean,USE_COHERENT_MEM)) | 
| Olivier Deprez | 0ca3913 | 2019-09-19 17:46:46 +0200 | [diff] [blame] | 796 | $(eval $(call assert_boolean,USE_DEBUGFS)) | 
| Louis Mayencourt | 0a6e7e3 | 2019-10-24 15:18:46 +0100 | [diff] [blame] | 797 | $(eval $(call assert_boolean,USE_FCONF_BASED_IO)) | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 798 | $(eval $(call assert_boolean,USE_ROMLIB)) | 
| Masahiro Yamada | bb41eb7 | 2017-05-22 12:11:24 +0900 | [diff] [blame] | 799 | $(eval $(call assert_boolean,USE_TBBR_DEFS)) | 
| Soby Mathew | bcc3c49 | 2017-04-10 22:35:42 +0100 | [diff] [blame] | 800 | $(eval $(call assert_boolean,WARMBOOT_ENABLE_DCACHE_EARLY)) | 
| Roberto Vargas | b1d27b4 | 2017-10-30 14:43:43 +0000 | [diff] [blame] | 801 | $(eval $(call assert_boolean,BL2_AT_EL3)) | 
| Jiafei Pan | 7d173fc | 2018-03-21 07:20:09 +0000 | [diff] [blame] | 802 | $(eval $(call assert_boolean,BL2_IN_XIP_MEM)) | 
| Hadi Asyrafi | b90f207 | 2019-08-20 15:33:27 +0800 | [diff] [blame] | 803 | $(eval $(call assert_boolean,BL2_INV_DCACHE)) | 
| Soby Mathew | c97cba4 | 2019-09-25 14:03:41 +0100 | [diff] [blame] | 804 | $(eval $(call assert_boolean,USE_SPINLOCK_CAS)) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 805 |  | 
| Jeenu Viswambharan | c877b41 | 2017-01-16 16:52:35 +0000 | [diff] [blame] | 806 | $(eval $(call assert_numeric,ARM_ARCH_MAJOR)) | 
|  | 807 | $(eval $(call assert_numeric,ARM_ARCH_MINOR)) | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 808 | $(eval $(call assert_numeric,BRANCH_PROTECTION)) | 
| Jeenu Viswambharan | c877b41 | 2017-01-16 16:52:35 +0000 | [diff] [blame] | 809 |  | 
| Justin Chadwell | aacff74 | 2019-07-29 17:13:10 +0100 | [diff] [blame] | 810 | ifdef KEY_SIZE | 
|  | 811 | $(eval $(call assert_numeric,KEY_SIZE)) | 
|  | 812 | endif | 
|  | 813 |  | 
| Justin Chadwell | 1f46197 | 2019-08-20 11:01:52 +0100 | [diff] [blame] | 814 | ifeq ($(filter $(SANITIZE_UB), on off trap),) | 
|  | 815 | $(error "Invalid value for SANITIZE_UB: can be one of on, off, trap") | 
|  | 816 | endif | 
|  | 817 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 818 | ################################################################################ | 
|  | 819 | # Add definitions to the cpp preprocessor based on the current build options. | 
|  | 820 | # This is done after including the platform specific makefile to allow the | 
|  | 821 | # platform to overwrite the default options | 
|  | 822 | ################################################################################ | 
|  | 823 |  | 
| Petre-Ionut Tudor | 60e8f3c | 2019-11-07 15:18:03 +0000 | [diff] [blame^] | 824 | $(eval $(call add_define,ALLOW_RO_XLAT_TABLES)) | 
| Jeenu Viswambharan | c877b41 | 2017-01-16 16:52:35 +0000 | [diff] [blame] | 825 | $(eval $(call add_define,ARM_ARCH_MAJOR)) | 
|  | 826 | $(eval $(call add_define,ARM_ARCH_MINOR)) | 
| Sandrine Bailleux | a9bec67 | 2015-10-30 15:05:17 +0000 | [diff] [blame] | 827 | $(eval $(call add_define,COLD_BOOT_SINGLE_CPU)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 828 | $(eval $(call add_define,CTX_INCLUDE_AARCH32_REGS)) | 
|  | 829 | $(eval $(call add_define,CTX_INCLUDE_FPREGS)) | 
| Antonio Nino Diaz | 5283962 | 2019-01-31 11:58:00 +0000 | [diff] [blame] | 830 | $(eval $(call add_define,CTX_INCLUDE_PAUTH_REGS)) | 
| Jeenu Viswambharan | c8b55b8 | 2018-02-06 07:50:18 +0000 | [diff] [blame] | 831 | $(eval $(call add_define,EL3_EXCEPTION_HANDLING)) | 
| Justin Chadwell | 9dd9438 | 2019-07-18 14:25:33 +0100 | [diff] [blame] | 832 | $(eval $(call add_define,CTX_INCLUDE_MTE_REGS)) | 
| Dimitris Papastamos | 0319a97 | 2017-10-16 11:40:10 +0100 | [diff] [blame] | 833 | $(eval $(call add_define,ENABLE_AMU)) | 
| Antonio Nino Diaz | cc8b563 | 2017-04-18 15:16:05 +0100 | [diff] [blame] | 834 | $(eval $(call add_define,ENABLE_ASSERTIONS)) | 
| Alexei Fedorov | 9fc5963 | 2019-05-24 12:17:09 +0100 | [diff] [blame] | 835 | $(eval $(call add_define,ENABLE_BTI)) | 
| Jeenu Viswambharan | 5f83591 | 2018-07-31 16:13:33 +0100 | [diff] [blame] | 836 | $(eval $(call add_define,ENABLE_MPAM_FOR_LOWER_ELS)) | 
| Antonio Nino Diaz | b86048c | 2019-02-19 11:53:51 +0000 | [diff] [blame] | 837 | $(eval $(call add_define,ENABLE_PAUTH)) | 
| Soby Mathew | 3bd17c0 | 2018-08-28 11:13:55 +0100 | [diff] [blame] | 838 | $(eval $(call add_define,ENABLE_PIE)) | 
| Yatharth Kochar | a31d898 | 2016-03-11 14:20:19 +0000 | [diff] [blame] | 839 | $(eval $(call add_define,ENABLE_PMF)) | 
| Yatharth Kochar | 170fb93 | 2016-05-09 18:26:35 +0100 | [diff] [blame] | 840 | $(eval $(call add_define,ENABLE_PSCI_STAT)) | 
| dp-arm | 872be88 | 2016-09-19 11:18:44 +0100 | [diff] [blame] | 841 | $(eval $(call add_define,ENABLE_RUNTIME_INSTRUMENTATION)) | 
| Jeenu Viswambharan | c1232c3 | 2017-07-19 13:52:12 +0100 | [diff] [blame] | 842 | $(eval $(call add_define,ENABLE_SPE_FOR_LOWER_ELS)) | 
| David Cunado | 1a85337 | 2017-10-20 11:30:57 +0100 | [diff] [blame] | 843 | $(eval $(call add_define,ENABLE_SVE_FOR_NS)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 844 | $(eval $(call add_define,ERROR_DEPRECATED)) | 
| Jeenu Viswambharan | 1a7c1cf | 2017-12-08 12:13:51 +0000 | [diff] [blame] | 845 | $(eval $(call add_define,FAULT_INJECTION_SUPPORT)) | 
| Jeenu Viswambharan | 74dce7f | 2017-09-22 08:32:09 +0100 | [diff] [blame] | 846 | $(eval $(call add_define,GICV2_G0_FOR_EL3)) | 
| Jeenu Viswambharan | 76454ab | 2017-11-30 12:54:15 +0000 | [diff] [blame] | 847 | $(eval $(call add_define,HANDLE_EA_EL3_FIRST)) | 
| Jeenu Viswambharan | 3c251af | 2017-01-04 13:51:42 +0000 | [diff] [blame] | 848 | $(eval $(call add_define,HW_ASSISTED_COHERENCY)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 849 | $(eval $(call add_define,LOG_LEVEL)) | 
| Alexei Fedorov | 8c10529 | 2020-01-23 14:27:38 +0000 | [diff] [blame] | 850 | $(eval $(call add_define,MEASURED_BOOT)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 851 | $(eval $(call add_define,NS_TIMER_SWITCH)) | 
|  | 852 | $(eval $(call add_define,PL011_GENERIC_UART)) | 
|  | 853 | $(eval $(call add_define,PLAT_${PLAT})) | 
|  | 854 | $(eval $(call add_define,PROGRAMMABLE_RESET_ADDRESS)) | 
|  | 855 | $(eval $(call add_define,PSCI_EXTENDED_STATE_ID)) | 
| Jeenu Viswambharan | 14c6016 | 2018-04-04 16:07:11 +0100 | [diff] [blame] | 856 | $(eval $(call add_define,RAS_EXTENSION)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 857 | $(eval $(call add_define,RESET_TO_BL31)) | 
|  | 858 | $(eval $(call add_define,SEPARATE_CODE_AND_RODATA)) | 
| Samuel Holland | f8578e6 | 2018-10-17 21:40:18 -0500 | [diff] [blame] | 859 | $(eval $(call add_define,SEPARATE_NOBITS_REGION)) | 
| Daniel Boulby | 1dcc28c | 2018-09-18 11:45:51 +0100 | [diff] [blame] | 860 | $(eval $(call add_define,RECLAIM_INIT_CODE)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 861 | $(eval $(call add_define,SPD_${SPD})) | 
|  | 862 | $(eval $(call add_define,SPIN_ON_BL1_EXIT)) | 
| Antonio Nino Diaz | 8855e52 | 2019-01-21 11:53:29 +0000 | [diff] [blame] | 863 | $(eval $(call add_define,SPM_MM)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 864 | $(eval $(call add_define,TRUSTED_BOARD_BOOT)) | 
|  | 865 | $(eval $(call add_define,USE_COHERENT_MEM)) | 
| Olivier Deprez | 0ca3913 | 2019-09-19 17:46:46 +0200 | [diff] [blame] | 866 | $(eval $(call add_define,USE_DEBUGFS)) | 
| Louis Mayencourt | 0a6e7e3 | 2019-10-24 15:18:46 +0100 | [diff] [blame] | 867 | $(eval $(call add_define,USE_FCONF_BASED_IO)) | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 868 | $(eval $(call add_define,USE_ROMLIB)) | 
| Masahiro Yamada | bb41eb7 | 2017-05-22 12:11:24 +0900 | [diff] [blame] | 869 | $(eval $(call add_define,USE_TBBR_DEFS)) | 
| Soby Mathew | bcc3c49 | 2017-04-10 22:35:42 +0100 | [diff] [blame] | 870 | $(eval $(call add_define,WARMBOOT_ENABLE_DCACHE_EARLY)) | 
| Roberto Vargas | b1d27b4 | 2017-10-30 14:43:43 +0000 | [diff] [blame] | 871 | $(eval $(call add_define,BL2_AT_EL3)) | 
| Jiafei Pan | 7d173fc | 2018-03-21 07:20:09 +0000 | [diff] [blame] | 872 | $(eval $(call add_define,BL2_IN_XIP_MEM)) | 
| Hadi Asyrafi | b90f207 | 2019-08-20 15:33:27 +0800 | [diff] [blame] | 873 | $(eval $(call add_define,BL2_INV_DCACHE)) | 
| Soby Mathew | c97cba4 | 2019-09-25 14:03:41 +0100 | [diff] [blame] | 874 | $(eval $(call add_define,USE_SPINLOCK_CAS)) | 
| Jeenu Viswambharan | 2fae4b1 | 2016-10-24 14:31:51 +0100 | [diff] [blame] | 875 |  | 
| Justin Chadwell | 1f46197 | 2019-08-20 11:01:52 +0100 | [diff] [blame] | 876 | ifeq (${SANITIZE_UB},trap) | 
|  | 877 | $(eval $(call add_define,MONITOR_TRAPS)) | 
|  | 878 | endif | 
|  | 879 |  | 
| Sandrine Bailleux | 4c117f6 | 2015-11-26 16:31:34 +0000 | [diff] [blame] | 880 | # Define the EL3_PAYLOAD_BASE flag only if it is provided. | 
|  | 881 | ifdef EL3_PAYLOAD_BASE | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 882 | $(eval $(call add_define,EL3_PAYLOAD_BASE)) | 
|  | 883 | else | 
| Antonio Nino Diaz | 68450a6 | 2016-04-06 17:31:57 +0100 | [diff] [blame] | 884 | # Define the PRELOADED_BL33_BASE flag only if it is provided and | 
|  | 885 | # EL3_PAYLOAD_BASE is not defined, as it has priority. | 
|  | 886 | ifdef PRELOADED_BL33_BASE | 
|  | 887 | $(eval $(call add_define,PRELOADED_BL33_BASE)) | 
| Antonio Nino Diaz | cf2c8a3 | 2016-02-15 14:53:10 +0000 | [diff] [blame] | 888 | endif | 
| Sandrine Bailleux | 4c117f6 | 2015-11-26 16:31:34 +0000 | [diff] [blame] | 889 | endif | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 890 |  | 
| Soby Mathew | 209a60c | 2018-03-26 12:43:37 +0100 | [diff] [blame] | 891 | # Define the DYN_DISABLE_AUTH flag only if set. | 
|  | 892 | ifeq (${DYN_DISABLE_AUTH},1) | 
|  | 893 | $(eval $(call add_define,DYN_DISABLE_AUTH)) | 
|  | 894 | endif | 
|  | 895 |  | 
| Varun Wadekar | c2ad38c | 2019-01-11 14:47:48 -0800 | [diff] [blame] | 896 | ifneq ($(findstring armlink,$(notdir $(LD))),) | 
|  | 897 | $(eval $(call add_define,USE_ARM_LINK)) | 
|  | 898 | endif | 
|  | 899 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 900 | ################################################################################ | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 901 | # Build targets | 
|  | 902 | ################################################################################ | 
|  | 903 |  | 
| Madhukar Pappireddy | 6de3237 | 2020-01-28 12:41:20 -0600 | [diff] [blame] | 904 | .PHONY:	all msg_start clean realclean distclean cscope locate-checkpatch checkcodebase checkpatch fiptool sptool fip fwu_fip certtool dtbs memmap doc | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 905 | .SUFFIXES: | 
|  | 906 |  | 
|  | 907 | all: msg_start | 
|  | 908 |  | 
|  | 909 | msg_start: | 
|  | 910 | @echo "Building ${PLAT}" | 
|  | 911 |  | 
| Soby Mathew | 7a24cba | 2015-10-26 14:29:21 +0000 | [diff] [blame] | 912 | ifeq (${ERROR_DEPRECATED},0) | 
| Julius Werner | d5dfdeb | 2019-07-09 13:49:11 -0700 | [diff] [blame] | 913 | # Check if deprecated declarations and cpp warnings should be treated as error or not. | 
| Varun Wadekar | c2ad38c | 2019-01-11 14:47:48 -0800 | [diff] [blame] | 914 | ifneq ($(findstring clang,$(notdir $(CC))),) | 
|  | 915 | CPPFLAGS		+= 	-Wno-error=deprecated-declarations | 
|  | 916 | else | 
| Dan Handley | bc1a03c | 2018-02-27 16:03:58 +0000 | [diff] [blame] | 917 | CPPFLAGS		+= 	-Wno-error=deprecated-declarations -Wno-error=cpp | 
| Soby Mathew | 7a24cba | 2015-10-26 14:29:21 +0000 | [diff] [blame] | 918 | endif | 
| Julius Werner | d5dfdeb | 2019-07-09 13:49:11 -0700 | [diff] [blame] | 919 | # __ASSEMBLY__ is deprecated in favor of the compiler-builtin __ASSEMBLER__. | 
|  | 920 | ASFLAGS	+= -D__ASSEMBLY__ | 
| Julius Werner | 402b3cf | 2019-07-09 14:02:43 -0700 | [diff] [blame] | 921 | # AARCH32/AARCH64 macros are deprecated in favor of the compiler-builtin __aarch64__. | 
|  | 922 | ifeq (${ARCH},aarch32) | 
|  | 923 | $(eval $(call add_define,AARCH32)) | 
|  | 924 | else | 
|  | 925 | $(eval $(call add_define,AARCH64)) | 
|  | 926 | endif | 
| Julius Werner | d5dfdeb | 2019-07-09 13:49:11 -0700 | [diff] [blame] | 927 | endif # !ERROR_DEPRECATED | 
| Soby Mathew | 7a24cba | 2015-10-26 14:29:21 +0000 | [diff] [blame] | 928 |  | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 929 | $(eval $(call MAKE_LIB_DIRS)) | 
| Roberto Vargas | 61f72a3 | 2018-05-08 10:27:10 +0100 | [diff] [blame] | 930 | $(eval $(call MAKE_LIB,c)) | 
| Roberto Vargas | 5fee028 | 2018-05-08 10:27:10 +0100 | [diff] [blame] | 931 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 932 | # Expand build macros for the different images | 
|  | 933 | ifeq (${NEED_BL1},yes) | 
|  | 934 | $(eval $(call MAKE_BL,1)) | 
|  | 935 | endif | 
|  | 936 |  | 
|  | 937 | ifeq (${NEED_BL2},yes) | 
| Roberto Vargas | c9b31ae | 2018-01-02 11:23:41 +0000 | [diff] [blame] | 938 | ifeq (${BL2_AT_EL3}, 0) | 
|  | 939 | FIP_BL2_ARGS := tb-fw | 
|  | 940 | endif | 
|  | 941 |  | 
| Masahiro Yamada | 33950dd | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 942 | $(if ${BL2}, $(eval $(call TOOL_ADD_IMG,bl2,--${FIP_BL2_ARGS})),\ | 
| Roberto Vargas | c9b31ae | 2018-01-02 11:23:41 +0000 | [diff] [blame] | 943 | $(eval $(call MAKE_BL,2,${FIP_BL2_ARGS}))) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 944 | endif | 
|  | 945 |  | 
| Masahiro Yamada | 4d045d0 | 2017-04-05 19:11:41 +0900 | [diff] [blame] | 946 | ifeq (${NEED_SCP_BL2},yes) | 
| Masahiro Yamada | 33950dd | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 947 | $(eval $(call TOOL_ADD_IMG,scp_bl2,--scp-fw)) | 
| Masahiro Yamada | 4d045d0 | 2017-04-05 19:11:41 +0900 | [diff] [blame] | 948 | endif | 
|  | 949 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 950 | ifeq (${NEED_BL31},yes) | 
|  | 951 | BL31_SOURCES += ${SPD_SOURCES} | 
| Masahiro Yamada | 33950dd | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 952 | $(if ${BL31}, $(eval $(call TOOL_ADD_IMG,bl31,--soc-fw)),\ | 
| Juan Castillo | 8f0617e | 2016-01-05 11:55:36 +0000 | [diff] [blame] | 953 | $(eval $(call MAKE_BL,31,soc-fw))) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 954 | endif | 
|  | 955 |  | 
| Juan Castillo | 70d1fc5 | 2015-11-12 10:59:26 +0000 | [diff] [blame] | 956 | # If a BL32 image is needed but neither BL32 nor BL32_SOURCES is defined, the | 
| Masahiro Yamada | c939d13 | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 957 | # build system will call TOOL_ADD_IMG to print a warning message and abort the | 
| Juan Castillo | 70d1fc5 | 2015-11-12 10:59:26 +0000 | [diff] [blame] | 958 | # process. Note that the dependency on BL32 applies to the FIP only. | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 959 | ifeq (${NEED_BL32},yes) | 
| Masahiro Yamada | 9cd1523 | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 960 |  | 
|  | 961 | BUILD_BL32 := $(if $(BL32),,$(if $(BL32_SOURCES),1)) | 
|  | 962 |  | 
|  | 963 | $(if ${BUILD_BL32}, $(eval $(call MAKE_BL,32,tos-fw)),\ | 
| Masahiro Yamada | 33950dd | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 964 | $(eval $(call TOOL_ADD_IMG,bl32,--tos-fw))) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 965 | endif | 
|  | 966 |  | 
|  | 967 | # Add the BL33 image if required by the platform | 
|  | 968 | ifeq (${NEED_BL33},yes) | 
| Masahiro Yamada | 33950dd | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 969 | $(eval $(call TOOL_ADD_IMG,bl33,--nt-fw)) | 
| Juan Castillo | db6071c | 2015-01-13 12:21:04 +0000 | [diff] [blame] | 970 | endif | 
|  | 971 |  | 
| Yatharth Kochar | 9003fa0 | 2015-10-14 15:27:24 +0100 | [diff] [blame] | 972 | ifeq (${NEED_BL2U},yes) | 
| Masahiro Yamada | 33950dd | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 973 | $(if ${BL2U}, $(eval $(call TOOL_ADD_IMG,bl2u,--ap-fwu-cfg,FWU_)),\ | 
| Masahiro Yamada | 1dc0714 | 2018-01-26 11:42:01 +0900 | [diff] [blame] | 974 | $(eval $(call MAKE_BL,2u,ap-fwu-cfg,FWU_))) | 
| Yatharth Kochar | 9003fa0 | 2015-10-14 15:27:24 +0100 | [diff] [blame] | 975 | endif | 
|  | 976 |  | 
| Nishanth Menon | 03b397a | 2016-10-14 01:13:57 +0000 | [diff] [blame] | 977 | # Expand build macros for the different images | 
|  | 978 | ifeq (${NEED_FDT},yes) | 
| Soby Mathew | 38c14d8 | 2017-12-14 17:44:56 +0000 | [diff] [blame] | 979 | $(eval $(call MAKE_DTBS,$(BUILD_PLAT)/fdts,$(FDT_SOURCES))) | 
| Nishanth Menon | 03b397a | 2016-10-14 01:13:57 +0000 | [diff] [blame] | 980 | endif | 
|  | 981 |  | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 982 | locate-checkpatch: | 
|  | 983 | ifndef CHECKPATCH | 
| Etienne Carriere | 66079b0 | 2017-08-23 15:44:01 +0200 | [diff] [blame] | 984 | $(error "Please set CHECKPATCH to point to the Linux checkpatch.pl file, eg: CHECKPATCH=../linux/scripts/checkpatch.pl") | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 985 | else | 
|  | 986 | ifeq (,$(wildcard ${CHECKPATCH})) | 
| Etienne Carriere | 66079b0 | 2017-08-23 15:44:01 +0200 | [diff] [blame] | 987 | $(error "The file CHECKPATCH points to cannot be found, use eg: CHECKPATCH=../linux/scripts/checkpatch.pl") | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 988 | endif | 
|  | 989 | endif | 
|  | 990 |  | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 991 | clean: | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 992 | @echo "  CLEAN" | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 993 | $(call SHELL_REMOVE_DIR,${BUILD_PLAT}) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 994 | ${Q}${MAKE} --no-print-directory -C ${FIPTOOLPATH} clean | 
|  | 995 | ${Q}${MAKE} PLAT=${PLAT} --no-print-directory -C ${CRTTOOLPATH} clean | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 996 | ${Q}${MAKE} --no-print-directory -C ${ROMLIBPATH} clean | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 997 |  | 
| James Morrissey | eaaeece | 2013-11-01 13:56:59 +0000 | [diff] [blame] | 998 | realclean distclean: | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 999 | @echo "  REALCLEAN" | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1000 | $(call SHELL_REMOVE_DIR,${BUILD_BASE}) | 
|  | 1001 | $(call SHELL_DELETE_ALL, ${CURDIR}/cscope.*) | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1002 | ${Q}${MAKE} --no-print-directory -C ${FIPTOOLPATH} clean | 
| Antonio Nino Diaz | 26010da | 2018-11-27 14:58:04 +0000 | [diff] [blame] | 1003 | ${Q}${MAKE} --no-print-directory -C ${SPTOOLPATH} clean | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1004 | ${Q}${MAKE} PLAT=${PLAT} --no-print-directory -C ${CRTTOOLPATH} clean | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 1005 | ${Q}${MAKE} --no-print-directory -C ${ROMLIBPATH} clean | 
| Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 1006 |  | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 1007 | checkcodebase:		locate-checkpatch | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1008 | @echo "  CHECKING STYLE" | 
| Dan Handley | 1a41e8c | 2016-06-02 18:21:02 +0100 | [diff] [blame] | 1009 | @if test -d .git ; then						\ | 
| Paul Beesley | 1ef3551 | 2019-03-07 16:42:31 +0000 | [diff] [blame] | 1010 | git ls-files | grep -E -v 'libfdt|libc|docs|\.rst' |	\ | 
| Dan Handley | 1a41e8c | 2016-06-02 18:21:02 +0100 | [diff] [blame] | 1011 | while read GIT_FILE ;					\ | 
|  | 1012 | do ${CHECKPATCH} ${CHECKCODE_ARGS} -f $$GIT_FILE ;	\ | 
|  | 1013 | done ;							\ | 
|  | 1014 | else								\ | 
|  | 1015 | find . -type f -not -iwholename "*.git*"		\ | 
|  | 1016 | -not -iwholename "*build*"				\ | 
|  | 1017 | -not -iwholename "*libfdt*"				\ | 
| Roberto Vargas | 61f72a3 | 2018-05-08 10:27:10 +0100 | [diff] [blame] | 1018 | -not -iwholename "*libc*"				\ | 
| Dan Handley | 1a41e8c | 2016-06-02 18:21:02 +0100 | [diff] [blame] | 1019 | -not -iwholename "*docs*"				\ | 
| Paul Beesley | 1ef3551 | 2019-03-07 16:42:31 +0000 | [diff] [blame] | 1020 | -not -iwholename "*.rst"				\ | 
| Dan Handley | 1a41e8c | 2016-06-02 18:21:02 +0100 | [diff] [blame] | 1021 | -exec ${CHECKPATCH} ${CHECKCODE_ARGS} -f {} \; ;	\ | 
|  | 1022 | fi | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 1023 |  | 
|  | 1024 | checkpatch:		locate-checkpatch | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1025 | @echo "  CHECKING STYLE" | 
| Yann Gautier | 02a76d5 | 2019-03-08 15:44:00 +0100 | [diff] [blame] | 1026 | @if test -n "${CHECKPATCH_OPTS}"; then				\ | 
|  | 1027 | echo "    with ${CHECKPATCH_OPTS} option(s)";		\ | 
|  | 1028 | fi | 
| Antonio Nino Diaz | 51d2893 | 2018-01-29 12:00:31 +0000 | [diff] [blame] | 1029 | ${Q}COMMON_COMMIT=$$(git merge-base HEAD ${BASE_COMMIT});	\ | 
|  | 1030 | for commit in `git rev-list $$COMMON_COMMIT..HEAD`; do		\ | 
|  | 1031 | printf "\n[*] Checking style of '$$commit'\n\n";	\ | 
|  | 1032 | git log --format=email "$$commit~..$$commit"		\ | 
| Yann Gautier | 02a76d5 | 2019-03-08 15:44:00 +0100 | [diff] [blame] | 1033 | -- ${CHECK_PATHS} |				\ | 
|  | 1034 | ${CHECKPATCH} ${CHECKPATCH_OPTS} - || true;	\ | 
| Antonio Nino Diaz | 51d2893 | 2018-01-29 12:00:31 +0000 | [diff] [blame] | 1035 | git diff --format=email "$$commit~..$$commit"		\ | 
| Yann Gautier | 02a76d5 | 2019-03-08 15:44:00 +0100 | [diff] [blame] | 1036 | -- ${CHECK_PATHS} |				\ | 
|  | 1037 | ${CHECKPATCH}  ${CHECKPATCH_OPTS} - || true;	\ | 
| Antonio Nino Diaz | 51d2893 | 2018-01-29 12:00:31 +0000 | [diff] [blame] | 1038 | done | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1039 |  | 
|  | 1040 | certtool: ${CRTTOOL} | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 1041 |  | 
| Juan Castillo | 6f97162 | 2014-10-21 11:30:42 +0100 | [diff] [blame] | 1042 | .PHONY: ${CRTTOOL} | 
|  | 1043 | ${CRTTOOL}: | 
| Sandrine Bailleux | 3bff910 | 2020-01-15 10:23:25 +0100 | [diff] [blame] | 1044 | ${Q}${MAKE} PLAT=${PLAT} USE_TBBR_DEFS=${USE_TBBR_DEFS} COT=${COT} --no-print-directory -C ${CRTTOOLPATH} | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1045 | @${ECHO_BLANK_LINE} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1046 | @echo "Built $@ successfully" | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1047 | @${ECHO_BLANK_LINE} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1048 |  | 
|  | 1049 | ifneq (${GENERATE_COT},0) | 
|  | 1050 | certificates: ${CRT_DEPS} ${CRTTOOL} | 
|  | 1051 | ${Q}${CRTTOOL} ${CRT_ARGS} | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1052 | @${ECHO_BLANK_LINE} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1053 | @echo "Built $@ successfully" | 
|  | 1054 | @echo "Certificates can be found in ${BUILD_PLAT}" | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1055 | @${ECHO_BLANK_LINE} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1056 | endif | 
|  | 1057 |  | 
|  | 1058 | ${BUILD_PLAT}/${FIP_NAME}: ${FIP_DEPS} ${FIPTOOL} | 
| dp-arm | 819281e | 2016-05-25 16:20:20 +0100 | [diff] [blame] | 1059 | ${Q}${FIPTOOL} create ${FIP_ARGS} $@ | 
|  | 1060 | ${Q}${FIPTOOL} info $@ | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1061 | @${ECHO_BLANK_LINE} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1062 | @echo "Built $@ successfully" | 
| Evan Lloyd | f1477d4 | 2015-12-02 18:33:55 +0000 | [diff] [blame] | 1063 | @${ECHO_BLANK_LINE} | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1064 |  | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1065 | ifneq (${GENERATE_COT},0) | 
|  | 1066 | fwu_certificates: ${FWU_CRT_DEPS} ${CRTTOOL} | 
|  | 1067 | ${Q}${CRTTOOL} ${FWU_CRT_ARGS} | 
| Evan Lloyd | 052ab52 | 2017-04-11 16:52:00 +0100 | [diff] [blame] | 1068 | @${ECHO_BLANK_LINE} | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1069 | @echo "Built $@ successfully" | 
|  | 1070 | @echo "FWU certificates can be found in ${BUILD_PLAT}" | 
| Evan Lloyd | 052ab52 | 2017-04-11 16:52:00 +0100 | [diff] [blame] | 1071 | @${ECHO_BLANK_LINE} | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1072 | endif | 
|  | 1073 |  | 
|  | 1074 | ${BUILD_PLAT}/${FWU_FIP_NAME}: ${FWU_FIP_DEPS} ${FIPTOOL} | 
| dp-arm | 819281e | 2016-05-25 16:20:20 +0100 | [diff] [blame] | 1075 | ${Q}${FIPTOOL} create ${FWU_FIP_ARGS} $@ | 
|  | 1076 | ${Q}${FIPTOOL} info $@ | 
| Evan Lloyd | 052ab52 | 2017-04-11 16:52:00 +0100 | [diff] [blame] | 1077 | @${ECHO_BLANK_LINE} | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1078 | @echo "Built $@ successfully" | 
| Evan Lloyd | 052ab52 | 2017-04-11 16:52:00 +0100 | [diff] [blame] | 1079 | @${ECHO_BLANK_LINE} | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1080 |  | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1081 | fiptool: ${FIPTOOL} | 
|  | 1082 | fip: ${BUILD_PLAT}/${FIP_NAME} | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1083 | fwu_fip: ${BUILD_PLAT}/${FWU_FIP_NAME} | 
| Juan Castillo | 6f97162 | 2014-10-21 11:30:42 +0100 | [diff] [blame] | 1084 |  | 
| Sandrine Bailleux | 07deed4 | 2014-10-27 17:10:46 +0000 | [diff] [blame] | 1085 | .PHONY: ${FIPTOOL} | 
| Harry Liebel | f58ad36 | 2014-01-10 18:00:33 +0000 | [diff] [blame] | 1086 | ${FIPTOOL}: | 
| dp-arm | 819281e | 2016-05-25 16:20:20 +0100 | [diff] [blame] | 1087 | ${Q}${MAKE} CPPFLAGS="-DVERSION='\"${VERSION_STRING}\"'" --no-print-directory -C ${FIPTOOLPATH} | 
| Harry Liebel | f58ad36 | 2014-01-10 18:00:33 +0000 | [diff] [blame] | 1088 |  | 
| Antonio Nino Diaz | 26010da | 2018-11-27 14:58:04 +0000 | [diff] [blame] | 1089 | sptool: ${SPTOOL} | 
|  | 1090 | .PHONY: ${SPTOOL} | 
|  | 1091 | ${SPTOOL}: | 
|  | 1092 | ${Q}${MAKE} CPPFLAGS="-DVERSION='\"${VERSION_STRING}\"'" --no-print-directory -C ${SPTOOLPATH} | 
|  | 1093 |  | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 1094 | .PHONY: libraries | 
|  | 1095 | romlib.bin: libraries | 
| John Tsichritzis | bbb24f6 | 2019-05-21 15:47:37 +0100 | [diff] [blame] | 1096 | ${Q}${MAKE} PLAT_DIR=${PLAT_DIR} BUILD_PLAT=${BUILD_PLAT} ENABLE_BTI=${ENABLE_BTI} ARM_ARCH_MINOR=${ARM_ARCH_MINOR} INCLUDES='${INCLUDES}' DEFINES='${DEFINES}' --no-print-directory -C ${ROMLIBPATH} all | 
| Roberto Vargas | 5accce5 | 2018-05-22 16:05:42 +0100 | [diff] [blame] | 1097 |  | 
| Louis Mayencourt | cfe8391 | 2019-10-16 14:30:51 +0100 | [diff] [blame] | 1098 | # Call print_memory_map tool | 
|  | 1099 | memmap: all | 
|  | 1100 | ${Q}${PYTHON} $(PRINT_MEMORY_MAP) $(BUILD_PLAT) | 
|  | 1101 |  | 
| Madhukar Pappireddy | 6de3237 | 2020-01-28 12:41:20 -0600 | [diff] [blame] | 1102 | doc: | 
|  | 1103 | @echo "  BUILD DOCUMENTATION" | 
|  | 1104 | ${Q}${MAKE} --no-print-directory -C ${DOCS_PATH} html | 
|  | 1105 |  | 
| Joakim Bech | 35fab8c | 2014-01-23 14:51:49 +0100 | [diff] [blame] | 1106 | cscope: | 
|  | 1107 | @echo "  CSCOPE" | 
|  | 1108 | ${Q}find ${CURDIR} -name "*.[chsS]" > cscope.files | 
|  | 1109 | ${Q}cscope -b -q -k | 
|  | 1110 |  | 
| Ryan Harkin | 72ee331 | 2014-01-15 16:55:07 +0000 | [diff] [blame] | 1111 | help: | 
| John Tsichritzis | 7c23126 | 2019-05-21 15:57:31 +0100 | [diff] [blame] | 1112 | @echo "usage: ${MAKE} [PLAT=<platform>] [OPTIONS] [TARGET]" | 
| Ryan Harkin | 72ee331 | 2014-01-15 16:55:07 +0000 | [diff] [blame] | 1113 | @echo "" | 
|  | 1114 | @echo "PLAT is used to specify which platform you wish to build." | 
| Sandrine Bailleux | 08c7ed0 | 2014-03-21 13:16:35 +0000 | [diff] [blame] | 1115 | @echo "If no platform is specified, PLAT defaults to: ${DEFAULT_PLAT}" | 
| Ryan Harkin | 72ee331 | 2014-01-15 16:55:07 +0000 | [diff] [blame] | 1116 | @echo "" | 
| John Tsichritzis | 7c23126 | 2019-05-21 15:57:31 +0100 | [diff] [blame] | 1117 | @echo "platform = ${PLATFORM_LIST}" | 
|  | 1118 | @echo "" | 
| Sandrine Bailleux | 1b57859 | 2015-02-18 16:18:00 +0000 | [diff] [blame] | 1119 | @echo "Please refer to the User Guide for a list of all supported options." | 
|  | 1120 | @echo "Note that the build system doesn't track dependencies for build " | 
|  | 1121 | @echo "options. Therefore, if any of the build options are changed " | 
|  | 1122 | @echo "from a previous build, a clean build must be performed." | 
|  | 1123 | @echo "" | 
| Ryan Harkin | 72ee331 | 2014-01-15 16:55:07 +0000 | [diff] [blame] | 1124 | @echo "Supported Targets:" | 
| Sandrine Bailleux | 1b57859 | 2015-02-18 16:18:00 +0000 | [diff] [blame] | 1125 | @echo "  all            Build all individual bootloader binaries" | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 1126 | @echo "  bl1            Build the BL1 binary" | 
| Jeenu Viswambharan | 8aa559c | 2014-02-21 11:42:08 +0000 | [diff] [blame] | 1127 | @echo "  bl2            Build the BL2 binary" | 
| Yatharth Kochar | 9003fa0 | 2015-10-14 15:27:24 +0100 | [diff] [blame] | 1128 | @echo "  bl2u           Build the BL2U binary" | 
| Juan Castillo | d178637 | 2015-12-14 09:35:25 +0000 | [diff] [blame] | 1129 | @echo "  bl31           Build the BL31 binary" | 
| Soby Mathew | 9d29c22 | 2016-05-05 14:33:33 +0100 | [diff] [blame] | 1130 | @echo "  bl32           Build the BL32 binary. If ARCH=aarch32, then " | 
|  | 1131 | @echo "                 this builds secure payload specified by AARCH32_SP" | 
| Juan Castillo | 73c99d4 | 2015-08-18 14:23:04 +0100 | [diff] [blame] | 1132 | @echo "  certificates   Build the certificates (requires 'GENERATE_COT=1')" | 
| Sandrine Bailleux | 1b57859 | 2015-02-18 16:18:00 +0000 | [diff] [blame] | 1133 | @echo "  fip            Build the Firmware Image Package (FIP)" | 
| Yatharth Kochar | 0191262 | 2015-10-12 12:33:47 +0100 | [diff] [blame] | 1134 | @echo "  fwu_fip        Build the FWU Firmware Image Package (FIP)" | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 1135 | @echo "  checkcodebase  Check the coding style of the entire source tree" | 
|  | 1136 | @echo "  checkpatch     Check the coding style on changes in the current" | 
|  | 1137 | @echo "                 branch against BASE_COMMIT (default origin/master)" | 
|  | 1138 | @echo "  clean          Clean the build for the selected platform" | 
| Harry Liebel | f58ad36 | 2014-01-10 18:00:33 +0000 | [diff] [blame] | 1139 | @echo "  cscope         Generate cscope index" | 
| Ian Spray | 36eaaf3 | 2014-01-30 17:25:28 +0000 | [diff] [blame] | 1140 | @echo "  distclean      Remove all build artifacts for all platforms" | 
| Juan Castillo | 6f97162 | 2014-10-21 11:30:42 +0100 | [diff] [blame] | 1141 | @echo "  certtool       Build the Certificate generation tool" | 
| Andreas Färber | 59dead2 | 2016-10-10 05:18:49 +0200 | [diff] [blame] | 1142 | @echo "  fiptool        Build the Firmware Image Package (FIP) creation tool" | 
| Antonio Nino Diaz | 26010da | 2018-11-27 14:58:04 +0000 | [diff] [blame] | 1143 | @echo "  sptool         Build the Secure Partition Package creation tool" | 
| Soby Mathew | 38c14d8 | 2017-12-14 17:44:56 +0000 | [diff] [blame] | 1144 | @echo "  dtbs           Build the Device Tree Blobs (if required for the platform)" | 
| Louis Mayencourt | cfe8391 | 2019-10-16 14:30:51 +0100 | [diff] [blame] | 1145 | @echo "  memmap         Print the memory map of the built binaries" | 
| Madhukar Pappireddy | 6de3237 | 2020-01-28 12:41:20 -0600 | [diff] [blame] | 1146 | @echo "  doc            Build html based documentation using Sphinx tool" | 
| Ryan Harkin | 72ee331 | 2014-01-15 16:55:07 +0000 | [diff] [blame] | 1147 | @echo "" | 
| Sandrine Bailleux | 1b57859 | 2015-02-18 16:18:00 +0000 | [diff] [blame] | 1148 | @echo "Note: most build targets require PLAT to be set to a specific platform." | 
| Ryan Harkin | 72ee331 | 2014-01-15 16:55:07 +0000 | [diff] [blame] | 1149 | @echo "" | 
|  | 1150 | @echo "example: build all targets for the FVP platform:" | 
|  | 1151 | @echo "  CROSS_COMPILE=aarch64-none-elf- make PLAT=fvp all" |