blob: b9064a3d7e894f44d5f5e04c57fc14e2fca2fb0f [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)
Pipat Methavanitpong10c43752019-12-24 10:19:52 +090018SCP_BUILD ?= debug
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090019TFA_BUILD ?= debug
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090020EDK2_BUILD ?= DEBUG
21else
Pipat Methavanitpong10c43752019-12-24 10:19:52 +090022SCP_BUILD ?= release
23TFA_BUILD ?= release
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090024EDK2_BUILD ?= RELEASE
25endif
26
27################################################################################
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090028# Paths to git projects and various binaries
29################################################################################
Pipat Methavanitpong10c43752019-12-24 10:19:52 +090030BINARIES_PATH ?= $(ROOT)/out/bin
31SCP_PATH ?= $(ROOT)/SCP-firmware
32SCP_OUT ?= $(SCP_PATH)/build/product/synquacer
33SCP_ROM ?= $(SCP_OUT)/scp_romfw/$(SCP_BUILD)/bin/scp_romfw.bin
34SCP_RAM ?= $(SCP_OUT)/scp_ramfw/$(SCP_BUILD)/bin/scp_ramfw.bin
35SCP_ROMRAM ?= $(SCP_OUT)/scp_romramfw.bin
Victor Chongdf54b112019-08-11 15:58:12 +010036TFA_PATH ?= $(ROOT)/trusted-firmware-a
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090037TFA_OUT ?= $(TFA_PATH)/build/synquacer/$(TFA_BUILD)
38TFA_BL31 ?= $(TFA_OUT)/bl31.bin
39TFA_BL32 ?= $(TFA_OUT)/bl32.bin
40TFA_FIP ?= $(TFA_OUT)/fip_all_arm_tf.bin
41FIPTOOL ?= $(TFA_PATH)/tools/fiptool/fiptool
42EDK2_PATH ?= $(ROOT)/edk2
43EDK2_PLATFORMS_PATH ?= $(ROOT)/edk2-platforms
44EDK2_NON_OSI_PATH ?= $(ROOT)/edk2-non-osi
45EDK2_PKGS_PATH := "$(EDK2_PATH):$(EDK2_PLATFORMS_PATH):$(EDK2_NON_OSI_PATH)"
46EDK2_FIP ?= $(EDK2_NON_OSI_PATH)/Platform/Socionext/DeveloperBox/fip_all_arm_tf.bin
Victor Chongd79d6672019-11-08 09:50:30 +000047EDK2_TOOLCHAIN ?= GCC5
48EDK2_ARCH ?= AARCH64
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090049
50################################################################################
51# Targets
52################################################################################
53.PHONY: all
Pipat Methavanitpong10c43752019-12-24 10:19:52 +090054all: edk2 optee-os scp tfa
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090055
56.PHONY: clean
Pipat Methavanitpong10c43752019-12-24 10:19:52 +090057clean: edk2-clean optee-os-clean scp-clean tfa-clean
58
59################################################################################
60# Toolchains
61################################################################################
62AARCH32_NONE_PATH ?= $(TOOLCHAIN_ROOT)/aarch32-none
63AARCH32_NONE_CROSS_COMPILE ?= $(AARCH32_NONE_PATH)/bin/arm-none-eabi-
64AARCH32_NONE_GCC_VERSION ?= gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux
65SRC_AARCH32_NONE_GCC ?= https://developer.arm.com/-/media/Files/downloads/gnu-rm/9-2019q4/RC2.1/$(AARCH32_NONE_GCC_VERSION).tar.bz2
66
67toolchains: aarch32-none
68
69.PHONY: aarch32-none
70aarch32-none:
71 $(call dltc,$(AARCH32_NONE_PATH),$(SRC_AARCH32_NONE_GCC),$(AARCH32_NONE_GCC_VERSION))
72
73################################################################################
74# SCP
75################################################################################
76SCP_FLAGS ?= \
77 CC=$(AARCH32_NONE_CROSS_COMPILE)gcc \
78 PRODUCT=synquacer \
79 MODE=$(SCP_BUILD)
80
81.PHONY: scp
82scp: aarch32-none
83 $(MAKE) -C $(SCP_PATH) $(SCP_FLAGS) all
84 tr "\000" "\377" < /dev/zero | dd of=$(SCP_ROMRAM) bs=1 count=196608
85 dd of=$(SCP_ROMRAM) if=$(SCP_ROM) bs=1 conv=notrunc seek=0
86 dd of=$(SCP_ROMRAM) if=$(SCP_RAM) bs=1 seek=65536
87 ln -sf $(SCP_ROMRAM) $(BINARIES_PATH)
88
89.PHONY: scp-clean
90scp-clean:
91 rm -f $(SCP_ROMRAM)
92 $(MAKE) -C $(SCP_PATH) $(SCP_FLAGS) clean
Pipat Methavanitpong33295f82019-05-09 15:46:46 +090093
94################################################################################
95# Trusted Firmware A
96################################################################################
97TFA_EXPORTS ?= \
98 CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
99
100TFA_FLAGS ?= \
101 BL32=$(TFA_BL32) \
102 PRELOADED_BL33_BASE=0x08200000 \
103 DEBUG=$(DEBUG) \
104 PLAT=synquacer \
Pipat Methavanitpong10c43752019-12-24 10:19:52 +0900105 SPD=opteed \
106 SQ_USE_SCMI_DRIVER=1
Pipat Methavanitpong33295f82019-05-09 15:46:46 +0900107
108.PHONY: tfa
109tfa: $(TFA_FIP)
110
111.PHONY: tfa-clean
112tfa-clean:
113 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) clean
114
115$(TFA_FIP): $(TFA_BL32)
116 $(TFA_EXPORTS) $(MAKE) -C $(TFA_PATH) $(TFA_FLAGS) all fiptool
117 $(FIPTOOL) create \
118 --tb-fw $(TFA_BL31) \
119 --soc-fw $(TFA_BL31) \
120 --scp-fw $(TFA_BL31) \
121 --tos-fw $< \
122 $@
123
124$(TFA_BL32): optee-os
125 mkdir -p $(dir $@)
126 $(AARCH64_CROSS_COMPILE)objcopy \
127 -O binary $(OPTEE_OS_PATH)/out/arm/core/tee.elf $@
128
129################################################################################
130# EDK2 / Tianocore
131################################################################################
132define edk2-env
133 export WORKSPACE=$(EDK2_PLATFORMS_PATH)
134endef
135
136define edk2-call
Victor Chongd79d6672019-11-08 09:50:30 +0000137 $(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(AARCH64_CROSS_COMPILE) \
Pipat Methavanitpong33295f82019-05-09 15:46:46 +0900138 build -n `getconf _NPROCESSORS_ONLN` \
Victor Chongd79d6672019-11-08 09:50:30 +0000139 -a $(EDK2_ARCH) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) \
Pipat Methavanitpong33295f82019-05-09 15:46:46 +0900140 -p Platform/Socionext/DeveloperBox/DeveloperBox.dsc
141endef
142
143.PHONY: edk2
144edk2: $(EDK2_FIP)
145 $(call edk2-env) && \
146 export PACKAGES_PATH=$(EDK2_PKGS_PATH) && \
147 source $(EDK2_PATH)/edksetup.sh && \
148 $(MAKE) -j1 -C $(EDK2_PATH)/BaseTools && \
149 $(call edk2-call) all
150
151.PHONY: edk2-clean
152edk2-clean: edk2-clean-common
153 cd $(EDK2_NON_OSI_PATH) && \
154 git checkout $(EDK2_FIP)
155
156$(EDK2_FIP): $(TFA_FIP)
157 cp $< $@
158
159################################################################################
160# OP-TEE
161################################################################################
162OPTEE_OS_COMMON_FLAGS += PLATFORM=synquacer
163OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=synquacer
164
165.PHONY: optee-os
166optee-os: optee-os-common
167
168.PHONY: optee-os-clean
169optee-os-clean: optee-os-clean-common