From 998c8b512b9a8aed21d1f03718f2d33814f57d2e Mon Sep 17 00:00:00 2001 From: Thu Cao Date: Thu, 26 Nov 2020 20:06:36 -0800 Subject: [PATCH] Makefile: Fix native compilation issues - Native compilation for edk2, export compiler path to PATH variable - Fix acpica-unix2 native compilation issue - Optimize Makefile and build script - Update README Signed-off-by: Thu Cao --- Makefile | 326 ++++++++++++++++------------------------------- README.md | 39 +++--- common-functions | 38 +++--- edk2-build.sh | 41 +++--- 4 files changed, 175 insertions(+), 269 deletions(-) diff --git a/Makefile b/Makefile index 7ae3aaf2..fff86d61 100755 --- a/Makefile +++ b/Makefile @@ -7,29 +7,15 @@ # EDK2 Makefile # -# Input ATF_SLIM -ifeq ("$(shell echo $(ATF_SLIM) | cut -c1-1)", "/") - ATF_SLIM_IMG = $(ATF_SLIM) -else - ATF_SLIM_IMG = $(PWD)/$(ATF_SLIM) -endif - -# Input BOARD_SETTING -ifeq ("$(shell echo $(BOARD_SETTING) | cut -c1-1)", "/") - BOARD_SETTING_INPUT = $(BOARD_SETTING) -else - BOARD_SETTING_INPUT = $(PWD)/$(BOARD_SETTING) -endif - # Default Input variables ATF_TBB ?= 1 -DEBUG ?= 0 BOARD_NAME ?= jade BOARD_NAME_UPPER := $(shell echo $(BOARD_NAME) | tr a-z A-Z) BOARD_NAME_UPPER_FIRST_LETTER := $(shell echo $(BOARD_NAME) | sed 's/.*/\u&/') # Directory variables +CUR_DIR := $(PWD) SCRIPTS_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) ROOT_DIR := $(shell dirname $(SCRIPTS_DIR)) @@ -37,108 +23,59 @@ EDK2_SRC_DIR := $(ROOT_DIR)/edk2 EDK2_NON_OSI_SRC_DIR := $(ROOT_DIR)/edk2-non-osi EDK2_PLATFORMS_SRC_DIR := $(ROOT_DIR)/edk2-platforms EDK2_PLATFORMS_PKG_DIR := $(EDK2_PLATFORMS_SRC_DIR)/Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg +REQUIRE_EDK2_SRC := $(EDK2_SRC_DIR) $(EDK2_PLATFORMS_SRC_DIR)$(if $(wildcard $(EDK2_NON_OSI_SRC_DIR)), $(EDK2_NON_OSI_SRC_DIR),) ATF_TOOLS_DIR := $(SCRIPTS_DIR)/toolchain/atf-tools COMPILER_DIR := $(SCRIPTS_DIR)/toolchain/ampere IASL_DIR := $(SCRIPTS_DIR)/toolchain/iasl +AARCH64_TOOLS_DIR := $(COMPILER_DIR)/bin +export PATH := $(PATH):$(IASL_DIR):$(ATF_TOOLS_DIR) -export WORKSPACE := $(PWD) - -# Input DEST_DIR -ifeq (, $(DEST_DIR)) - OUTPUT_BIN_DIR = $(PWD)/BUILDS/$(BOARD_NAME)_$(BUILD_IMG_TYPE)_atf$(OUTPUT_VARIANT)_$(VER).$(BUILD) -else - -ifeq ("$(shell echo $(DEST_DIR) | cut -c1-1)", "/") - OUTPUT_BIN_DIR = $(DEST_DIR) +# Compiler variables +EDK2_GCC_TAG := GCC5 +AMPERE_COMPILER_PREFIX := aarch64-ampere-linux-gnu- +ifeq ($(or $(shell $(CROSS_COMPILE)gcc -dumpmachine 2>/dev/null | grep -v ampere | grep aarch64), \ + $(shell $(CROSS_COMPILE)gcc --version 2>/dev/null| grep Ampere | grep dynamic-nosysroot)),) + COMPILER := $(AARCH64_TOOLS_DIR)/$(AMPERE_COMPILER_PREFIX) else - OUTPUT_BIN_DIR = $(PWD)/$(DEST_DIR) -endif - + COMPILER := $(CROSS_COMPILE) endif -# Misc variables -EDK2_GCC_TAG := GCC5 -CROSS_COMPILE_PREFIX := aarch64-ampere-linux-gnu- -AARCH64_TOOLS_DIR := $(COMPILER_DIR)/bin - -export PATH := $(PATH):$(IASL_DIR):$(ATF_TOOLS_DIR) - NUM_THREADS := $(shell echo $$(( $(shell getconf _NPROCESSORS_ONLN) + $(shell getconf _NPROCESSORS_ONLN)))) -ATF_REPO_URL := https://github.com/ARM-software/arm-trusted-firmware.git -export ATF_TOOLS_LIST := include/tools_share \nmake_helpers \ntools/cert_create \ntools/fiptool - -IASL_VER = "20200110" -IASL_NAME = acpica-unix2-$(IASL_VER) -IASL_URL = "https://acpica.org/sites/acpica/files/$(IASL_NAME).tar.gz" - -COMPILER_NAME = ampere-8.3.0-20191025-dynamic-nosysroot-crosstools.tar.xz -COMPILER_URL = https://cdn.amperecomputing.com/tools/compilers/cross/8.3.0/$(COMPILER_NAME) - +# Tools variables IASL := iasl FIPTOOL := fiptool CERTTOOL := cert_create -NVGENCMD := python nvparam.py +NVGENCMD := python $(SCRIPTS_DIR)/nvparam.py +EXECUTABLES := openssl git cut sed awk wget tar bison gcc g++ # Build variant variables -ifeq ($(DEBUG),1) - BUILD_VARIANT = DEBUG - OUTPUT_VARIANT = _debug -else - BUILD_VARIANT = RELEASE - OUTPUT_VARIANT = -endif - -ifeq ($(BUILD_LINUXBOOT),1) - LINUXBOOTPKG = LinuxBoot - BUILD_IMG_TYPE = linuxboot -else - LINUXBOOTPKG = - BUILD_IMG_TYPE = tianocore -endif - -BUILD_VARIANT_LOWER = $(shell echo $(BUILD_VARIANT) | tr A-Z a-z) -BUILD_VARIANT_UPPER_FIRST_LETTER = $(shell echo $(BUILD_VARIANT_LOWER) | sed 's/.*/\u&/') - -GIT_VER = $(shell cd $(EDK2_PLATFORMS_SRC_DIR) && git describe --tags --dirty --long | grep ampere | grep -v dirty | cut -d \- -f 1 | cut -d \v -f 2) +BUILD_VARIANT := $(if $(shell echo $(DEBUG) | grep -w 1),DEBUG,RELEASE) +BUILD_VARIANT_LOWER := $(shell echo $(BUILD_VARIANT) | tr A-Z a-z) +BUILD_VARIANT_UPPER_FIRST_LETTER := $(shell echo $(BUILD_VARIANT_LOWER) | sed 's/.*/\u&/') +GIT_VER := $(shell cd $(EDK2_PLATFORMS_SRC_DIR) 2>/dev/null && \ + git describe --tags --dirty --long --always | grep ampere | grep -v dirty | cut -d \- -f 1 | cut -d \v -f 2) # Input VER VER ?= $(shell echo $(GIT_VER) | cut -d \. -f 1,2) -ifeq ($(VER),) - VER = 0.00 -endif +VER := $(if $(VER),$(VER),0.00) # Input BUILD BUILD ?= $(shell echo $(GIT_VER) | cut -d \. -f 3) -ifeq ($(BUILD),) - BUILD = 100 -endif - -MAJOR_VER = $(shell echo $(VER) | cut -d \. -f 1 ) -MINOR_VER = $(shell echo $(VER) | cut -d \. -f 2 ) +BUILD := $(if $(BUILD),$(BUILD),100) # File path variables -OUTPUT_IMAGE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_$(BUILD_IMG_TYPE)_atf$(OUTPUT_VARIANT)_$(VER).$(BUILD).img -OUTPUT_CAPSULE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_$(BUILD_IMG_TYPE)_atf$(OUTPUT_VARIANT)_$(VER).$(BUILD).cap -OUTPUT_FD_IMAGE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_$(BUILD_IMG_TYPE)$(OUTPUT_VARIANT)_$(VER).$(BUILD).fd -OUTPUT_FD_SIGNED_IMAGE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_$(BUILD_IMG_TYPE)$(OUTPUT_VARIANT)_$(VER).$(BUILD).fd.signed - -OUTPUT_BST_TXT = $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_board_setting.txt -OUTPUT_BST_BIN = $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_board_setting.bin +LINUXBOOT_FMT := $(if $(shell echo $(BUILD_LINUXBOOT) | grep -w 1),_linuxboot,) +OUTPUT_VARIANT := $(if $(shell echo $(DEBUG) | grep -w 1),_debug,) +OUTPUT_BIN_DIR := $(if $(DEST_DIR),$(DEST_DIR),$(CUR_DIR)/BUILDS/$(BOARD_NAME)_tianocore_atf$(OUTPUT_VARIANT)_$(VER).$(BUILD)) -DEFAULT_BOARD_SETTING = $(EDK2_PLATFORMS_SRC_DIR)/Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/$(BOARD_NAME)_board_setting.txt +OUTPUT_IMAGE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_tianocore_atf$(LINUXBOOT_FMT)$(OUTPUT_VARIANT)_$(VER).$(BUILD).img +OUTPUT_FD_IMAGE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_tianocore$(LINUXBOOT_FMT)$(OUTPUT_VARIANT)_$(VER).$(BUILD).fd +OUTPUT_FD_SIGNED_IMAGE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_tianocore$(LINUXBOOT_FMT)$(OUTPUT_VARIANT)_$(VER).$(BUILD).fd.signed +OUTPUT_BST_BIN := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_board_setting.bin -DBB_KEY := $(EDK2_PLATFORMS_SRC_DIR)/Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/TestKeys/Dbb_AmpereTest.priv.pem -DBU_KEY := $(EDK2_PLATFORMS_SRC_DIR)/Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/TestKeys/Dbu_AmpereTest.priv.pem - -EDK2_ATF_SIGNED_IMAGE := $(WORKSPACE)/Build/$(BOARD_NAME_UPPER_FIRST_LETTER)/$(BOARD_NAME)_atfedk2.img.signed -EDK2_FV_DIR := $(WORKSPACE)/Build/$(BOARD_NAME_UPPER_FIRST_LETTER)/$(BUILD_VARIANT)_$(EDK2_GCC_TAG)/FV -EDK2_FD_IMAGE := $(EDK2_FV_DIR)/BL33_$(BOARD_NAME_UPPER)_UEFI.fd - -ifeq ($(or $(shell $(CROSS_COMPILE)gcc --version | grep -v Ampere | grep aarch64),$(shell $(CROSS_COMPILE)gcc --version | grep Ampere | grep dynamic-nosysroot)),) - CROSS_COMPILE := $(AARCH64_TOOLS_DIR)/$(CROSS_COMPILE_PREFIX) -endif +BOARD_SETTING ?= $(EDK2_PLATFORMS_PKG_DIR)/$(BOARD_NAME)_board_setting.txt # Targets define HELP_MSG @@ -152,7 +89,7 @@ Options: BUILD= : Specify image build id - Default: 100 DEST_DIR= : Path to output directory - - Default: $(PWD)/BUILDS + - Default: $(CUR_DIR)/BUILDS DEBUG=[0,1] : Enable debug build - Default: 0 VER= : Specify image version @@ -173,171 +110,133 @@ all: tianocore_capsule linuxboot_img ## clean : Clean basetool and tianocore build .PHONY: clean -clean: tianocore_basetools_clean tianocore_clean +clean: + @echo "Tianocore clean BaseTools..." + $(MAKE) -C $(EDK2_SRC_DIR)/BaseTools clean + + @echo "Tianocore clean $(CUR_DIR)/Build..." + @rm -fr $(CUR_DIR)/Build ## linuxboot_img : Linuxboot image .PHONY: linuxboot_img linuxboot_img: - @$(MAKE) tianocore_img BUILD_LINUXBOOT=1 + @$(MAKE) -C $(SCRIPTS_DIR) tianocore_img BUILD_LINUXBOOT=1 CUR_DIR=$(CUR_DIR) -_check_edk2_source: - @echo -n "Checking edk2..." -ifeq (, $(wildcard $(EDK2_SRC_DIR))) - $(error "$(EDK2_SRC_DIR) not found.") -else - @echo "OK" -endif - - @echo -n "Checking edk2-platforms..." -ifeq (, $(wildcard $(EDK2_PLATFORMS_SRC_DIR))) - $(error "$(EDK2_PLATFORMS_SRC_DIR) not found.") -else - @echo "OK" -endif +_check_source: + @echo "Checking source...OK" + $(foreach iter,$(REQUIRE_EDK2_SRC),\ + $(if $(wildcard $(iter)),,$(error "$(iter) not found"))) _check_tools: - @echo -n "Checking openssl..." -ifeq (, $(shell which openssl)) - $(error "Not Found. Please install to your system!") -else - @echo "OK" -endif - - @echo -n "Checking git..." -ifeq (, $(shell which git)) - $(error "Not Found. Please install to your system!") -else - @echo "OK" -endif - - @echo -n "Checking cut..." -ifeq (, $(shell which cut)) - $(error "Not Found. Please install to your system!") -else - @echo "OK" -endif - - @echo -n "Checking sed..." -ifeq (, $(shell which sed)) - $(error "Not Found. Please install to your system!") -else - @echo "OK" -endif + @echo "Checking tools...OK" + $(foreach iter,$(EXECUTABLES),\ + $(if $(shell which $(iter) 2>/dev/null),,$(error "No $(iter) in PATH"))) _check_compiler: @echo -n "Checking compiler..." -ifneq ($(shell echo $(CROSS_COMPILE) | grep $(AARCH64_TOOLS_DIR)),) -ifeq ($(wildcard $(AARCH64_TOOLS_DIR)/$(CROSS_COMPILE_PREFIX)gcc),) - @echo "Not Found" - @echo "Downloading and setting Ampere compiler..." + $(eval COMPILER_NAME := ampere-8.3.0-20191025-dynamic-nosysroot-crosstools.tar.xz) + $(eval COMPILER_URL := https://cdn.amperecomputing.com/tools/compilers/cross/8.3.0/$(COMPILER_NAME)) +ifeq ($(or $(shell echo $(COMPILER)gcc | grep -v $(AARCH64_TOOLS_DIR)), \ + $(wildcard $(AARCH64_TOOLS_DIR)/$(AMPERE_COMPILER_PREFIX)gcc)),) + @echo -e "Not Found\nDownloading and setting Ampere compiler..." @mkdir -p $(COMPILER_DIR) @wget -O - -q $(COMPILER_URL) | tar xJf - -C $(COMPILER_DIR) --strip-components=1 --checkpoint=.100 else - @echo "OK default" + @echo "$(shell $(COMPILER)gcc -dumpmachine) $(shell $(COMPILER)gcc -dumpversion)" endif -else - @echo "OK external" -endif - @echo "$(shell $(CROSS_COMPILE)gcc --version | awk 'FNR == 1')" _check_atf_tools: @echo -n "Checking ATF Tools..." -ifneq (, $(and $(shell which $(CERTTOOL)),$(shell which $(FIPTOOL)))) - @echo "OK" -else - -ifneq (, $(and $(wildcard $(ATF_TOOLS_DIR)/$(CERTTOOL)),$(wildcard $(ATF_TOOLS_DIR)/$(FIPTOOL)))) + $(eval ATF_REPO_URL := https://github.com/ARM-software/arm-trusted-firmware.git) + $(eval export ATF_TOOLS_LIST := include/tools_share \nmake_helpers \ntools/cert_create \ntools/fiptool) +ifneq ($(or $(and $(shell which $(CERTTOOL) 2>/dev/null),$(shell which $(FIPTOOL) 2>/dev/null)), \ + $(and $(wildcard $(ATF_TOOLS_DIR)/$(CERTTOOL)),$(wildcard $(ATF_TOOLS_DIR)/$(FIPTOOL)))),) @echo "OK" else - @echo "Not Found" - @echo "Downloading and building atf tools..." + @echo -e "Not Found\nDownloading and building atf tools..." @mkdir -p $(SCRIPTS_DIR)/AtfTools + @rm -rf $(ATF_TOOLS_DIR) && mkdir -p $(ATF_TOOLS_DIR) @cd $(SCRIPTS_DIR)/AtfTools && git init && git remote add origin -f $(ATF_REPO_URL) && git config core.sparseCheckout true @echo -e $$ATF_TOOLS_LIST > $(SCRIPTS_DIR)/AtfTools/.git/info/sparse-checkout @cd $(SCRIPTS_DIR)/AtfTools && git -C . checkout --track origin/master @cd $(SCRIPTS_DIR)/AtfTools/tools/cert_create && $(MAKE) CRTTOOL=cert_create @cd $(SCRIPTS_DIR)/AtfTools/tools/fiptool && $(MAKE) FIPTOOL=fiptool - - @rm -rf $(ATF_TOOLS_DIR) - @mkdir -p $(ATF_TOOLS_DIR) @cp $(SCRIPTS_DIR)/AtfTools/tools/cert_create/cert_create $(ATF_TOOLS_DIR)/$(CERTTOOL) @cp $(SCRIPTS_DIR)/AtfTools/tools/fiptool/fiptool $(ATF_TOOLS_DIR)/$(FIPTOOL) - @rm -rf $(SCRIPTS_DIR)/AtfTools -endif - + @rm -fr $(SCRIPTS_DIR)/AtfTools endif _check_iasl: @echo -n "Checking iasl..." -ifneq (, $(and $(shell which $(IASL)),$(shell $(IASL) -v | grep version | grep 20200110))) - @echo "OK" -else - -ifneq (, $(wildcard $(IASL_DIR)/$(IASL))) + $(eval IASL_NAME := acpica-unix2-20200110) + $(eval IASL_URL := "https://acpica.org/sites/acpica/files/$(IASL_NAME).tar.gz") +ifneq ($(or $(and $(shell which $(IASL) 2>/dev/null),$(shell $(IASL) -v | grep version | grep 20200110)), \ + $(wildcard $(IASL_DIR)/$(IASL))),) @echo "OK" else - @echo "Not Found" - @echo "Downloading and building iasl..." - @rm -fr $(IASL_DIR) - @mkdir -p $(IASL_DIR) - @wget -O - -q $(IASL_URL) | tar xzf - -C $(SCRIPTS_DIR) - @$(MAKE) -C $(SCRIPTS_DIR)/$(IASL_NAME) -j $(NUM_THREADS) + @echo -e "Not Found\nDownloading and building iasl..." + @rm -rf $(IASL_DIR) && mkdir -p $(IASL_DIR) + @wget -O - -q $(IASL_URL) | tar xzf - -C $(SCRIPTS_DIR) --checkpoint=.100 + @$(MAKE) -C $(SCRIPTS_DIR)/$(IASL_NAME) -j $(NUM_THREADS) HOST=_CYGWIN @cp ${SCRIPTS_DIR}/${IASL_NAME}/generate/unix/bin/iasl $(IASL_DIR)/$(IASL) - @rm -rf $(SCRIPTS_DIR)/$(IASL_NAME) -endif - + @rm -fr $(SCRIPTS_DIR)/$(IASL_NAME) endif _check_atf_slim: - @echo -n "Checking ATF_SLIM..." -ifeq ("$(suffix $(wildcard $(ATF_SLIM_IMG)))", ".slim") - @echo "OK" -else - $(error "ATF Slim is invalid") + @echo "Checking ATF_SLIM...OK" +ifneq ("$(suffix $(wildcard $(ATF_SLIM)))", ".slim") + $(error "ATF_SLIM invalid") endif _check_board_setting: - @echo -n "Checking BOARD_SETTING..." + @echo "Checking BOARD_SETTING...OK" + $(eval OUTPUT_BST_TXT := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_board_setting.txt) @mkdir -p $(OUTPUT_BIN_DIR) -ifeq ("$(suffix $(wildcard $(BOARD_SETTING_INPUT)))",".bin") - @cp $(BOARD_SETTING_INPUT) $(OUTPUT_BST_BIN) - @echo "OK" + +ifeq ("$(suffix $(wildcard $(BOARD_SETTING)))",".bin") + @cp $(BOARD_SETTING) $(OUTPUT_BST_BIN) else -ifeq ("$(suffix $(wildcard $(BOARD_SETTING_INPUT)))",".txt") - @cp $(BOARD_SETTING_INPUT) $(OUTPUT_BST_TXT) + +ifeq ("$(suffix $(wildcard $(BOARD_SETTING)))",".txt") + @cp $(BOARD_SETTING) $(OUTPUT_BST_TXT) + @$(NVGENCMD) -f $(OUTPUT_BST_TXT) -o $(OUTPUT_BST_BIN) + @rm -r $(OUTPUT_BST_BIN).padded else - @cp $(DEFAULT_BOARD_SETTING) $(OUTPUT_BST_TXT) -endif - @echo "Generate board setting..." - $(NVGENCMD) -f $(OUTPUT_BST_TXT) -o $(OUTPUT_BST_BIN) - @rm -r $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_board_setting.bin.padded + $(error "BOARD_SETTING invalid") endif -_tianocore_prepare: _check_edk2_source _check_tools _check_iasl _check_compiler -ifeq (, $(wildcard $(EDK2_SRC_DIR)/BaseTools/Source/C/bin)) - @echo "Build Tianocore Basetools..." - $(MAKE) -C $(EDK2_SRC_DIR)/BaseTools endif - $(eval export PACKAGES_PATH = $(EDK2_SRC_DIR):$(EDK2_PLATFORMS_SRC_DIR):$(EDK2_NON_OSI_SRC_DIR)) - $(eval export $(EDK2_GCC_TAG)_AARCH64_PREFIX = $(CROSS_COMPILE)) + +_tianocore_prepare: _check_source _check_tools _check_compiler _check_iasl + $(if $(wildcard $(EDK2_SRC_DIR)/BaseTools/Source/C/bin),,$(MAKE) -C $(EDK2_SRC_DIR)/BaseTools -j $(NUM_THREADS)) + + $(eval export WORKSPACE := $(CUR_DIR)) + $(eval export PACKAGES_PATH := $(shell echo $(REQUIRE_EDK2_SRC) | sed 's/ /:/g')) + $(eval export $(EDK2_GCC_TAG)_AARCH64_PREFIX := $(COMPILER)) + $(eval EDK2_FV_DIR := $(WORKSPACE)/Build/$(BOARD_NAME_UPPER_FIRST_LETTER)/$(BUILD_VARIANT)_$(EDK2_GCC_TAG)/FV) _tianocore_sign_fd: _check_atf_tools @echo "Creating certitficate for $(OUTPUT_FD_IMAGE)" + $(eval DBB_KEY := $(EDK2_PLATFORMS_SRC_DIR)/Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/TestKeys/Dbb_AmpereTest.priv.pem) @$(CERTTOOL) -n --ntfw-nvctr 0 --key-alg rsa --nt-fw-key $(DBB_KEY) --nt-fw-cert $(OUTPUT_FD_IMAGE).crt --nt-fw $(OUTPUT_FD_IMAGE) @$(FIPTOOL) create --nt-fw-cert $(OUTPUT_FD_IMAGE).crt --nt-fw $(OUTPUT_FD_IMAGE) $(OUTPUT_FD_SIGNED_IMAGE) - @rm $(OUTPUT_FD_IMAGE).crt + @rm -fr $(OUTPUT_FD_IMAGE).crt ## tianocore_fd : Tianocore FD image .PHONY: tianocore_fd tianocore_fd: _tianocore_prepare @echo "Build Tianocore $(BUILD_VARIANT_UPPER_FIRST_LETTER) FD..." + $(eval DSC_FILE := $(word 1,$(wildcard $(if $(shell echo $(BUILD_LINUXBOOT) | grep -w 1) \ + ,$(EDK2_PLATFORMS_PKG_DIR)/$(BOARD_NAME_UPPER_FIRST_LETTER)Linux*.dsc \ + ,$(EDK2_PLATFORMS_PKG_DIR)/$(BOARD_NAME_UPPER_FIRST_LETTER).dsc)))) + $(if $(DSC_FILE),,$(error "DSC not found")) + $(eval MAJOR_VER := $(shell echo $(VER) | cut -d \. -f 1 )) + $(eval MINOR_VER := $(shell echo $(VER) | cut -d \. -f 2 )) + $(eval EDK2_FD_IMAGE := $(EDK2_FV_DIR)/BL33_$(BOARD_NAME_UPPER)_UEFI.fd) . $(EDK2_SRC_DIR)/edksetup.sh && build -a AARCH64 -t $(EDK2_GCC_TAG) -b $(BUILD_VARIANT) -n $(NUM_THREADS) \ -D FIRMWARE_VER="$(MAJOR_VER).$(MINOR_VER).$(BUILD) Build $(shell date '+%Y%m%d')" \ - -D MAJOR_VER=$(MAJOR_VER) \ - -D MINOR_VER=$(MINOR_VER) \ - -D SECURE_BOOT_ENABLE \ - -p Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/$(BOARD_NAME_UPPER_FIRST_LETTER)$(LINUXBOOTPKG).dsc - + -D MAJOR_VER=$(MAJOR_VER) -D MINOR_VER=$(MINOR_VER) -D SECURE_BOOT_ENABLE \ + -p $(DSC_FILE) @mkdir -p $(OUTPUT_BIN_DIR) @cp -f $(EDK2_FD_IMAGE) $(OUTPUT_FD_IMAGE) @@ -346,12 +245,12 @@ tianocore_fd: _tianocore_prepare tianocore_img: _check_atf_slim _check_board_setting tianocore_fd @echo "Build Tianocore $(BUILD_VARIANT_UPPER_FIRST_LETTER) Image.." @dd bs=1024 count=2048 if=/dev/zero | tr "\000" "\377" > $(OUTPUT_IMAGE) - @dd bs=1 conv=notrunc if=$(ATF_SLIM_IMG) of=$(OUTPUT_IMAGE) + @dd bs=1 conv=notrunc if=$(ATF_SLIM) of=$(OUTPUT_IMAGE) @dd bs=1 seek=2031616 conv=notrunc if=$(OUTPUT_BST_BIN) of=$(OUTPUT_IMAGE) ifeq ($(ATF_TBB),1) - @$(MAKE) _tianocore_sign_fd + @$(MAKE) -C $(SCRIPTS_DIR) _tianocore_sign_fd @dd bs=1024 seek=2048 if=$(OUTPUT_FD_SIGNED_IMAGE) of=$(OUTPUT_IMAGE) - @rm $(OUTPUT_FD_SIGNED_IMAGE) + @rm -fr $(OUTPUT_FD_SIGNED_IMAGE) else dd bs=1024 seek=2048 if=$(OUTPUT_FD_IMAGE) of=$(OUTPUT_IMAGE) endif @@ -360,25 +259,22 @@ endif .PHONY: tianocore_capsule tianocore_capsule: tianocore_img @echo "Build Tianocore $(BUILD_VARIANT_UPPER_FIRST_LETTER) Capsule..." + $(eval TIANOCORE_ATF_SIGNED_IMAGE := $(WORKSPACE)/Build/$(BOARD_NAME_UPPER_FIRST_LETTER)/$(BUILD_VARIANT)_$(EDK2_GCC_TAG)/$(BOARD_NAME)_tianocore_atf.img.signed) + $(eval OUTPUT_CAPSULE := $(OUTPUT_BIN_DIR)/$(BOARD_NAME)_tianocore_atf$(LINUXBOOT_FMT)$(OUTPUT_VARIANT)_$(VER).$(BUILD).cap) + $(eval DBU_KEY := $(EDK2_PLATFORMS_SRC_DIR)/Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/TestKeys/Dbu_AmpereTest.priv.pem) @echo "Sign Tianocore Image" @openssl dgst -sha256 -sign $(DBU_KEY) -out $(OUTPUT_IMAGE).sig $(OUTPUT_IMAGE) @cat $(OUTPUT_IMAGE).sig $(OUTPUT_IMAGE) > $(OUTPUT_IMAGE).signed - @cp -f $(OUTPUT_IMAGE).signed $(EDK2_ATF_SIGNED_IMAGE) + @cp -f $(OUTPUT_IMAGE).signed $(TIANOCORE_ATF_SIGNED_IMAGE) + # support 1.01 tag + $(eval EDK2_ATF_SIGNED_IMAGE := $(WORKSPACE)/Build/$(BOARD_NAME_UPPER_FIRST_LETTER)/$(BOARD_NAME)_atfedk2.img.signed) + @ln -sf $(TIANOCORE_ATF_SIGNED_IMAGE) $(EDK2_ATF_SIGNED_IMAGE) @echo "Build Capsule Image" . $(EDK2_SRC_DIR)/edksetup.sh && build -a AARCH64 -t $(EDK2_GCC_TAG) -b $(BUILD_VARIANT) \ + -D UEFI_ATF_IMAGE=$(TIANOCORE_ATF_SIGNED_IMAGE) \ -p Platform/Ampere/$(BOARD_NAME_UPPER_FIRST_LETTER)Pkg/$(BOARD_NAME_UPPER_FIRST_LETTER)Capsule.dsc @cp -f $(EDK2_FV_DIR)/JADEFIRMWAREUPDATECAPSULEFMPPKCS7.Cap $(OUTPUT_CAPSULE) - @rm $(OUTPUT_IMAGE).sig $(OUTPUT_IMAGE).signed - -.PHONY: tianocore_basetools_clean -tianocore_basetools_clean: - @echo "Tianocore clean BaseTools..." - $(MAKE) -C $(EDK2_SRC_DIR)/BaseTools clean - -.PHONY: tianocore_clean -tianocore_clean: - @echo "Tianocore clean..." - @rm -rf $(WORKSPACE)/Build + @rm -fr $(OUTPUT_IMAGE).sig $(OUTPUT_IMAGE).signed # end of makefile diff --git a/README.md b/README.md index 28e8321d..2063055f 100755 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ $ cd edk2-platforms && build -a AARCH64 -t GCC5 -b RELEASE -D SECURE_BOOT_ENABLE Building UEFI image with Linuxboot ``` -$ cd edk2-platforms && build -a AARCH64 -t GCC5 -b RELEASE -p Platform/Ampere/JadePkg/JadeLinuxboot.dsc +$ cd edk2-platforms && build -a AARCH64 -t GCC5 -b RELEASE -p Platform/Ampere/JadePkg/JadeLinuxBoot.dsc ``` @@ -39,7 +39,12 @@ The resulting image will be at `edk2-platforms/Build/Jade/RELEASE_GCC5/FV/BL33_JADE_UEFI.fd` -We will be using edk2-platforms/Build/Jade for the final artifacts. +We will be using edk2-platforms/BUILDS/jade_tianocore_atf for the final artifacts. + +``` +$ cd edk2-platforms +$ mkdir -p BUILDS/jade_tianocore_atf +``` ## Signing the image @@ -52,7 +57,7 @@ $ cd AtfTools $ git init $ git remote add origin -f https://github.com/ARM-software/arm-trusted-firmware.git $ git config core.sparseCheckout true -$ echo "include/tools_share\nmake_helpers\ntools/cert_create\ntools/fiptool" > .git/info/sparse-checkout +$ echo -ne "include/tools_share\nmake_helpers\ntools/cert_create\ntools/fiptool" > .git/info/sparse-checkout $ git -C . checkout --track origin/master $ make -C tools/cert_create CRTTOOL=cert_create $ make -C tools/fiptool FIPTOOL=fiptool @@ -63,8 +68,8 @@ Set up your $PATH to include cert_create and fiptool from above. Perform the following to sign the image: ``` $ cd edk2-platforms -$ cert_create -n --ntfw-nvctr 0 --key-alg rsa --nt-fw-key Platform/Ampere/JadePkg/TestKeys/Dbb_AmpereTest.priv.pem --nt-fw-cert Build/Jade/jade_tianocore.fd.crt --nt-fw Build/Jade/RELEASE_GCC5/FV/BL33_JADE_UEFI.fd -$ fiptool create --nt-fw-cert Build/Jade/jade_tianocore.fd.crt --nt-fw Build/Jade/RELEASE_GCC5/FV/BL33_JADE_UEFI.fd Build/Jade/jade_tianocore.fip.signed +$ cert_create -n --ntfw-nvctr 0 --key-alg rsa --nt-fw-key edk2-platforms/Platform/Ampere/JadePkg/TestKeys/Dbb_AmpereTest.priv.pem --nt-fw-cert BUILDS/jade_tianocore_atf/jade_tianocore.fd.crt --nt-fw Build/Jade/RELEASE_GCC5/FV/BL33_JADE_UEFI.fd +$ fiptool create --nt-fw-cert BUILDS/jade_tianocore_atf/jade_tianocore.fd.crt --nt-fw Build/Jade/RELEASE_GCC5/FV/BL33_JADE_UEFI.fd BUILDS/jade_tianocore_atf/jade_tianocore.fip.signed ``` ## Integrating Board Setting and Ampere's Arm Trusted Firmware (ATF) @@ -82,30 +87,30 @@ A sample working board setting file is located under Platform/Ampere/{Platform N ``` $ cd edk2-platforms -$ python nvparam.py -f Platform/Ampere/JadePkg/jade_board_setting.txt -o Build/Jade/jade_board_setting.bin +$ python nvparam.py -f Platform/Ampere/JadePkg/jade_board_setting.txt -o BUILDS/jade_tianocore_atf/jade_board_setting.bin ``` ### Build integrated UEFI + Board Setting + ATF image ``` -$ dd bs=1024 count=2048 if=/dev/zero | tr "\000" "\377" > Build/Jade/jade_tianocore_atf.img -$ dd bs=1 conv=notrunc if= of=Build/Jade/jade_tianocore_atf.img -$ dd bs=1 seek=2031616 conv=notrunc if=Build/Jade/jade_board_setting.bin of=Build/Jade/jade_tianocore_atf.img -$ dd bs=1024 seek=2048 if=Build/Jade/jade_tianocore.fip.signed of=Build/Jade/jade_tianocore_atf.img +$ dd bs=1024 count=2048 if=/dev/zero | tr "\000" "\377" > BUILDS/jade_tianocore_atf/jade_tianocore_atf.img +$ dd bs=1 conv=notrunc if= of=BUILDS/jade_tianocore_atf/jade_tianocore_atf.img +$ dd bs=1 seek=2031616 conv=notrunc if=BUILDS/jade_tianocore_atf/jade_board_setting.bin of=BUILDS/jade_tianocore_atf/jade_tianocore_atf.img +$ dd bs=1024 seek=2048 if=BUILDS/jade_tianocore_atf/jade_tianocore.fip.signed of=BUILDS/jade_tianocore_atf/jade_tianocore_atf.img -Result: Build/jade_tianocore_atf.img +Result: BUILDS/jade_tianocore_atf/jade_tianocore_atf.img ``` ### Build Tianocore Capsule ``` -$ openssl dgst -sha256 -sign Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.priv.pem -out Build/Jade/jade_tianocore_atf.img.sig Build/Jade/jade_tianocore_atf.img -$ cat Build/Jade/jade_tianocore_atf.img.sig Build/Jade/jade_tianocore_atf.img > Build/Jade/jade_atfedk2.img.signed -$ build -a AARCH64 -t GCC5 -b RELEASE -p Platform/Ampere/JadePkg/JadeCapsule.dsc -$ cp Build/Jade/RELEASE_GCC5/FV/JADEFIRMWAREUPDATECAPSULEFMPPKCS7.Cap Build/Jade/jade_tianocore_atf.cap +$ openssl dgst -sha256 -sign Platform/Ampere/JadePkg/TestKeys/Dbu_AmpereTest.priv.pem -out BUILDS/jade_tianocore_atf/jade_tianocore_atf.img.sig BUILDS/jade_tianocore_atf/jade_tianocore_atf.img +$ cat BUILDS/jade_tianocore_atf/jade_tianocore_atf.img.sig BUILDS/jade_tianocore_atf/jade_tianocore_atf.img > Build/Jade/RELEASE_GCC5/jade_tianocore_atf.img.signed +$ build -a AARCH64 -t GCC5 -b RELEASE -p Platform/Ampere/JadePkg/JadeCapsule.dsc -D UEFI_ATF_IMAGE=Build/Jade/RELEASE_GCC5/jade_tianocore_atf.img.signed +$ cp Build/Jade/RELEASE_GCC5/FV/JADEFIRMWAREUPDATECAPSULEFMPPKCS7.Cap BUILDS/jade_tianocore_atf/jade_tianocore_atf.cap -Result: Build/Jade/jade_tianocore_atf.cap +Result: BUILDS/jade_tianocore_atf/jade_tianocore_atf.cap ``` # Using helper-scripts and Makefile @@ -129,5 +134,5 @@ BUILD/jade_tianocore_atf_1.01.100 pass 1 fail 0 ``` -An equivalent **Makefile** is also provided for those who wish to use it instead. Run `make -C edk2-ampere-tools` for options. +An equivalent **Makefile** is also provided for those who wish to use it instead. Run `make -f edk2-ampere-tools/Makefile` for options. diff --git a/common-functions b/common-functions index 6c514710..5a1baa0b 100644 --- a/common-functions +++ b/common-functions @@ -240,7 +240,7 @@ function get_atf_tools git init git remote add origin -f https://github.com/ARM-software/arm-trusted-firmware.git git config core.sparseCheckout true - echo -e "include/tools_share\nmake_helpers\ntools/cert_create\ntools/fiptool" > .git/info/sparse-checkout + echo -ne "include/tools_share\nmake_helpers\ntools/cert_create\ntools/fiptool" > .git/info/sparse-checkout git -C . checkout --track origin/master make -C tools/cert_create CRTTOOL=cert_create make -C tools/fiptool FIPTOOL=fiptool @@ -294,12 +294,17 @@ function check_atf_tool rm -fr ${TOOLSDIR}/AtfTools return 0 fi - echo "ERROR: can't locate the iasl tool" >&2 - echo " please download and install to edk2-ampere-tools/toolchain/iasl" >&2 - echo " $ wget https://acpica.org/sites/acpica/files/acpica-unix2-20200110.tar.gz" >&2 - echo " $ tar xzf acpica-unix2-20200110.tar.gz" >&2 - echo " $ cd acpica-unix2-20200110 && make" >&2 - echo " $ cp generate/unix/bin/iasl edk2-ampere-tools/toolchain/iasl/" >&2 + echo "ERROR: can't locate the cert_create, fiptool tools" >&2 + echo " please download and install to edk2-ampere-tools/toolchain/atf-tools" >&2 + echo " $ mkdir -p AtfTools" >&2 + echo " $ cd AtfTools" >&2 + echo " $ git init && git remote add origin -f https://github.com/ARM-software/arm-trusted-firmware.git" >&2 + echo " $ echo -e \"include/tools_share\nmake_helpers\ntools/cert_create\ntools/fiptool\" > .git/info/sparse-checkout" >&2 + echo " $ git -C . checkout --track origin/master" >&2 + echo " $ make -C tools/cert_create CRTTOOL=cert_create" >&2 + echo " $ make -C tools/fiptool FIPTOOL=fiptool" >&2 + echo " $ cp -a tools/cert_create/cert_create edk2-ampere-tools/toolchain/atf-tools/" >&2 + echo " $ cp -a tools/fiptool/fiptool edk2-ampere-tools/toolchain/atf-tools/" >&2 return 1 } @@ -321,7 +326,7 @@ function check_iasl_tool wget -O - -q ${IASL_URL} | tar xzf - -C ${TOOLSDIR} if [ $? -eq 0 ]; then echo "Compiling ${IASL_NAME}..." - cd ${TOOLSDIR}/${IASL_NAME} && make + make -C ${TOOLSDIR}/${IASL_NAME} -j8 HOST=_CYGWIN if [ $? -eq 0 ]; then mkdir -p ${TOOLSDIR}/toolchain/iasl echo "Deploy to ${TOOLSDIR}/iasl..." @@ -332,16 +337,11 @@ function check_iasl_tool fi fi fi - echo "ERROR: can't locate the cert_create, fiptool tools" >&2 - echo " please download and install to edk2-ampere-tools/toolchain/atf-tools" >&2 - echo " $ mkdir -p AtfTools" >&2 - echo " $ cd AtfTools" >&2 - echo " $ git init && git remote add origin -f https://github.com/ARM-software/arm-trusted-firmware.git" >&2 - echo " $ echo -e \"include/tools_share\nmake_helpers\ntools/cert_create\ntools/fiptool\" > .git/info/sparse-checkout" >&2 - echo " $ git -C . checkout --track origin/master" >&2 - echo " $ make -C tools/cert_create CRTTOOL=cert_create" >&2 - echo " $ make -C tools/fiptool FIPTOOL=fiptool" >&2 - echo " $ cp -a tools/cert_create/cert_create edk2-ampere-tools/toolchain/atf-tools/" >&2 - echo " $ cp -a tools/fiptool/fiptool edk2-ampere-tools/toolchain/atf-tools/" >&2 + echo "ERROR: can't locate the iasl tool" >&2 + echo " please download and install to edk2-ampere-tools/toolchain/iasl" >&2 + echo " $ wget https://acpica.org/sites/acpica/files/acpica-unix2-20200110.tar.gz" >&2 + echo " $ tar xzf acpica-unix2-20200110.tar.gz" >&2 + echo " $ make -C acpica-unix2-20200110 -j8" >&2 + echo " $ cp generate/unix/bin/iasl edk2-ampere-tools/toolchain/iasl/" >&2 return 1 } diff --git a/edk2-build.sh b/edk2-build.sh index cc8b6453..c0ba8656 100755 --- a/edk2-build.sh +++ b/edk2-build.sh @@ -25,6 +25,7 @@ STRICT=0 # Override with --strict ATF_DIR= ATF_IMAGE= LINUXBOOT=0 +LINUXBOOT_FMT= TOS_DIR= TOOLCHAIN="gcc" # Override with -T WORKSPACE= @@ -66,19 +67,22 @@ function build_tianocore_atf if [ X"$target" != X"DEBUG" ]; then BUILD_TYPE= fi + if [ $LINUXBOOT -eq 1 ]; then + LINUXBOOT_FMT="_linuxboot" + fi if [ X"$DEST_DIR" == X"" ]; then - DEST_DIR="BUILDS/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}" + DEST_DIR="BUILDS/${PLATFORM_LOWER}_tianocore_atf${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}" fi mkdir -p ${DEST_DIR} UEFI_BIN="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o uefi_bin`" - cp -a $WS_BOARD/${target}_${PLATFORM_TOOLCHAIN}/FV/${UEFI_BIN} $DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fd + cp -a $WS_BOARD/${target}_${PLATFORM_TOOLCHAIN}/FV/${UEFI_BIN} $DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fd if [ X"$ATF_IMAGE" != X"" ]; then PLATFORM_PATH=${PLATFORMS_DIR}/"`dirname $PLATFORM_DSC`" if [ X"$BOARD_SETTING" == X"" ]; then BOARD_SETTING=$PLATFORM_PATH/${PLATFORM_LOWER}_board_setting.txt fi - cert_create -n --ntfw-nvctr 0 --key-alg rsa --nt-fw-key $PLATFORM_PATH/TestKeys/Dbb_AmpereTest.priv.pem --nt-fw-cert $DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fd.crt --nt-fw $DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fd - fiptool create --nt-fw-cert $DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fd.crt --nt-fw $DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fd $DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fip.signed + cert_create -n --ntfw-nvctr 0 --key-alg rsa --nt-fw-key $PLATFORM_PATH/TestKeys/Dbb_AmpereTest.priv.pem --nt-fw-cert $DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fd.crt --nt-fw $DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fd + fiptool create --nt-fw-cert $DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fd.crt --nt-fw $DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fd $DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fip.signed if [ "${BOARD_SETTING##*.}" = "txt" ]; then cp -a $BOARD_SETTING $DEST_DIR/${PLATFORM_LOWER}_board_setting.txt python $TOOLS_DIR/nvparam.py -f $DEST_DIR/${PLATFORM_LOWER}_board_setting.txt -o $DEST_DIR/${PLATFORM_LOWER}_board_setting.bin @@ -86,15 +90,18 @@ function build_tianocore_atf if [ "${BOARD_SETTING##*.}" = "bin" ]; then cp -a $BOARD_SETTING $DEST_DIR/${PLATFORM_LOWER}_board_setting.bin fi - dd bs=1024 count=2048 if=/dev/zero | tr "\000" "\377" > $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img - dd bs=1 conv=notrunc if=${ATF_IMAGE} of=$DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img - dd bs=1 seek=2031616 conv=notrunc if=$DEST_DIR/${PLATFORM_LOWER}_board_setting.bin of=$DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img - dd bs=1024 seek=2048 if=$DEST_DIR/${PLATFORM_LOWER}_tianocore${BUILD_TYPE}_${VER}.${BUILD}.fip.signed of=$DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img + dd bs=1024 count=2048 if=/dev/zero | tr "\000" "\377" > $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.img + dd bs=1 conv=notrunc if=${ATF_IMAGE} of=$DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.img + dd bs=1 seek=2031616 conv=notrunc if=$DEST_DIR/${PLATFORM_LOWER}_board_setting.bin of=$DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.img + dd bs=1024 seek=2048 if=$DEST_DIR/${PLATFORM_LOWER}_tianocore${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.fip.signed of=$DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${LINUXBOOT_FMT}${BUILD_TYPE}_${VER}.${BUILD}.img if [ $LINUXBOOT -eq 0 ]; then CAPSULE_DSC="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o capsule_dsc`" openssl dgst -sha256 -sign $PLATFORM_PATH/TestKeys/Dbu_AmpereTest.priv.pem -out $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img.sig $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img - cat $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img.sig $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img > $WS_BOARD/${PLATFORM_LOWER}_atfedk2.img.signed - build -n $NUM_THREADS -a "$PLATFORM_ARCH" -t ${PLATFORM_TOOLCHAIN} -p "$CAPSULE_DSC" -b "$target" ${PLATFORM_BUILDFLAGS} -D FIRMWARE_VER="${VER}.${BUILD} Build ${BUILD_DATE}" + cat $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img.sig $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.img > $WS_BOARD/${target}_${PLATFORM_TOOLCHAIN}/${PLATFORM_LOWER}_tianocore_atf.img.signed + # support 1.01 tag + ln -sf $WS_BOARD/${target}_${PLATFORM_TOOLCHAIN}/${PLATFORM_LOWER}_tianocore_atf.img.signed $WS_BOARD/${PLATFORM_LOWER}_atfedk2.img.signed + build -n $NUM_THREADS -a "$PLATFORM_ARCH" -t ${PLATFORM_TOOLCHAIN} -p "$CAPSULE_DSC" -b "$target" ${PLATFORM_BUILDFLAGS} -D FIRMWARE_VER="${VER}.${BUILD} Build ${BUILD_DATE}" \ + -D UEFI_ATF_IMAGE=$WS_BOARD/${target}_${PLATFORM_TOOLCHAIN}/${PLATFORM_LOWER}_tianocore_atf.img.signed cp $WS_BOARD/${target}_${PLATFORM_TOOLCHAIN}/FV/JADEFIRMWAREUPDATECAPSULEFMPPKCS7.Cap $DEST_DIR/${PLATFORM_LOWER}_tianocore_atf${BUILD_TYPE}_${VER}.${BUILD}.cap fi rm -fr $DEST_DIR/*.img.signed $DEST_DIR/*.img.sig $DEST_DIR/*.bin.padded $DEST_DIR/*.fd.crt $DEST_DIR/*.fip.signed @@ -148,7 +155,12 @@ function do_build PLATFORM_DSC="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o dsc`" if [ $LINUXBOOT -eq 1 ]; then PLATFORM_DSC="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o linuxboot_dsc`" - PLATFORM_BUILDFLAGS= + if [ ! -e "${PLATFORMS_DIR}/${PLATFORM_DSC}" ]; then + TMP_DSC="`dirname $PLATFORM_DSC`"/${board}Linuxboot.dsc + if [ -e "${PLATFORMS_DIR}/${TMP_DSC}" ]; then + PLATFORM_DSC=${TMP_DSC} + fi + fi fi PLATFORM_PACKAGES_PATH="" COMPONENT_INF="`$TOOLS_DIR/parse-platforms.py $PLATFORM_CONFIG -p $board get -o inf`" @@ -301,18 +313,11 @@ function configure_paths if [ -z "$PLATFORMS_DIR" -a -d "$PWD"/edk2-platforms ]; then PLATFORMS_DIR="$PWD"/edk2-platforms fi - if [ -z "$PLATFORMS_DIR" -a -d "$PWD"/edk2-platforms-dev ]; then - PLATFORMS_DIR="$PWD"/edk2-platforms-dev - fi if [ -z "$PLATFORMS_DIR" -a X"$WORKSPACE" = X"$TOOLS_DIR" ]; then if [ -d "$PWD"/../edk2-platforms ]; then PLATFORMS_DIR="`readlink -f $PWD/../edk2-platforms`" elif [ -d "$TOOLS_DIR"/../edk2-platforms ]; then PLATFORMS_DIR="`readlink -f $TOOLS_DIR/../edk2-platforms`" - elif [ -d "$PWD"/../edk2-platforms-dev ]; then - PLATFORMS_DIR="`readlink -f $PWD/../edk2-platforms-dev`" - elif [ -d "$TOOLS_DIR"/../edk2-platforms-dev ]; then - PLATFORMS_DIR="`readlink -f $TOOLS_DIR/../edk2-platforms-dev`" fi fi if [ -z "$PLATFORMS_DIR" ]; then