blob: a92d298b69e2a5bf9cfa9abb0f320affea0f1035 [file] [log] [blame]
Balint Dobszay1bf41f52022-05-30 12:56:38 +02001################################################################################
2# Paths to Trusted Services source and output
3################################################################################
4TS_PATH ?= $(ROOT)/trusted-services
5TS_BUILD_PATH ?= $(OUT_PATH)/ts-build
6TS_INSTALL_PREFIX ?= $(OUT_PATH)/ts-install
7
8################################################################################
9# Secure Partitions
10################################################################################
11.PHONY: ffa-sp-all ffa-sp-all-clean ffa-sp-all-realclean
12
13optee-os-common: ffa-sp-all
14optee-os-clean: ffa-sp-all-clean
15
16ffa-sp-all-realclean:
Imre Kis874a2dd2023-01-09 17:01:22 +010017 rm -rf $(TS_INSTALL_PREFIX)/opteesp $(TS_INSTALL_PREFIX)/sp
Balint Dobszay1bf41f52022-05-30 12:56:38 +020018
19ifneq ($(COMPILE_S_USER),64)
20$(error Trusted Services SPs only support AArch64)
21endif
22
Imre Kis874a2dd2023-01-09 17:01:22 +010023SP_EXT-opteesp := stripped.elf
24SP_EXT-sp := bin
25
26# The macro sets a variable if the source variable is defined, otherwise it
27# results in an error.
28# Parameter list:
29# 1 - Destination variable name
30# 2 - Source variable name
31# 3 - Error message
32define set_if_source_defined
33ifndef $(2)
34$$(error $(3))
35else
36$(1) := $($(2))
37endif
38endef
39
Balint Dobszay1bf41f52022-05-30 12:56:38 +020040# Helper macro to build and install Trusted Services Secure Partitions (SPs).
41# Invokes CMake to configure, and make to build and install the SP. (CMake's
42# Makefile generator backend is used, we can run make in the build directory).
43# Adds the SP output image to the optee_os_sp_paths list and complies the SP
44# manifest dts to dtb.
45#
46# For information about the additional dependencies of the project, please see
47# https://trusted-services.readthedocs.io/en/latest/developer/software-requirements.html
48#
49# Parameter list:
50# 1 - SP deployment name (e.g. internal-trusted-storage, crypto, etc.)
Julian Hallb0c8fc22022-11-30 12:24:38 +000051# 2 - Build configuration name (e.g. config/shared-flash)
52# 3 - SP canonical UUID (e.g. dc1eef48-b17a-4ccf-ac8b-dfcff7711b14)
53# 4 - SP additional build flags (e.g. -DTS_PLATFORM=<...>)
Balint Dobszay1bf41f52022-05-30 12:56:38 +020054define build-sp
Imre Kis874a2dd2023-01-09 17:01:22 +010055$(eval SP_DIR := $(lastword $(subst -, ,$(2))))
56$(eval $(call set_if_source_defined,SP_EXT,SP_EXT-$(lastword $(subst -, ,$(2))),Invalid $(1) SP configuration: $(2)))
57
Balint Dobszay1bf41f52022-05-30 12:56:38 +020058.PHONY: ffa-$1-sp
59ffa-$1-sp:
60 CROSS_COMPILE=$(subst $(CCACHE),,$(CROSS_COMPILE_S_USER)) cmake -G"Unix Makefiles" \
Julian Hallb0c8fc22022-11-30 12:24:38 +000061 -S $(TS_PATH)/deployments/$1/$2 -B $(TS_BUILD_PATH)/$1 \
Balint Dobszay1bf41f52022-05-30 12:56:38 +020062 -DCMAKE_INSTALL_PREFIX=$(TS_INSTALL_PREFIX) \
Julian Hallb0c8fc22022-11-30 12:24:38 +000063 -DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE) $(SP_COMMON_FLAGS) $4
Balint Dobszay1bf41f52022-05-30 12:56:38 +020064 $$(MAKE) -C $(TS_BUILD_PATH)/$1 install
Imre Kis874a2dd2023-01-09 17:01:22 +010065 dtc -I dts -O dtb -o $(TS_INSTALL_PREFIX)/$(SP_DIR)/manifest/$3.dtb \
66 $(TS_INSTALL_PREFIX)/$(SP_DIR)/manifest/$3.dts
Balint Dobszay1bf41f52022-05-30 12:56:38 +020067
68.PHONY: ffa-$1-sp-clean
69ffa-$1-sp-clean:
Gyorgy Szinga72ab362023-09-19 18:36:14 +000070 - $$(MAKE) -C $(TS_BUILD_PATH)/$1 clean
Balint Dobszay1bf41f52022-05-30 12:56:38 +020071
72.PHONY: ffa-$1-sp-realclean
73ffa-$1-sp-realclean:
74 rm -rf $(TS_BUILD_PATH)/$1
75
76ffa-sp-all: ffa-$1-sp
77ffa-sp-all-clean: ffa-$1-sp-clean
78ffa-sp-all-realclean: ffa-$1-sp-realclean
79
Imre Kis874a2dd2023-01-09 17:01:22 +010080optee_os_sp_paths += $(TS_INSTALL_PREFIX)/$(SP_DIR)/bin/$3.$(SP_EXT)
Imre Kisafa78002023-03-24 16:21:27 +010081fip_sp_json_paths += $(TS_INSTALL_PREFIX)/$(SP_DIR)/json/$1.json
Balint Dobszay1bf41f52022-05-30 12:56:38 +020082endef
83
Balint Dobszaydb9b8f02022-09-01 11:20:23 +020084ifeq ($(SP_PACKAGING_METHOD),embedded)
Balint Dobszay1bf41f52022-05-30 12:56:38 +020085# Add the list of SP paths to the optee_os config
86OPTEE_OS_COMMON_EXTRA_FLAGS += SP_PATHS="$(optee_os_sp_paths)"
Balint Dobszaydb9b8f02022-09-01 11:20:23 +020087else ifeq ($(SP_PACKAGING_METHOD),fip)
Imre Kisafa78002023-03-24 16:21:27 +010088$(TS_INSTALL_PREFIX)/sp_layout.json: ffa-sp-all
Imre Kisdc34f492023-04-11 16:53:06 +020089 $(PYTHON3) $(TS_PATH)/tools/python/merge_json.py $@ $(fip_sp_json_paths)
Imre Kisafa78002023-03-24 16:21:27 +010090
91optee-os-common: $(TS_INSTALL_PREFIX)/sp_layout.json
92
Balint Dobszaydb9b8f02022-09-01 11:20:23 +020093# Configure TF-A to load the SPs from FIP by BL2
Sudeep Holla68f7beb2024-05-23 17:21:55 +010094TF_A_FLAGS += ARM_BL2_SP_LIST_DTS=$(ROOT)/build/fvp/bl2_sp_list.dtsi \
Imre Kisafa78002023-03-24 16:21:27 +010095 SP_LAYOUT_FILE=$(TS_INSTALL_PREFIX)/sp_layout.json
Balint Dobszaydb9b8f02022-09-01 11:20:23 +020096endif
Balint Dobszayc3d34122022-05-30 13:28:06 +020097
98################################################################################
Balint Dobszay58b2bf92024-07-10 12:51:17 +020099# Linux FF-A user space driver
Balint Dobszayc3d34122022-05-30 13:28:06 +0200100################################################################################
Gabor Tothce8a7f42023-03-23 10:56:53 +0100101# This driver is only used by the uefi-test app or the spmc tests
102ifneq ($(filter y, $(TS_UEFI_TESTS) $(SPMC_TESTS)),)
Balint Dobszayc3d34122022-05-30 13:28:06 +0200103.PHONY: linux-arm-ffa-user linux-arm-ffa-user-clean
104all: linux-arm-ffa-user
105
106linux-arm-ffa-user: linux
107 mkdir -p $(OUT_PATH)/linux-arm-ffa-user
108 $(MAKE) -C $(ROOT)/linux-arm-ffa-user $(LINUX_COMMON_FLAGS) install \
109 TARGET_DIR=$(OUT_PATH)/linux-arm-ffa-user
Jelle Selsbb5a5362022-07-18 17:07:05 +0200110 echo "ed32d533-99e6-4209-9cc0-2d72cdd998a7,\
111 5c9edbc3-7b3a-4367-9f83-7c191ae86a37,\
112 7817164c-c40c-4d1a-867a-9bb2278cf41a,\
Jelle Sels3a937c52023-02-01 09:25:52 +0100113 23eb0100-e32a-4497-9052-2f11e584afa6,\
Jens Wiklander13205432025-04-17 16:23:53 +0200114 bdcd76d7-825e-4751-963b-86d4f84943ac,\
115 54b5440e-a3d2-48d1-872a-7b6cbfc34855" > \
Balint Dobszayc3d34122022-05-30 13:28:06 +0200116 $(OUT_PATH)/linux-arm-ffa-user/sp_uuid_list.txt
117
118linux-arm-ffa-user-clean:
119 $(MAKE) -C $(ROOT)/linux-arm-ffa-user clean
120
121# Disable CONFIG_STRICT_DEVMEM option in the Linux kernel config. This allows
122# userspace access to the whole NS physical address space through /dev/mem. It's
123# needed by the uefi-test app to communicate with the smm-gateway SP using a
124# static carveout. If changed, run "make linux-defconfig-clean" to take effect.
Balint Dobszay3730e012023-06-02 11:40:41 +0200125LINUX_DEFCONFIG_COMMON_FILES += $(CURDIR)/kconfigs/fvp_trusted-services_uefi.conf
Balint Dobszayc3d34122022-05-30 13:28:06 +0200126endif
Balint Dobszayc0b8fdf2022-06-02 14:41:54 +0200127
128################################################################################
129# Trusted Services test applications
130################################################################################
131.PHONY: ffa-test-all ffa-test-all-clean ffa-test-all-realclean
132all: ffa-test-all
133
134ffa-test-all-realclean:
135 rm -rf $(TS_INSTALL_PREFIX)/arm-linux
136
137ifneq ($(COMPILE_NS_USER),64)
138$(error Trusted Services test apps only support AArch64)
139endif
140
141# Helper macro to build and install Trusted Services test applications.
142# Invokes CMake to configure, and make to build and install the apps.
Gyorgy Szing0e2a1d92023-02-28 00:58:45 +0100143#
144# Parameter list:
145# 1 - SP deployment name (e.g. psa-api-test/internal-trusted-storage,
146# ts-demo, etc.)
Gabor Toth22d70632023-11-09 19:05:17 +0100147# 2 - Additional build flags
Gyorgy Szing0e2a1d92023-02-28 00:58:45 +0100148
Balint Dobszayc0b8fdf2022-06-02 14:41:54 +0200149define build-ts-app
150.PHONY: ffa-$1
151ffa-$1:
152 CROSS_COMPILE=$(subst $(CCACHE),,$(CROSS_COMPILE_NS_USER)) cmake -G"Unix Makefiles" \
153 -S $(TS_PATH)/deployments/$1/arm-linux -B $(TS_BUILD_PATH)/$1 \
154 -DCMAKE_INSTALL_PREFIX=$(TS_INSTALL_PREFIX) \
Gyorgy Szing27cd4172023-02-28 01:10:34 +0100155 -Dlibts_DIR=${TS_INSTALL_PREFIX}/arm-linux/lib/cmake/libts \
156 -DCFG_FORCE_PREBUILT_LIBTS=On \
Gabor Tothd0148192024-03-05 11:38:58 +0100157 -Dlibpsats_DIR=${TS_INSTALL_PREFIX}/arm-linux/lib/cmake/libpsats \
158 -DCFG_FORCE_PREBUILT_LIBPSATS=On \
Gabor Toth22d70632023-11-09 19:05:17 +0100159 -DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE) $(TS_APP_COMMON_FLAGS) $2
Balint Dobszayc0b8fdf2022-06-02 14:41:54 +0200160 $$(MAKE) -C $(TS_BUILD_PATH)/$1 install
161
Gyorgy Szing27cd4172023-02-28 01:10:34 +0100162ifneq ($1,libts)
Gabor Tothd0148192024-03-05 11:38:58 +0100163
164ifeq ($1,libpsats)
165ffa-libpsats: ffa-libts
166else
167ffa-$1: ffa-libpsats
168endif
169
Gyorgy Szing27cd4172023-02-28 01:10:34 +0100170endif
171
Balint Dobszayc0b8fdf2022-06-02 14:41:54 +0200172.PHONY: ffa-$1-clean
173ffa-$1-clean:
Gyorgy Szinga72ab362023-09-19 18:36:14 +0000174 - $$(MAKE) -C $(TS_BUILD_PATH)/$1 clean
Balint Dobszayc0b8fdf2022-06-02 14:41:54 +0200175
176.PHONY: ffa-$1-realclean
177ffa-$1-realclean:
178 rm -rf $(TS_BUILD_PATH)/$1
179
180ffa-test-all: ffa-$1
181ffa-test-all-clean: ffa-$1-clean
182ffa-test-all-realclean: ffa-$1-realclean
183endef
Gyorgy Szing46fa5a42023-04-05 07:56:30 +0000184
185################################################################################
186# Trusted Services hot applications
187################################################################################
188.PHONY: ts-host-all ts-host-all-clean ts-host-all-realclean
189all: ts-host-all
190
191ts-host-all-realclean:
192 rm -rf $(TS_INSTALL_PREFIX)/linux-pc
193
194# Helper macro to build and install Trusted Services applications which
195# run on the host.
196# Invokes CMake to configure, and make to build and install the apps.
197#
198# Parameter list:
199# 1 - deployment name (e.g. fwu-app )
Gabor Toth22d70632023-11-09 19:05:17 +0100200# 2 - Additional build flags
Gyorgy Szing46fa5a42023-04-05 07:56:30 +0000201
202define build-ts-host-app
203.PHONY: ts-host-$1
204$(if $1, ,$(error build-ts-host-app: missing deployment name argument))
205
Gyorgy Szing46fa5a42023-04-05 07:56:30 +0000206ts-host-$1:
207 cmake -G"Unix Makefiles" \
208 -S $(TS_PATH)/deployments/$1/linux-pc -B $(TS_BUILD_PATH)/$1 \
209 -DCMAKE_INSTALL_PREFIX=$(TS_INSTALL_PREFIX) \
Gabor Toth22d70632023-11-09 19:05:17 +0100210 -DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE) \
211 $(TS_HOST_COMMON_FLAGS) $2
Gyorgy Szing46fa5a42023-04-05 07:56:30 +0000212 $$(MAKE) -C $(TS_BUILD_PATH)/$1 install
213
214.PHONY: ts-host-$1-clean
215ts-host-$1-clean:
216 $$(MAKE) -C $(TS_BUILD_PATH)/$1 clean
217
218.PHONY: ts-host-$1-realclean
219ts-host-$1-realclean:
220 rm -rf $(TS_BUILD_PATH)/$1
221
222ts-host-all: ts-host-$1
223ts-host-all-clean: ts-host-$1-clean
224ts-host-all-realclean: ts-host-$1-realclean
225
226endef