blob: 6b666a7240131ca9717c42d8fea50e0402a0ea46 [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 Forissier213ca8a2017-03-31 11:27:56 +020027srcs := regression_1000.c
Jens Wiklander02389a92016-12-16 11:13:38 +010028
29ifeq ($(CFG_GP_SOCKETS),y)
Jerome Forissier213ca8a2017-03-31 11:27:56 +020030srcs += regression_2000.c \
Jens Wiklander02389a92016-12-16 11:13:38 +010031 sock_server.c \
32 rand_stream.c
33endif
34
Jerome Forissier213ca8a2017-03-31 11:27:56 +020035srcs += adbg/src/adbg_case.c \
Pascal Brandc639ac82015-07-02 08:53:34 +020036 adbg/src/adbg_enum.c \
37 adbg/src/adbg_expect.c \
38 adbg/src/adbg_log.c \
Pascal Brandc639ac82015-07-02 08:53:34 +020039 adbg/src/adbg_run.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020040 adbg/src/security_utils_hex.c \
41 aes_perf.c \
42 benchmark_1000.c \
43 benchmark_2000.c \
44 regression_4000.c \
45 regression_5000.c \
46 regression_6000.c \
47 regression_7000.c \
Jens Wiklandercd0186b2017-04-05 11:34:22 +020048 regression_8000.c \
Jens Wiklander29326472018-04-20 11:22:15 +020049 regression_8100.c \
Jerome Forissier213ca8a2017-03-31 11:27:56 +020050 sha_perf.c \
51 xtest_helpers.c \
52 xtest_main.c \
53 xtest_test.c
Pascal Brandc639ac82015-07-02 08:53:34 +020054
Jens Wiklanderf261a6d2017-11-09 16:45:51 +010055ifeq ($(CFG_SECSTOR_TA_MGMT_PTA),y)
56srcs += install_ta.c
57endif
58
Etienne Carriere41343db2017-03-17 15:38:52 +010059ifeq ($(CFG_SECURE_DATA_PATH),y)
60srcs += sdp_basic.c
61endif
62
Jerome Forissiere3688342015-09-24 10:45:17 -070063ifdef CFG_GP_PACKAGE_PATH
64CFLAGS += -DWITH_GP_TESTS
Pascal Brand8a74e362015-09-10 12:41:52 +020065
Jerome Forissier213ca8a2017-03-31 11:27:56 +020066srcs += gp_7000.c \
67 gp_7500.c \
68 gp_8000.c \
69 gp_8500.c \
70 gp_9000.c
Pascal Brandc639ac82015-07-02 08:53:34 +020071endif
72
Etienne Carriere3ddc3622017-03-13 15:31:15 +010073objs := $(patsubst %.c,$(out-dir)/xtest/%.o, $(srcs))
Pascal Brandc639ac82015-07-02 08:53:34 +020074
75CFLAGS += -I./
76CFLAGS += -I./adbg/include
77CFLAGS += -I./xml/include
Jens Wiklanderf6efe242017-11-06 13:16:43 +010078CFLAGS += -I$(out-dir)/xtest
Pascal Brandc639ac82015-07-02 08:53:34 +020079
80CFLAGS += -I$(OPTEE_CLIENT_EXPORT)/include
81CFLAGS += -I$(TA_DEV_KIT_DIR)/host_include
82
Jens Wiklanderff1be9e2018-02-01 14:16:57 +010083CFLAGS += -I../../ta/include
Pascal Brandc639ac82015-07-02 08:53:34 +020084CFLAGS += -I../../ta/create_fail_test/include
85CFLAGS += -I../../ta/crypt/include
86CFLAGS += -I../../ta/enc_fs/include
87CFLAGS += -I../../ta/os_test/include
88CFLAGS += -I../../ta/rpc_test/include
89CFLAGS += -I../../ta/sims/include
James Kungdf1e6cf2015-09-14 22:42:24 +080090CFLAGS += -I../../ta/storage_benchmark/include
Jens Wiklanderac27ec12015-07-15 15:23:14 +020091CFLAGS += -I../../ta/concurrent/include
Jens Wiklander70672972016-04-06 00:01:45 +020092CFLAGS += -I../../ta/concurrent_large/include
Igor Opaniuk136644a2016-09-13 13:40:56 +030093CFLAGS += -I../../ta/sha_perf/include
Igor Opaniuk44aff4b2016-09-16 10:18:00 +030094CFLAGS += -I../../ta/aes_perf/include
Jens Wiklander02389a92016-12-16 11:13:38 +010095CFLAGS += -I../../ta/socket/include
Etienne Carriere41343db2017-03-17 15:38:52 +010096CFLAGS += -I../../ta/sdp_basic/include
97
Jerome Forissiere3688342015-09-24 10:45:17 -070098ifdef CFG_GP_PACKAGE_PATH
Pascal Brandc639ac82015-07-02 08:53:34 +020099CFLAGS += -I../../ta/GP_TTA_Arithmetical
100CFLAGS += -I../../ta/GP_TTA_Crypto
101CFLAGS += -I../../ta/GP_TTA_DS
102CFLAGS += -I../../ta/GP_TTA_TCF
103CFLAGS += -I../../ta/GP_TTA_TCF_ICA
104CFLAGS += -I../../ta/GP_TTA_TCF_ICA2
105CFLAGS += -I../../ta/GP_TTA_TCF_MultipleInstanceTA
106CFLAGS += -I../../ta/GP_TTA_TCF_SingleInstanceTA
107CFLAGS += -I../../ta/GP_TTA_Time
108CFLAGS += -I../../ta/GP_TTA_answerErrorTo_Invoke
109CFLAGS += -I../../ta/GP_TTA_answerErrorTo_OpenSession
110CFLAGS += -I../../ta/GP_TTA_answerSuccessTo_OpenSession_Invoke
111CFLAGS += -I../../ta/GP_TTA_check_OpenSession_with_4_parameters
112CFLAGS += -I../../ta/GP_TTA_testingClientAPI
113
114# need more include: openssl
115CFLAGS += -Ifor_gp/include
116
Pascal Brandbaa291f2016-02-26 10:14:22 +0100117# by default, the client application is compiled as the kernel of optee-os
Etienne Carrierefbbc48d2017-05-30 11:59:18 +0200118ifeq ($(CFG_ARM32_core),y)
Pascal Brandbaa291f2016-02-26 10:14:22 +0100119COMPILE_NS_USER ?= 32
120else
121COMPILE_NS_USER ?= 64
122endif
123
124ifeq ($(COMPILE_NS_USER),32)
Pascal Brandfd1596a2015-07-10 15:02:17 +0200125LDFLAGS += ../lib/armv7/libcrypto.a
Pascal Brandc639ac82015-07-02 08:53:34 +0200126else
Pascal Brandfd1596a2015-07-10 15:02:17 +0200127LDFLAGS += ../lib/armv8/libcrypto.a
Pascal Brandc639ac82015-07-02 08:53:34 +0200128endif
129
Pascal Brandc639ac82015-07-02 08:53:34 +0200130endif
131
l00176142087f2042017-08-28 20:03:28 +0800132TA_DIR ?= /lib/optee_armtz
133CFLAGS += -DTA_DIR=\"$(TA_DIR)\"
134
Jerome Forissierf9b89252016-08-23 18:30:43 +0200135# Include configuration file generated by OP-TEE OS (CFG_* macros)
136CFLAGS += -include conf.h
Pascal Brandc639ac82015-07-02 08:53:34 +0200137
Jerome Forissiere3688342015-09-24 10:45:17 -0700138ifndef CFG_GP_PACKAGE_PATH
Pascal Brandc639ac82015-07-02 08:53:34 +0200139CFLAGS += -Wall -Wcast-align -Werror \
140 -Werror-implicit-function-declaration -Wextra -Wfloat-equal \
141 -Wformat-nonliteral -Wformat-security -Wformat=2 -Winit-self \
142 -Wmissing-declarations -Wmissing-format-attribute \
143 -Wmissing-include-dirs -Wmissing-noreturn \
144 -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
145 -Wshadow -Wstrict-prototypes -Wswitch-default \
146 -Wwrite-strings \
147 -Wno-missing-field-initializers -Wno-format-zero-length
148endif
149
Jerome Forissiera8b78f12016-08-17 09:40:59 +0200150CFLAGS += -g3
151
Pascal Brandc639ac82015-07-02 08:53:34 +0200152LDFLAGS += -L$(OPTEE_CLIENT_EXPORT)/lib -lteec
Igor Opaniuk136644a2016-09-13 13:40:56 +0300153LDFLAGS += -lpthread -lm
Pascal Brandc639ac82015-07-02 08:53:34 +0200154
155.PHONY: all
156all: xtest
157
158xtest: $(objs)
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100159 @echo " LD $(out-dir)/xtest/$@"
Jerome Forissierc8208582017-11-13 08:46:29 +0100160 $(q)$(CC) -o $(out-dir)/xtest/$@ $+ $(LDFLAGS)
Pascal Brandc639ac82015-07-02 08:53:34 +0200161
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100162$(out-dir)/xtest/%.o: $(CURDIR)/%.c
163 $(q)mkdir -p $(out-dir)/xtest/adbg/src
Pascal Brandc639ac82015-07-02 08:53:34 +0200164 @echo ' CC $<'
165 $(q)$(CC) $(CFLAGS) -c $< -o $@
166
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100167RMDIR := rmdir --ignore-fail-on-non-empty
168define rm-build-dirs
169 $(q)for d in $1; do $(RMDIR) $(out-dir)/xtest/$$d 2> /dev/null; true; done
170 $(q)$(RMDIR) $(out-dir)/xtest 2> /dev/null; true
171 $(q)$(RMDIR) $(out-dir) 2> /dev/null; true
172endef
173
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100174ifeq ($(CFG_GCM_NIST_VECTORS),y)
175GCM_NIST_VECTORS_DECRYPT = gcmDecrypt128 gcmDecrypt192 gcmDecrypt256
176GCM_NIST_VECTORS_ENCRYPT = gcmEncryptExtIV128 gcmEncryptExtIV192 \
177 gcmEncryptExtIV256
178
179cleanfiles += $(out-dir)/gcmtestvectors.zip
180$(out-dir)/gcmtestvectors.zip:
181 @echo ' DL $@'
182 $(q)curl https://csrc.nist.gov/csrc/media/projects/cryptographic-algorithm-validation-program/documents/mac/gcmtestvectors.zip -o $@
183
184define create-nist-gcm-vectors
185cleanfiles += $(out-dir)/xtest/$(1).h $(out-dir)/$(1).rsp
186
187$(out-dir)/$(1).rsp: $(out-dir)/gcmtestvectors.zip
188 @echo ' UNZIP $$@'
189 $(q)unzip -o $$< $$(notdir $$@) -d $$(dir $$@)
190 $(q)touch $$@
191
192
193$(out-dir)/xtest/$(1).h: $(out-dir)/$(1).rsp
194 @echo ' GEN $$@'
195 $(q)../../scripts/rsp_to_gcm_test.py --inf $$< --outf $$@ --mode=$(2) \
196 $(if $(filter y,$(CFG_GCM_NIST_VECTORS_LIMITED)),--limited)
197
198$(CURDIR)/regression_4000.c: $(out-dir)/xtest/$(1).h
199endef
200
201$(foreach v, $(GCM_NIST_VECTORS_DECRYPT), $(eval $(call \
202 create-nist-gcm-vectors,$v,decrypt)))
203$(foreach v, $(GCM_NIST_VECTORS_ENCRYPT), $(eval $(call \
204 create-nist-gcm-vectors,$v,encrypt)))
205endif
206
Jens Wiklander97d6e292018-04-23 13:00:31 +0200207define embed-file
208cleanfiles += $(out-dir)/xtest/$(1).h
209
210$(out-dir)/xtest/$(1).h: $(2)
211 @echo ' GEN $$@'
212 $(q)../../scripts/file_to_c.py --inf $$< --out $$@ --name $(1)
213
214$(CURDIR)/regression_8100.c: $(out-dir)/xtest/$(1).h
215endef
216
217$(eval $(call embed-file,regression_8100_ca_crt,../../cert/ca.crt))
218$(eval $(call embed-file,regression_8100_mid_crt,../../cert/mid.crt))
219$(eval $(call embed-file,regression_8100_my_crt,../../cert/my.crt))
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100220
Pascal Brandc639ac82015-07-02 08:53:34 +0200221.PHONY: clean
222clean:
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100223 @echo ' CLEAN $(out-dir)'
224 $(q)rm -f $(out-dir)/xtest/xtest
Pascal Brandc639ac82015-07-02 08:53:34 +0200225 $(q)$(foreach obj,$(objs), rm -f $(obj))
Jens Wiklanderf6efe242017-11-06 13:16:43 +0100226 $(q)rm -f $(cleanfiles)
Etienne Carriere3ddc3622017-03-13 15:31:15 +0100227 $(call rm-build-dirs,adbg/src adbg)