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