diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /Core/Core.mak | |
download | zprj-master.tar.xz |
Diffstat (limited to 'Core/Core.mak')
-rw-r--r-- | Core/Core.mak | 859 |
1 files changed, 859 insertions, 0 deletions
diff --git a/Core/Core.mak b/Core/Core.mak new file mode 100644 index 0000000..dc58d98 --- /dev/null +++ b/Core/Core.mak @@ -0,0 +1,859 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2010, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/BIN/Core/Core.mak 78 9/10/12 4:52p Artems $ +# +# $Revision: 78 $ +# +# $Date: 9/10/12 4:52p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Core/Core.mak $ +# +# 78 9/10/12 4:52p Artems +# [TAG] EIP88859 +# [Description] Build error in GenRomLayout.bat when too many FFS files +# or file name is too long. +# [Files] Core.mak Fv.mak +# +# 77 8/02/12 11:51a Artems +# [TAG] EIP N/A +# [Category] Improvement +# [Description] Removed FV_SIGNED attribute from NVRAM firmware volume +# [Files] Core.mak +# +# 76 12/20/11 4:07p Artems +# Added token for extended rom layout filename to support new FWbuild +# feature +# +# 75 11/16/11 9:46a Felixp +# [TAG] EIP75724 +# [Category] Improvement +# [Description] Disable delayed environment variable expansion in the +# selectdbg.bat. +# +# 74 10/28/11 4:14p Felixp +# [TAG] EIP70518 +# [Category] Improvement +# [Description] New FV_BB_DESCRIPTOR attribute is added. +# ROM_AREA_VITAL attribute is added to mark that the area is required for +# the firmware recovery to work. +# +# 73 6/29/11 2:43p Artems +# Removed support for UEFI 2.0 +# +# 72 6/28/11 3:06p Felixp +# +# 71 6/14/11 5:24p Artems +# EIP 61949: Fixed bug in apriori list generation +# +# 70 6/13/11 11:56a Artems +# Added NVRAM to list of signed volumes +# +# 69 5/13/11 4:22p Artems +# Added secure flash update. Added new Error message about incompatible +# token combinations +# Changed Error message format +# +# 68 3/25/11 9:55a Felixp +# Enhancement: HpkTool command line in the Defaults target is updated +# to use new TSE SDL token INI_FILE_PATH. +# +# 67 3/16/11 10:58p Felixp +# CIF2MAK_DEFAULTS SDL token is added(used to be a macro in Core.mak). +# +# 66 3/15/11 5:20p Felixp +# BUILD_RULES SDL token is created (used to be a macro in Core.mak). +# +# 65 3/09/11 10:03a Artems +# Fixed bug - handle situation when nested FV is empty +# +# 64 2/05/11 1:40p Artems +# Added PI 1.0-1.1 support +# Added Nested FV support +# Changed ROM layout structure (field "OFFSET" added) +# +# 63 11/08/10 5:12p Felixp +# $(BUILD_DIR)\Tokens.c.h target is updated to make sure the file is +# re-built when Token.h changes +# +# 62 11/05/10 2:24p Felixp +# EDK_INCLUDES macro override is removed +# +# 61 11/05/10 1:44p Felixp +# Improvement(EIP 46043): +# The build script that generates firmware volume description files +# (Build\FV_xxx.inf) is updated +# to support longer file lists. +# +# 60 10/01/10 10:56a Felixp +# Error message is printed when Setup Data Layout Override is used in +# UEFI 2.0 mode. +# +# 59 10/01/10 7:56a Felixp +# Minor improvement of RomLayout.c: comments with area name are added +# +# 58 6/20/10 11:49p Felixp +# CIF2MAK_DEFAULTS macro is updated. +# /lproject.lfo switch is added. +# +# 57 6/09/10 10:38p Felixp +# Setup Customization Framework Support. +# +# 56 4/26/10 2:56p Felixp +# +# 55 4/23/10 5:26p Felixp +# Support for setup defaults in FV_MAIN is added. +# +# 54 3/05/10 5:30p Felixp +# Enhancement: +# Targets of types GUID_LIBRARY and PEI_GUID_LIBRARY are updated to +# reduce length of the command line. +# +# 53 2/24/10 2:48p Felixp +# +# 52 2/04/10 5:12p Felixp +# Auto-generated file Build\AutoId.h is included in Setup.h +# +# 51 1/26/10 5:03p Felixp +# Support for generation of the DXE apriori file is added. +# The list of FFS files that should be added to the DXE a priori list is +# specified +# as a part of FV descriptor using DXE_APRIORI_FILE_LIST parameter. +# +# 50 1/21/10 3:54p Felixp +# Font file target $(BUILD_DIR)\Font.ffs is replaced with pseudo-target +# FontFfs to always recreate the file. +# The /F 2.1 switch is added for UEFI 2.1 builds to create UEFI 2.1 font +# pack. +# +# 49 12/17/09 2:29p Felixp +# Minor updates: +# 1. Target name and UEFI version are printed at the end of the build +# process +# 2. Print standard message about successful build completion for a +# single component build(EIP 32658). +# +# 48 11/24/09 11:33a Felixp +# AmiProtocolLib build command is updated to pass value of the +# DEFAULT_LANGUAGE. +# +# 47 10/09/09 5:11p Felixp +# UEFI 2.1-related changes. +# +# 46 8/27/09 11:47a Felixp +# Generate PeiSym.lst only if PEI Debugger is enabled +# +# 42 7/01/09 1:29p Felixp +# Tokens.c target: add dependency from Token.h +# ROM Layout generation: do not describe ROM Holes in FwBuild script +# (this is not supported by some versions of FwBuild). +# +# 40 5/22/09 6:16p Felixp +# FWBUILD flags updated to generate AMI Debugger listing file +# +# 38 5/08/09 6:05p Felixp +# - support for ROM holes (FFS files with fixed addresses) +# - ROM_AREA_FV_BOOT attributes is removed +# - NVRAM back up area is defined using eLink +# (hard coded entry in the ROM script is removed) +# +# 37 5/08/09 12:15a Felixp +# Ifrastructure to simplify ROM layout customization(EIP 18426). +# Build process and source code that deals with ROM layout +# is updated in order to simplify ROM layout customization. +# +# 36 5/04/09 2:00p Felixp +# Support for alternative font data packaging(EIP 18489) is added. +# Description: Build process is updated to provide framework that can be +# used to +# overwrite default packaging of the font data. +# Two new SDL tokens are created: +# "LANGUAGE_FONT_LIST" - Space separated list of language identifiers. +# The fonts for these languages will be included into the ROM image. +# "STRING_PACK_POST_PROCESS_COMMAND" - The token defines command +# used in rules.mak to perform additional processing of +# module's HII string pack ($(BUILD_DIR)$(NAME)Str.hpk) +# after standard processing (performed by StrGather utility) is +# completed. +# +# 35 3/05/09 9:46a Felixp +# Bug fix: Problem with target specific builds (build.bat target=X). +# Description: The target specific build didn't work for modules that +# use Setup.h without prior full build. +# Symptoms: Build fails with "SetupDefinitions.h not found" error. +# Details: Core make files are updated to add target that +# generates SetupDefinitions.h into the list of dependents of the top +# level target being built (original code only did it for target +# "all"). +# +# 34 11/03/08 10:31a Felixp +# Current debug mode is printed at the end of the build process. +# +# 32 10/22/08 3:56p Felixp +# Some of the build process warnings are eliminated +# +# 30 10/10/08 9:43a Felixp +# Dependency list for $(BUILD_DIR)\SetupDefinitions.h target is created +# (the file used to be built during every build). +# +# 29 10/10/08 9:36a Felixp +# - AFTER_ROM target was not in the list of dependents of the target all +# - Delete ROM image at the beginning of the build process +# +# 28 10/09/08 11:54a Felixp +# Fault tolerant NVRAM update support +# +# 27 9/05/07 1:42a Felixp +# 1. Debugging-related tokens updated to use boolean tokens instead of +# enumeration +# 2. Support for ROM_IMAGE_SIZE is added. +# +# 26 9/04/07 11:38a Felixp +# Two pseudo-targets AFTER_FV and AFTER_ROM are added. +# These targets can be used to add custom build steps towards the end of +# the build process. +# AFTER_FV - Use this target to execute your custom build steps after the +# firmware volumes are built and before the final ROM image is created. +# AFTER_ROM - Use this target to execute your custom build steps after +# the final ROM image is created. +# For example, to hook up custom target X to be executed at the end of +# the build process add +# AFTER_ROM : X or AFTER_FV : X +# into a make file, which defines target X. +# +# 25 8/31/07 9:33a Felixp +# The way FV_NVRAM created is changed: +# 1. FV_NVRAM is now a standard (FFS-based) FV. +# 2. NVRAM image is encapsulated into FFS file (NVRAM.ffs) +# 3. NVRAM image (NVRAM.bin) is no longer blank. It is expected that it +# will be generated by one of the modules (currently AMITSE). +# +# 22 3/18/07 12:45p Felixp +# FWBUILD is used to dump ROM content at the end of the build process +# +# 21 12/28/06 6:37p Felixp +# Added message at the end of the build process to display ROM file name +# and build mode. +# +# 20 12/27/06 7:32a Felixp +# Updated to support new version of debugger that can keep PEI binaries +# in FV_MAIN +# +# 19 12/07/06 10:23a Pavell +# Moved ITK processing to ITK.mak +# +# 15 9/26/06 9:01a Felixp +# Multilanguage support added. New FontTool is required. +# +# 13 8/24/06 9:06a Felixp +# Preliminary x64 support (work in progress) +# +# 11 6/21/06 5:44p Felixp +# ProtocolLib renamed to AmiProtocolLib +# PpiLib renamed to AmiPpiLib +# +# 8 1/17/06 11:27a Felixp +# Final ROM image generation altered: exact addresses for FV_MAIN, FV_BB +# and NVRAM used. +# +# 7 8/22/05 7:03p Felixp +# AMI Debugger support +# +# 6 7/22/05 2:20a Felixp +# NVRAM enclosed into Firmware volume +# +# 5 6/17/05 3:24p Felixp +# Setup support: Setup Map generation commands added +# +# 4 6/16/05 10:42a Felixp +# 1. Tokens.c added. It has variables representing SDL tokens. +# 2. InitList.c extended to support 2 init lists +# +# 3 2/11/05 5:33p Felixp +# CORE_BIN_DIR definition removed +# +# 2 2/04/05 9:19a Felixp +# $(AMI_ROM) value is saved to file $(BUILD_DIR)\amiromname.txt +# The file is used by the Build.mak to implement Clean command +# +# 3 1/25/05 12:53p Felixp +# Check for validity of DEBUG_MODE added +# +# 2 1/18/05 3:21p Felixp +# PrintDebugMessage renamed to Trace +# +# 9 12/03/04 7:26p Felixp +# CIF2MAK version 2.0 +# +# 7 11/18/04 6:25p Felixp +# support for 2 FVs added +# +# 6 7/26/04 4:41p Yakovlevs +# +# 4 1/13/04 12:18p Felixp +# merge64 command line switch /s added to launch the utility in silent +# mode +# +# 3 1/08/04 4:46p Felixp +# comments improved +# +# 2 12/09/03 11:50a Felixp +# Comments changed for the better HelpBuiler compatibility. +# +# 1 12/05/03 4:15p Felixp +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: Core.mak +# +# Description: Makefile that builds the BIOS. +# Prerequisites(set up by the Build.mak): +# - BUILD_DIR macros is set +# - $(BUILD_DIR) directory exists +# - $(BUILD_DIR)\token.mak file generated by AMISDL exists +# +# Core.mak includes make files for all other modules in the project +# Makefiles of individual modules has to add their targets +# to the dependents list of the target ALL. +# Core.mak also defines how to create a final rom image (AMI_ROM). +# +#<AMI_FHDR_END> +#********************************************************************** +!INCLUDE $(BUILD_DIR)\token.mak +!INCLUDE Core\Languages.mak + +!IF $(EFI_SPECIFICATION_VERSION) <= 0x20000 +ERROR_MESSAGE=UEFI 2.0 mode is not supported.^ +To resolve the problem, increase the value of EFI_SPECIFICATION_VERSION +!ERROR $(ERROR_MESSAGE) +!ENDIF + +!IF "$(CoreSrc_SUPPORT)"!="1" +ERROR_MESSAGE=Core Sources are required for build the project +!ERROR $(ERROR_MESSAGE) +!ENDIF + +BUILD_DEFAULTS = \ + "EXT_OBJS=$**" BUILD_ROOT=$(BUILD_DIR) PROJECT_DIR=$(PROJECT_DIR) +NO_EXT_OBJS_BUILD_DEFAULTS = \ + BUILD_ROOT=$(BUILD_DIR) PROJECT_DIR=$(PROJECT_DIR) + +!IF "$(TARGET)"!="PREPARE" +$(TARGET) : PREPARE +!ENDIF + +$(BUILD_DIR)\Core.mak : $(CORE_DIR)\$(@B).cif $(CORE_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(CORE_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +$(BUILD_DIR)\Tokens.c.h : $(LIBRARY_DIR)\Tokens.c $(BUILD_DIR)\Core.mak $(BUILD_DIR)\token.h + $(SILENT)copy << $(BUILD_DIR)\Tokens.c.h > NUL +#include <$(LIBRARY_DIR)\Tokens.c> +<<KEEP + +$(BUILD_DIR)\AmiProtocolLib.lib : Include\Protocol\*.h $(BUILD_DIR)\Tokens.c.h + $(MAKE) /$(MAKEFLAGS) $(NO_EXT_OBJS_BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\Core.mak all\ + TYPE=GUID_LIBRARY NAME=$(@B)\ + "HEADERS=Include\Protocol\^*.h $(BUILD_DIR)\Tokens.c.h"\ + "MY_DEFINES=/D_PIDEController_ /DDEFAULT_LANGUAGE_CODE=$(DEFAULT_LANGUAGE)" + +$(BUILD_DIR)\AmiPpiLib.lib : Include\Ppi\*.h $(BUILD_DIR)\Tokens.c.h + $(MAKE) /$(MAKEFLAGS) $(NO_EXT_OBJS_BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\Core.mak all\ + TYPE=PEI_GUID_LIBRARY NAME=$(@B)\ + "HEADERS=Include\Ppi\^*.h $(BUILD_DIR)\Tokens.c.h" + +PREPARE : + $(ECHO) $(AMI_ROM) > $(BUILD_DIR)\amiromname.txt + -@if exist $(BUILD_DIR)\targets.mak $(DEL) $(BUILD_DIR)\targets.mak + -@if exist $(AMI_ROM) $(DEL) $(AMI_ROM) + $(FONT_TOOL) /S /T $(BUILD_DIR)\font.tmp +#create list of debuggable modules +!IF "$(SELECTIVE_DEBUGGING_SUPPORT)"=="1" && "$(SELECTIVE_DEBUGGING)"!="" +#The first IF clause is needed to be able to use +#ELSEIF in the for loop below + $(SILENT)type << >$(BUILD_DIR)\selectdbg.bat +@echo off +setlocal disabledelayedexpansion +echo !IF 0 > $(BUILD_DIR)\selectivedebugmodules.mak +for %%i in ($(SELECTIVE_DEBUGGING)) do ( +echo !ELSEIF "$$(NAME)"=="%%i" >> $(BUILD_DIR)\selectivedebugmodules.mak +echo SELECTIVE_DEBUG_ENABLE=1 >> $(BUILD_DIR)\selectivedebugmodules.mak +) +echo !ELSE >> $(BUILD_DIR)\selectivedebugmodules.mak +echo SELECTIVE_DEBUG_ENABLE=0 >> $(BUILD_DIR)\selectivedebugmodules.mak +echo !ENDIF >> $(BUILD_DIR)\selectivedebugmodules.mak +<< + $(SILENT)$(BUILD_DIR)\selectdbg.bat +!ENDIF + +PREPARE : $(BUILD_DIR)\SetupDefinitions.h +!IF "$(Setup_SUPPORT)"=="1" +# $(BUILD_DIR)\AUTOID.h target is defined in Setup.mak +PREPARE : $(BUILD_DIR)\AUTOID.h +!ENDIF +PREPARE : $(BUILD_DIR)\RomLayout.ini + +$(BUILD_DIR)\SetupDefinitions.h : $(SETUP_DEFINITIONS) $(BUILD_DIR)\token.mak Core\Core.mak + type << >$(BUILD_DIR)\SetupDefinitions.h +!IF "$(SETUP_DEFINITIONS)"!="" +#include<$(SETUP_DEFINITIONS: =>^ +#include<)> +!ENDIF +<< + type << >$(BUILD_DIR)\ControlDefinitions.h +!IF "$(SETUP_DEFINITIONS)"!="" +#define CONTROL_DEFINITION +#include<SetupDefinitions.h> +#undef CONTROL_DEFINITION +#define CONTROLS_ARE_DEFINED +!ENDIF +<< + type << >$(BUILD_DIR)\GenericSetupDataDefinition.h +#pragma pack(1) +typedef struct{ + UINT8 Numlock; + #define SETUP_DATA_DEFINITION + #include <SetupDefinitions.h> + #undef SETUP_DATA_DEFINITION +} SETUP_DATA; +#pragma pack() +<< + type << >$(BUILD_DIR)\SetupDataDefinition.h +!IF "$(SETUP_DATA_LAYOUT_OVERRIDE_HEADER)"=="" +#include<GenericSetupDataDefinition.h> +!ELSE +!IF $(EFI_SPECIFICATION_VERSION) < 0x2000A +!MESSAGE Setup Data Layout Override is not supported in UEFI 2.0 mode. +!MESSAGE To disable Setup Data Layout Override, set SETUP_DATA_LAYOUT_OVERRIDE_SUPPORT SDL token to "Off". +!MESSAGE To switch to UEFI 2.1 mode, set EFI_SPECIFICATION_VERSION SDL token to 0x2000A. +!ERROR Unsupported configuration. +!ENDIF +!IF !EXIST($(SETUP_DATA_LAYOUT_OVERRIDE_HEADER)) +!ERROR Setup Data Layout Override header file "$(SETUP_DATA_LAYOUT_OVERRIDE_HEADER)" defined by the SETUP_DATA_LAYOUT_OVERRIDE_HEADER SDL token is not found. +!ENDIF +#ifndef VFRCOMPILE +#include<$(SETUP_DATA_LAYOUT_OVERRIDE_HEADER)> +#else +#include<GenericSetupDataDefinition.h> +#endif +!ENDIF +!IF "$(PROJECT_SETUP_HEADER)"!="" +!IF !EXIST($(PROJECT_SETUP_HEADER)) +!ERROR Project specific setup header file "$(PROJECT_SETUP_HEADER)" defined by the PROJECT_SETUP_HEADER SDL token is not found. +!ENDIF +#include<$(PROJECT_SETUP_HEADER)> +!ENDIF +<< + + +CC_TARGET=$(SILENT)maketarget $(BUILD_DIR)\targets.mak $(BUILD_DIR) $$(CC) $$(EXTRA_CFLAGS) +ASM_TARGET=$(SILENT)maketarget $(BUILD_DIR)\targets.mak $(BUILD_DIR) $$(ASM) $$(EXTRA_AFLAGS) +CC=$(CC_TARGET) + +!INCLUDE $(BUILD_DIR)\module.mak + +#NOTE: starting from Core 4.6.3.6 +# generation of the Firmware Volumes (FV) is no longer a separate build step. +# All FV and the final ROM image are created by the single ROM target command. +# COMPATIBILITY IMPLICATION: *.fv files are no longer available during execution +# of the AFTER_FV target commands. +# Targets BEFORE_FV, FV, and AFTER_FV are now equivalent. +# All three of them are preserved for backward compatibility +# (otherwise just one would be enough). +all : BEFORE_FV FV AFTER_FV ROM AFTER_ROM + +BEFORE_FV : FontFfs $(BUILD_DIR)\NVRAM.ffs + +FontFfs : + $(FONT_TOOL) /IL $(LANGUAGE_FONT_LIST) /T $(BUILD_DIR)\font.tmp + $(FONT_TOOL)\ +!IF $(EFI_SPECIFICATION_VERSION) >= 0x2000A + /F 2.1\ +!ENDIF + /O $(BUILD_DIR)\font.out /T $(BUILD_DIR)\font.tmp + $(AMIRC) /s /o$(BUILD_DIR)\font.sec $(BUILD_DIR)\font.out + $(MAKE) /$(MAKEFLAGS) /f Core\FFS.mak \ + NAME=$(@B) \ + BUILD_DIR=$(BUILD_DIR) \ +#Do not change this GUID. HIIDB uses this GUID to locate font file + GUID=DAC2B117-B5FB-4964-A312-0DCC77061B9B \ + TYPE=EFI_FV_FILETYPE_FREEFORM \ + FFSFILE=$(BUILD_DIR)\Font.ffs COMPRESS=1 \ + SECTION=font.sec \ + +# create NVRAM.FFS +$(BUILD_DIR)\NVRAM.FFS : $(BUILD_DIR)\NVRAM.bin + $(MAKE) /f Core\FFS.mak BUILD_DIR=$(BUILD_DIR) \ + GUID=CEF5B9A3-476D-497f-9FDC-E98143E0422C \ + TYPE=EFI_FV_FILETYPE_RAW FFS_CHECKSUM=0\ + RAWFILE=$(BUILD_DIR)\NVRAM.bin \ + FFSFILE=$(BUILD_DIR)\NVRAM.FFS COMPRESS=0 NAME=NVRAM + +# Don't change this GUID; NVRAM driver expects it +# // {9221315B-30BB-46b5-813E-1B1BF4712BD3} +#define SETUP_DEFAULTS_FFS_GUID { 0x9221315b, 0x30bb, 0x46b5, { 0x81, 0x3e, 0x1b, 0x1b, 0xf4, 0x71, 0x2b, 0xd3 } } +SETUP_DEFAULTS_FFS_GUID=9221315B-30BB-46b5-813E-1B1BF4712BD3 + +!IF "$(SETUP_DEFAULTS_IN_FV_MAIN)"=="1" +BEFORE_FV : Defaults + +Defaults: + $(HPKTOOL) -i$(IFR_DIR_LIST: = -i)\ +!IF "$(INI_FILE_PATH)"!="" + -f$(INI_FILE_PATH)\ +!ELSEIF $(EFI_SPECIFICATION_VERSION) > 0x20000 + -f$(TSEBIN_DIR)\uefisetup.ini\ +!ELSE + -f$(TSEBIN_DIR)\setup.ini\ +!ENDIF + -o$(BUILD_DIR)\tmp.asm -do$(BUILD_DIR)\Defaults.bin\ +!IF "$(MANUFACTURING_MODE_SUPPORT)"=="1" + -dm\ +!ENDIF + -r -de$(FLASH_ERASE_POLARITY) -dl$(DEFAULT_LANGUAGE)\ + -dg4599D26F-1A11-49b8-B91F-858745CFF824\ + -h$(AMITSE_HPK_FILE_ORDER) + -$(DEL) pkgtmp*.tmp + $(MAKE) /f Core\FFS.mak BUILD_DIR=$(BUILD_DIR)\ + GUID=$(SETUP_DEFAULTS_FFS_GUID)\ + TYPE=EFI_FV_FILETYPE_FREEFORM\ + BINFILE=$(BUILD_DIR)\Defaults.bin \ + FFSFILE=$(BUILD_DIR)\Defaults.FFS COMPRESS=1 NAME=Defaults +!ENDIF + +#********************************************************************** +#<AMI_GHDR_START> +# Name: AMI_ROM +# +# Description: +# BIOS ROM image (AMI_ROM) includes FV_MAIN firmware volume +# and blank NVRAM area. +# FV.MAK is used to create FV_MAIN +# Prerequisites: +# - Core.mak Prerequisites +# The following macros must be defined: +# - FV_MAIN - List of Base Names (file name w/o extension) +# for the FFS files to be included in the Firmware Volume +# This macros is getting generated by +# the AMISDL from the corresponding eLink defined in Core.sdl +# To add module to FV_MAIN, module's SDL file has to define eLink +# with the name set to base name of the module's FFS binary +# and the parent set to FV_MAIN. +# The following macros are expected to be defined by the SDL file +# of the Flash Module: +# -FLASH_SIZE - Size of the Flash Device in bytes +# -FLASH_BLOCK_SIZE - Size of the Flash Device Block +# -FLASH_ERASE_POLARITY - Flash Device Erase Polarity +# -FV_MAIN_BASE - Base Address of the FV_MAIN +# -FV_MAIN_BLOCKS - Number of Blocks occupied by the FV_MAIN +# -NVRAM_SIZE - Size of NVRAM area +# +#<AMI_GHDR_END> +#********************************************************************** +#Nothing to do here. +# The FV are created by the ROM target command +#This target is here for backward compatibility. +# See also comment above the all target description +FV : + +#Nothing to do here. +#This target that can be used by OEM modules for any custom +#build steps that need to be performed after FV generation and prior to ROM generation. + +#-----Long e-Link handling example-------------- +#uncomment the following code to solve the problem from EIP 88859 +#$(BUILD_DIR)\FvMainFfsList.mak : $(BUILD_DIR)\token.mak +# @copy << $(BUILD_DIR)\FvMainFfsList.mak +#FILE_LIST=$(FV_MAIN) +#<<KEEP +#-----Long e-Link handling example end---------- + +AFTER_FV: + +FV_NVRAM_DESCRIPTOR=FV(\ +name=FV_NVRAM, address=$(NVRAM_ADDRESS),\ +offset=$(NVRAM_ADDRESS)-$(FLASH_BASE),\ +size=$(NVRAM_SIZE), file_list=$(BUILD_DIR)\NVRAM.FFS\ +) +FV_MAIN_DESCRIPTOR=FV(\ +name=FV_MAIN, address=$(FV_MAIN_BASE),\ +offset=$(FV_MAIN_BASE)-$(FLASH_BASE),\ +size=$(FV_MAIN_BLOCKS)*$(FLASH_BLOCK_SIZE),\ +!IF "$(FV_MAIN_NESTED)"!="" +file_list=$(BUILD_DIR)\FV_MAIN_NESTED.ffs $(FV_MAIN),\ +attr=ROM_AREA_FV_PEI+ROM_AREA_FV_DXE+ROM_AREA_FV_NFV_PRESENT+ROM_AREA_FV_SIGNED\ +!ELSE +file_list=$(FV_MAIN),\ +#-----Long e-Link handling example-------------- +#uncomment the following string below to solve the problem from EIP 88859 +#file_list_file=$(BUILD_DIR)\FvMainFfsList.mak,\ +#-----Long e-Link handling example end---------- +attr=ROM_AREA_FV_PEI+ROM_AREA_FV_DXE+ROM_AREA_FV_SIGNED\ +!ENDIF +) + +!IF "$(FV_MAIN_NESTED)"!="" +FV_MAIN_NESTED_DESCRIPTOR=FV(\ +name=FV_MAIN_NESTED, nested=1,\ +file_list=$(FV_MAIN_NESTED)\ +) +ROM_IMAGE=$(ROM_IMAGE) $(FV_MAIN_NESTED_DESCRIPTOR) +!ENDIF + +FV_BB_DESCRIPTOR=FV(\ +name=FV_BB, address=$(FV_BB_BASE),\ +offset=$(FV_BB_BASE)-$(FLASH_BASE),\ +size=$(FV_BB_BLOCKS)*$(FLASH_BLOCK_SIZE),\ +file_list=$(FV_BB), attr=ROM_AREA_FV_PEI+ROM_AREA_FV_DXE+ROM_AREA_FV_SIGNED+ROM_AREA_VITAL\ +) +NVRAM_BACKUP_DESCRIPTOR=HOLE(\ +name=NVRAM_BACKUP, address=$(NVRAM_BACKUP_ADDRESS),\ +offset=$(NVRAM_BACKUP_ADDRESS)-$(FLASH_BASE),\ +size=$(NVRAM_SIZE)\ +) + +#-----Long e-Link handling example-------------- +#uncomment the following string below and use it instead of generic one to solve the problem from EIP 88859 +#$(BUILD_DIR)\RomLayout.ini : $(BUILD_DIR)\token.mak Core\Core.mak Core\Fv.mak $(BUILD_DIR)\FvMainFfsList.mak +#-----Long e-Link handling example end---------- +$(BUILD_DIR)\RomLayout.ini : $(BUILD_DIR)\token.mak Core\Core.mak Core\Fv.mak + @echo all : > $(BUILD_DIR)\beforefv.mak + $(SILENT)copy << $(BUILD_DIR)\RomLayout.ini > NUL +output + BIOS($(AMI_ROM)) +end +group BIOS +!IF "$(ROM_IMAGE_SIZE)"!="" + size=$(ROM_IMAGE_SIZE) +!ELSE + size=$(FLASH_SIZE) +!ENDIF + upper=0xFFFFFFFF + components +<<KEEP + $(SILENT)copy << $(BUILD_DIR)\RomLayout.c > NUL +#include <RomLayout.h> +#pragma pack(1) +ROM_AREA RomLayout[] = { +<<KEEP + $(SILENT)copy << $(BUILD_DIR)\GenRomLayout.bat > NUL +@echo off +set BUILD_DIR=$(BUILD_DIR) +set ERASE_POLARITY=$(FLASH_ERASE_POLARITY) +set BLOCK_SIZE=$(FLASH_BLOCK_SIZE) +set ECHO=$(ECHO) +set MAKE=$(MAKE) +set chunks=0 +for /f "tokens=1 delims=( " %%a in (%1) do @( + set /A chunks+=1 +) +set rchunks=0 +for /f "tokens=1* delims=( " %%a in (%1) do @( + set /A rchunks+=1 + for /f "tokens=1* delims=)" %%c in ("%%b") do @( + call $(BUILD_DIR)\GenFvDesc.bat "type=%%a,%%c" + if not exist $(BUILD_DIR)\RomLayout.ini goto :eof + ) +) +if not %chunks%==%rchunks% ( + echo ERROR: file list too long + goto error +) +goto :eof +:error +del $(BUILD_DIR)\RomLayout.ini +<<KEEP + $(SILENT)copy << $(BUILD_DIR)\GenFvDesc.bat > NUL +@echo off +setlocal +for /f "tokens=1-10 delims=," %%a in (%*) do ( + if NOT "%%a"=="" set %%a + if NOT "%%b"=="" set %%b + if NOT "%%c"=="" set %%c + if NOT "%%d"=="" set %%d + if NOT "%%e"=="" set %%e + if NOT "%%f"=="" set %%f + if NOT "%%g"=="" set %%g + if NOT "%%h"=="" set %%h + if NOT "%%i"=="" set %%i + if NOT "%%j"=="" set %%j +) +if /I "%attr%"=="" set attr=0 +if not "%NAME%"=="" echo // %NAME% >> $(BUILD_DIR)\RomLayout.c +if /I %type%==FV ( +!IF !$(BRIEF) + echo FV: NAME="%NAME%" ADDRESS="%ADDRESS%" SIZE="%SIZE%" +!ENDIF + if /I "%nested%"=="1" ( + if "%ADDRESS%"=="" set ADDRESS=0 + set GLOBAL_COMPRESSION=0 + ) + if "%SIZE%"=="" ( + set BLOCKS=AUTO + ) else ( + set /A BLOCKS=%size%/%BLOCK_SIZE% + ) + + $(MAKE) -f Core\fv.mak PI_SPECIFICATION_VERSION=$(PI_SPECIFICATION_VERSION) + if not exist $(BUILD_DIR)\%NAME%.inf goto error + if /I not "%nested%"=="1" ( + echo file %NAME% FvDesc=$(BUILD_DIR)\%NAME%.inf lower=%ADDRESS% end >> $(BUILD_DIR)\RomLayout.ini + echo {%ADDRESS%, %OFFSET%, %SIZE%, RomAreaTypeFv, %attr%}, >> $(BUILD_DIR)\RomLayout.c + ) else ( + $(MAKE) -f Core\ffs.mak TYPE=EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE FV_DESC=$(BUILD_DIR)\%NAME%.inf BUILD_DIR=$(BUILD_DIR) GUID=AE717C2F-1A42-4f2b-8861-78B79CA07E07 FFSFILE=$(BUILD_DIR)\%NAME%.ffs NAME=%NAME% COMPRESS=1 + ) +)else if /I %type%==file ( +!IF !$(BRIEF) + echo File: NAME="%NAME%" ADDRESS="%ADDRESS%" FILE="%FILE%" +!ENDIF + echo file %NAME% binfile=%FILE% lower=%ADDRESS% end >> $(BUILD_DIR)\RomLayout.ini + echo {%ADDRESS%, %OFFSET%, %SIZE%, RomAreaTypeRaw, %attr%}, >> $(BUILD_DIR)\RomLayout.c +)else if /I %type%==hole ( +!IF !$(BRIEF) + echo Hole: NAME="%NAME%" ADDRESS="%ADDRESS%" SIZE="%SIZE%" +!ENDIF + echo {%ADDRESS%, %OFFSET%, %SIZE%, RomAreaTypeRaw, %attr%}, >> $(BUILD_DIR)\RomLayout.c +)else ( + echo ERROR: Invalid ROM_IMAGE element "%type%". + goto error +) +if "%ADDRESS%"=="" ( + echo ERROR: Invalid ROM_IMAGE element. Address is not defined for element "%type%(%NAME% %FILE%)". + goto error +) +endlocal +goto :eof +:error +del $(BUILD_DIR)\RomLayout.ini +<<KEEP + $(SILENT)copy << $(BUILD_DIR)\GenFvList.bat > NUL +@echo off +echo %3 >> %2 +for /f %%f in (%1) do @( + for /f "tokens=1,2 delims=:" %%i in ("%%f") do @( + if /I %%i==TYPE ( + echo %%i = %%j >> %2 + ) else if /I %%i==LOCATION ( + echo %%i = %%j >> %2 + ) else if /I %%i==SIZE ( + echo %%i = %%j >> %2 + ) else ( + for /F "delims=\" %%y in ("%%i") do ( + if 1==0 ( + echo EFI_FILE_NAME = %%i >> %2 + ) else if /I %%y==$(BUILD_DIR) ( + if not exist %%~dpni__.pkg ( + echo EFI_FILE_NAME = %%i >> %2 + ) else ( + echo EFI_FILE_NAME = %%~dpni__.pkg >> %2 + ) + ) else ( + echo EFI_FILE_NAME = %%i >> %2 + ) + ) + ) + ) +) +<<KEEP + $(SILENT)Build\GenRomLayout.bat <<$(BUILD_DIR)\RomLayout.txt +$(ROM_IMAGE:)=^)^ +) +<<KEEP + @if not exist $(BUILD_DIR)\RomLayout.ini @copy file_that_does_not_exist x > NUL + $(ECHO) end >> $(BUILD_DIR)\RomLayout.ini + $(ECHO) end >> $(BUILD_DIR)\RomLayout.ini + $(ECHO) {0, 0, 0, 0} >> $(BUILD_DIR)\RomLayout.c + $(ECHO) }; >> $(BUILD_DIR)\RomLayout.c + +!IF $(PI_SPECIFICATION_VERSION)>=0x00010000 +FWBUILD_FLAGS = $(FWBUILD_FLAGS) /p 1.0 +!ENDIF +FWBUILD_FLAGS = $(FWBUILD_FLAGS) /d /c $(BUILD_DIR)\RomLayout.ini /m $(ROM_LAYOUT_EX) +!IF "$(AMI_DEBUGGER_SUPPORT)"=="1" && "$(PeiDebugger_SUPPORT)"=="1" +FWBUILD_FLAGS = $(FWBUILD_FLAGS) /b $(BUILD_DIR)\peisym.lst +!ENDIF + +# create a final ROM image +ROM: + $(MAKE) /$(MAKEFLAGS) /f $(BUILD_DIR)\beforefv.mak all + @echo all : > $(BUILD_DIR)\beforefv.mak + $(FWBUILD) $(AMI_ROM) $(FWBUILD_FLAGS) + +!IF "$(DEBUG_MODE)"=="1" +DEBUG_MODE_STRING=on +!ELSE +DEBUG_MODE_STRING=off +!ENDIF + +!IF $(EFI_SPECIFICATION_VERSION)==0x1000A +EFI_VERSION_STRING=1.10 +!ELSEIF $(EFI_SPECIFICATION_VERSION)==0x20000 +EFI_VERSION_STRING=2.0 +!ELSEIF $(EFI_SPECIFICATION_VERSION)==0x2000A +EFI_VERSION_STRING=2.1 +!ELSEIF $(EFI_SPECIFICATION_VERSION)==0x20014 +EFI_VERSION_STRING=2.2 +!ELSEIF $(EFI_SPECIFICATION_VERSION)==0x2001E +EFI_VERSION_STRING=2.3 +!ELSEIF $(EFI_SPECIFICATION_VERSION)==0x2001F +EFI_VERSION_STRING=2.3.1 +!ENDIF +!IF $(PI_SPECIFICATION_VERSION) < 0x00010000 +PI_VERSION_STRING=0.91 +!ELSEIF $(PI_SPECIFICATION_VERSION) == 0x00010000 +PI_VERSION_STRING=1.0 +!ELSEIF $(PI_SPECIFICATION_VERSION) == 0x0001000A +PI_VERSION_STRING=1.1 +!ELSEIF $(PI_SPECIFICATION_VERSION) == 0x00010014 +PI_VERSION_STRING=1.2 +!ENDIF + +#This is target that can be used by OEM modules for any custom +#build steps that need to be performed after ROM generation. +AFTER_ROM: +!IF $(BRIEF) +#in brief mode ROM info is printed during ROM file generation +# $(FWBUILD) $(AMI_ROM) /s +!ELSE + $(FWBUILD) $(AMI_ROM) /v +!ENDIF + +!IF "$(TARGET)"!="END" +$(TARGET) : END +!ENDIF +#IMPORTANT: This has to be the last step of the build process. +#Any build process customizations must happen prior to this point +#Use AFTER_ROM or AFTER_FV targets for any custom build steps. +END: + @echo TARGET: $(TARGET). UEFI Version: $(EFI_VERSION_STRING). PI Version: $(PI_VERSION_STRING) + @echo ROM IMAGE: $(AMI_ROM). ROM TYPE: $(PROCESSOR). DEBUG MODE: $(DEBUG_MODE_STRING) + @echo All output modules were successfully built. +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2010, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** |