From bf8160a8cc5e4c554ac0c8d36b5a393edc95b7c3 Mon Sep 17 00:00:00 2001
From: Victor Chong <victor.chong@linaro.org>
Date: Fri, 15 Sep 2017 07:38:23 +0100
Subject: [PATCH] hikey+debian: Update and improve edk build commands

Use OpenPlatformPkg as required by
https://github.com/96boards-hikey/edk2
branch: testing/hikey960_v2.5

Use parallel instead of single execution

Signed-off-by: Victor Chong <victor.chong@linaro.org>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
---
 hikey.mk        | 42 ++++++++++++++++++++++++++++--------------
 hikey_debian.mk | 16 +++++++++-------
 2 files changed, 37 insertions(+), 21 deletions(-)

diff --git a/hikey.mk b/hikey.mk
index b712efb..7ef12a2 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -35,15 +35,15 @@ endif
 
 EDK2_PATH 			?= $(ROOT)/edk2
 ifeq ($(DEBUG),1)
-EDK2_BIN 			?= $(EDK2_PATH)/Build/HiKey/DEBUG_GCC49/FV/BL33_AP_UEFI.fd
 EDK2_BUILD			?= DEBUG
 else
-EDK2_BIN 			?= $(EDK2_PATH)/Build/HiKey/RELEASE_GCC49/FV/BL33_AP_UEFI.fd
 EDK2_BUILD			?= RELEASE
 endif
+EDK2_BIN 			?= $(EDK2_PATH)/Build/HiKey/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/BL33_AP_UEFI.fd
+OPENPLATPKG_PATH		?= $(ROOT)/OpenPlatformPkg
 
 OUT_PATH			?=$(ROOT)/out
-MCUIMAGE_BIN			?=$(EDK2_PATH)/HisiPkg/HiKeyPkg/NonFree/mcuimage.bin
+MCUIMAGE_BIN			?= $(OPENPLATPKG_PATH)/Platforms/Hisilicon/HiKey/Binary/mcuimage.bin
 BOOT_IMG			?=$(ROOT)/out/boot-fat.uefi.img
 NVME_IMG			?=$(ROOT)/out/nvme.img
 GRUB_PATH			?=$(ROOT)/grub
@@ -124,26 +124,40 @@ busybox-cleaner: busybox-clean-common busybox-cleaner-common
 ################################################################################
 # EDK2 / Tianocore
 ################################################################################
-EDK2_VARS ?= EDK2_ARCH=AARCH64 \
-		EDK2_DSC=HisiPkg/HiKeyPkg/HiKey.dsc \
-		EDK2_TOOLCHAIN=GCC49 \
-		EDK2_BUILD=$(EDK2_BUILD)
+EDK2_ARCH ?= AARCH64
+EDK2_DSC ?= OpenPlatformPkg/Platforms/Hisilicon/HiKey/HiKey.dsc
+EDK2_TOOLCHAIN ?= GCC49
 
 EDK2_CONSOLE_UART ?= $(CFG_NW_CONSOLE_UART)
 ifeq ($(EDK2_CONSOLE_UART),0)
-	EDK2_VARS += EDK2_MACROS="-DSERIAL_BASE=0xF8015000"
+	EDK2_BUILDFLAGS += -DSERIAL_BASE=0xF8015000
 endif
 
 define edk2-call
-	GCC49_AARCH64_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
-	$(MAKE) -j1 -C $(EDK2_PATH) \
-		-f HisiPkg/HiKeyPkg/Makefile $(EDK2_VARS)
+	$(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
+	build -n `getconf _NPROCESSORS_ONLN` -a $(EDK2_ARCH) \
+		-t $(EDK2_TOOLCHAIN) -p $(EDK2_DSC) \
+		-b $(EDK2_BUILD) $(EDK2_BUILDFLAGS)
 endef
 
-edk2: edk2-common
+.PHONY: edk2
+edk2:
+	cd $(EDK2_PATH) && rm -rf OpenPlatformPkg && \
+		ln -s $(OPENPLATPKG_PATH)
+	set -e && cd $(EDK2_PATH) && source edksetup.sh && \
+		$(MAKE) -j1 -C $(EDK2_PATH)/BaseTools && \
+		$(call edk2-call)
 
 .PHONY: edk2-clean
-edk2-clean: edk2-clean-common
+edk2-clean:
+	set -e && cd $(EDK2_PATH) && source edksetup.sh && \
+		$(call edk2-call) cleanall && \
+		$(MAKE) -j1 -C $(EDK2_PATH)/BaseTools clean
+	rm -rf $(EDK2_PATH)/Build
+	rm -rf $(EDK2_PATH)/Conf/.cache
+	rm -f $(EDK2_PATH)/Conf/build_rule.txt
+	rm -f $(EDK2_PATH)/Conf/target.txt
+	rm -f $(EDK2_PATH)/Conf/tools_def.txt
 
 ################################################################################
 # Linux kernel
@@ -313,7 +327,7 @@ boot-img: linux update_rootfs edk2 grub
 	mcopy -i $(BOOT_IMG) $(OUT_PATH)/grubaa64.efi ::/EFI/BOOT/
 	mcopy -i $(BOOT_IMG) $(GRUBCFG) ::/EFI/BOOT/grub.cfg
 	mcopy -i $(BOOT_IMG) $(GEN_ROOTFS_PATH)/filesystem.cpio.gz ::/initrd.img
-	mcopy -i $(BOOT_IMG) $(EDK2_PATH)/Build/HiKey/$(EDK2_BUILD)_GCC49/AARCH64/AndroidFastbootApp.efi ::/EFI/BOOT/fastboot.efi
+	mcopy -i $(BOOT_IMG) $(EDK2_PATH)/Build/HiKey/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/$(EDK2_ARCH)/AndroidFastbootApp.efi ::/EFI/BOOT/fastboot.efi
 
 .PHONY: boot-img-clean
 boot-img-clean:
diff --git a/hikey_debian.mk b/hikey_debian.mk
index cdc7288..9707e6f 100644
--- a/hikey_debian.mk
+++ b/hikey_debian.mk
@@ -54,12 +54,11 @@ endif
 
 EDK2_PATH 			?= $(ROOT)/edk2
 ifeq ($(DEBUG),1)
-EDK2_BIN 			?= $(EDK2_PATH)/Build/HiKey/DEBUG_GCC49/FV/BL33_AP_UEFI.fd
 EDK2_BUILD			?= DEBUG
 else
-EDK2_BIN 			?= $(EDK2_PATH)/Build/HiKey/RELEASE_GCC49/FV/BL33_AP_UEFI.fd
 EDK2_BUILD			?= RELEASE
 endif
+EDK2_BIN			?= $(EDK2_PATH)/Build/HiKey/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/BL33_AP_UEFI.fd
 OPENPLATPKG_PATH		?= $(ROOT)/OpenPlatformPkg
 
 OUT_PATH			?= $(ROOT)/out
@@ -146,8 +145,9 @@ ifeq ($(EDK2_CONSOLE_UART),0)
 endif
 
 define edk2-call
-	GCC49_AARCH64_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
-	build -n 1 -a $(EDK2_ARCH) -t $(EDK2_TOOLCHAIN) -p $(EDK2_DSC) \
+	$(EDK2_TOOLCHAIN)_$(EDK2_ARCH)_PREFIX=$(LEGACY_AARCH64_CROSS_COMPILE) \
+	build -n `getconf _NPROCESSORS_ONLN` -a $(EDK2_ARCH) \
+		-t $(EDK2_TOOLCHAIN) -p $(EDK2_DSC) \
 		-b $(EDK2_BUILD) $(EDK2_BUILDFLAGS)
 endef
 
@@ -155,15 +155,17 @@ endef
 edk2:
 	cd $(EDK2_PATH) && rm -rf OpenPlatformPkg && \
 		ln -s $(OPENPLATPKG_PATH)
-	set -e && cd $(EDK2_PATH) && source edksetup.sh BaseTools && \
+	set -e && cd $(EDK2_PATH) && source edksetup.sh && \
 		$(MAKE) -j1 -C $(EDK2_PATH)/BaseTools && \
 		$(call edk2-call)
 
 .PHONY: edk2-clean
 edk2-clean:
-	set -e && cd $(EDK2_PATH) && source edksetup.sh BaseTools && \
+	set -e && cd $(EDK2_PATH) && source edksetup.sh && \
+		$(call edk2-call) cleanall && \
 		$(MAKE) -j1 -C $(EDK2_PATH)/BaseTools clean
 	rm -rf $(EDK2_PATH)/Build
+	rm -rf $(EDK2_PATH)/Conf/.cache
 	rm -f $(EDK2_PATH)/Conf/build_rule.txt
 	rm -f $(EDK2_PATH)/Conf/target.txt
 	rm -f $(EDK2_PATH)/Conf/tools_def.txt
@@ -300,7 +302,7 @@ boot-img: edk2 grub
 	mmd -i $(BOOT_IMG) EFI
 	mmd -i $(BOOT_IMG) EFI/BOOT
 	mcopy -i $(BOOT_IMG) $(OUT_PATH)/grubaa64.efi ::/EFI/BOOT/
-	mcopy -i $(BOOT_IMG) $(EDK2_PATH)/Build/HiKey/$(EDK2_BUILD)_GCC49/AARCH64/AndroidFastbootApp.efi ::/EFI/BOOT/fastboot.efi
+	mcopy -i $(BOOT_IMG) $(EDK2_PATH)/Build/HiKey/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/$(EDK2_ARCH)/AndroidFastbootApp.efi ::/EFI/BOOT/fastboot.efi
 
 .PHONY: boot-img-clean
 boot-img-clean:
-- 
GitLab