xref: /OK3568_Linux_fs/external/security/rk_tee_user/v1/Makefile (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1ifneq ($O,)
2	out-dir := $O
3else
4	# If no build folder has been specified, then create all build files in
5	# the current directory under a folder named out.
6	out-dir := $(CURDIR)/out
7endif
8
9-include $(TA_DEV_KIT_DIR)/host_include/conf.mk
10
11ifneq ($V,1)
12	q := @
13else
14	q :=
15endif
16
17.PHONY: all
18ifneq ($(wildcard $(TA_DEV_KIT_DIR)/host_include/conf.mk),)
19ifeq "$(BUILD_CA)" "y"
20all: rk_test ta
21else
22all: ta
23endif
24else
25all:
26	$(q)echo "TA_DEV_KIT_DIR is not correctly defined" && false
27endif
28
29.PHONY: ta
30ta:
31	$(q)$(MAKE) -C ta CROSS_COMPILE="$(CROSS_COMPILE_TA)" \
32			  q=$(q) \
33			  O=$(out-dir)/ta \
34			  $@
35
36.PHONY: rk_test
37rk_test:
38	$(q)$(MAKE) -C host/rk_test CROSS_COMPILE="$(CROSS_COMPILE_HOST)" \
39				--no-builtin-variables \
40				q=$(q) \
41				O=$(out-dir)/rk_test  \
42				$@
43
44.PHONY: clean
45ifneq ($(wildcard $(TA_DEV_KIT_DIR)/host_include/conf.mk),)
46clean:
47	$(q)$(MAKE) -C host/rk_test O=$(out-dir) $@
48	$(q)$(MAKE) -C ta O=$(out-dir)/ta q=$(q) $@
49	$(q)find ta/ \( -name "*.ta" -o -name "*.dmp" -o -name "*.elf" -o -name "*.map" -o -name "*.d" \) -exec rm -rf {} \;
50else
51clean:
52	$(q)echo "TA_DEV_KIT_DIR is not correctly defined"
53	$(q)echo "You can remove manually $(out-dir)"
54endif
55
56.PHONY: patch
57patch:
58ifdef CFG_GP_PACKAGE_PATH
59CFG_GP_API?=1.0
60CFG_GP_XSL_PACKAGE_PATH?=$(CURDIR)/package/testsuite/global_platform/api_1.0/GP_XSL_TEE_Initial_Configuration-Test_Suite_v1_0_0-2014-12-03-STM
61
62ifeq "$(wildcard $(CFG_GP_XSL_PACKAGE_PATH) )" ""
63$(error CFG_GP_XSL_PACKAGE_PATH must contain the xsl package)
64endif
65
66ifeq "$(wildcard $(CFG_GP_PACKAGE_PATH) )" ""
67$(error CFG_GP_PACKAGE_PATH must contain the xml package from GP)
68endif
69
70ifeq "$(wildcard /usr/include/openssl )" ""
71$(error openssl must be installed)
72endif
73
74# Note that only TEE_Initial_Configuration-Test_Suite_v1_1_0_4-2014_11_07 is supported
75
76GP_XTEST_OUT_DIR=$(CURDIR)/host/xtest
77GP_XTEST_IN_DIR=${GP_XTEST_OUT_DIR}/global_platform/${CFG_GP_API}
78GP_USERTA_DIR=$(CURDIR)/ta
79
80define patch-file
81	@if [ ! -e ${1} ]; then \
82		echo "Error: File to patch is unknown: $1"; \
83		return 1; \
84	fi
85	@if [ ! -e ${2} ]; then \
86		echo "Error: Patch to apply is unknown: $2"; \
87		return 1; \
88	fi
89	@if [ ! -e ${1}.orig ]; then \
90		patch -N -b ${1} < ${2}; \
91	else \
92		echo "Warning: Patch already applied on `basename $1`"; \
93	fi
94endef
95
96# openssl .h file installation
97forgpdir=${CURDIR}/host/xtest/for_gp
98.PHONY: patch-openssl
99patch-openssl:
100	$(q)mkdir -p ${forgpdir}/include/openssl ${forgpdir}/lib
101	$(q)if [ -d /usr/include/x86_64-linux-gnu/openssl ]; then \
102		cp -r /usr/include/x86_64-linux-gnu/openssl ${forgpdir}/include ; \
103	fi
104	$(q)cp /usr/include/openssl/*.h $f ${forgpdir}/include/openssl
105
106define mv-package
107	@if [ -d ${1} ]; then \
108		mv ${1} ${CFG_GP_PACKAGE_PATH}/packages ;\
109	fi
110endef
111
112define patch-xalan
113	$(q)rm -f ${GP_XTEST_OUT_DIR}/${3} ${GP_XTEST_OUT_DIR}/${3}.orig
114	$(q)xalan -in ${GP_XTEST_IN_DIR}/${1} -xsl ${GP_XTEST_IN_DIR}/${2} -out ${GP_XTEST_OUT_DIR}/${3}
115endef
116
117# Generate host files
118define patch-cp-ta
119	$(q)rm -rf $(GP_USERTA_DIR)/${3}
120	$(q)mkdir -p $(GP_USERTA_DIR)/${3}
121	$(q)cp -p $(CFG_GP_PACKAGE_PATH)/${1}/* $(GP_USERTA_DIR)/${3}
122	$(q)cp -p $(CFG_GP_XSL_PACKAGE_PATH)/${2}/* $(GP_USERTA_DIR)/${3}
123endef
124
125.PHONY: patch-generate-host
126patch-generate-host: patch-package
127	@echo "INFO: Generate host tests"
128	$(q) mkdir -p ${GP_XTEST_IN_DIR} ${GP_XTEST_IN_DIR}
129	$(q)find ${CFG_GP_PACKAGE_PATH}/packages -type f -name "*.xml" -exec cp -p {} ${GP_XTEST_IN_DIR} \;
130	$(q)find ${CFG_GP_XSL_PACKAGE_PATH}/packages -type f -name "*.xsl" -exec cp -p {} ${GP_XTEST_IN_DIR} \;
131	$(call patch-xalan,TEE.xml,adbg_case_declare.xsl,adbg_case_declare.h)
132	$(call patch-xalan,TEE.xml,adbg_entry_declare.xsl,adbg_entry_declare.h)
133	$(call patch-xalan,TEE.xml,TEE.xsl,xtest_7000_gp.c)
134	$(call patch-xalan,TEE_DataStorage_API.xml,TEE_DataStorage_API.xsl,xtest_7500.c)
135	$(call patch-xalan,TEE_Internal_API.xml,TEE_Internal_API.xsl,xtest_8000.c)
136	$(call patch-xalan,TEE_TimeArithm_API.xml,TEE_TimeArithm_API.xsl,xtest_8500.c)
137	$(call patch-xalan,TEE_Crypto_API.xml,TEE_Crypto_API.xsl,xtest_9000.c)
138	@echo "INFO: Patch host tests"
139	# $(q)sed -i '752 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_7000.c
140	# $(q)sed -i '1076 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_8000.c
141	# $(q)sed -i '2549 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_8500.c
142	# $(q)sed -i '246 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_9000.c
143	$(call patch-file,host/xtest/xtest_9000.c,${CFG_GP_XSL_PACKAGE_PATH}/host/xtest/xtest_9000.c.patch)
144
145.PHONY: patch-generate-ta
146patch-generate-ta: patch-package
147	@echo "INFO: Generate TA"
148	$(call patch-cp-ta,TTAs/TTA_Arithmetical/TTA_Arithmetical/code_files,TTAs/TTA_Arithmetical/code_files,GP_TTA_Arithmetical)
149	$(call patch-cp-ta,TTAs/TTA_DS/TTA_DS/code_files,TTAs/TTA_DS/code_files,GP_TTA_DS)
150	$(call patch-cp-ta,TTAs/TTA_ClientAPI/TTA_answerErrorTo_Invoke/code_files,TTAs/TTA_ClientAPI/TTA_answerErrorTo_Invoke/code_files,GP_TTA_answerErrorTo_Invoke)
151	$(call patch-cp-ta,TTAs/TTA_ClientAPI/TTA_check_OpenSession_with_4_parameters/code_files,TTAs/TTA_ClientAPI/TTA_check_OpenSession_with_4_parameters/code_files,GP_TTA_check_OpenSession_with_4_parameters)
152	$(q) cp $(CFG_GP_PACKAGE_PATH)/TTAs/TTA_ClientAPI/ta_check_OpenSession_with_4_parameters/code_files/TTA_check_OpenSession_with_4_parameters_protocol.h $(GP_USERTA_DIR)/GP_TTA_check_OpenSession_with_4_parameters
153	$(call patch-cp-ta,TTAs/TTA_ClientAPI/TTA_answerErrorTo_OpenSession/code_files,TTAs/TTA_ClientAPI/TTA_answerErrorTo_OpenSession/code_files,GP_TTA_answerErrorTo_OpenSession)
154	$(call patch-cp-ta,TTAs/TTA_ClientAPI/TTA_testingClientAPI/code_files,TTAs/TTA_ClientAPI/TTA_testingClientAPI/code_files,GP_TTA_testingClientAPI)
155	$(call patch-cp-ta,TTAs/TTA_ClientAPI/TTA_answerSuccessTo_OpenSession_Invoke/code_files,TTAs/TTA_ClientAPI/TTA_answerSuccessTo_OpenSession_Invoke/code_files,GP_TTA_answerSuccessTo_OpenSession_Invoke)
156	$(call patch-cp-ta,TTAs/TTA_Crypto/TTA_Crypto/code_files,TTAs/TTA_Crypto/code_files,GP_TTA_Crypto)
157	$(call patch-cp-ta,TTAs/TTA_Time/TTA_Time/code_files,TTAs/TTA_Time/code_files,GP_TTA_Time)
158	$(call patch-cp-ta,TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_files,TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_files,GP_TTA_TCF_SingleInstanceTA)
159	$(call patch-cp-ta,TTAs/TTA_TCF/TTA_TCF_ICA/code_files,TTAs/TTA_TCF/TTA_TCF_ICA/code_files,GP_TTA_TCF_ICA)
160	$(call patch-cp-ta,TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_files,TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_files,GP_TTA_TCF_MultipleInstanceTA)
161	$(call patch-cp-ta,TTAs/TTA_TCF/TTA_TCF_ICA2/code_files,TTAs/TTA_TCF/TTA_TCF_ICA2/code_files,GP_TTA_TCF_ICA2)
162	$(call patch-cp-ta,TTAs/TTA_TCF/TTA_TCF/code_files,TTAs/TTA_TCF/TTA_TCF/code_files,GP_TTA_TCF)
163
164# Patch the GP package
165.PHONY: patch-package
166patch-package:
167	@echo "INFO: Patch provided tests"
168	$(q)mkdir -p ${CFG_GP_PACKAGE_PATH}/packages
169	$(call mv-package,${CFG_GP_PACKAGE_PATH}/ClientAPI)
170	$(call mv-package,${CFG_GP_PACKAGE_PATH}/Crypto)
171	$(call mv-package,${CFG_GP_PACKAGE_PATH}/DataStorage)
172	$(call mv-package,${CFG_GP_PACKAGE_PATH}/Time_Arithmetical)
173	$(call mv-package,${CFG_GP_PACKAGE_PATH}/TrustedCoreFw)
174	$(call patch-file,${CFG_GP_PACKAGE_PATH}/packages/ClientAPI/xmlStable/TEE.xml,${CFG_GP_XSL_PACKAGE_PATH}/packages/ClientAPI/xmlpatch/v1_1_0_4-2014_11_07/TEE.xml.patch)
175	$(call patch-file,${CFG_GP_PACKAGE_PATH}/packages/Crypto/xmlStable/TEE_Crypto_API.xml,${CFG_GP_XSL_PACKAGE_PATH}/packages/Crypto/xmlpatch/v1_1_0_4-2014_11_07/TEE_Crypto_API.xml.patch)
176	$(call patch-file,${CFG_GP_PACKAGE_PATH}/packages/DataStorage/xmlStable/TEE_DataStorage_API.xml,${CFG_GP_XSL_PACKAGE_PATH}/packages/DataStorage/xmlpatch/v1_1_0_4-2014_11_07/TEE_DataStorage_API.xml.patch)
177	$(call patch-file,${CFG_GP_PACKAGE_PATH}/packages/Time_Arithmetical/xmlStable/TEE_TimeArithm_API.xml,${CFG_GP_XSL_PACKAGE_PATH}/packages/Time_Arithmetical/xmlpatch/v1_1_0_4-2014_11_07/TEE_TimeArithm_API.xml.patch)
178	$(call patch-file,${CFG_GP_PACKAGE_PATH}/packages/TrustedCoreFw/xmlStable/TEE_Internal_API.xml,${CFG_GP_XSL_PACKAGE_PATH}/packages/TrustedCoreFw/xmlpatch/v1_1_0_4-2014_11_07/TEE_Internal_API.xml.patch)
179	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Arithmetical/TTA_Arithmetical/code_files/TTA_Arithmetical.c,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Arithmetical/code_patches/v1_1_0_4-2014_11_07/TTA_Arithmetical.c.patch)
180	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Arithmetical/TTA_Arithmetical/code_files/TTA_Arithmetical_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Arithmetical/code_patches/v1_1_0_4-2014_11_07/TTA_Arithmetical_protocol.h.patch)
181	# $(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/ta_check_OpenSession_with_4_parameters/code_files/TTA_check_OpenSession_with_4_parameters_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_check_OpenSession_with_4_parameters/code_patches/v1_1_0_4-2014_11_07/TTA_check_OpenSession_with_4_parameters_protocol.h.patch)
182	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_testingClientAPI/code_files/TTA_testingClientAPI_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_testingClientAPI/code_patches/v1_1_0_4-2014_11_07/TTA_testingClientAPI_protocol.h.patch)
183	# $(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerSuccessTo_OpenSession_Invoke/code_files/TTA_answerSuccessTo_OpenSession_Invoke_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerSuccessTo_OpenSession_Invoke/code_patches/v1_1_0_4-2014_11_07/TTA_answerSuccessTo_OpenSession_Invoke_protocol.h.patch)
184	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_OpenSession/code_files/TTA_answerErrorTo_OpenSession_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_OpenSession/code_patches/v1_1_0_4-2014_11_07/TTA_answerErrorTo_OpenSession_protocol.h.patch)
185	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_Invoke/code_files/TTA_answerErrorTo_Invoke_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_Invoke/code_patches/v1_1_0_4-2014_11_07/TTA_answerErrorTo_Invoke_protocol.h.patch)
186	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Crypto/TTA_Crypto/code_files/TTA_Crypto.c,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Crypto/code_patches/v1_1_0_4-2014_11_07/TTA_Crypto.c.patch)
187	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Crypto/TTA_Crypto/code_files/TTA_Crypto_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Crypto/code_patches/v1_1_0_4-2014_11_07/TTA_Crypto_protocol.h.patch)
188	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_DS/TTA_DS/code_files/TTA_DS_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_DS/code_patches/v1_1_0_4-2014_11_07/TTA_DS_protocol.h.patch)
189	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_DS/TTA_DS/code_files/TTA_DS.c,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_DS/code_patches/v1_1_0_4-2014_11_07/TTA_DS.c.patch)
190	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TEE_include/tee_internal_api.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TEE_include/code_patches/v1_1_0_4-2014_11_07/tee_internal_api.h.patch)
191	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_ICA/code_files/TTA_TCF_ICA_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_ICA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_ICA_protocol.h.patch)
192	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_files/TTA_TCF_MultipleInstanceTA_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_MultipleInstanceTA_protocol.h.patch)
193	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_files/TTA_TCF_MultipleInstanceTA.c,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_MultipleInstanceTA.c.patch)
194	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_files/TTA_TCF_SingleInstanceTA.c,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_SingleInstanceTA.c.patch)
195	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF/code_files/TTA_TCF.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF/code_patches/v1_1_0_4-2014_11_07/TTA_TCF.h.patch)
196	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_files/TTA_TCF_SingleInstanceTA_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_SingleInstanceTA_protocol.h.patch)
197	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Time/TTA_Time/code_files/TTA_Time_protocol.h,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Time/code_patches/v1_1_0_4-2014_11_07/TTA_Time_protocol.h.patch)
198	$(call patch-file,${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Time/TTA_Time/code_files/TTA_Time.c,${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Time/code_patches/v1_1_0_4-2014_11_07/TTA_Time.c.patch)
199
200define patch-filter-one
201	$(q)sed -i 's|^ADBG_SUITE_ENTRY(XTEST_TEE_'${1}', NULL)|/\*ADBG_SUITE_ENTRY(XTEST_TEE_'${1}', NULL)\*/|g' ${GP_XTEST_OUT_DIR}/xtest_main.c
202	$(q)sed -i 's|    ADBG_SUITE_ENTRY(XTEST_TEE_'${1}', NULL)\\|    /\*ADBG_SUITE_ENTRY(XTEST_TEE_'${1}', NULL)\*/\\|g' ${GP_XTEST_OUT_DIR}/adbg_entry_declare.h
203endef
204
205.PHONY: patch-filter
206patch-filter:
207	@echo "INFO: Filter some tests"
208	$(call patch-filter-one,7038)
209	$(call patch-filter-one,7522)
210	$(call patch-filter-one,7538)
211	$(call patch-filter-one,7540)
212	$(call patch-filter-one,7546)
213	$(call patch-filter-one,7557)
214	$(call patch-filter-one,7522)
215	$(call patch-filter-one,7538)
216	$(call patch-filter-one,7540)
217	$(call patch-filter-one,7546)
218	$(call patch-filter-one,7557)
219	$(call patch-filter-one,7559)
220	$(call patch-filter-one,7577)
221	$(call patch-filter-one,7641)
222	$(call patch-filter-one,7642)
223	$(call patch-filter-one,7643)
224	$(call patch-filter-one,7644)
225	$(call patch-filter-one,7686)
226	$(call patch-filter-one,8025)
227	$(call patch-filter-one,8058)
228	$(call patch-filter-one,8059)
229	$(call patch-filter-one,8030)
230	$(call patch-filter-one,8066)
231	$(call patch-filter-one,8614)
232	$(call patch-filter-one,8643)
233	$(call patch-filter-one,8644)
234	$(call patch-filter-one,8673)
235	$(call patch-filter-one,8674)
236	$(call patch-filter-one,9001)
237	$(call patch-filter-one,9072)
238	$(call patch-filter-one,9073)
239	$(call patch-filter-one,9075)
240	$(call patch-filter-one,9079)
241	$(call patch-filter-one,9080)
242	$(call patch-filter-one,9082)
243	$(call patch-filter-one,9085)
244	$(call patch-filter-one,9086)
245	$(call patch-filter-one,9088)
246	$(call patch-filter-one,9090)
247	$(call patch-filter-one,9091)
248	$(call patch-filter-one,9093)
249	$(call patch-filter-one,9095)
250	$(call patch-filter-one,9096)
251	$(call patch-filter-one,9098)
252	$(call patch-filter-one,9099)
253	$(call patch-filter-one,9109)
254	$(call patch-filter-one,9110)
255	$(call patch-filter-one,9160)
256	$(call patch-filter-one,9174)
257	$(call patch-filter-one,9195)
258	$(call patch-filter-one,9196)
259	$(call patch-filter-one,9204)
260	$(call patch-filter-one,9239)
261
262.PHONY: patch
263patch: patch-openssl patch-generate-host patch-generate-ta
264	$(MAKE) patch-filter
265
266else
267.PHONY: patch
268patch:
269	$(q) echo "Please define CFG_GP_PACKAGE_PATH" && false
270endif
271