From b330087bab35a402d63a1c43dcf1f6b3de24b2df Mon Sep 17 00:00:00 2001 From: Olivier Martin Date: Tue, 5 May 2015 14:56:51 +0000 Subject: [PATCH] ArmPlatformPkg/Scripts/Makefile: Added support to automatically update the FIP Some ARM development platforms use ARM Trusted Firmware to boot. ARM Trusted Firmware encapsulates UEFI into the FIP (Firmware Image Package) binary. This change allows to update the FIP binary after building UEFI. Example to build UEFI for FVP Base model: $ make -f ArmPlatformPkg/Scripts/Makefile \ EDK2_DSC=ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc \ EDK2_ARCH=AARCH64 EDK2_TOOLCHAIN=GCC49 \ FIP_BIN=~/arm-trusted-firmware/build/fvp/release/fip.bin Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin Reviewed-by: Ronald Cron git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17296 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Scripts/Makefile | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/ArmPlatformPkg/Scripts/Makefile b/ArmPlatformPkg/Scripts/Makefile index f933755b51..8f23f7bd36 100644 --- a/ArmPlatformPkg/Scripts/Makefile +++ b/ArmPlatformPkg/Scripts/Makefile @@ -1,5 +1,5 @@ #/* @file -# Copyright (c) 2011-2014, ARM Limited. All rights reserved. +# Copyright (c) 2011-2015, ARM Limited. All rights reserved. # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -23,6 +23,11 @@ EDK2_BUILD ?= DEBUG ifeq ($(EDK2_DSC),"") $(error The Makfile macro 'EDK2_DSC' must be defined with an EDK2 DSC file.) endif +ifeq ("$(EDK2_DSC)","ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc") + BUILD_FIP=1 + BUILD_PATH=$(WORKSPACE)/Build/ArmVExpress-FVP-AArch64 + UEFI_BIN=FVP_AARCH64_EFI.fd +endif ifeq ("$(OS)","Windows_NT") export WORKSPACE?=$(PWD) @@ -39,12 +44,31 @@ RM ?= rm -f EDK2_CONF = Conf/BuildEnv.sh Conf/build_rule.txt Conf/target.txt Conf/tools_def.txt +# +# FIP Support +# +ifeq ($(BUILD_FIP),"1") + ifeq ($(FIP_BIN),"") + $(info Define location of the FIP to automatically update the package after building UEFI.) + endif +endif + all: $(EDK2_CONF) ifeq ("$(OS)","Windows_NT") build -a $(EDK2_ARCH) -p $(EDK2_DSC) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) $(EDK2_MACROS) else . ./edksetup.sh; build -a $(EDK2_ARCH) -p $(EDK2_DSC) -t $(EDK2_TOOLCHAIN) -b $(EDK2_BUILD) $(EDK2_MACROS) endif +ifeq ("$(BUILD_FIP)","1") +ifneq ($(FIP_BIN),"") + $(SILENT)which fip_create ; \ + if [ $$? -ne 0 ]; then \ + $(ECHO) "Warning: 'fip_create' tool is not in the PATH. The UEFI binary will not be added in the Firmware Image Package (FIP)."; \ + else \ + fip_create --bl33 $(BUILD_PATH)/$(EDK2_BUILD)_$(EDK2_TOOLCHAIN)/FV/$(UEFI_BIN) --dump $(FIP_BIN); \ + fi +endif +endif $(EDK2_CONF): ifeq ("$(OS)","Windows_NT") -- 2.39.2