blob: 303eecb4a65448e418227425725eac426c116ef1 [file] [log] [blame]
Pascal Brandd6536da2015-09-01 10:38:43 +02001#
2# Common definition to all platforms
3#
4
Jens Wiklander650f2982017-04-05 10:08:59 +02005SHELL := bash
Pascal Brand070d9552015-09-01 15:33:22 +02006BASH ?= bash
Pascal Brandd6536da2015-09-01 10:38:43 +02007ROOT ?= $(shell pwd)/..
8
Philip Attfield3f9250f2016-09-14 07:43:32 +02009BUILD_PATH ?= $(ROOT)/build
Pascal Brandd6536da2015-09-01 10:38:43 +020010LINUX_PATH ?= $(ROOT)/linux
Victor Chong9f0d1202016-04-23 16:28:31 +010011OPTEE_GENDRV_MODULE ?= $(LINUX_PATH)/drivers/tee/optee/optee.ko
Pascal Brand440ef9c2015-09-08 16:01:58 +020012GEN_ROOTFS_PATH ?= $(ROOT)/gen_rootfs
13GEN_ROOTFS_FILELIST ?= $(GEN_ROOTFS_PATH)/filelist-tee.txt
Pascal Brandd6536da2015-09-01 10:38:43 +020014OPTEE_OS_PATH ?= $(ROOT)/optee_os
15OPTEE_CLIENT_PATH ?= $(ROOT)/optee_client
16OPTEE_CLIENT_EXPORT ?= $(OPTEE_CLIENT_PATH)/out/export
Pascal Brandd6536da2015-09-01 10:38:43 +020017OPTEE_TEST_PATH ?= $(ROOT)/optee_test
Igor Opaniuk27edfc72016-10-25 18:33:54 +030018OPTEE_TEST_OUT_PATH ?= $(ROOT)/optee_test/out
Igor Opaniuk584efe52017-08-07 01:41:48 +030019OPTEE_EXAMPLES_PATH ?= $(ROOT)/optee_examples
Igor Opaniuk27edfc72016-10-25 18:33:54 +030020BENCHMARK_APP_PATH ?= $(ROOT)/optee_benchmark
Pascal Brandd6536da2015-09-01 10:38:43 +020021
Etienne Carrierecc23f6b2016-10-21 10:16:00 +020022# default high verbosity. slow uarts shall specify lower if prefered
Pascal Brand23ef2052016-03-09 15:25:01 +010023CFG_TEE_CORE_LOG_LEVEL ?= 3
24
Igor Opaniuk27edfc72016-10-25 18:33:54 +030025# default disable latency benchmarks (over all OP-TEE layers)
26CFG_TEE_BENCHMARK ?= n
27
Pascal Brandd6536da2015-09-01 10:38:43 +020028CCACHE ?= $(shell which ccache) # Don't remove this comment (space is needed)
29
Igor Opaniuk97d05292016-10-26 14:46:14 +030030# Accessing a shared folder on the host from QEMU:
31# # Set QEMU_VIRTFS_ENABLE to 'y' and adjust QEMU_VIRTFS_HOST_DIR
32# # Then in QEMU, run:
33# # $ mount -t 9p -o trans=virtio host <mount_point>
34QEMU_VIRTFS_ENABLE ?= n
35QEMU_VIRTFS_HOST_DIR ?= $(ROOT)
Pascal Brand6044eb52016-02-23 15:48:31 +010036
Igor Opaniuk0aea4ef2017-01-13 12:52:00 +020037# Enable SLiRP user networking
38QEMU_USERNET_ENABLE ?= n
Pascal Brand6044eb52016-02-23 15:48:31 +010039################################################################################
40# Check coherency of compilation mode
41################################################################################
42
43ifneq ($(COMPILE_NS_USER),)
44ifeq ($(COMPILE_NS_KERNEL),)
45$(error COMPILE_NS_KERNEL must be defined as COMPILE_NS_USER=$(COMPILE_NS_USER) is defined)
46endif
47ifeq (,$(filter $(COMPILE_NS_USER),32 64))
48$(error COMPILE_NS_USER=$(COMPILE_NS_USER) - Should be 32 or 64)
49endif
50endif
51
52ifneq ($(COMPILE_NS_KERNEL),)
53ifeq ($(COMPILE_NS_USER),)
54$(error COMPILE_NS_USER must be defined as COMPILE_NS_KERNEL=$(COMPILE_NS_KERNEL) is defined)
55endif
56ifeq (,$(filter $(COMPILE_NS_KERNEL),32 64))
57$(error COMPILE_NS_KERNEL=$(COMPILE_NS_KERNEL) - Should be 32 or 64)
58endif
59endif
60
61ifeq ($(COMPILE_NS_KERNEL),32)
62ifneq ($(COMPILE_NS_USER),32)
63$(error COMPILE_NS_USER=$(COMPILE_NS_USER) - Should be 32 as COMPILE_NS_KERNEL=$(COMPILE_NS_KERNEL))
64endif
65endif
66
67ifneq ($(COMPILE_S_USER),)
68ifeq ($(COMPILE_S_KERNEL),)
69$(error COMPILE_S_KERNEL must be defined as COMPILE_S_USER=$(COMPILE_S_USER) is defined)
70endif
71ifeq (,$(filter $(COMPILE_S_USER),32 64))
72$(error COMPILE_S_USER=$(COMPILE_S_USER) - Should be 32 or 64)
73endif
74endif
75
76ifneq ($(COMPILE_S_KERNEL),)
77OPTEE_OS_COMMON_EXTRA_FLAGS ?= O=out/arm
78OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm/core/tee.bin
79ifeq ($(COMPILE_S_USER),)
80$(error COMPILE_S_USER must be defined as COMPILE_S_KERNEL=$(COMPILE_S_KERNEL) is defined)
81endif
82ifeq (,$(filter $(COMPILE_S_KERNEL),32 64))
83$(error COMPILE_S_KERNEL=$(COMPILE_S_KERNEL) - Should be 32 or 64)
84endif
85endif
86
87ifeq ($(COMPILE_S_KERNEL),32)
88ifneq ($(COMPILE_S_USER),32)
89$(error COMPILE_S_USER=$(COMPILE_S_USER) - Should be 32 as COMPILE_S_KERNEL=$(COMPILE_S_KERNEL))
90endif
91endif
92
93
94################################################################################
95# set the compiler when COMPILE_xxx are defined
96################################################################################
Pascal Brandefe56592016-03-03 10:46:52 +010097CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH$(COMPILE_NS_USER)_CROSS_COMPILE)"
98CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH$(COMPILE_NS_KERNEL)_CROSS_COMPILE)"
99CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH$(COMPILE_S_USER)_CROSS_COMPILE)"
100CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH$(COMPILE_S_KERNEL)_CROSS_COMPILE)"
Pascal Brand6044eb52016-02-23 15:48:31 +0100101
102ifeq ($(COMPILE_S_USER),32)
Pascal Brand6044eb52016-02-23 15:48:31 +0100103OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm32
104endif
105ifeq ($(COMPILE_S_USER),64)
Pascal Brand6044eb52016-02-23 15:48:31 +0100106OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm/export-ta_arm64
107endif
108
Pascal Brand6044eb52016-02-23 15:48:31 +0100109ifeq ($(COMPILE_S_KERNEL),64)
Pascal Brand6044eb52016-02-23 15:48:31 +0100110OPTEE_OS_COMMON_EXTRA_FLAGS += CFG_ARM64_core=y
111endif
112
113
Pascal Brandd6536da2015-09-01 10:38:43 +0200114################################################################################
Pascal Brand070d9552015-09-01 15:33:22 +0200115# defines, macros, configuration etc
116################################################################################
117define KERNEL_VERSION
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200118$(shell cd $(LINUX_PATH) && $(MAKE) --no-print-directory kernelversion)
Pascal Brand070d9552015-09-01 15:33:22 +0200119endef
Victor Chong3bcef442017-08-07 10:57:55 +0100120
121# Read stdin, expand ${VAR} environment variables, output to stdout
122# http://superuser.com/a/302847
123define expand-env-var
124awk '{while(match($$0,"[$$]{[^}]*}")) {var=substr($$0,RSTART+2,RLENGTH -3);gsub("[$$]{"var"}",ENVIRON[var])}}1'
125endef
126
Pascal Brand070d9552015-09-01 15:33:22 +0200127DEBUG ?= 0
128
129################################################################################
Pascal Brandcb452602015-10-13 10:46:33 +0200130# default target is all
131################################################################################
Victor Chong46f85852017-08-09 08:26:41 +0100132.PHONY: all
Pascal Brandcb452602015-10-13 10:46:33 +0200133all:
134
135################################################################################
Pascal Brand440ef9c2015-09-08 16:01:58 +0200136# Busybox
137################################################################################
138BUSYBOX_COMMON_TARGET ?= TOBEDEFINED
139BUSYBOX_CLEAN_COMMON_TARGET ?= TOBEDEFINED
Pascal Brand440ef9c2015-09-08 16:01:58 +0200140
Victor Chong46f85852017-08-09 08:26:41 +0100141.PHONY: busybox-common
Pascal Brand440ef9c2015-09-08 16:01:58 +0200142busybox-common: linux
143 cd $(GEN_ROOTFS_PATH) && \
Pascal Brandefe56592016-03-03 10:46:52 +0100144 CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \
Pascal Brand440ef9c2015-09-08 16:01:58 +0200145 PATH=${PATH}:$(LINUX_PATH)/usr \
146 $(GEN_ROOTFS_PATH)/generate-cpio-rootfs.sh \
147 $(BUSYBOX_COMMON_TARGET)
148
Victor Chong46f85852017-08-09 08:26:41 +0100149.PHONY: busybox-clean-common
Pascal Brand440ef9c2015-09-08 16:01:58 +0200150busybox-clean-common:
151 cd $(GEN_ROOTFS_PATH) && \
152 $(GEN_ROOTFS_PATH)/generate-cpio-rootfs.sh \
153 $(BUSYBOX_CLEAN_COMMON_TARGET)
154
Victor Chong46f85852017-08-09 08:26:41 +0100155.PHONY: busybox-cleaner-common
Pascal Brand440ef9c2015-09-08 16:01:58 +0200156busybox-cleaner-common:
157 rm -rf $(GEN_ROOTFS_PATH)/build
158 rm -rf $(GEN_ROOTFS_PATH)/filelist-final.txt
Victor Chong87f5fcf2015-11-26 10:52:52 +0900159
Pascal Brande3d85982015-09-10 17:20:42 +0200160################################################################################
161# Linux
162################################################################################
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300163ifeq ($(CFG_TEE_BENCHMARK),y)
164LINUX_DEFCONFIG_BENCH ?= $(CURDIR)/kconfigs/tee_bench.conf
165endif
166
Pascal Brande3d85982015-09-10 17:20:42 +0200167LINUX_COMMON_FLAGS ?= LOCALVERSION= CROSS_COMPILE=$(CROSS_COMPILE_NS_KERNEL)
168
Victor Chong46f85852017-08-09 08:26:41 +0100169.PHONY: linux-common
Pascal Brande3d85982015-09-10 17:20:42 +0200170linux-common: linux-defconfig
171 $(MAKE) -C $(LINUX_PATH) $(LINUX_COMMON_FLAGS)
172
Jerome Forissiere1002382015-11-26 11:36:00 +0100173$(LINUX_PATH)/.config: $(LINUX_DEFCONFIG_COMMON_FILES)
174 cd $(LINUX_PATH) && \
175 ARCH=$(LINUX_DEFCONFIG_COMMON_ARCH) \
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300176 scripts/kconfig/merge_config.sh $(LINUX_DEFCONFIG_COMMON_FILES) \
177 $(LINUX_DEFCONFIG_BENCH)
Jerome Forissiere1002382015-11-26 11:36:00 +0100178
Victor Chong46f85852017-08-09 08:26:41 +0100179.PHONY: linux-defconfig-clean-common
Pascal Brande3d85982015-09-10 17:20:42 +0200180linux-defconfig-clean-common:
Victor Chong87f5fcf2015-11-26 10:52:52 +0900181 rm -f $(LINUX_PATH)/.config
Pascal Brande3d85982015-09-10 17:20:42 +0200182
Victor Chong46f85852017-08-09 08:26:41 +0100183# LINUX_CLEAN_COMMON_FLAGS should be defined in specific makefiles (hikey.mk,...)
184.PHONY: linux-clean-common
Pascal Brande3d85982015-09-10 17:20:42 +0200185linux-clean-common: linux-defconfig-clean
186 $(MAKE) -C $(LINUX_PATH) $(LINUX_CLEAN_COMMON_FLAGS) clean
187
Victor Chong46f85852017-08-09 08:26:41 +0100188# LINUX_CLEANER_COMMON_FLAGS should be defined in specific makefiles (hikey.mk,...)
189.PHONY: linux-cleaner-common
Pascal Brande3d85982015-09-10 17:20:42 +0200190linux-cleaner-common: linux-defconfig-clean
Victor Chong87f5fcf2015-11-26 10:52:52 +0900191 $(MAKE) -C $(LINUX_PATH) $(LINUX_CLEANER_COMMON_FLAGS) distclean
Pascal Brande3d85982015-09-10 17:20:42 +0200192
Pascal Brand440ef9c2015-09-08 16:01:58 +0200193################################################################################
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200194# EDK2 / Tianocore
195################################################################################
196# Make sure edksetup.sh only will be called once and that we don't rebuild
197# BaseTools again and again.
198$(EDK2_PATH)/Conf/target.txt:
Jens Wiklander650f2982017-04-05 10:08:59 +0200199 set -e && cd $(EDK2_PATH) && source edksetup.sh && \
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200200 $(MAKE) -j1 -C $(EDK2_PATH)/BaseTools
201
Victor Chong46f85852017-08-09 08:26:41 +0100202.PHONY: edk2-common
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200203edk2-common: $(EDK2_PATH)/Conf/target.txt
Jens Wiklander650f2982017-04-05 10:08:59 +0200204 set -e && cd $(EDK2_PATH) && source edksetup.sh && \
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200205 $(call edk2-call)
206
Victor Chong46f85852017-08-09 08:26:41 +0100207.PHONY: edk2-clean-common
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200208edk2-clean-common:
Jens Wiklander650f2982017-04-05 10:08:59 +0200209 set -e && cd $(EDK2_PATH) && source edksetup.sh && \
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200210 $(call edk2-call) clean && \
Victor Chong2c429d72017-06-06 15:10:07 +0100211 $(MAKE) -j1 -C $(EDK2_PATH)/BaseTools clean
212 rm -rf $(EDK2_PATH)/Build
Victor Chong46f85852017-08-09 08:26:41 +0100213 rm -rf $(EDK2_PATH)/Conf/.cache
Victor Chong2c429d72017-06-06 15:10:07 +0100214 rm -f $(EDK2_PATH)/Conf/build_rule.txt
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200215 rm -f $(EDK2_PATH)/Conf/target.txt
Victor Chong2c429d72017-06-06 15:10:07 +0100216 rm -f $(EDK2_PATH)/Conf/tools_def.txt
Victor Chong46f85852017-08-09 08:26:41 +0100217
Igor Opaniuk97d05292016-10-26 14:46:14 +0300218################################################################################
219# QEMU / QEMUv8
220################################################################################
221QEMU_CONFIGURE_PARAMS_COMMON = --cc="$(CCACHE)gcc" --extra-cflags="-Wno-error"
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200222
Igor Opaniuk97d05292016-10-26 14:46:14 +0300223ifeq ($(QEMU_VIRTFS_ENABLE),y)
Jerome Forissier23b41312016-11-12 16:02:01 +0100224QEMU_CONFIGURE_PARAMS_COMMON += --enable-virtfs
Igor Opaniuk97d05292016-10-26 14:46:14 +0300225QEMU_EXTRA_ARGS +=\
226 -fsdev local,id=fsdev0,path=$(QEMU_VIRTFS_HOST_DIR),security_model=none \
227 -device virtio-9p-device,fsdev=fsdev0,mount_tag=host
228endif
Igor Opaniuk0aea4ef2017-01-13 12:52:00 +0200229
230ifeq ($(QEMU_USERNET_ENABLE),y)
231QEMU_EXTRA_ARGS +=\
232 -netdev user,id=vmnic -device virtio-net-device,netdev=vmnic
233endif
Jerome Forissierefd56292017-01-31 17:46:10 +0100234
235define run-help
236 @echo
237 @echo \* QEMU is now waiting to start the execution
238 @echo \* Start execution with either a \'c\' followed by \<enter\> in the QEMU console or
239 @echo \* attach a debugger and continue from there.
240 @echo \*
241 @echo \* To run OP-TEE tests, use the xtest command in the \'Normal World\' terminal
242 @echo \* Enter \'xtest -h\' for help.
243 @echo
244endef
245
Jerome Forissier5b585252017-08-03 13:22:21 +0200246ifneq (, $(LAUNCH_TERMINAL))
Alex Bennée07580602017-07-07 14:26:51 +0100247define launch-terminal
248 @nc -z 127.0.0.1 $(1) || \
249 $(LAUNCH_TERMINAL) $(SOC_TERM_PATH)/soc_term $(1) &
250endef
251else
Jerome Forissierefd56292017-01-31 17:46:10 +0100252gnome-terminal := $(shell command -v gnome-terminal 2>/dev/null)
253xterm := $(shell command -v xterm 2>/dev/null)
254ifdef gnome-terminal
255# Note: the title option (-t) is ignored with gnome-terminal versions
256# >= 3.14 and < 3.20
257define launch-terminal
258 @nc -z 127.0.0.1 $(1) || \
259 $(gnome-terminal) -t "$(2)" -x $(SOC_TERM_PATH)/soc_term $(1) &
260endef
261else
262ifdef xterm
263define launch-terminal
264 @nc -z 127.0.0.1 $(1) || \
265 $(xterm) -title $(2) -e $(BASH) -c "$(SOC_TERM_PATH)/soc_term $(1)" &
266endef
267else
268check-terminal := @echo "Error: could not find gnome-terminal nor xterm" ; false
269endif
270endif
Alex Bennée07580602017-07-07 14:26:51 +0100271endif
Jerome Forissierefd56292017-01-31 17:46:10 +0100272
273define wait-for-ports
274 @while ! nc -z 127.0.0.1 $(1) || ! nc -z 127.0.0.1 $(2); do sleep 1; done
275endef
276
Pascal Brand9a0f50f2015-09-08 15:34:17 +0200277################################################################################
Pascal Brand070d9552015-09-01 15:33:22 +0200278# OP-TEE
279################################################################################
Pascal Brand6044eb52016-02-23 15:48:31 +0100280OPTEE_OS_COMMON_FLAGS ?= \
281 $(OPTEE_OS_COMMON_EXTRA_FLAGS) \
282 CROSS_COMPILE=$(CROSS_COMPILE_S_USER) \
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200283 CROSS_COMPILE_core=$(CROSS_COMPILE_S_KERNEL) \
Victor Chongbadc7922015-12-08 17:23:20 +0000284 CROSS_COMPILE_ta_arm64=$(AARCH64_CROSS_COMPILE) \
285 CROSS_COMPILE_ta_arm32=$(AARCH32_CROSS_COMPILE) \
Pascal Brand23ef2052016-03-09 15:25:01 +0100286 CFG_TEE_CORE_LOG_LEVEL=$(CFG_TEE_CORE_LOG_LEVEL) \
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300287 DEBUG=$(DEBUG) \
288 CFG_TEE_BENCHMARK=$(CFG_TEE_BENCHMARK)
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200289
Victor Chong46f85852017-08-09 08:26:41 +0100290.PHONY: optee-os-common
Pascal Brand070d9552015-09-01 15:33:22 +0200291optee-os-common:
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200292 $(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_COMMON_FLAGS)
293
Pascal Brand6044eb52016-02-23 15:48:31 +0100294OPTEE_OS_CLEAN_COMMON_FLAGS ?= $(OPTEE_OS_COMMON_EXTRA_FLAGS)
Pascal Brand070d9552015-09-01 15:33:22 +0200295
Victor Chong46f85852017-08-09 08:26:41 +0100296.PHONY: optee-os-clean-common
Igor Opaniuk4f667cd2017-05-31 14:11:56 +0300297ifeq ($(CFG_TEE_BENCHMARK),y)
298optee-os-clean-common: benchmark-app-clean-common
299endif
Igor Opaniuk584efe52017-08-07 01:41:48 +0300300optee-os-clean-common: xtest-clean optee-examples-clean
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200301 $(MAKE) -C $(OPTEE_OS_PATH) $(OPTEE_OS_CLEAN_COMMON_FLAGS) clean
302
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300303OPTEE_CLIENT_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \
304 CFG_TEE_BENCHMARK=$(CFG_TEE_BENCHMARK) \
Pascal Brand070d9552015-09-01 15:33:22 +0200305
Victor Chong46f85852017-08-09 08:26:41 +0100306.PHONY: optee-client-common
Pascal Brand070d9552015-09-01 15:33:22 +0200307optee-client-common:
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200308 $(MAKE) -C $(OPTEE_CLIENT_PATH) $(OPTEE_CLIENT_COMMON_FLAGS)
309
Victor Chong87f5fcf2015-11-26 10:52:52 +0900310# OPTEE_CLIENT_CLEAN_COMMON_FLAGS can be defined in specific makefiles
311# (hikey.mk,...) if necessary
Pascal Brand070d9552015-09-01 15:33:22 +0200312
Victor Chong46f85852017-08-09 08:26:41 +0100313.PHONY: optee-client-clean-common
Pascal Brand070d9552015-09-01 15:33:22 +0200314optee-client-clean-common:
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200315 $(MAKE) -C $(OPTEE_CLIENT_PATH) $(OPTEE_CLIENT_CLEAN_COMMON_FLAGS) \
316 clean
317
Pascal Brand070d9552015-09-01 15:33:22 +0200318################################################################################
Pascal Brandd6536da2015-09-01 10:38:43 +0200319# xtest / optee_test
320################################################################################
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200321XTEST_COMMON_FLAGS ?= CROSS_COMPILE_HOST=$(CROSS_COMPILE_NS_USER)\
322 CROSS_COMPILE_TA=$(CROSS_COMPILE_S_USER) \
323 TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) \
Etienne Carriere5e113512016-10-21 10:13:57 +0200324 OPTEE_CLIENT_EXPORT=$(OPTEE_CLIENT_EXPORT) \
Pascal Brand6044eb52016-02-23 15:48:31 +0100325 COMPILE_NS_USER=$(COMPILE_NS_USER) \
Igor Opaniuk4f667cd2017-05-31 14:11:56 +0300326 O=$(OPTEE_TEST_OUT_PATH)
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200327
Victor Chong46f85852017-08-09 08:26:41 +0100328.PHONY: xtest-common
Pascal Brandd6536da2015-09-01 10:38:43 +0200329xtest-common: optee-os optee-client
Pascal Branddc83b9a2015-09-24 02:43:25 +0200330 $(MAKE) -C $(OPTEE_TEST_PATH) $(XTEST_COMMON_FLAGS)
Pascal Brandd6536da2015-09-01 10:38:43 +0200331
Etienne Carriere965db7b2017-01-10 17:50:21 +0100332XTEST_CLEAN_COMMON_FLAGS ?= O=$(OPTEE_TEST_OUT_PATH) \
333 TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) \
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200334
Victor Chong46f85852017-08-09 08:26:41 +0100335.PHONY: xtest-clean-common
Pascal Brandd6536da2015-09-01 10:38:43 +0200336xtest-clean-common:
Pascal Branddc83b9a2015-09-24 02:43:25 +0200337 $(MAKE) -C $(OPTEE_TEST_PATH) $(XTEST_CLEAN_COMMON_FLAGS) clean
Pascal Brandd6536da2015-09-01 10:38:43 +0200338
Pascal Branddc83b9a2015-09-24 02:43:25 +0200339XTEST_PATCH_COMMON_FLAGS ?= $(XTEST_COMMON_FLAGS)
Jerome Forissierae45fbf2015-09-04 09:40:17 +0200340
Victor Chong46f85852017-08-09 08:26:41 +0100341.PHONY: xtest-patch-common
Pascal Branddc83b9a2015-09-24 02:43:25 +0200342xtest-patch-common:
343 $(MAKE) -C $(OPTEE_TEST_PATH) $(XTEST_PATCH_COMMON_FLAGS) patch
Victor Chong8519bcf2016-07-15 08:43:03 +0100344
345################################################################################
Igor Opaniuk584efe52017-08-07 01:41:48 +0300346# sample applications / optee_examples
Victor Chong8519bcf2016-07-15 08:43:03 +0100347################################################################################
Igor Opaniuk584efe52017-08-07 01:41:48 +0300348OPTEE_EXAMPLES_COMMON_FLAGS ?= HOST_CROSS_COMPILE=$(CROSS_COMPILE_NS_USER)\
Victor Chong8519bcf2016-07-15 08:43:03 +0100349 TA_CROSS_COMPILE=$(CROSS_COMPILE_S_USER) \
350 TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR) \
351 TEEC_EXPORT=$(OPTEE_CLIENT_EXPORT)
352
Igor Opaniuk584efe52017-08-07 01:41:48 +0300353.PHONY: optee-examples-common
354optee-examples-common: optee-os optee-client
355 $(MAKE) -C $(OPTEE_EXAMPLES_PATH) $(OPTEE_EXAMPLES_COMMON_FLAGS)
Victor Chong8519bcf2016-07-15 08:43:03 +0100356
Igor Opaniuk584efe52017-08-07 01:41:48 +0300357OPTEE_EXAMPLES_CLEAN_COMMON_FLAGS ?= TA_DEV_KIT_DIR=$(OPTEE_OS_TA_DEV_KIT_DIR)
Victor Chong8519bcf2016-07-15 08:43:03 +0100358
Igor Opaniuk584efe52017-08-07 01:41:48 +0300359.PHONY: optee-examples-clean-common
360optee-examples-clean-common:
361 $(MAKE) -C $(OPTEE_EXAMPLES_PATH) \
362 $(OPTEE_EXAMPLES_CLEAN_COMMON_FLAGS) clean
Etienne Carriere5e113512016-10-21 10:13:57 +0200363
364################################################################################
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300365# benchmark_app
366################################################################################
Yves Lefloch221154a2017-08-02 17:36:58 +0200367BENCHMARK_APP_COMMON_FLAGS ?= CROSS_COMPILE=$(CROSS_COMPILE_NS_USER) \
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300368 TEEC_EXPORT=$(OPTEE_CLIENT_EXPORT) \
369 TEEC_INTERNAL_INCLUDES=$(OPTEE_CLIENT_PATH)/libteec
370
Victor Chong46f85852017-08-09 08:26:41 +0100371.PHONY: benchmark-app-common
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300372benchmark-app-common: optee-os optee-client
373 $(MAKE) -C $(BENCHMARK_APP_PATH) $(BENCHMARK_APP_COMMON_FLAGS)
374
Victor Chong46f85852017-08-09 08:26:41 +0100375.PHONY: benchmark-app-clean-common
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300376benchmark-app-clean-common:
377 $(MAKE) -C $(BENCHMARK_APP_PATH) clean
378
379################################################################################
Etienne Carriere5e113512016-10-21 10:13:57 +0200380# rootfs
381################################################################################
Victor Chong46f85852017-08-09 08:26:41 +0100382.PHONY: update_rootfs-common
Etienne Carriere5e113512016-10-21 10:13:57 +0200383update_rootfs-common: busybox filelist-tee
384 cat $(GEN_ROOTFS_PATH)/filelist-final.txt > $(GEN_ROOTFS_PATH)/filelist.tmp
385 cat $(GEN_ROOTFS_FILELIST) >> $(GEN_ROOTFS_PATH)/filelist.tmp
386 cd $(GEN_ROOTFS_PATH) && \
387 $(LINUX_PATH)/usr/gen_init_cpio $(GEN_ROOTFS_PATH)/filelist.tmp | \
388 gzip > $(GEN_ROOTFS_PATH)/filesystem.cpio.gz
389
Victor Chong46f85852017-08-09 08:26:41 +0100390.PHONY: update_rootfs-clean-common
Etienne Carriere5e113512016-10-21 10:13:57 +0200391update_rootfs-clean-common:
392 rm -f $(GEN_ROOTFS_PATH)/filesystem.cpio.gz
393 rm -f $(GEN_ROOTFS_PATH)/filelist-all.txt
394 rm -f $(GEN_ROOTFS_PATH)/filelist-tmp.txt
395 rm -f $(GEN_ROOTFS_FILELIST)
396
Victor Chong46f85852017-08-09 08:26:41 +0100397.PHONY: filelist-tee-common
Igor Opaniuk4f667cd2017-05-31 14:11:56 +0300398ifeq ($(CFG_TEE_BENCHMARK),y)
399filelist-tee-common: benchmark-app
400endif
Etienne Carriere5e113512016-10-21 10:13:57 +0200401filelist-tee-common: fl:=$(GEN_ROOTFS_FILELIST)
Igor Opaniuk584efe52017-08-07 01:41:48 +0300402filelist-tee-common: optee-client xtest optee-examples
Etienne Carriere5e113512016-10-21 10:13:57 +0200403 @echo "# filelist-tee-common /start" > $(fl)
404 @echo "dir /lib/optee_armtz 755 0 0" >> $(fl)
Igor Opaniuk584efe52017-08-07 01:41:48 +0300405 @if [ -e $(OPTEE_EXAMPLES_PATH)/out/ca ]; then \
406 for file in $(OPTEE_EXAMPLES_PATH)/out/ca/*; do \
407 echo "file /usr/bin/$$(basename $$file)" \
408 "$$file 755 0 0" >> $(fl); \
409 done; \
410 fi
411 @if [ -e $(OPTEE_EXAMPLES_PATH)/out/ta ]; then \
412 for file in $(OPTEE_EXAMPLES_PATH)/out/ta/*; do \
413 echo "file /lib/optee_armtz/$$(basename $$file)" \
414 "$$example 755 0 0" >> $(fl); \
415 done; \
416 fi
Etienne Carriere5e113512016-10-21 10:13:57 +0200417 @echo "# xtest / optee_test" >> $(fl)
418 @find $(OPTEE_TEST_OUT_PATH) -type f -name "xtest" | \
419 sed 's/\(.*\)/file \/bin\/xtest \1 755 0 0/g' >> $(fl)
420 @find $(OPTEE_TEST_OUT_PATH) -name "*.ta" | \
421 sed 's/\(.*\)\/\(.*\)/file \/lib\/optee_armtz\/\2 \1\/\2 444 0 0/g' \
422 >> $(fl)
Igor Opaniuk27edfc72016-10-25 18:33:54 +0300423 @if [ -e $(BENCHMARK_APP_PATH)/benchmark ]; then \
424 echo "file /bin/benchmark" \
425 "$(BENCHMARK_APP_PATH)/benchmark 755 0 0" >> $(fl); \
426 fi
Igor Opaniuk0aea4ef2017-01-13 12:52:00 +0200427 @if [ "$(QEMU_USERNET_ENABLE)" = "y" ]; then \
428 echo "slink /etc/rc.d/S02_udhcp_networking /etc/init.d/udhcpc 755 0 0" \
429 >> $(fl); \
430 fi
Etienne Carriere5e113512016-10-21 10:13:57 +0200431 @echo "# Secure storage dir" >> $(fl)
432 @echo "dir /data 755 0 0" >> $(fl)
433 @echo "dir /data/tee 755 0 0" >> $(fl)
434 @if [ -e $(OPTEE_GENDRV_MODULE) ]; then \
435 echo "# OP-TEE device" >> $(fl); \
436 echo "dir /lib/modules 755 0 0" >> $(fl); \
437 echo "dir /lib/modules/$(call KERNEL_VERSION) 755 0 0" \
438 >> $(fl); \
439 echo "file /lib/modules/$(call KERNEL_VERSION)/optee.ko" \
440 "$(OPTEE_GENDRV_MODULE) 755 0 0" \
441 >> $(fl); \
442 fi
443 @echo "# OP-TEE Client" >> $(fl)
444 @echo "file /bin/tee-supplicant $(OPTEE_CLIENT_EXPORT)/bin/tee-supplicant 755 0 0" \
445 >> $(fl)
446 @echo "file /lib/libteec.so.1.0 $(OPTEE_CLIENT_EXPORT)/lib/libteec.so.1.0 755 0 0" \
447 >> $(fl)
448 @echo "slink /lib/libteec.so.1 libteec.so.1.0 755 0 0" >> $(fl)
449 @echo "slink /lib/libteec.so libteec.so.1 755 0 0" >> $(fl)
450 @if [ -e $(OPTEE_CLIENT_EXPORT)/lib/libsqlfs.so.1.0 ]; then \
451 echo "file /lib/libsqlfs.so.1.0" \
452 "$(OPTEE_CLIENT_EXPORT)/lib/libsqlfs.so.1.0 755 0 0" \
453 >> $(fl); \
454 echo "slink /lib/libsqlfs.so.1 libsqlfs.so.1.0 755 0 0" >> $(fl); \
455 echo "slink /lib/libsqlfs.so libsqlfs.so.1 755 0 0" >> $(fl); \
456 fi
Jerome Forissier1333db42017-01-18 10:20:51 +0100457 @echo "file /etc/init.d/optee $(BUILD_PATH)/init.d.optee 755 0 0" >> $(fl)
458 @echo "slink /etc/rc.d/S09_optee /etc/init.d/optee 755 0 0" >> $(fl)
Etienne Carriere5e113512016-10-21 10:13:57 +0200459 @echo "# filelist-tee-common /end" >> $(fl)