blob: eb1bb0aea71c87c60fec8f3087c65f3af8762ca1 [file] [log] [blame]
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +01001#
Jeenu Viswambharanc877b412017-01-16 16:52:35 +00002# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +01003#
dp-arm82cb2c12017-05-03 09:38:09 +01004# SPDX-License-Identifier: BSD-3-Clause
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +01005#
6
7# Default, static values for build variables, listed in alphabetic order.
8# Dependencies between build options, if any, are handled in the top-level
9# Makefile, after this file is included. This ensures that the former is better
10# poised to handle dependencies, as all build variables would have a default
11# value by then.
12
13# The AArch32 Secure Payload to be built as BL32 image
14AARCH32_SP := none
15
16# The Target build architecture. Supported values are: aarch64, aarch32.
17ARCH := aarch64
18
Jeenu Viswambharanc877b412017-01-16 16:52:35 +000019# ARM Architecture major and minor versions: 8.0 by default.
20ARM_ARCH_MAJOR := 8
21ARM_ARCH_MINOR := 0
22
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010023# Determine the version of ARM GIC architecture to use for interrupt management
24# in EL3. The platform port can change this value if needed.
25ARM_GIC_ARCH := 2
26
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010027# Base commit to perform code check on
28BASE_COMMIT := origin/master
29
30# By default, consider that the platform may release several CPUs out of reset.
31# The platform Makefile is free to override this value.
32COLD_BOOT_SINGLE_CPU := 0
33
Julius Werner3429c772017-06-09 15:17:15 -070034# Flag to compile in coreboot support code. Exclude by default. The coreboot
35# Makefile system will set this when compiling TF as part of a coreboot image.
36COREBOOT := 0
37
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010038# For Chain of Trust
39CREATE_KEYS := 1
40
41# Build flag to include AArch32 registers in cpu context save and restore during
42# world switch. This flag must be set to 0 for AArch64-only platforms.
43CTX_INCLUDE_AARCH32_REGS := 1
44
45# Include FP registers in cpu context
46CTX_INCLUDE_FPREGS := 0
47
48# Debug build
49DEBUG := 0
50
51# Build platform
52DEFAULT_PLAT := fvp
53
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010054# Flag to enable Performance Measurement Framework
55ENABLE_PMF := 0
56
57# Flag to enable PSCI STATs functionality
58ENABLE_PSCI_STAT := 0
59
60# Flag to enable runtime instrumentation using PMF
61ENABLE_RUNTIME_INSTRUMENTATION := 0
62
Douglas Raillard51faada2017-02-24 18:14:15 +000063# Flag to enable stack corruption protection
64ENABLE_STACK_PROTECTOR := 0
65
Jeenu Viswambharan21b818c2017-09-22 08:32:10 +010066# Flag to enable exception handling in EL3
67EL3_EXCEPTION_HANDLING := 0
68
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010069# Build flag to treat usage of deprecated platform and framework APIs as error.
70ERROR_DEPRECATED := 0
71
Masahiro Yamada1c75d5d2016-12-25 13:52:22 +090072# Byte alignment that each component in FIP is aligned to
73FIP_ALIGN := 0
74
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010075# Default FIP file name
76FIP_NAME := fip.bin
77
78# Default FWU_FIP file name
79FWU_FIP_NAME := fwu_fip.bin
80
81# For Chain of Trust
82GENERATE_COT := 0
83
Jeenu Viswambharan74dce7f2017-09-22 08:32:09 +010084# Hint platform interrupt control layer that Group 0 interrupts are for EL3. By
85# default, they are for Secure EL1.
86GICV2_G0_FOR_EL3 := 0
87
Jeenu Viswambharan3c251af2017-01-04 13:51:42 +000088# Whether system coherency is managed in hardware, without explicit software
89# operations.
90HW_ASSISTED_COHERENCY := 0
91
Soby Mathew20917552017-08-31 11:49:32 +010092# Set the default algorithm for the generation of Trusted Board Boot keys
93KEY_ALG := rsa
94
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +010095# Flag to enable new version of image loading
96LOAD_IMAGE_V2 := 0
97
Julius Werner9536bae2017-07-31 18:15:11 -070098# Use the new console API that allows registering more than one console instance
99# at once. Use = instead of := to dynamically default to ERROR_DEPRECATED.
100MULTI_CONSOLE_API = $(ERROR_DEPRECATED)
101
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +0100102# NS timer register save and restore
103NS_TIMER_SWITCH := 0
104
105# Build PL011 UART driver in minimal generic UART mode
106PL011_GENERIC_UART := 0
107
108# By default, consider that the platform's reset address is not programmable.
109# The platform Makefile is free to override this value.
110PROGRAMMABLE_RESET_ADDRESS := 0
111
112# Flag used to choose the power state format viz Extended State-ID or the
113# Original format.
114PSCI_EXTENDED_STATE_ID := 0
115
116# By default, BL1 acts as the reset handler, not BL31
117RESET_TO_BL31 := 0
118
119# For Chain of Trust
120SAVE_KEYS := 0
121
Jeenu Viswambharanb7cb1332017-10-16 08:43:14 +0100122# Software Delegated Exception support
123SDEI_SUPPORT := 0
124
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +0100125# Whether code and read-only data should be put on separate memory pages. The
126# platform Makefile is free to override this value.
127SEPARATE_CODE_AND_RODATA := 0
128
129# SPD choice
130SPD := none
131
Antonio Nino Diaz2fccb222017-10-24 10:07:35 +0100132# For including the Secure Partition Manager
133ENABLE_SPM := 0
134
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +0100135# Flag to introduce an infinite loop in BL1 just before it exits into the next
136# image. This is meant to help debugging the post-BL2 phase.
137SPIN_ON_BL1_EXIT := 0
138
139# Flags to build TF with Trusted Boot support
140TRUSTED_BOARD_BOOT := 0
141
142# Build option to choose whether Trusted firmware uses Coherent memory or not.
143USE_COHERENT_MEM := 1
144
Masahiro Yamadabb41eb72017-05-22 12:11:24 +0900145# Use tbbr_oid.h instead of platform_oid.h
146USE_TBBR_DEFS = $(ERROR_DEPRECATED)
147
Jeenu Viswambharan2fae4b12016-10-24 14:31:51 +0100148# Build verbosity
149V := 0
Soby Mathewbcc3c492017-04-10 22:35:42 +0100150
151# Whether to enable D-Cache early during warm boot. This is usually
152# applicable for platforms wherein interconnect programming is not
153# required to enable cache coherency after warm reset (eg: single cluster
154# platforms).
155WARMBOOT_ENABLE_DCACHE_EARLY := 0
dp-armd832aee2017-05-23 09:32:49 +0100156
Dimitris Papastamosc776dee2017-10-13 15:07:45 +0100157# Build option to enable/disable the Statistical Profiling Extensions
dp-armd832aee2017-05-23 09:32:49 +0100158ENABLE_SPE_FOR_LOWER_ELS := 1
159
Dimitris Papastamosc776dee2017-10-13 15:07:45 +0100160# SPE is only supported on AArch64 so disable it on AArch32.
dp-armd832aee2017-05-23 09:32:49 +0100161ifeq (${ARCH},aarch32)
162 override ENABLE_SPE_FOR_LOWER_ELS := 0
dp-armd832aee2017-05-23 09:32:49 +0100163endif
Dimitris Papastamos0319a972017-10-16 11:40:10 +0100164
165ENABLE_AMU := 0
David Cunado1a853372017-10-20 11:30:57 +0100166
167# By default, enable Scalable Vector Extension if implemented for Non-secure
168# lower ELs
169# Note SVE is only supported on AArch64 - therefore do not enable in AArch32
170ifneq (${ARCH},aarch32)
171 ENABLE_SVE_FOR_NS := 1
172else
173 override ENABLE_SVE_FOR_NS := 0
174endif