xref: /optee_os/ta/mk/build-user-ta.mk (revision 039e02df2716a0ed886b56e1e07b7ac1d8597228)
1include mk/cleanvars.mk
2
3# Set $(sm) as the name of the in tree TA being built, for instance "avb" or "pkcs11"
4sm := $(lastword $(subst /, ,$(dir $(ta-mk-file))))
5sm-$(sm) := y
6
7# Select TA target (aka TA dev kit, when delivered)
8ta-target := $(strip $(if $(CFG_USER_TA_TARGET_$(sm)), \
9		$(filter $(CFG_USER_TA_TARGET_$(sm)), $(ta-targets)), \
10		$(default-user-ta-target)))
11
12ifeq ($(ta-target),ta_arm32)
13arch-bits-$(sm) := 32
14endif
15ifeq ($(ta-target),ta_arm64)
16arch-bits-$(sm) := 64
17endif
18
19ta-dev-kit-dir$(sm) := $(out-dir)/export-$(ta-target)
20link-out-dir$(sm) := $(out-dir)/$(patsubst %/,%, $(dir $(ta-mk-file)))
21
22# Default if ta-mk-file defines none
23user-ta-version := 0
24
25include $(ta-mk-file)
26ifeq ($(user-ta-uuid),)
27$(error user-ta-uuid missing in $(ta-mk-file))
28endif
29
30# Inherit compiler and flags from TA target
31CROSS_COMPILE_$(sm)	:= $(CROSS_COMPILE_$(ta-target))
32COMPILER_$(sm)		:= $(COMPILER_$(ta-target))
33include mk/$(COMPILER_$(sm)).mk
34
35cppflags$(sm)	:= $(cppflags$(ta-target)) $(CPPFLAGS_$(ta-target)) \
36			-I$(ta-dev-kit-dir$(sm))/include
37cflags$(sm)	:= $(cflags$(ta-target)) $(CFLAGS_$(ta-target))
38aflags$(sm)	:= $(aflags$(ta-target))
39
40ifeq ($(CFG_ULIBS_SHARED),y)
41# For now, do not link in-tree TAs against shared libraries
42link-ldflags$(sm) := -static
43endif
44
45libdirs  = $(ta-dev-kit-dir$(sm))/lib
46libnames = utils utee
47ifeq ($(CFG_TA_MBEDTLS),y)
48libnames += mbedtls
49endif
50libdeps = $(addsuffix .a, $(addprefix $(libdirs)/lib, $(libnames)))
51
52subdirs = $(patsubst %/,%,$(dir $(ta-mk-file)))
53include mk/subdir.mk
54
55spec-out-dir := $(link-out-dir$(sm))
56spec-srcs += $(ta-dev-kit-dir$(sm))/src/user_ta_header.c
57ifeq ($(ta-target),ta_arm32)
58spec-srcs += $(ta-dev-kit-dir$(sm))/src/ta_entry_a32.S
59endif
60
61# Install TA headers before in-tree TAs can be compiled
62additional-compile-deps := $(ta_dev_kit-files-include)
63include mk/compile.mk
64# Install TA libraries before in-tree TAs can be linked
65additional-link-deps := $(ta_dev_kit-files-lib)
66include  ta/arch/$(ARCH)/link.mk
67
68ta_dev_kit: $(out-dir)/export-$(ta-target)/ta/$(user-ta-uuid).ta
69
70$(out-dir)/export-$(ta-target)/ta/$(user-ta-uuid).ta: $(link-out-dir$(sm))/$(user-ta-uuid).ta
71	$(q)mkdir -p $(dir $@)
72	@$(cmd-echo-silent) '  INSTALL $@'
73	$(q)cp -P $< $@
74
75cleanfiles += $(out-dir)/export-$(ta-target)/ta/$(user-ta-uuid).ta
76