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