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