blob: d184097b2b22470f222c81eddba8e74f08ab4a45 [file] [log] [blame]
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00001#
Ruari Phippscda50dd2020-08-24 11:32:32 +01002# Copyright (c) 2018-2021, Arm Limited. All rights reserved.
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
Alexei Fedorov34057072020-06-19 14:25:43 +01007include branch_protection.mk
Ruari Phippscda50dd2020-08-24 11:32:32 +01008include lib/xlat_tables_v2/xlat_tables.mk
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00009
Olivier Deprezaeb29eb2020-12-16 15:46:14 +010010# Include ivy platform Makefile
11IVY_PLAT_PATH := $(shell find spm/ivy/app/plat -wholename '*/${PLAT}')
12ifneq (${IVY_PLAT_PATH},)
13 include ${IVY_PLAT_PATH}/platform.mk
14endif
15
16IVY_DTB := build/${PLAT}/debug/ivy.dtb
Antonio Nino Diazb3bce6f2018-11-30 10:51:26 +000017
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000018IVY_INCLUDES := \
Ruari Phippscda50dd2020-08-24 11:32:32 +010019 -Itftf/framework/include \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000020 -Iinclude \
21 -Iinclude/common \
22 -Iinclude/common/${ARCH} \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000023 -Iinclude/lib \
24 -Iinclude/lib/${ARCH} \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000025 -Iinclude/lib/utils \
26 -Iinclude/lib/xlat_tables \
27 -Iinclude/runtime_services \
28 -Iinclude/runtime_services/secure_el0_payloads \
Ruari Phipps67118b62020-09-10 14:05:55 +010029 -Ispm/ivy/app \
30 -Ispm/ivy/shim \
Ruari Phippscda50dd2020-08-24 11:32:32 +010031 -Ispm/common
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000032
33IVY_SOURCES := \
Ruari Phipps67118b62020-09-10 14:05:55 +010034 $(addprefix spm/ivy/app/, \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000035 aarch64/ivy_entrypoint.S \
36 ivy_main.c \
37 ) \
Ruari Phipps67118b62020-09-10 14:05:55 +010038 $(addprefix spm/ivy/shim/, \
39 aarch64/spm_shim_entrypoint.S \
40 aarch64/spm_shim_exceptions.S \
41 shim_main.c \
42 ) \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000043 $(addprefix spm/common/, \
44 aarch64/sp_arch_helpers.S \
Ruari Phippsf4c4efc2020-09-10 09:06:14 +010045 sp_debug.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000046 sp_helpers.c \
Ruari Phippsf4c4efc2020-09-10 09:06:14 +010047 spm_helpers.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000048 ) \
49
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000050# TODO: Remove dependency on TFTF files.
51IVY_SOURCES += \
52 tftf/framework/debug.c \
Ruari Phippscda50dd2020-08-24 11:32:32 +010053 tftf/framework/${ARCH}/asm_debug.S \
54 tftf/tests/runtime_services/secure_service/ffa_helpers.c
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000055
56IVY_SOURCES += drivers/arm/pl011/${ARCH}/pl011_console.S \
57 lib/${ARCH}/cache_helpers.S \
58 lib/${ARCH}/misc_helpers.S \
Ruari Phippsf4c4efc2020-09-10 09:06:14 +010059 lib/smc/${ARCH}/asm_smc.S \
60 lib/smc/${ARCH}/smc.c \
61 lib/smc/${ARCH}/hvc.c \
Sandrine Bailleux90041122018-11-08 14:10:18 +010062 lib/locks/${ARCH}/spinlock.S \
63 lib/utils/mp_printf.c \
Ruari Phippscda50dd2020-08-24 11:32:32 +010064 ${XLAT_TABLES_LIB_SRCS}
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000065
66IVY_LINKERFILE := spm/ivy/ivy.ld.S
67
68IVY_DEFINES :=
69
Alexei Fedorov34057072020-06-19 14:25:43 +010070$(eval $(call add_define,IVY_DEFINES,ARM_ARCH_MAJOR))
71$(eval $(call add_define,IVY_DEFINES,ARM_ARCH_MINOR))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000072$(eval $(call add_define,IVY_DEFINES,DEBUG))
73$(eval $(call add_define,IVY_DEFINES,ENABLE_ASSERTIONS))
Alexei Fedorov34057072020-06-19 14:25:43 +010074$(eval $(call add_define,IVY_DEFINES,ENABLE_BTI))
75$(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH))
Alexei Fedorov6a3ff292020-06-02 16:35:36 +010076$(eval $(call add_define,IVY_DEFINES,FVP_CLUSTER_COUNT))
77$(eval $(call add_define,IVY_DEFINES,FVP_MAX_CPUS_PER_CLUSTER))
78$(eval $(call add_define,IVY_DEFINES,FVP_MAX_PE_PER_CPU))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000079$(eval $(call add_define,IVY_DEFINES,LOG_LEVEL))
80$(eval $(call add_define,IVY_DEFINES,PLAT_${PLAT}))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000081
Antonio Nino Diazb3bce6f2018-11-30 10:51:26 +000082$(IVY_DTB) : $(BUILD_PLAT)/ivy $(BUILD_PLAT)/ivy/ivy.elf
Olivier Deprezaeb29eb2020-12-16 15:46:14 +010083$(IVY_DTB) : $(IVY_DTS)
84 @echo " DTBGEN $@"
Antonio Nino Diazb3bce6f2018-11-30 10:51:26 +000085 ${Q}tools/generate_dtb/generate_dtb.sh \
Olivier Deprezaeb29eb2020-12-16 15:46:14 +010086 ivy ${IVY_DTS} $(BUILD_PLAT)
87 ${Q}tools/generate_json/generate_json.sh \
88 ivy $(BUILD_PLAT)
Antonio Nino Diazb3bce6f2018-11-30 10:51:26 +000089 @echo
90 @echo "Built $@ successfully"
91 @echo
92
Bence Szépkútic4a431c2019-11-29 18:23:56 +010093ivy: $(IVY_DTB)
Olivier Deprezaeb29eb2020-12-16 15:46:14 +010094
95# FDTS_CP copies flattened device tree sources
96# $(1) = output directory
97# $(2) = flattened device tree source file to copy
98define FDTS_CP
99 $(eval FDTS := $(addprefix $(1)/,$(notdir $(2))))
100FDTS_LIST += $(FDTS)
101$(FDTS): $(2) $(IVY_DTB)
102 @echo " CP $$<"
103 ${Q}cp $$< $$@
104endef
105
106ifdef FDTS_CP_LIST
107 $(eval files := $(filter %.dts,$(FDTS_CP_LIST)))
108 $(eval $(foreach file,$(files),$(call FDTS_CP,$(BUILD_PLAT),$(file))))
109ivy: $(FDTS_LIST)
110endif