From b7c51c9cf4864df6aabb99a1ae843becd577237c Mon Sep 17 00:00:00 2001 From: raywu Date: Fri, 15 Jun 2018 00:00:50 +0800 Subject: init. 1AQQW051 --- Core/FFS.mak | 393 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 Core/FFS.mak (limited to 'Core/FFS.mak') diff --git a/Core/FFS.mak b/Core/FFS.mak new file mode 100644 index 0000000..04bbcd0 --- /dev/null +++ b/Core/FFS.mak @@ -0,0 +1,393 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (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/FFS.mak 25 2/05/11 1:43p Artems $ +# +# $Revision: 25 $ +# +# $Date: 2/05/11 1:43p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Core/FFS.mak $ +# +# 25 2/05/11 1:43p Artems +# Added Nested FV support +# +# 24 10/19/10 10:37p Felixp +# UI Seciton generation command is updated to support strings with +# spaces. +# +# 23 8/30/10 11:27p Felixp +# Improvement(EIP 43254): +# Support for override of the module name string that is included into +# the FFS file user interface section is added. +# The string can be overridden using UI_NAME macro. +# +# 22 8/20/10 12:51p Felixp +# LZMA compression support +# +# 21 3/19/10 12:41p Felixp +# +# 20 3/18/10 5:49p Felixp +# New SDL token USE_CP_RESPONSE_FILE is added. +# When this option is enabled, all C-preprocessor(CP) options are passed +# via the response file. +# The token should be enabled when the length of the CP command line +# exceeds +# maximum supported limit. The token is disabled by default. +# +# 19 11/23/09 6:18p Felixp +# Version FFS section support is added. +# +# 18 10/22/07 6:11p Felixp +# New FFS_ALIGNMENT switch added to support FFS data alignment +# +# 17 9/05/07 6:15p Felixp +# TE Image support is disabled. +# This is work in progress. TE image support will be enabled in the +# future Core versions. +# +# 16 6/01/07 2:51p Felixp +# TE image support added. +# File header comments improved +# +# 15 3/30/07 4:43p Felixp +# Support for FFS_CHECKSUM added to control FFS checksum generation. +# +# 14 3/18/07 1:52p Felixp +# TE image support is commented out. More testing is required before this +# can be enabled +# +# 13 3/18/07 12:44p Felixp +# Support for TE images added +# +# 12 3/13/07 9:54a Felixp +# Global and CPU architecture specific macros are now passed +# to C preprocessor (used during DepEx and VFR compilation) +# +# 11 2/27/07 2:37p Markw +# +# 10 10/03/06 8:56a Felixp +# EXTRA_INCLUDES and EXTRA_DEFINES macros added to pass include +# directories and macro definitions for dependency expression +# preprocessing +# +# 9 8/24/06 9:06a Felixp +# Preliminary x64 support (work in progress) +# +# 8 5/19/06 6:14p Felixp +# 1. Support for EDK-based modules added. +# 2. MY_INCLUDES macro added to specify list of include directories +# +# 7 1/10/06 9:42a Felixp +# do not create UI section for RAW files +# +# 6 1/09/06 11:27a Felixp +# Support for UI section added +# +# 4 1/05/06 2:38p Felixp +# support of UI sections added +# +# 3 11/07/05 3:00p Davidd +# $(SILENT_OUT) removed for GenSection since new version of the utility +# supports silent execution. +# +# 2 11/07/05 10:07a Felixp +# support for FREFORM_GUID sections added (to support AMI resource +# sections) +# +# 1 1/28/05 12:43p Felixp +# +# 5 1/18/05 3:21p Felixp +# PrintDebugMessage renamed to Trace +# +# 3 1/14/05 12:35p Markw +# RAWFILE now can be anywhere in the project directory +# +# 2 1/12/05 3:16p Felixp +# support for separetely built sections added +# +# 1 12/23/04 9:41a Felixp +# +# 9 12/03/04 6:12p Felixp +# brief build mode added +# +# 8 11/03/04 7:36p Felixp +# package file handling chaned: +# 1. package file is now recreated during every build +# 2. we no longer need dummy attrib utility +# +# 7 7/13/04 10:42a Felixp +# +# 6 4/10/04 2:17p Felixp +# +# 5 4/07/04 1:02p Felixp +# +# 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 +# +#********************************************************************** +# +# +# Name: FFS.mak +# +# Description: +# This makefile defines process of Firmware File System File creation. +# The following macros have to be defined: +# BUILD_DIR - temporary files derectory +# SOURCE_DIR - source files derectory +# GUID - GUID of the FFS file to be created +# TYPE - FFS File Type. +# Possible Values: +# EFI_FV_FILETYPE_APPLICATION +# EFI_FV_FILETYPE_FREEFORM +# EFI_FV_FILETYPE_RAW +# EFI_FV_FILETYPE_PEIM +# EFI_FV_FILETYPE_PEI_CORE +# EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +# EFI_FV_FILETYPE_DXE_CORE +# EFI_FV_FILETYPE_DRIVER +# EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE +# FFSFILE - FFS File Name (including path) +# The following macros may be defined: +# COMPRESS - disables/enable compression within FFS file +# Possible values: +# 1 - enable compression +# - disable compression +# DEPEX1,DEPEX1_TYPE - First Dependency Expression source file name(including path) and type +# DEPEX2,DEPEX2_TYPE - Second Dependency Expression source file(including path) name and type +# Possible Values for DEPEX1_TYPE,DEPEX2_TYPE: +# EFI_SECTION_PEI_DEPEX +# EFI_SECTION_DXE_DEPEX +# PEFILE - PE File Name +# BINFILE - Binary File Name +# RAWFILE - File Name +# SECTION - File Name (without path, BUILD_DIR used) +# RESOURCE, SECTION_GUID - Resource File Name and GUID of the resource section. +# The $(RESOURCE) file will be encapsulated into section of type EFI_SECTION_FREEFORM_SUBTYPE_GUID +# with GUID set to $(SECTION_GUID). +# EXTRA_INCLUDES - List include directories for dependency expression preprocessing +# EXTRA_DEFINES - List of macro definitions for dependency expression preprocessing +# FFS_CHECKSUM - 0 or 1. Enables/Disables FFS file checksum +# FFS_ALIGNMENT - FFS file data alignment. Supported values are from 0 to 7. +# FFS_ALIGNMENT value - FFS Data Alignment +# 0 or not specified - no alignment requirements +# 1 - 16 bytes +# 2 - 128 bytes +# 3 - 512 bytes +# 4 - 1K +# 5 - 4K +# 6 - 32K +# 7 - 64K +# VERSION - Build Number to be inserted into the version section +# VERSIONSTRING - Version string to be inserted into the version section +# +#********************************************************************** +!INCLUDE $(BUILD_DIR)\token.mak + +PKGFILE=$(FFSFILE:.ffs=) +!IF "$(PKGFILE)"=="$(FFSFILE)" +PKGFILE=$(FFSFILE:.FFS=) +!IF "$(PKGFILE)"=="$(FFSFILE)" +PKGFILE=$(FFSFILE:.Ffs=) +!ENDIF +!ENDIF +PKGFILE=$(PKGFILE)__.pkg + +all : $(PKGFILE) + +!IFDEF DEPEX1 +$(PKGFILE) : $(BUILD_DIR)\$(NAME)_DPX1.tmp +$(BUILD_DIR)\$(NAME)_DPX1.tmp : $(DEPEX1) +!IF "$(USE_CP_RESPONSE_FILE)"=="1" + $(CP) @<<$(BUILD_DIR)\$(NAME)CpOptions.txt $(DEPEX1) > $*.tmp1 +$(CPFLAGS) +< $*.tmp1 +!ENDIF + $(GENDEPEX) -I $*.tmp1 -O $@ $(SILENT_OUT) + $(SILENT)del $*.tmp1 +!ENDIF + +!IFDEF DEPEX2 +$(PKGFILE) : $(BUILD_DIR)\$(NAME)_DPX2.tmp +$(BUILD_DIR)\$(NAME)_DPX2.tmp : $(DEPEX2) +!IF "$(USE_CP_RESPONSE_FILE)"=="1" + $(CP) @<<$(BUILD_DIR)\$(NAME)CpOptions.txt $(DEPEX2) > $*.tmp1 +$(CPFLAGS) +< $*.tmp1 +!ENDIF + $(GENDEPEX) -I $*.tmp1 -O $@ $(SILENT_OUT) + $(SILENT)del $*.tmp1 +!ENDIF + +!IFDEF PEFILE +$(PKGFILE) : $(PEFILE) +!ENDIF +!IFDEF BINFILE +$(PKGFILE) : $(BINFILE) +!ENDIF +!IFDEF RAWFILE +$(PKGFILE) : $(PROJECT_DIR)\$(RAWFILE) +!ENDIF +!IFDEF SECTION +$(PKGFILE) : $(BUILD_DIR)\$(SECTION) +!ENDIF +!IFDEF RESOURCE +!IF "$(SECTION_GUID)"=="" +!ERROR SECTION_GUID for resource $(RESOURCE) is not defined +!ENDIF +$(PKGFILE) : $(RESOURCE) +!ENDIF +!IF "$(CREATE_UI_SECTION)"=="1" && "$(TYPE)"!="EFI_FV_FILETYPE_FREEFORM" && "$(TYPE)"!="EFI_FV_FILETYPE_RAW" +!IFNDEF UI_NAME +UI_NAME=$(NAME) +!ENDIF +!ENDIF + +!IF DEFINED(VERSION) || DEFINED(VERSIONSTRING) +!IFNDEF VERSION +VERSION=0 +!ENDIF +!ENDIF + +!IF "$(LZMA_SUPPORT)" == "1" +COMPRESSION_TYPE = LZMA +!ELSE +COMPRESSION_TYPE = dummy +!ENDIF + +!IF "$(COMPRESS)"=="" +!ERROR COMPRESS variable is undefined for module $(NAME). +!ENDIF + +!IF "$(FFS_CHECKSUM)"=="0" +FFS_ATTRIB_CHECKSUM=FALSE +!ELSE +FFS_ATTRIB_CHECKSUM=TRUE +!ENDIF + +$(PKGFILE) : + @copy << $(PKGFILE) > NUL +PACKAGE.INF +[.] +BASE_NAME = DummyName +FFS_FILEGUID = $(GUID) +FFS_FILETYPE = $(TYPE) +FFS_ATTRIB_CHECKSUM = $(FFS_ATTRIB_CHECKSUM) +!IFDEF FFS_ALIGNMENT +FFS_ALIGNMENT = $(FFS_ALIGNMENT) +!ENDIF + +IMAGE_SCRIPT = +{ +!IFDEF DEPEX1 + $(NAME)_DPX1.dpx + { + TYPE = $(DEPEX1_TYPE) + BIN = $(BUILD_DIR)\$(NAME)_DPX1.tmp + } +!ENDIF +!IFDEF DEPEX2 + $(NAME)_DPX2.dpx + { + TYPE = $(DEPEX2_TYPE) + BIN = $(BUILD_DIR)\$(NAME)_DPX2.tmp + } +!ENDIF +!IF $(COMPRESS)==1 + Compress ($(COMPRESSION_TYPE)) { +!ENDIF +!IFDEF PEFILE + $(NAME)_PE.pe + { + TYPE = EFI_SECTION_PE32 + BIN = $(PEFILE) + } +!ENDIF +!IFDEF BINFILE + $(NAME)_BIN.sec + { + TYPE = EFI_SECTION_RAW + BIN = $(BINFILE) + } +!ENDIF +!IFDEF SECTION + $(BUILD_DIR)\$(SECTION) +!ENDIF +!IFDEF RESOURCE + $(NAME)_RES.sec + { + TYPE = EFI_SECTION_FREEFORM_SUBTYPE_GUID + BIN = $(RESOURCE) + GUID = $(SECTION_GUID) + } +!ENDIF +!IF DEFINED(FV_FILE) || DEFINED(FV_DESC) + $(NAME)_FV.sec + { + TYPE = EFI_SECTION_FIRMWARE_VOLUME_IMAGE +!IFNDEF FV_DESC + BIN = FV_FILE +!ELSE + FV_DESC = $(FV_DESC) +!ENDIF + } +!ENDIF +!IF "$(CREATE_UI_SECTION)"=="1" && "$(TYPE)"!="EFI_FV_FILETYPE_FREEFORM" && "$(TYPE)"!="EFI_FV_FILETYPE_RAW" + $(NAME)_UI.sec + { + TYPE = EFI_SECTION_USER_INTERFACE + STRING = $(UI_NAME) + } +!ENDIF +!IFDEF VERSION + $(NAME)_VER.sec + { + TYPE = EFI_SECTION_VERSION + BUILD_NO = VERSION + STRING = $(VERSIONSTRING) + } +!ENDIF +!IF $(COMPRESS)==1 + } +!ENDIF +!IFDEF RAWFILE + $(PROJECT_DIR)\$(RAWFILE) +!ENDIF +} +<