blob: bade203f912f1eb8408250bc35654007125f89c0 [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:
17 rm -rf $(TS_INSTALL_PREFIX)/opteesp
18
19ifneq ($(COMPILE_S_USER),64)
20$(error Trusted Services SPs only support AArch64)
21endif
22
23# Helper macro to build and install Trusted Services Secure Partitions (SPs).
24# Invokes CMake to configure, and make to build and install the SP. (CMake's
25# Makefile generator backend is used, we can run make in the build directory).
26# Adds the SP output image to the optee_os_sp_paths list and complies the SP
27# manifest dts to dtb.
28#
29# For information about the additional dependencies of the project, please see
30# https://trusted-services.readthedocs.io/en/latest/developer/software-requirements.html
31#
32# Parameter list:
33# 1 - SP deployment name (e.g. internal-trusted-storage, crypto, etc.)
34# 2 - SP canonical UUID (e.g. dc1eef48-b17a-4ccf-ac8b-dfcff7711b14)
35# 3 - SP additional build flags (e.g. -DTS_PLATFORM=<...>)
36define build-sp
37.PHONY: ffa-$1-sp
38ffa-$1-sp:
39 CROSS_COMPILE=$(subst $(CCACHE),,$(CROSS_COMPILE_S_USER)) cmake -G"Unix Makefiles" \
40 -S $(TS_PATH)/deployments/$1/opteesp -B $(TS_BUILD_PATH)/$1 \
41 -DCMAKE_INSTALL_PREFIX=$(TS_INSTALL_PREFIX) \
42 -DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE) $(SP_COMMON_FLAGS) $3
43 $$(MAKE) -C $(TS_BUILD_PATH)/$1 install
44 dtc -I dts -O dtb -o $(TS_INSTALL_PREFIX)/opteesp/manifest/$2.dtb \
45 $(TS_INSTALL_PREFIX)/opteesp/manifest/$2.dts
46
47.PHONY: ffa-$1-sp-clean
48ffa-$1-sp-clean:
49 $$(MAKE) -C $(TS_BUILD_PATH)/$1 clean
50
51.PHONY: ffa-$1-sp-realclean
52ffa-$1-sp-realclean:
53 rm -rf $(TS_BUILD_PATH)/$1
54
55ffa-sp-all: ffa-$1-sp
56ffa-sp-all-clean: ffa-$1-sp-clean
57ffa-sp-all-realclean: ffa-$1-sp-realclean
58
59optee_os_sp_paths += $(TS_INSTALL_PREFIX)/opteesp/bin/$2.stripped.elf
60endef
61
62# Add the list of SP paths to the optee_os config
63OPTEE_OS_COMMON_EXTRA_FLAGS += SP_PATHS="$(optee_os_sp_paths)"
Balint Dobszayc3d34122022-05-30 13:28:06 +020064
65################################################################################
66# Linux FF-A user space drivers
67################################################################################
68.PHONY: linux-arm-ffa-tee linux-arm-ffa-tee-clean
69all: linux-arm-ffa-tee
70
71linux-arm-ffa-tee: linux
72 mkdir -p $(OUT_PATH)/linux-arm-ffa-tee
73 $(MAKE) -C $(ROOT)/linux-arm-ffa-tee $(LINUX_COMMON_FLAGS) install \
74 TARGET_DIR=$(OUT_PATH)/linux-arm-ffa-tee
75
76linux-arm-ffa-tee-clean:
77 $(MAKE) -C $(ROOT)/linux-arm-ffa-tee clean
78
79# This driver is only used by the uefi-test app
80ifeq ($(TS_UEFI_TESTS),y)
81.PHONY: linux-arm-ffa-user linux-arm-ffa-user-clean
82all: linux-arm-ffa-user
83
84linux-arm-ffa-user: linux
85 mkdir -p $(OUT_PATH)/linux-arm-ffa-user
86 $(MAKE) -C $(ROOT)/linux-arm-ffa-user $(LINUX_COMMON_FLAGS) install \
87 TARGET_DIR=$(OUT_PATH)/linux-arm-ffa-user
88 echo "ed32d533-99e6-4209-9cc0-2d72cdd998a7" > \
89 $(OUT_PATH)/linux-arm-ffa-user/sp_uuid_list.txt
90
91linux-arm-ffa-user-clean:
92 $(MAKE) -C $(ROOT)/linux-arm-ffa-user clean
93
94# Disable CONFIG_STRICT_DEVMEM option in the Linux kernel config. This allows
95# userspace access to the whole NS physical address space through /dev/mem. It's
96# needed by the uefi-test app to communicate with the smm-gateway SP using a
97# static carveout. If changed, run "make linux-defconfig-clean" to take effect.
98LINUX_DEFCONFIG_COMMON_FILES += $(CURDIR)/kconfigs/fvp_trusted-services.conf
99endif
Balint Dobszayc0b8fdf2022-06-02 14:41:54 +0200100
101################################################################################
102# Trusted Services test applications
103################################################################################
104.PHONY: ffa-test-all ffa-test-all-clean ffa-test-all-realclean
105all: ffa-test-all
106
107ffa-test-all-realclean:
108 rm -rf $(TS_INSTALL_PREFIX)/arm-linux
109
110ifneq ($(COMPILE_NS_USER),64)
111$(error Trusted Services test apps only support AArch64)
112endif
113
114# Helper macro to build and install Trusted Services test applications.
115# Invokes CMake to configure, and make to build and install the apps.
116define build-ts-app
117.PHONY: ffa-$1
118ffa-$1:
119 CROSS_COMPILE=$(subst $(CCACHE),,$(CROSS_COMPILE_NS_USER)) cmake -G"Unix Makefiles" \
120 -S $(TS_PATH)/deployments/$1/arm-linux -B $(TS_BUILD_PATH)/$1 \
121 -DCMAKE_INSTALL_PREFIX=$(TS_INSTALL_PREFIX) \
122 -DCMAKE_C_COMPILER_LAUNCHER=$(CCACHE)
123 $$(MAKE) -C $(TS_BUILD_PATH)/$1 install
124
125.PHONY: ffa-$1-clean
126ffa-$1-clean:
127 $$(MAKE) -C $(TS_BUILD_PATH)/$1 clean
128
129.PHONY: ffa-$1-realclean
130ffa-$1-realclean:
131 rm -rf $(TS_BUILD_PATH)/$1
132
133ffa-test-all: ffa-$1
134ffa-test-all-clean: ffa-$1-clean
135ffa-test-all-realclean: ffa-$1-realclean
136endef