blob: 9531f9b481ac097d21238941cc7ee37758519a9d [file] [log] [blame]
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +00001#
Olivier Deprez6baf5b82021-05-14 19:04:40 +02002# Copyright (c) 2018-2022, 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
Olivier Deprez6baf5b82021-05-14 19:04:40 +020016IVY_SHIM := 1
17
18ifeq (${IVY_SHIM},1)
19 IVY_DTB := $(BUILD_PLAT)/ivy-sel1.dtb
20else
21 IVY_DTB := $(BUILD_PLAT)/ivy-sel0.dtb
22endif
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000023
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000024IVY_INCLUDES := \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010025 -Itftf/framework/include \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000026 -Iinclude \
27 -Iinclude/common \
28 -Iinclude/common/${ARCH} \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000029 -Iinclude/lib \
30 -Iinclude/lib/${ARCH} \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000031 -Iinclude/lib/utils \
32 -Iinclude/lib/xlat_tables \
33 -Iinclude/runtime_services \
34 -Iinclude/runtime_services/secure_el0_payloads \
Ruari Phipps1925b2a2020-09-10 14:05:55 +010035 -Ispm/ivy/app \
36 -Ispm/ivy/shim \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010037 -Ispm/common
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000038
39IVY_SOURCES := \
Ruari Phipps1925b2a2020-09-10 14:05:55 +010040 $(addprefix spm/ivy/app/, \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000041 aarch64/ivy_entrypoint.S \
42 ivy_main.c \
43 ) \
44 $(addprefix spm/common/, \
45 aarch64/sp_arch_helpers.S \
Ruari Phippsddc661a2020-09-10 09:06:14 +010046 sp_debug.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000047 sp_helpers.c \
Ruari Phippsddc661a2020-09-10 09:06:14 +010048 spm_helpers.c \
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000049 ) \
50
Olivier Deprez6baf5b82021-05-14 19:04:40 +020051ifeq ($(IVY_SHIM),1)
52IVY_SOURCES += \
53 $(addprefix spm/ivy/shim/, \
54 aarch64/spm_shim_entrypoint.S \
55 aarch64/spm_shim_exceptions.S \
56 shim_main.c \
57 )
58endif
59
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000060# TODO: Remove dependency on TFTF files.
61IVY_SOURCES += \
62 tftf/framework/debug.c \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010063 tftf/framework/${ARCH}/asm_debug.S \
64 tftf/tests/runtime_services/secure_service/ffa_helpers.c
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000065
66IVY_SOURCES += drivers/arm/pl011/${ARCH}/pl011_console.S \
67 lib/${ARCH}/cache_helpers.S \
68 lib/${ARCH}/misc_helpers.S \
Ruari Phippsddc661a2020-09-10 09:06:14 +010069 lib/smc/${ARCH}/asm_smc.S \
70 lib/smc/${ARCH}/smc.c \
71 lib/smc/${ARCH}/hvc.c \
Sandrine Bailleux750b7cc2018-11-08 14:10:18 +010072 lib/locks/${ARCH}/spinlock.S \
73 lib/utils/mp_printf.c \
Ruari Phipps9f1952c2020-08-24 11:32:32 +010074 ${XLAT_TABLES_LIB_SRCS}
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000075
76IVY_LINKERFILE := spm/ivy/ivy.ld.S
77
78IVY_DEFINES :=
79
Alexei Fedorov7fac1622020-06-19 14:25:43 +010080$(eval $(call add_define,IVY_DEFINES,ARM_ARCH_MAJOR))
81$(eval $(call add_define,IVY_DEFINES,ARM_ARCH_MINOR))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000082$(eval $(call add_define,IVY_DEFINES,DEBUG))
83$(eval $(call add_define,IVY_DEFINES,ENABLE_ASSERTIONS))
Alexei Fedorov7fac1622020-06-19 14:25:43 +010084$(eval $(call add_define,IVY_DEFINES,ENABLE_BTI))
85$(eval $(call add_define,IVY_DEFINES,ENABLE_PAUTH))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000086$(eval $(call add_define,IVY_DEFINES,LOG_LEVEL))
87$(eval $(call add_define,IVY_DEFINES,PLAT_${PLAT}))
Olivier Deprez6baf5b82021-05-14 19:04:40 +020088$(eval $(call add_define,IVY_DEFINES,IVY_SHIM))
Antonio Nino Diaz0b1ab402018-12-05 15:38:39 +000089
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000090$(IVY_DTB) : $(BUILD_PLAT)/ivy $(BUILD_PLAT)/ivy/ivy.elf
Olivier Deprez2765ebf2020-12-16 15:46:14 +010091$(IVY_DTB) : $(IVY_DTS)
92 @echo " DTBGEN $@"
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000093 ${Q}tools/generate_dtb/generate_dtb.sh \
Olivier Deprez6baf5b82021-05-14 19:04:40 +020094 ivy ${IVY_DTS} $(BUILD_PLAT) $(IVY_DTB)
Olivier Deprez2765ebf2020-12-16 15:46:14 +010095 ${Q}tools/generate_json/generate_json.sh \
Olivier Deprez6baf5b82021-05-14 19:04:40 +020096 ivy $(BUILD_PLAT) $(IVY_SHIM)
Antonio Nino Diaz1451f612018-11-30 10:51:26 +000097 @echo
98 @echo "Built $@ successfully"
99 @echo
100
Bence Szépkúti537b3582019-11-29 18:23:56 +0100101ivy: $(IVY_DTB)
Olivier Deprez2765ebf2020-12-16 15:46:14 +0100102
103# FDTS_CP copies flattened device tree sources
104# $(1) = output directory
105# $(2) = flattened device tree source file to copy
106define FDTS_CP
107 $(eval FDTS := $(addprefix $(1)/,$(notdir $(2))))
108FDTS_LIST += $(FDTS)
109$(FDTS): $(2) $(IVY_DTB)
110 @echo " CP $$<"
111 ${Q}cp $$< $$@
112endef
113
114ifdef FDTS_CP_LIST
115 $(eval files := $(filter %.dts,$(FDTS_CP_LIST)))
116 $(eval $(foreach file,$(files),$(call FDTS_CP,$(BUILD_PLAT),$(file))))
117ivy: $(FDTS_LIST)
118endif