blob: 18ffb7b8510b4c8a292853dd5c3c757e9aad1775 [file] [log] [blame]
Pascal Brandc639ac82015-07-02 08:53:34 +02001# Normally this makefile shouldn't be called directly and we expect the output
2# path to be on a certain location to fit together with the other OP-TEE
3# gits and helper scripts.
Etienne Carriere3ddc3622017-03-13 15:31:15 +01004
5include ../../scripts/common.mk
6out-dir := $(call strip-trailing-slashes-and-dots,$(O))
7ifeq ($(out-dir),)
8$(error invalid output directory (O=$(O)))
Pascal Brandc639ac82015-07-02 08:53:34 +02009endif
10
Cedric Chaumont1390f3a2015-08-31 13:55:16 +020011include $(TA_DEV_KIT_DIR)/host_include/conf.mk
12
Pascal Brandc639ac82015-07-02 08:53:34 +020013# By default we expect optee_client exported folder to be on a certain relative
14# path, but if the client specifies the OPTEE_CLIENT_EXPORT then that path will
15# be used instead.
16OPTEE_CLIENT_EXPORT ?= ../../../optee_client/out/export
17
Sumit Garg0e009142015-11-04 15:34:07 -050018CC ?= $(CROSS_COMPILE)gcc
19CPP ?= $(CROSS_COMPILE)cpp
20LD ?= $(CROSS_COMPILE)ld
21AR ?= $(CROSS_COMPILE)ar
22NM ?= $(CROSS_COMPILE)nm
23OBJCOPY ?= $(CROSS_COMPILE)objcopy
24OBJDUMP ?= $(CROSS_COMPILE)objdump
25READELF ?= $(CROSS_COMPILE)readelf
Pascal Brandc639ac82015-07-02 08:53:34 +020026
Jerome Forissier227d6f42019-10-09 16:43:22 +020027# Macros to detect the targeted architecture (e.g., arm-linux-gnueabihf or
28# aarch64-linux-gnu) and the corresponding bit size (32 or 64).
29define cc-arch
30$(shell $(1) -v 2>&1 | grep Target | sed 's/Target: \([^-]*\).*/\1/')
31endef
32define cc-bits
33$(if $(filter arm, $(1)),32,$(if $(filter aarch64, $(1)),64,unknown-arch))
34endef
35
Victor Chong717f2bd2020-05-13 14:02:22 +010036# OpenSSL is used by:
37# - GP tests series 8500
38# - Mbed TLS test 8103
39# - User/group login tests 1027 and 1028
40WITH_OPENSSL ?= y
41ifeq ($(WITH_OPENSSL),y)
Jerome Forissiercf111602023-07-25 14:39:25 +020042CFLAGS += -DOPENSSL_FOUND=1 -DOPENSSL_API_COMPAT=10100
Davidson Kumaresan5cddde72024-04-05 15:33:11 +000043ifneq ($(OPENSSL_INSTALL_PATH),)
44CFLAGS += -I$(OPENSSL_INSTALL_PATH)/include
45LDFLAGS += -L$(OPENSSL_INSTALL_PATH)/lib
46endif
Etienne Carrierec0e86782018-06-25 09:20:04 +020047LDFLAGS += -lcrypto
Etienne Carrierec0e86782018-06-25 09:20:04 +020048endif #require OpenSSL
Jerome Forissier43d58a52018-05-18 16:40:40 +020049
Jerome Forissier213ca8a2017-03-31 11:27:56 +020050srcs := regression_1000.c
Jens Wiklander02389a92016-12-16 11:13:38 +010051
52ifeq ($(CFG_GP_SOCKETS),y)
Jerome Forissier213ca8a2017-03-31 11:27:56 +020053srcs += regression_2000.c \
Jens Wiklander02389a92016-12-16 11:13:38 +010054 sock_server.c \
55 rand_stream.c
56endif
57
Jerome Forissier213ca8a2017-03-31 11:27:56 +020058srcs += adbg/src/adbg_case.c \
Pascal Brandc639ac82015-07-02 08:53:34 +020059 adbg/src/adbg_enum.c \
60 adbg/src/adbg_expect.c \
61 adbg/src/adbg_log.c \
Pascal Brandc639ac82015-07-02 08:53:34 +020062 adbg/src/adbg_run.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020063 adbg/src/security_utils_hex.c \
Zexi Yubcd55832024-02-04 10:45:28 +080064 asym_perf.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020065 benchmark_1000.c \
66 benchmark_2000.c \
Jerome Forissieraa43c902023-05-29 17:21:00 +020067 clear_storage.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020068 regression_4000.c \
Jens Wiklanderb4c75aa2018-11-15 10:43:29 +010069 regression_4100.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020070 regression_5000.c \
71 regression_6000.c \
Jens Wiklandercd0186b2017-04-05 11:34:22 +020072 regression_8000.c \
Jens Wiklander29326472018-04-20 11:22:15 +020073 regression_8100.c \
yuzexi4c9b16a2022-11-24 15:42:34 +080074 hash_perf.c \
Etienne Carriere44ec72b2023-03-31 10:13:51 +020075 install_ta.c \
Jens Wiklander254a3e32019-01-31 12:25:08 +010076 stats.c \
Zexi Yudda32122024-02-22 11:23:50 +080077 symm_cipher_perf.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020078 xtest_helpers.c \
79 xtest_main.c \
Vesa Jääskeläinen7e2a2302020-04-05 20:11:58 +030080 xtest_test.c \
81 xtest_uuid_helpers.c
Pascal Brandc639ac82015-07-02 08:53:34 +020082
Jelle Sels252faa92020-06-05 14:56:30 +020083ifeq ($(CFG_SECURE_PARTITION)-$(CFG_SPMC_TESTS),y-y)
84srcs += ffa_spmc_1000.c
85endif
86
Etienne Carriere41343db2017-03-17 15:38:52 +010087ifeq ($(CFG_SECURE_DATA_PATH),y)
88srcs += sdp_basic.c
89endif
90
Etienne Carriere109c1d72019-01-09 11:02:02 +010091ifeq ($(CFG_PKCS11_TA),y)
92srcs += pkcs11_1000.c
Etienne Carriere109c1d72019-01-09 11:02:02 +010093endif
94
Etienne Carriere3ddc3622017-03-13 15:31:15 +010095objs := $(patsubst %.c,$(out-dir)/xtest/%.o, $(srcs))
Pascal Brandc639ac82015-07-02 08:53:34 +020096
Sahil Malhotra5abbcdf2021-04-19 12:07:49 +053097ifeq ($(CFG_PKCS11_TA),y)
98CFLAGS += -DCFG_PKCS11_TA
99endif
Jorge Ramirez-Ortiz3d82c8e2022-01-11 09:23:42 +0100100
101ifeq ($(CFG_CRYPTO_SE05X),y)
102CFLAGS += -DCFG_CRYPTO_SE05X
103endif
104
Pascal Brandc639ac82015-07-02 08:53:34 +0200105CFLAGS += -I./
106CFLAGS += -I./adbg/include
Jens Wiklanderdd5692a2024-08-26 14:54:54 +0200107CFLAGS += -I./include/uapi
Aleksandr Anisimov01f6f062021-01-19 11:02:25 +0300108CFLAGS += -I../supp_plugin/include
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100109CFLAGS += -I$(out-dir)/xtest
Pascal Brandc639ac82015-07-02 08:53:34 +0200110
111CFLAGS += -I$(OPTEE_CLIENT_EXPORT)/include
112CFLAGS += -I$(TA_DEV_KIT_DIR)/host_include
113
Jens Wiklanderff1be9e2018-02-01 14:16:57 +0100114CFLAGS += -I../../ta/include
Pascal Brandc639ac82015-07-02 08:53:34 +0200115CFLAGS += -I../../ta/create_fail_test/include
116CFLAGS += -I../../ta/crypt/include
117CFLAGS += -I../../ta/enc_fs/include
118CFLAGS += -I../../ta/os_test/include
119CFLAGS += -I../../ta/rpc_test/include
120CFLAGS += -I../../ta/sims/include
Ovidiu Mihalachi15cecff2019-04-02 16:36:31 +0300121CFLAGS += -I../../ta/miss/include
122CFLAGS += -I../../ta/sims_keepalive/include
James Kungdf1e6cf2015-09-14 22:42:24 +0800123CFLAGS += -I../../ta/storage_benchmark/include
Jens Wiklanderac27ec12015-07-15 15:23:14 +0200124CFLAGS += -I../../ta/concurrent/include
Jens Wiklander70672972016-04-06 00:01:45 +0200125CFLAGS += -I../../ta/concurrent_large/include
Zexi Yue18381f2023-10-30 11:29:51 +0800126CFLAGS += -I../../ta/crypto_perf/include
Jens Wiklander02389a92016-12-16 11:13:38 +0100127CFLAGS += -I../../ta/socket/include
Etienne Carriere41343db2017-03-17 15:38:52 +0100128CFLAGS += -I../../ta/sdp_basic/include
Javier Almansa Sobrinocddc0002020-02-10 13:35:37 +0000129CFLAGS += -I../../ta/tpm_log_test/include
Jens Wiklander94fb1582021-05-19 10:14:57 +0200130CFLAGS += -I../../ta/large/include
Aleksandr Anisimov01f6f062021-01-19 11:02:25 +0300131CFLAGS += -I../../ta/supp_plugin/include
Ruchika Gupta813b6d42021-12-01 10:44:14 +0530132CFLAGS += -I../../ta/bti_test/include
Jens Wiklanderdd336da2022-09-02 13:57:54 +0200133CFLAGS += -I../../ta/subkey1/include
134CFLAGS += -I../../ta/subkey2/include
Etienne Carriere41343db2017-03-17 15:38:52 +0100135
l00176142087f2042017-08-28 20:03:28 +0800136TA_DIR ?= /lib/optee_armtz
137CFLAGS += -DTA_DIR=\"$(TA_DIR)\"
138
Jerome Forissierf9b89252016-08-23 18:30:43 +0200139# Include configuration file generated by OP-TEE OS (CFG_* macros)
140CFLAGS += -include conf.h
Pascal Brandc639ac82015-07-02 08:53:34 +0200141
Jerome Forissierd068b662025-05-07 14:01:38 +0200142CFLAGS += -Wall -Wcast-align \
Pascal Brandc639ac82015-07-02 08:53:34 +0200143 -Werror-implicit-function-declaration -Wextra -Wfloat-equal \
144 -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self \
145 -Wmissing-declarations -Wmissing-format-attribute \
Ross Burton3b9a63a2020-10-27 17:00:16 +0000146 -Wmissing-include-dirs \
Pascal Brandc639ac82015-07-02 08:53:34 +0200147 -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
148 -Wshadow -Wstrict-prototypes -Wswitch-default \
Jerome Forissier659e2212020-10-27 18:39:05 +0100149 -Wwrite-strings -Wno-unused-parameter \
André Draszikb8739742019-02-07 01:29:08 +0000150 -Wno-declaration-after-statement \
Jerome Forissier66adb452025-04-15 16:35:26 +0200151 -Wno-missing-field-initializers -Wno-format-zero-length \
152 -Wno-alloc-size
Pascal Brandc639ac82015-07-02 08:53:34 +0200153
Jerome Forissierd068b662025-05-07 14:01:38 +0200154ifeq ($(CFG_WERROR),y)
155CFLAGS += -Werror
156endif
157
Jerome Forissiera8b78f12016-08-17 09:40:59 +0200158CFLAGS += -g3
159
Pascal Brandc639ac82015-07-02 08:53:34 +0200160LDFLAGS += -L$(OPTEE_CLIENT_EXPORT)/lib -lteec
Sahil Malhotra5abbcdf2021-04-19 12:07:49 +0530161ifeq ($(CFG_PKCS11_TA),y)
162LDFLAGS += -lckteec
163endif
Igor Opaniuk136644a2016-09-13 13:40:56 +0300164LDFLAGS += -lpthread -lm
Pascal Brandc639ac82015-07-02 08:53:34 +0200165
166.PHONY: all
167all: xtest
168
169xtest: $(objs)
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100170 @echo " LD $(out-dir)/xtest/$@"
Jerome Forissierc8208582017-11-13 08:46:29 +0100171 $(q)$(CC) -o $(out-dir)/xtest/$@ $+ $(LDFLAGS)
Pascal Brandc639ac82015-07-02 08:53:34 +0200172
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100173$(out-dir)/xtest/%.o: $(CURDIR)/%.c
174 $(q)mkdir -p $(out-dir)/xtest/adbg/src
Pascal Brandc639ac82015-07-02 08:53:34 +0200175 @echo ' CC $<'
176 $(q)$(CC) $(CFLAGS) -c $< -o $@
177
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100178RMDIR := rmdir --ignore-fail-on-non-empty
179define rm-build-dirs
180 $(q)for d in $1; do $(RMDIR) $(out-dir)/xtest/$$d 2> /dev/null; true; done
181 $(q)$(RMDIR) $(out-dir)/xtest 2> /dev/null; true
182 $(q)$(RMDIR) $(out-dir) 2> /dev/null; true
183endef
184
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100185ifeq ($(CFG_GCM_NIST_VECTORS),y)
186GCM_NIST_VECTORS_DECRYPT = gcmDecrypt128 gcmDecrypt192 gcmDecrypt256
187GCM_NIST_VECTORS_ENCRYPT = gcmEncryptExtIV128 gcmEncryptExtIV192 \
188 gcmEncryptExtIV256
189
190cleanfiles += $(out-dir)/gcmtestvectors.zip
191$(out-dir)/gcmtestvectors.zip:
192 @echo ' DL $@'
193 $(q)curl https://csrc.nist.gov/csrc/media/projects/cryptographic-algorithm-validation-program/documents/mac/gcmtestvectors.zip -o $@
194
195define create-nist-gcm-vectors
196cleanfiles += $(out-dir)/xtest/$(1).h $(out-dir)/$(1).rsp
197
198$(out-dir)/$(1).rsp: $(out-dir)/gcmtestvectors.zip
199 @echo ' UNZIP $$@'
200 $(q)unzip -o $$< $$(notdir $$@) -d $$(dir $$@)
201 $(q)touch $$@
202
203
204$(out-dir)/xtest/$(1).h: $(out-dir)/$(1).rsp
205 @echo ' GEN $$@'
Sadiq Hussain1f8ef912021-10-02 17:45:30 +0530206 $(q)$(PYTHON3) ../../scripts/rsp_to_gcm_test.py --inf $$< --outf $$@ --mode=$(2) \
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100207 $(if $(filter y,$(CFG_GCM_NIST_VECTORS_LIMITED)),--limited)
208
209$(CURDIR)/regression_4000.c: $(out-dir)/xtest/$(1).h
210endef
211
212$(foreach v, $(GCM_NIST_VECTORS_DECRYPT), $(eval $(call \
213 create-nist-gcm-vectors,$v,decrypt)))
214$(foreach v, $(GCM_NIST_VECTORS_ENCRYPT), $(eval $(call \
215 create-nist-gcm-vectors,$v,encrypt)))
216endif
217
Jens Wiklander97d6e292018-04-23 13:00:31 +0200218define embed-file
219cleanfiles += $(out-dir)/xtest/$(1).h
220
221$(out-dir)/xtest/$(1).h: $(2)
Clement Faurec05be242022-05-16 18:15:48 +0200222 $(q)mkdir -p $(out-dir)/xtest/
Jens Wiklander97d6e292018-04-23 13:00:31 +0200223 @echo ' GEN $$@'
Sadiq Hussain1f8ef912021-10-02 17:45:30 +0530224 $(q)$(PYTHON3) ../../scripts/file_to_c.py --inf $$< --out $$@ --name $(1)
Jens Wiklander97d6e292018-04-23 13:00:31 +0200225
226$(CURDIR)/regression_8100.c: $(out-dir)/xtest/$(1).h
227endef
228
229$(eval $(call embed-file,regression_8100_ca_crt,../../cert/ca.crt))
230$(eval $(call embed-file,regression_8100_mid_crt,../../cert/mid.crt))
231$(eval $(call embed-file,regression_8100_my_crt,../../cert/my.crt))
Jens Wiklander950ea1c2018-04-30 15:39:22 +0200232$(eval $(call embed-file,regression_8100_my_csr,../../cert/my.csr))
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100233
Pascal Brandc639ac82015-07-02 08:53:34 +0200234.PHONY: clean
235clean:
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100236 @echo ' CLEAN $(out-dir)'
237 $(q)rm -f $(out-dir)/xtest/xtest
Pascal Brandc639ac82015-07-02 08:53:34 +0200238 $(q)$(foreach obj,$(objs), rm -f $(obj))
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100239 $(q)rm -f $(cleanfiles)
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100240 $(call rm-build-dirs,adbg/src adbg)