blob: 1ade97f1b13b11b9a1e60fe4676d64134a99fc55 [file] [log] [blame]
Pipat Methavanitpong33295f82019-05-09 15:46:46 +09001################################################################################
2# Following variables defines how the NS_USER (Non-Secure User - Client
3# Application), NS_KERNEL (Non-Secure Kernel), S_KERNEL (Secure Kernel) and
4# S_USER (Secure User - TA) are compiled
5################################################################################
6COMPILE_NS_USER ?= 64
7COMPILE_NS_KERNEL ?= 64
8COMPILE_S_USER ?= 64
9COMPILE_S_KERNEL ?= 64
10
Victor Chonge37d99e2019-11-08 09:07:01 +000011################################################################################
12# Includes
13################################################################################
14include common.mk
15include toolchain.mk
16
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090017ifeq ($(DEBUG),1)
18TFA_BUILD ?= debug
19else
20TFA_BUILD ?= release
21endif
22ifeq ($(DEBUG),1)
23EDK2_BUILD ?= DEBUG
24else
25EDK2_BUILD ?= RELEASE
26endif
27
28################################################################################
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090029# Paths to git projects and various binaries
30################################################################################
Victor Chongdf54b112019-08-11 15:58:12 +010031TFA_PATH ?= $(ROOT)/trusted-firmware-a
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090032TFA_OUT ?= $(TFA_PATH)/build/synquacer/$(TFA_BUILD)
33TFA_BL31 ?= $(TFA_OUT)/bl31.bin
34TFA_BL32 ?= $(TFA_OUT)/bl32.bin
35TFA_FIP ?= $(TFA_OUT)/fip_all_arm_tf.bin
36FIPTOOL ?= $(TFA_PATH)/tools/fiptool/fiptool
37EDK2_PATH ?= $(ROOT)/edk2
38EDK2_PLATFORMS_PATH ?= $(ROOT)/edk2-platforms
39EDK2_NON_OSI_PATH ?= $(ROOT)/edk2-non-osi
40EDK2_PKGS_PATH := "$(EDK2_PATH):$(EDK2_PLATFORMS_PATH):$(EDK2_NON_OSI_PATH)"
41EDK2_FIP ?= $(EDK2_NON_OSI_PATH)/Platform/Socionext/DeveloperBox/fip_all_arm_tf.bin
42
43################################################################################
44# Targets
45################################################################################
46.PHONY: all
47all: edk2 optee-os tfa
48
49.PHONY: clean
50clean: edk2-clean optee-os-clean tfa-clean
51
52################################################################################
53# Trusted Firmware A
54################################################################################
55TFA_EXPORTS ?= \
56 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
57
58TFA_FLAGS ?= \
59 BL32=$(TFA_BL32) \
60 PRELOADED_BL33_BASE=0x08200000 \
61 DEBUG=$(DEBUG) \
62 PLAT=synquacer \
63 SPD=opteed
64
65.PHONY: tfa
66tfa: $(TFA_FIP)
67
68.PHONY: tfa-clean
69tfa-clean:
70 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) clean
71
72$(TFA_FIP): $(TFA_BL32)
73 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) all fiptool
74 $(FIPTOOL) create \
75 --tb-fw $(TFA_BL31) \
76 --soc-fw $(TFA_BL31) \
77 --scp-fw $(TFA_BL31) \
78 --tos-fw $< \
79 $@
80
81$(TFA_BL32): optee-os
82 mkdir -p $(dir $@)
83 $(AARCH64_CROSS_COMPILE)objcopy \
84 -O binary $(OPTEE_OS_PATH)/out/arm/core/tee.elf $@
85
86################################################################################
87# EDK2 / Tianocore
88################################################################################
89define edk2-env
90 export WORKSPACE=$(EDK2_PLATFORMS_PATH)
91endef
92
93define edk2-call
94 GCC5_AARCH64_PREFIX=$(AARCH64_CROSS_COMPILE) \
95 build -n `getconf _NPROCESSORS_ONLN` \
96 -a "AARCH64" -t "GCC5" -b $(EDK2_BUILD) \
97 -p Platform/Socionext/DeveloperBox/DeveloperBox.dsc
98endef
99
100.PHONY: edk2
101edk2: $(EDK2_FIP)
102 $(call edk2-env) && \
103 export PACKAGES_PATH=$(EDK2_PKGS_PATH) && \
104 source $(EDK2_PATH)/edksetup.sh && \
105 $(MAKE) -j1 -C $(EDK2_PATH)/BaseTools && \
106 $(call edk2-call) all
107
108.PHONY: edk2-clean
109edk2-clean: edk2-clean-common
110 cd $(EDK2_NON_OSI_PATH) && \
111 git checkout $(EDK2_FIP)
112
113$(EDK2_FIP): $(TFA_FIP)
114 cp $< $@
115
116################################################################################
117# OP-TEE
118################################################################################
119OPTEE_OS_COMMON_FLAGS += PLATFORM=synquacer
120OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=synquacer
121
122.PHONY: optee-os
123optee-os: optee-os-common
124
125.PHONY: optee-os-clean
126optee-os-clean: optee-os-clean-common