blob: 26223419de39cf6f3161135955d982e5cf831d7c [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
Victor Chongd79d6672019-11-08 09:50:30 +000042EDK2_TOOLCHAIN ?= GCC5
43EDK2_ARCH ?= AARCH64
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090044
45################################################################################
46# Targets
47################################################################################
48.PHONY: all
49all: edk2 optee-os tfa
50
51.PHONY: clean
52clean: edk2-clean optee-os-clean tfa-clean
53
54################################################################################
55# Trusted Firmware A
56################################################################################
57TFA_EXPORTS ?= \
58 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
59
60TFA_FLAGS ?= \
61 BL32=$(TFA_BL32) \
62 PRELOADED_BL33_BASE=0x08200000 \
63 DEBUG=$(DEBUG) \
64 PLAT=synquacer \
65 SPD=opteed
66
67.PHONY: tfa
68tfa: $(TFA_FIP)
69
70.PHONY: tfa-clean
71tfa-clean:
72 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) clean
73
74$(TFA_FIP): $(TFA_BL32)
75 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) all fiptool
76 $(FIPTOOL) create \
77 --tb-fw $(TFA_BL31) \
78 --soc-fw $(TFA_BL31) \
79 --scp-fw $(TFA_BL31) \
80 --tos-fw $< \
81 $@
82
83$(TFA_BL32): optee-os
84 mkdir -p $(dir $@)
85 $(AARCH64_CROSS_COMPILE)objcopy \
86 -O binary $(OPTEE_OS_PATH)/out/arm/core/tee.elf $@
87
88################################################################################
89# EDK2 / Tianocore
90################################################################################
91define edk2-env
92 export WORKSPACE=$(EDK2_PLATFORMS_PATH)
93endef
94
95define edk2-call
Victor Chongd79d6672019-11-08 09:50:30 +000096 $(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(AARCH64_CROSS_COMPILE) \
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090097 build -n `getconf _NPROCESSORS_ONLN` \
Victor Chongd79d6672019-11-08 09:50:30 +000098 -a $(EDK2_ARCH) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) \
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090099 -p Platform/Socionext/DeveloperBox/DeveloperBox.dsc
100endef
101
102.PHONY: edk2
103edk2: $(EDK2_FIP)
104 $(call edk2-env) && \
105 export PACKAGES_PATH=$(EDK2_PKGS_PATH) && \
106 source $(EDK2_PATH)/edksetup.sh && \
107 $(MAKE) -j1 -C $(EDK2_PATH)/BaseTools && \
108 $(call edk2-call) all
109
110.PHONY: edk2-clean
111edk2-clean: edk2-clean-common
112 cd $(EDK2_NON_OSI_PATH) && \
113 git checkout $(EDK2_FIP)
114
115$(EDK2_FIP): $(TFA_FIP)
116 cp $< $@
117
118################################################################################
119# OP-TEE
120################################################################################
121OPTEE_OS_COMMON_FLAGS += PLATFORM=synquacer
122OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=synquacer
123
124.PHONY: optee-os
125optee-os: optee-os-common
126
127.PHONY: optee-os-clean
128optee-os-clean: optee-os-clean-common