blob: f58422fc12fe6c9fe8fe9e9924824c77c3a7343f [file] [log] [blame]
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00001#
Ruari Phipps9f1952c2020-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 Fedorov7fac1622020-06-19 14:25:43 +01007include branch_protection.mk
Ruari Phipps9f1952c2020-08-24 11:32:32 +01008include lib/xlat_tables_v2/xlat_tables.mk
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00009
Olivier Deprez2765ebf2020-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 Diaz1451f612018-11-30 10:51:26 +000017
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000018IVY_INCLUDES := \
Ruari Phipps9f1952c2020-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 Phipps1925b2a2020-09-10 14:05:55 +010029 -Ispm/ivy/app \
30 -Ispm/ivy/shim \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010031 -Ispm/common
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000032
33IVY_SOURCES := \
Ruari Phipps1925b2a2020-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 Phipps1925b2a2020-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 Phippsddc661a2020-09-10 09:06:14 +010045 sp_debug.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000046 sp_helpers.c \
Ruari Phippsddc661a2020-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 Phipps9f1952c2020-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 Phippsddc661a2020-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 Bailleux750b7cc2018-11-08 14:10:18 +010062 lib/locks/${ARCH}/spinlock.S \
63 lib/utils/mp_printf.c \
Ruari Phipps9f1952c2020-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 Fedorov7fac1622020-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 Fedorov7fac1622020-06-19 14:25:43 +010074$(eval $(call add_define,IVY_DEFINES,ENABLE_BTI))
75$(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000076$(eval $(call add_define,IVY_DEFINES,LOG_LEVEL))
77$(eval $(call add_define,IVY_DEFINES,PLAT_${PLAT}))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000078
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000079$(IVY_DTB) : $(BUILD_PLAT)/ivy $(BUILD_PLAT)/ivy/ivy.elf
Olivier Deprez2765ebf2020-12-16 15:46:14 +010080$(IVY_DTB) : $(IVY_DTS)
81 @echo " DTBGEN $@"
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000082 ${Q}tools/generate_dtb/generate_dtb.sh \
Olivier Deprez2765ebf2020-12-16 15:46:14 +010083 ivy ${IVY_DTS} $(BUILD_PLAT)
84 ${Q}tools/generate_json/generate_json.sh \
85 ivy $(BUILD_PLAT)
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000086 @echo
87 @echo "Built $@ successfully"
88 @echo
89
Bence Szépkúti537b3582019-11-29 18:23:56 +010090ivy: $(IVY_DTB)
Olivier Deprez2765ebf2020-12-16 15:46:14 +010091
92# FDTS_CP copies flattened device tree sources
93# $(1) = output directory
94# $(2) = flattened device tree source file to copy
95define FDTS_CP
96 $(eval FDTS := $(addprefix $(1)/,$(notdir $(2))))
97FDTS_LIST += $(FDTS)
98$(FDTS): $(2) $(IVY_DTB)
99 @echo " CP $$<"
100 ${Q}cp $$< $$@
101endef
102
103ifdef FDTS_CP_LIST
104 $(eval files := $(filter %.dts,$(FDTS_CP_LIST)))
105 $(eval $(foreach file,$(files),$(call FDTS_CP,$(BUILD_PLAT),$(file))))
106ivy: $(FDTS_LIST)
107endif