xref: /optee_os/ta/mk/build-user-ta.mk (revision 886b8adb1e010a886a2e8669244a9251a52833da)
1cfa34d9aSJens Wiklanderinclude mk/cleanvars.mk
219fdfcf6SEtienne Carriere
319fdfcf6SEtienne Carriere# Set $(sm) as the name of the in tree TA being built, for instance "avb" or "pkcs11"
4cfa34d9aSJens Wiklandersm := $(lastword $(subst /, ,$(dir $(ta-mk-file))))
5cfa34d9aSJens Wiklandersm-$(sm) := y
6cfa34d9aSJens Wiklander
7cfa34d9aSJens Wiklander# Select TA target (aka TA dev kit, when delivered)
8cfa34d9aSJens Wiklanderta-target := $(strip $(if $(CFG_USER_TA_TARGET_$(sm)), \
9cfa34d9aSJens Wiklander		$(filter $(CFG_USER_TA_TARGET_$(sm)), $(ta-targets)), \
10cfa34d9aSJens Wiklander		$(default-user-ta-target)))
11cfa34d9aSJens Wiklander
12728777acSJerome Forissierifeq ($(ta-target),ta_arm32)
13728777acSJerome Forissierarch-bits-$(sm) := 32
14728777acSJerome Forissierendif
15728777acSJerome Forissierifeq ($(ta-target),ta_arm64)
16728777acSJerome Forissierarch-bits-$(sm) := 64
17728777acSJerome Forissierendif
1819fdfcf6SEtienne Carriere
19cfa34d9aSJens Wiklanderta-dev-kit-dir$(sm) := $(out-dir)/export-$(ta-target)
20cfa34d9aSJens Wiklanderlink-out-dir$(sm) := $(out-dir)/$(patsubst %/,%, $(dir $(ta-mk-file)))
21cfa34d9aSJens Wiklander
227ee167f5SJan Kiszka# Default if ta-mk-file defines none
237ee167f5SJan Kiszkauser-ta-version := 0
247ee167f5SJan Kiszka
25cfa34d9aSJens Wiklanderinclude $(ta-mk-file)
26cfa34d9aSJens Wiklanderifeq ($(user-ta-uuid),)
27cfa34d9aSJens Wiklander$(error user-ta-uuid missing in $(ta-mk-file))
28cfa34d9aSJens Wiklanderendif
29cfa34d9aSJens Wiklander
30cfa34d9aSJens Wiklander# Inherit compiler and flags from TA target
31cfa34d9aSJens WiklanderCROSS_COMPILE_$(sm)	:= $(CROSS_COMPILE_$(ta-target))
32cfa34d9aSJens WiklanderCOMPILER_$(sm)		:= $(COMPILER_$(ta-target))
33cfa34d9aSJens Wiklanderinclude mk/$(COMPILER_$(sm)).mk
34cfa34d9aSJens Wiklander
357716295eSJerome Forissiercppflags$(sm)	:= $(cppflags$(ta-target)) $(CPPFLAGS_$(ta-target)) \
367716295eSJerome Forissier			-I$(ta-dev-kit-dir$(sm))/include
378bbc2e9cSJens Wiklanderifeq ($(CFG_TA_OPTEE_CORE_API_COMPAT_1_1),y)
388bbc2e9cSJens Wiklandercppflags$(sm)	+= -D__OPTEE_CORE_API_COMPAT_1_1=1
398bbc2e9cSJens Wiklanderendif
407716295eSJerome Forissiercflags$(sm)	:= $(cflags$(ta-target)) $(CFLAGS_$(ta-target))
41cfa34d9aSJens Wiklanderaflags$(sm)	:= $(aflags$(ta-target))
42cfa34d9aSJens Wiklander
4364718c93SJerome Forissier# For now, do not link in-tree TAs against shared libraries
4464718c93SJerome Forissierlink-ldflags$(sm) := -static
4564718c93SJerome Forissier
46cfa34d9aSJens Wiklanderlibdirs  = $(ta-dev-kit-dir$(sm))/lib
47062e3d01SJens Wiklanderlibnames = utils utee
48cfa34d9aSJens Wiklanderifeq ($(CFG_TA_MBEDTLS),y)
49cfa34d9aSJens Wiklanderlibnames += mbedtls
50cfa34d9aSJens Wiklanderendif
51cfa34d9aSJens Wiklanderlibdeps = $(addsuffix .a, $(addprefix $(libdirs)/lib, $(libnames)))
52cfa34d9aSJens Wiklander
53ca7065cbSJerome Forissiersubdirs = $(patsubst %/,%,$(dir $(ta-mk-file)))
54cfa34d9aSJens Wiklanderinclude mk/subdir.mk
55cfa34d9aSJens Wiklander
56cfa34d9aSJens Wiklanderspec-out-dir := $(link-out-dir$(sm))
57cfa34d9aSJens Wiklanderspec-srcs += $(ta-dev-kit-dir$(sm))/src/user_ta_header.c
58c8061893SJerome Forissierifeq ($(ta-target),ta_arm32)
59c8061893SJerome Forissierspec-srcs += $(ta-dev-kit-dir$(sm))/src/ta_entry_a32.S
60c8061893SJerome Forissierendif
61cfa34d9aSJens Wiklander
620265f1e4SJerome Forissier# Install TA headers before in-tree TAs can be compiled
630265f1e4SJerome Forissieradditional-compile-deps := $(ta_dev_kit-files-include)
64cfa34d9aSJens Wiklanderinclude mk/compile.mk
650265f1e4SJerome Forissier# Install TA libraries before in-tree TAs can be linked
660265f1e4SJerome Forissieradditional-link-deps := $(ta_dev_kit-files-lib)
67*31b31015Sliushiweiinclude  ta/link.mk
6878329760SJerome Forissier
6978329760SJerome Forissierta_dev_kit: $(out-dir)/export-$(ta-target)/ta/$(user-ta-uuid).ta
7078329760SJerome Forissier
7178329760SJerome Forissier$(out-dir)/export-$(ta-target)/ta/$(user-ta-uuid).ta: $(link-out-dir$(sm))/$(user-ta-uuid).ta
7278329760SJerome Forissier	$(q)mkdir -p $(dir $@)
7378329760SJerome Forissier	@$(cmd-echo-silent) '  INSTALL $@'
7478329760SJerome Forissier	$(q)cp -P $< $@
7578329760SJerome Forissier
7678329760SJerome Forissiercleanfiles += $(out-dir)/export-$(ta-target)/ta/$(user-ta-uuid).ta
77