1###############################################################################
2# Targets
3###############################################################################
4.PHONY: all clean cleaner prepare
5
6all: u-boot linux optee-os build-fit buildroot
7clean: linux-clean u-boot-clean optee-os-clean build-fit-clean buildroot-clean
8cleaner: clean prepare-cleaner linux-cleaner
9
10include toolchain.mk
11
12prepare:
13	@if [ ! -d $(STAGING_AREA) ]; then mkdir -p $(STAGING_AREA); fi
14
15.PHONY: prepare-cleaner
16prepare-cleaner:
17	rm -r $(STAGING_AREA)
18
19###############################################################################
20# Das U-Boot
21###############################################################################
22.PHONY: u-boot u-boot-clean
23
24U-BOOT_EXPORTS ?= CROSS_COMPILE=$(CROSS_COMPILE_NS_KERNEL) ARCH=arm
25
26u-boot:
27	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) $(U-BOOT_CONFIG)
28	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) all
29
30u-boot-clean:
31	$(U-BOOT_EXPORTS) $(MAKE) -C $(U-BOOT_PATH) clean
32
33###############################################################################
34# Linux kernel
35###############################################################################
36.PHONY: linux-defconfig linux linux-defconfig-clean linux-clean linux-cleaner
37
38linux-defconfig:
39	cd $(LINUX_PATH) && \
40		ti_config_fragments/defconfig_builder.sh -t $(CONFIG_TYPE)
41	$(MAKE) -C $(LINUX_PATH) $(LINUX_COMMON_FLAGS) $(CONFIG_TYPE)_defconfig
42
43LINUX_COMMON_FLAGS += ARCH=arm
44linux: linux-common
45linux-defconfig-clean: linux-defconfig-clean-common
46
47LINUX_CLEAN_COMMON_FLAGS += ARCH=arm
48linux-clean: linux-clean-common
49
50LINUX_CLEANER_COMMON_FLAGS += ARCH=arm
51linux-cleaner: linux-cleaner-common
52
53###############################################################################
54# OP-TEE
55###############################################################################
56.PHONY: optee-os optee-os-clean optee-client optee-client-clean
57
58OPTEE_OS_COMMON_FLAGS += PLATFORM=$(OPTEE_OS_PLATFORM)
59optee-os: optee-os-common
60
61OPTEE_OS_CLEAN_COMMON_FLAGS += PLATFORM=$(OPTEE_OS_PLATFORM)
62optee-os-clean: optee-os-clean-common
63
64###############################################################################
65# Build FIT
66###############################################################################
67.PHONY: build-fit build-fit-clean
68
69build-fit: prepare linux optee-os
70	cp $(LINUX_IMAGE) $(STAGING_AREA)/
71	cp $(LINUX_DTBS) $(STAGING_AREA)/
72	cp $(OPTEE_OS_BIN) $(STAGING_AREA)/
73	cp $(FIT_SOURCE) $(STAGING_AREA)/fitImage.its
74	cp $(FIT_MAKEFILE) $(STAGING_AREA)/
75	MKIMAGE=$(U-BOOT_PATH)/tools/mkimage $(MAKE) -C $(STAGING_AREA)
76
77build-fit-clean:
78	$(RM) $(STAGING_AREA)/Makefile
79	$(RM) $(STAGING_AREA)/fitImage.its
80	$(RM) $(STAGING_AREA)/tee.bin
81	$(RM) $(STAGING_AREA)/*.dtb
82	$(RM) $(STAGING_AREA)/zImage
83
84###############################################################################
85# Root FS
86###############################################################################
87.PHONY: update_rootfs
88# Make sure this is built before the buildroot target which will create the
89# root file system based on what's in $(BUILDROOT_TARGET_ROOT)
90buildroot: update_rootfs
91
92update_rootfs: u-boot build-fit
93	@mkdir -p --mode=755 $(BUILDROOT_TARGET_ROOT)/boot
94	@install -v -p --mode=644 $(UBOOT_SPL) $(BUILDROOT_TARGET_ROOT)/boot/MLO
95	@install -v -p --mode=644 $(UBOOT_IMG) \
96		$(BUILDROOT_TARGET_ROOT)/boot/u-boot.img
97	@install -v -p --mode=644 $(STAGING_AREA)/fitImage \
98		$(BUILDROOT_TARGET_ROOT)/boot/fitImage
99