blob: 8a4ce2706d95e691b0955a8f72937d4cc2f8c8e0 [file] [log] [blame]
Jens Wiklanderbab50842016-02-17 15:45:10 +01001DEBUG ?= 0
2
3-include common.mk
4
5################################################################################
6# Mandatory definition to use common.mk
7################################################################################
8CROSS_COMPILE_NS_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
9CROSS_COMPILE_NS_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
10CROSS_COMPILE_S_USER ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
11CROSS_COMPILE_S_KERNEL ?= "$(CCACHE)$(AARCH64_CROSS_COMPILE)"
12OPTEE_OS_BIN ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/core/tee.bin
13OPTEE_OS_TA_DEV_KIT_DIR ?= $(OPTEE_OS_PATH)/out/arm-plat-vexpress/export-ta_arm64
14
15################################################################################
16# Paths to git projects and various binaries
17################################################################################
18ARM_TF_PATH ?= $(ROOT)/arm-trusted-firmware
19
20U-BOOT_PATH ?= $(ROOT)/u-boot
21U-BOOT_BIN ?= $(U-BOOT_PATH)/u-boot.bin
22
23################################################################################
24# Targets
25################################################################################
26all: arm-tf u-boot linux optee-os optee-client optee-linuxdriver generate-dtb xtest update_rootfs
27all-clean: arm-tf-clean busybox-clean u-boot-clean optee-os-clean \
28 optee-client-clean optee-linuxdriver-clean
29
30
31-include toolchain.mk
32
33################################################################################
34# ARM Trusted Firmware
35################################################################################
36ARM_TF_EXPORTS ?= \
37 CFLAGS="-O0 -gdwarf-2" \
38 CROSS_COMPILE="$(CCACHE)$(AARCH64_NONE_CROSS_COMPILE)"
39
40ARM_TF_FLAGS ?= \
41 SCP_BL2=$(ROOT)/vexpress-firmware/SOFTWARE/bl30.bin \
42 BL32=$(OPTEE_OS_BIN) \
43 BL33=$(U-BOOT_BIN) \
44 DEBUG=0 \
45 ARM_TSP_RAM_LOCATION=dram \
46 PLAT=juno \
47 SPD=opteed
48
49arm-tf: optee-os u-boot
50 $(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) all fip
51
52arm-tf-clean:
53 $(ARM_TF_EXPORTS) $(MAKE) -C $(ARM_TF_PATH) $(ARM_TF_FLAGS) clean
54
55################################################################################
56# Busybox
57################################################################################
58BUSYBOX_COMMON_TARGET = fvp-aarch64
59BUSYBOX_CLEAN_COMMON_TARGET = fvp-aarch64 clean
60BUSYBOX_COMMON_CCDIR = $(AARCH64_PATH)
61
62busybox: busybox-common
63
64busybox-clean: busybox-clean-common
65
66busybox-cleaner: busybox-cleaner-common
67
68################################################################################
69# Das U-Boot
70################################################################################
71
72U-BOOT_EXPORTS ?= CROSS_COMPILE="$(CCACHE)$(AARCH64_CROSS_COMPILE)"
73
74U-BOOT_DEFCONFIG_FILES := \
75 $(U-BOOT_PATH)/configs/vexpress_aemv8a_juno_defconfig \
76 $(ROOT)/build/kconfigs/u-boot_juno.conf
77
78.PHONY: u-boot
79u-boot:
80 cd $(U-BOOT_PATH) && \
81 scripts/kconfig/merge_config.sh $(U-BOOT_DEFCONFIG_FILES)
82 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all
83
84u-boot-clean:
85 $(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
86
87################################################################################
88# Linux kernel
89################################################################################
90LINUX_DEFCONFIG_COMMON_ARCH := arm64
91LINUX_DEFCONFIG_COMMON_FILES := \
92 $(LINUX_PATH)/arch/arm64/configs/defconfig \
93 $(CURDIR)/kconfigs/juno.conf
94
95linux-defconfig: $(LINUX_PATH)/.config
96
97LINUX_COMMON_FLAGS += ARCH=arm64
98
99linux: linux-common
100
101linux-defconfig-clean: linux-defconfig-clean-common
102
103LINUX_CLEAN_COMMON_FLAGS += ARCH=arm64
104
105linux-clean: linux-clean-common
106
107LINUX_CLEANER_COMMON_FLAGS += ARCH=arm64
108
109linux-cleaner: linux-cleaner-common
110
111################################################################################
112# OP-TEE
113################################################################################
114OPTEE_OS_COMMON_FLAGS += PLATFORM=vexpress-juno CFG_ARM64_core=y
115optee-os: optee-os-common
116
117OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=vexpress-juno
118optee-os-clean: optee-os-clean-common
119
120optee-client: optee-client-common
121
122optee-client-clean: optee-client-clean-common
123
124OPTEE_LINUXDRIVER_COMMON_FLAGS += ARCH=arm64
125optee-linuxdriver: optee-linuxdriver-common
126
127OPTEE_LINUXDRIVER_CLEAN_COMMON_FLAGS += ARCH=arm64
128optee-linuxdriver-clean: optee-linuxdriver-clean-common
129
130generate-dtb: linux
131 $(LINUX_PATH)/scripts/dtc/dtc \
132 -O dtb \
133 -o $(LINUX_PATH)/fdt.dtb \
134 -b 0 \
135 -i . $(OPTEE_LINUXDRIVER_PATH)/fdts/fvp-foundation-gicv2-psci.dts
136
137################################################################################
138# xtest / optee_test
139################################################################################
140xtest: xtest-common
141
142xtest-clean: xtest-clean-common
143
144xtest-patch: xtest-patch-common
145
146################################################################################
147# Root FS
148################################################################################
149.PHONY: filelist-tee
150filelist-tee:
151 @echo "# xtest / optee_test" > $(GEN_ROOTFS_FILELIST)
152 @find $(OPTEE_TEST_OUT_PATH) -type f -name "xtest" | sed 's/\(.*\)/file \/bin\/xtest \1 755 0 0/g' >> $(GEN_ROOTFS_FILELIST)
153 @echo "# TAs" >> $(GEN_ROOTFS_FILELIST)
154 @echo "dir /lib/optee_armtz 755 0 0" >> $(GEN_ROOTFS_FILELIST)
155 @find $(OPTEE_TEST_OUT_PATH) -name "*.ta" | \
156 sed 's/\(.*\)\/\(.*\)/file \/lib\/optee_armtz\/\2 \1\/\2 444 0 0/g' >> $(GEN_ROOTFS_FILELIST)
157 @echo "# Secure storage dig" >> $(GEN_ROOTFS_FILELIST)
158 @echo "dir /data 755 0 0" >> $(GEN_ROOTFS_FILELIST)
159 @echo "dir /data/tee 755 0 0" >> $(GEN_ROOTFS_FILELIST)
160 @echo "# OP-TEE device" >> $(GEN_ROOTFS_FILELIST)
161 @echo "dir /lib/modules 755 0 0" >> $(GEN_ROOTFS_FILELIST)
162 @echo "dir /lib/modules/$(call KERNEL_VERSION) 755 0 0" >> $(GEN_ROOTFS_FILELIST)
163 @echo "file /lib/modules/$(call KERNEL_VERSION)/optee.ko $(OPTEE_LINUXDRIVER_PATH)/core/optee.ko 755 0 0" >> $(GEN_ROOTFS_FILELIST)
164 @echo "file /lib/modules/$(call KERNEL_VERSION)/optee_armtz.ko $(OPTEE_LINUXDRIVER_PATH)/armtz/optee_armtz.ko 755 0 0" >> $(GEN_ROOTFS_FILELIST)
165 @echo "# OP-TEE Client" >> $(GEN_ROOTFS_FILELIST)
166 @echo "file /bin/tee-supplicant $(OPTEE_CLIENT_EXPORT)/bin/tee-supplicant 755 0 0" >> $(GEN_ROOTFS_FILELIST)
167 @echo "dir /lib/aarch64-linux-gnu 755 0 0" >> $(GEN_ROOTFS_FILELIST)
168 @echo "file /lib/aarch64-linux-gnu/libteec.so.1.0 $(OPTEE_CLIENT_EXPORT)/lib/libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST)
169 @echo "slink /lib/aarch64-linux-gnu/libteec.so.1 libteec.so.1.0 755 0 0" >> $(GEN_ROOTFS_FILELIST)
170 @echo "slink /lib/aarch64-linux-gnu/libteec.so libteec.so.1 755 0 0" >> $(GEN_ROOTFS_FILELIST)
171
172.PHONY: update_rootfs
173update_rootfs: u-boot busybox optee-client optee-linuxdriver xtest filelist-tee
174 cat $(GEN_ROOTFS_PATH)/filelist-final.txt $(GEN_ROOTFS_PATH)/filelist-tee.txt > $(GEN_ROOTFS_PATH)/filelist.tmp
175 cd $(GEN_ROOTFS_PATH) && \
176 $(LINUX_PATH)/usr/gen_init_cpio $(GEN_ROOTFS_PATH)/filelist.tmp | gzip > $(GEN_ROOTFS_PATH)/filesystem.cpio.gz
177 $(U-BOOT_PATH)/tools/mkimage -A arm64 -O linux -T ramdisk -C gzip \
178 -d $(GEN_ROOTFS_PATH)/filesystem.cpio.gz \
179 $(GEN_ROOTFS_PATH)/ramdisk.img
180
181FTP-UPLOAD = ftp-upload -v --host $(JUNO_IP) --dir SOFTWARE
182
183.PHONY: flash
184flash:
185 @test -n "$(JUNO_IP)" || \
186 (echo "JUNO_IP not set" ; exit 1)
187 $(FTP-UPLOAD) $(ROOT)/vexpress-firmware/SOFTWARE/bl0.bin
188 $(FTP-UPLOAD) $(ARM_TF_PATH)/build/juno/release/bl1.bin
189 $(FTP-UPLOAD) $(ARM_TF_PATH)/build/juno/release/fip.bin
190 $(FTP-UPLOAD) $(ROOT)/linux/arch/arm64/boot/Image
191 $(FTP-UPLOAD) $(ROOT)/linux/arch/arm64/boot/dts/arm/juno.dtb
192 $(FTP-UPLOAD) $(ROOT)/gen_rootfs/ramdisk.img