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/Rules.mak | |
download | zprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz |
Diffstat (limited to 'Core/Rules.mak')
-rw-r--r-- | Core/Rules.mak | 868 |
1 files changed, 868 insertions, 0 deletions
diff --git a/Core/Rules.mak b/Core/Rules.mak new file mode 100644 index 0000000..d28a961 --- /dev/null +++ b/Core/Rules.mak @@ -0,0 +1,868 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/BIN/Core/Rules.mak 83 11/03/11 2:21p Felixp $ +# +# $Revision: 83 $ +# +# $Date: 11/03/11 2:21p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/BIN/Core/Rules.mak $ +# +# 83 11/03/11 2:21p Felixp +# [TAG] EIP61003 +# [Category] Improvement +# [Description] Support for setting of the debug parameters when +# DEBUG_MODE is 0. +# +# 82 11/03/11 12:27p Felixp +# [TAG] EIP74554 +# [Category] Improvement +# [Description] Support generation of the assembly listing file. +# [Files] Core.sdl, Rules.mak +# +# 81 10/27/11 3:27p Felixp +# Improvement: +# Make sure all externally callable targets have dependency from the +# $(DIRS), +# which is a list of targets that create intermediate file directories. +# +# 80 6/27/11 5:36p Felixp +# 1. DUAL_INSTANCE_LIBRARIES_BUILD_DIR macro is added. +# 2. Use PEI instance of AmiCspLib when PEI components are built +# +# 79 6/16/11 9:12a Felixp +# Enhancements: +# 1. Make sure $(BUILD_DIR)\$(NAME)CcOptions.txt is regenerated during +# every build. +# 2. Define SMM_BUILD macro during the compilation of PI SMM drivers (SMM +# and Combined DXE/SMM). +# +# 78 2/05/11 1:44p Artems +# Added PI 1.1 support (SMM driver build rules) +# +# 77 11/17/10 11:09a Felixp +# New Rules.mak parameter MY_SDBS is added. +# It can be used to extend list of module's SDB files. +# The list of module's SDB files is a concatenation of the +# list of SDB files generated from module's UNI files and MY_SDB files. +# The MY_SDB macro has to be in the format -db <sdb-file>. +# For example, "MY_SDBS=-db $(BUILD_DIR)\S1.sdb -db $(BUILD_DIR)\S1.sdb" +# +# 76 6/09/10 11:04p Felixp +# Command to delete .i files after VFR processing is removed. +# It is no longer needed because updated VFR compiler is no longer +# placing +# .i files into the project root directory. +# +# 75 6/09/10 10:44p Felixp +# New build type RESOURCES is added to rules.mak. +# The type is used to build only HII resources of the component. +# +# 74 5/07/10 12:41p Felixp +# PEI_PHASE and DXE_PAHSE macros are renamed to PEI_BUILD and DXE_BUILD +# +# 73 5/07/10 12:22p Felixp +# Predefined PEI_PHASE and DXE_PHASE macros are added. +# The macros can be used in the in the source code that used in PEI and +# DXE to +# implemented phase specific behavior. +# +# 72 3/19/10 6:02p Felixp +# Support USE_CC_RESPONSE_FILE for GUID_LIBRARY builds. +# +# 71 3/18/10 5:49p Felixp +# Bug fix in USE_LINKER_RESPONSE_FILE processing +# +# 70 3/18/10 5:23p Felixp +# Bug fix in USE_CC_RESPONSE_FILE processing +# +# 69 3/18/10 5:12p Felixp +# New SDL token USE_CC_RESPONSE_FILE is added. +# When this token is enabled, all C-compiler(CC) options are passed via +# the response file. +# The token should be enabled when the length of the CC command line +# exceeds +# the maximum supported limit. The token is disabled by default. +# +# 68 2/23/10 8:28p Felixp +# String Override Support(EIP 32696). +# Rules.mak is updated to run .uni file processing utility (StrGather) +# with the special -override flag. The flag instructs the utility to use +# last instance of the string, if more than one instance is available. +# NOTE: This feature requires new version of the Tools module +# (4.5.5_Tools_30 or newer). +# +# 67 11/13/09 5:05p Felixp +# Don't generate debug information for components of type BINARY. +# +# 66 11/06/09 9:24a Felixp +# 1. PE32-based .bin Files Support +# New built type BINARY is added. +# The type is used to generate FFS files containing raw binary data. +# The binary file is created from the PE32/PE32+ file by stripping the +# headers. +# NOTE: This feature requires new version of the Tools module. +# 2. New SDL token USE_LINKER_RESPONSE_FILE is added. +# When this token is enabled, all linked options are passed via the +# response file. +# The token should be enabled when the length of the linker command +# line exceeds +# the maximum supported limit. The token is disabled by default. +# +# 64 10/09/09 5:11p Felixp +# UEFI 2.1-related changes. +# +# 63 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. +# +# 62 3/05/09 9:52a Felixp +# Minor bug fix: Dual mode libraries (libraries with PEI and DXE +# instances) INIT_LIST problem. +# Description: Compilation of the dual mode libraries with +# INIT_LIST in x64 mode (x64_SUPPORT=1) was failing. +# Symptoms: Build fails with "Don't know how to build Build\IA32\Token.h" +# error. +# Details: $(BUILD_DIR)\Token.h replaced with $(BUILD_ROOT)\Token.h +# +# 61 1/02/09 12:49p Felixp +# C preprocessor copyright message is suppressed. +# +# 60 12/16/08 3:50p Felixp +# Support for "Step out" operation in the debugger. +# x64 debuggers implemen "Step out" operation using exception directory +# within PE32+ image. +# In previous versions of the Core exception directory was stripped out +# by the build process to reduce PE32 image size. +# Current version of the code preserves exception directory when +# generation of debug informataon is enabled (DEBUG_INFO token is set to +# "on"). +# +# 59 10/31/08 11:22a Felixp +# +# 58 10/22/08 3:57p Felixp +# Some of the linker warnings are eliminated (.efi files are no longer +# built as .dll files. They are built as .exe files). +# +# 57 10/10/08 9:51a Felixp +# +# 56 10/10/08 9:50a Felixp +# - Component VFR files were compiled when HAS_RESOURCES was set to zero +# - Workaround for ML64 added +# +# 55 5/09/08 5:05p Felixp +# Minor bug fix: Rules.mak based build of the componentns with .efi files +# did not work. +# +# 54 12/14/07 12:38p Felixp +# +# 53 12/14/07 12:30p Felixp +# DEST_DIR usage removed (DEST_DIR is not defined by cif2mak if more than +# one cif file used). +# +# 52 10/22/07 6:11p Felixp +# New FFS_ALIGNMENT switch added to support FFS data alignment +# +# 51 9/05/07 6:49p Felixp +# Disable debugging features is DEBUG_MODE is zero +# +# 50 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. +# +# 49 8/02/07 1:27a Felixp +# +# 48 6/01/07 2:53p Felixp +# TE image support added. (PE_IMAGE_FORMAT macro that is used to +# supppress TE image generation passed to FFS.mak) +# +# 47 3/30/07 4:43p Felixp +# Support for FFS_CHECKSUM added to control FFS checksum generation. +# +# 46 3/13/07 9:54a Felixp +# Global and CPU architecture specific macros are now passed +# to C preprocessor (used during DepEx and VFR compilation) +# +# 45 2/23/07 2:30p Felixp +# Support for custom string consumers added (MY_STRING_CONSUMERS). +# +# 44 12/28/06 6:24p Felixp +# Support for 32-bit C compiler from Windows Server 2003 SP1 DDK +# (3790.1830) added +# +# 43 11/11/06 11:47a Felixp +# Support for date/time stamps(All executables generated with the +# identical date/time stamp) +# +# 36 10/03/06 8:56a Felixp +# Support for a build family specific build rules. +# MY_DEFINES macro added to list all module specific macro definitions +# +# 35 9/26/06 9:01a Felixp +# Multilanguage support added. New FontTool is required. +# +# 34 9/07/06 1:48p Felixp +# +# 33 8/24/06 9:06a Felixp +# Preliminary x64 support (work in progress) +# +# 32 7/14/06 9:55a Pavell +# +# 31 6/22/06 2:55p Andriyn +# Fix EDK modules compiling +# +# 30 5/19/06 6:14p Felixp +# 1. Support for EDK-based modules added. +# 2. MY_INCLUDES macro added to specify list of include directories +# +# 28 5/12/06 3:07p Felixp +# EDK support added +# +# 25 3/30/06 6:05p Felixp +# Support for compiler version auto-detection added. +# +# 24 2/24/06 2:43p Felixp +# +# 23 2/23/06 6:44p Felixp +# Change in string handling. Skip source scanning if STRING_CONSUMERS is +# blank. +# This is needed to support binary modules with strings. +# +# 22 7/29/05 4:16p Robert +# Updated Init Parts rule to allow use in libraries +# +# 20 7/14/05 6:36p Felixp +# SDL tokens for ECHO and DEL added +# +# 18 6/17/05 3:25p Felixp +# Setup support: sd files handling +# +# 17 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 +# +# 15 5/24/05 12:47a Felixp +# ignore unsupported languages +# +# 14 5/23/05 6:01p Felixp +# CreateSdb target added +# STRING_TOKEN definition added to avery StrToken.h +# FFS file dependecies from RAWFILE and SECTION added +# +# 12 4/08/05 7:40a Felixp +# strings +# +# 11 4/04/05 4:54p Felixp +# dependency fix in .uni files processing +# +# 10 3/28/05 7:03p Felixp +# +# 9 3/28/05 7:02p Felixp +# del command to delete .i files +# +# 8 3/22/05 10:31p Felixp +# support for EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER added +# +# 5 3/17/05 1:26p Felixp +# processing of multiple .uni files added +# +# 2 3/02/05 5:27p Felixp +# Support for resources (strings, forms, fonts, etc.) added +# +# 5 1/20/05 11:34a Felixp +# support for prebuilt objects, libraries and .efi files +# +# 4 1/18/05 3:21p Felixp +# PrintDebugMessage renamed to Trace +# +# 2 12/24/04 2:39p Felixp +# +# 1 12/23/04 9:41a Felixp +# +# 7 12/15/04 9:06p Felixp +# LegacyBoot application added +# Minor build process improvements +# +# 6 11/01/04 7:59a Felixp +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: Rules.mak +# +# Description: Build Rules Template +# +#<AMI_FHDR_END> +#********************************************************************** +.SUFFIXES: .asm .c .vfr .dll .uni + +!IFNDEF BUILD_ROOT +BUILD_ROOT=$(BUILD_DIR) +!ELSEIFNDEF BUILD_DIR +BUILD_DIR=$(BUILD_ROOT) +!ENDIF + +!INCLUDE $(BUILD_ROOT)\token.mak +!INCLUDE $(BUILD_ROOT)\timestamp.mak +!INCLUDE Core\Languages.mak +!IF EXIST ($(BUILD_ROOT)\selectivedebugmodules.mak) +!INCLUDE $(BUILD_ROOT)\selectivedebugmodules.mak +!ENDIF + +EXTRA_INCLUDES=$(MY_INCLUDES) $(EXTRA_INCLUDES) +EXTRA_DEFINES=$(MY_DEFINES) $(EXTRA_DEFINES) + +FINAL_CFLAGS=$(CFLAGS) $(EXTRA_CFLAGS) $(FORCE_INCLUDE) +FINAL_LFLAGS=$(LFLAGS) $(EXTRA_LFLAGS) +FINAL_AFLAGS=$(AFLAGS) $(EXTRA_AFLAGS) +FINAL_AFLAGS16=$(AFLAGS16) $(EXTRA_AFLAGS16) +LIBFLAGS=/NOLOGO +#C preprocessor flags (used by DepEx parser and VFR compiler) +CPFLAGS=/nologo $(GLOBAL_DEFINES) $(EXTRA_DEFINES) $(EXTRA_INCLUDES) + +#Check if this is a PEI module or DXE module +!IF "$(TYPE)"=="PEIM"||"$(TYPE)"=="PEI_CORE"||"$(TYPE)"=="PEI_LIBRARY"||"$(TYPE)"=="PEI_GUID_LIBRARY" +COMPONENT_BUILD_RULES=PEI +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /DPEI_BUILD +DUAL_INSTANCE_LIBRARIES_BUILD_DIR=$(BUILD_ROOT)\IA32 +!ELSE +COMPONENT_BUILD_RULES=DXE +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /DDXE_BUILD +!IF "$(TYPE)"=="SMM_DRIVER"||"$(TYPE)"=="DXESMM_DRIVER" +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /DSMM_BUILD +DUAL_INSTANCE_LIBRARIES_BUILD_DIR=$(BUILD_ROOT) +!ENDIF +!ENDIF + +!IF "$(DEBUG_MODE)"!="1" +# Debugging is disabled. +# Use release mode settings +# (unless debug flags have been defined for the release mode) +!IFNDEF OPTIMIZATION +OPTIMIZATION=1 +!ENDIF +!IFNDEF DEBUG_INFO +DEBUG_INFO=0 +!ENDIF +!IFNDEF DEBUG_CODE +DEBUG_CODE=0 +!ENDIF +COMPONENT_OPTIMIZATION=$(OPTIMIZATION) +COMPONENT_DEBUG_INFO=$(DEBUG_INFO) +COMPONENT_DEBUG_CODE=$(DEBUG_CODE) +!ELSEIF "$(SELECTIVE_DEBUG_ENABLE)"=="1" +COMPONENT_OPTIMIZATION=$(SELECTIVE_OPTIMIZATION) +COMPONENT_DEBUG_INFO=$(SELECTIVE_DEBUG_INFO) +COMPONENT_DEBUG_CODE=$(SELECTIVE_DEBUG_CODE) +!ELSEIF "$(COMPONENT_BUILD_RULES)"=="PEI" && "$(INDEPENDENT_PEI_DEBUG_SETTINGS)"=="1" +COMPONENT_OPTIMIZATION=$(PEI_OPTIMIZATION) +COMPONENT_DEBUG_INFO=$(PEI_DEBUG_INFO) +COMPONENT_DEBUG_CODE=$(PEI_DEBUG_CODE) +!ELSE +COMPONENT_OPTIMIZATION=$(OPTIMIZATION) +COMPONENT_DEBUG_INFO=$(DEBUG_INFO) +COMPONENT_DEBUG_CODE=$(DEBUG_CODE) +!ENDIF + +#Set debug mode specific flags +#1. Optimization +!IF "$(COMPONENT_OPTIMIZATION)"=="1" +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /O1 +!ENDIF +#2. Debug information +!IF "$(COMPONENT_DEBUG_INFO)"=="1" && "$(TYPE)"!="BINARY" +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /Fd$(BUILD_DIR)\ /Zi /Gm +EXTRA_LFLAGS=$(EXTRA_LFLAGS) /MAP /DEBUG /PDB:$*.pdb +EXTRA_AFLAGS=$(EXTRA_AFLAGS) /Zi /Zf /Zd +!ENDIF +#3. Debug code +!IF "$(COMPONENT_DEBUG_CODE)"=="1" +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /DEFI_DEBUG +EXTRA_AFLAGS=$(EXTRA_AFLAGS) /DDEBUG /DEFI_DEBUG +!ENDIF +#Done setting debug mode specific flags + +!IF "$(PROCESSOR_RULES)"!="" +!INCLUDE $(PROCESSOR_RULES) +MAKEFILES=$(MAKEFILES) $(PROCESSOR_RULES) +!ENDIF + +!IF "$(FAMILY_RULES)"!="" +!INCLUDE $(FAMILY_RULES) +MAKEFILES=$(MAKEFILES) $(FAMILY_RULES) +#This is here for backward compatibility/ +#Old labels of EDK module need this +!ELSEIF "$(FAMILY)"=="EDK" +EXTRA_CFLAGS=$(EXTRA_CFLAGS) /X $(EDK_INCLUDES) +!ENDIF + +!IFNDEF MAKEFILE +MAKEFILE=$(BUILD_ROOT)\$(NAME).mak +!ENDIF +MAKEFILES=$(MAKEFILES) $(MAKEFILE) + +!IFNDEF FFS_FILE +FFS_FILE=$(BUILD_ROOT)\$(NAME).ffs +!ENDIF + +!IFNDEF LIB_BUILD_DIR +LIB_BUILD_DIR=$(BUILD_DIR) +!ENDIF + +!IF "$(TYPE)"=="PEI_DXE_LIBRARY" +all: + $(MAKE) /$(MAKEFLAGS)\ + /f $(MAKEFILE) all\ + TYPE=LIBRARY $(PARAMETERS) +!IF DEFINED(CCPEI) && "$(CCPEI)"!="$(CC)" + $(MAKE) /$(MAKEFLAGS) BUILD_DIR=$$(LIB_BUILD_DIR)\ + /f $(MAKEFILE) all\ + TYPE=PEI_LIBRARY $(PARAMETERS) +!ENDIF +!ENDIF + +!IF "$(TYPE)"=="LEGACY16" +.SOURCEGRULE .asm.obj + $(ASM16) $(FINAL_AFLAGS16) /Fo$D\ $< +!ELSE +#Workaround for ML64 +#If ML64 absolute path contains spaces, +#it fails to process multiple files. +#To workaround the issue, group file processing is disabled for ML64 +!IF "$(PROCESSOR)"=="x64" +.SOURCERULE .asm.obj + $(ASM) $(FINAL_AFLAGS) /Fo$D\ $< +!ELSE +.SOURCEGRULE .asm.obj + $(ASM) $(FINAL_AFLAGS) /Fo$D\ $< +!ENDIF +!ENDIF + +!IF "$(USE_CC_RESPONSE_FILE)"=="1" +CC_COMMAND_LINE=@$(BUILD_DIR)\$(NAME)CcOptions.txt +!ELSE +CC_COMMAND_LINE=$(FINAL_CFLAGS) $(EXTRA_DEFINES) $(EXTRA_INCLUDES) +!ENDIF +!IF "$(GENERATE_CC_LISTING_FILE)"=="1" +.SOURCEGRULE .c.obj + $(CC) $(CC_COMMAND_LINE) /Fa$D\ /FAs /Fo$D\ $< +!ELSE +.SOURCEGRULE .c.obj + $(CC) $(CC_COMMAND_LINE) /Fo$D\ $< +!ENDIF + +.SOURCERULE .vfr.hpk + $(VFRCOMPILE) -ppflag "/EP $(CPFLAGS)" -od $D -ibin -i INCLUDE -i Build -i $(PROJECT_DIR) $(VFR_INCLUDES) $< + +STRGATHER_PARSE_FLAGS=-i INCLUDE -parse -newdb -db $@ $< +!IFDEF UNI_INCLUDE_PATH +STRGATHER_PARSE_FLAGS=-i $(UNI_INCLUDE_PATH) $(STRGATHER_PARSE_FLAGS) +!ENDIF +.SOURCERULE .uni.sdb + $(STRGATHER) $(STRGATHER_PARSE_FLAGS) + +!IF "$(TYPE)"=="SDB" || "$(TYPE)"=="RESOURCES" +HAS_RESOURCES=1 +!ENDIF + +!IFNDEF OBJECTS +.SOURCEVAR OBJECTS=.obj(.c,.asm) +!ENDIF +!IFNDEF HEADERS +.SOURCEVAR HEADERS=.h +!ENDIF +!IFNDEF DEPEX1 +.SOURCEVAR DEPEX1=.dxs +!ENDIF +!IFNDEF LIBRARIES +.SOURCEVAR LIBRARIES=.lib +!ENDIF +!IFNDEF PRECOMPILED_OBJS +.SOURCEVAR PRECOMPILED_OBJS=.obj +!ENDIF +!IFNDEF EFI_FILE +.SOURCEVAR EFI_FILE=.efi +!ENDIF + +!IF !DEFINED(SDB_FILES) && "$(HAS_RESOURCES)"=="1" +.SOURCEVAR SDB_FILES=.sdb(.uni) +!ENDIF +!IFNDEF STRGATHER_FLAGS +.SOURCEVAR STRGATHER_FLAGS=.sdb(.uni) : -db $F +!ENDIF +!IF !DEFINED(VFR_PACKS) && "$(HAS_RESOURCES)"=="1" +.SOURCEVAR VFR_PACKS=.hpk(.vfr) +!ENDIF +!IFNDEF STRING_CONSUMERS +STRING_CONSUMERS = $(MY_STRING_CONSUMERS) +.SOURCEVAR CFILES=.c +.SOURCEVAR VFRFILES=.vfr +.SOURCEVAR SDFILES=.sd +!IF "$(CFILES)"!="" +STRING_CONSUMERS=$(STRING_CONSUMERS) $(CFILES) +!ENDIF +!IF "$(VFRFILES)"!="" +STRING_CONSUMERS=$(STRING_CONSUMERS) $(VFRFILES) +!ENDIF +!IF "$(SDFILES)"!="" +STRING_CONSUMERS=$(STRING_CONSUMERS) $(SDFILES) +!ENDIF +!ENDIF + +HEADERS=$(HEADERS) $(EXT_HEADERS) +ALL_EXT_OBJS_TMP=$(EXT_OBJS) $(LIBRARIES) $(PRECOMPILED_OBJS) +!IF "$(COMPONENT_BUILD_RULES)"=="PEI" && EXIST (Build\IA32\AmiCSPLib.lib) +ALL_EXT_OBJS=$(ALL_EXT_OBJS_TMP:Build\AmiCSPLib.lib=Build\IA32\AmiCSPLib.lib) +!ELSE +ALL_EXT_OBJS=$(ALL_EXT_OBJS_TMP) +!ENDIF +PACKS = $(VFR_PACKS) + +!IF "$(OBJECTS)"!="" +$(OBJECTS) : $(HEADERS) $(MAKEFILES) +!ENDIF + +!IF "$(VFR_PACKS)"!="" +$(VFR_PACKS) : $(HEADERS) $(MAKEFILES) +!ENDIF + +!IF "$(SDB_FILES)"!="" +$(SDB_FILES) : $(HEADERS) $(MAKEFILES) +!ENDIF + +!IF "$(TYPE)"=="BS_DRIVER" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_DRIVER +PE_TYPE=$(TYPE) +DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX +!ELSEIF "$(TYPE)"=="RT_DRIVER" +SUBSYSTEM = EFI_RUNTIME_DRIVER +FV_TYPE=EFI_FV_FILETYPE_DRIVER +PE_TYPE=$(TYPE) +DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX +!ELSEIF "$(TYPE)"=="SMM_DRIVER" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_SMM +PE_TYPE=BS_DRIVER +DEPEX1_TYPE=EFI_SECTION_SMM_DEPEX +!ELSEIF "$(TYPE)"=="DXESMM_DRIVER" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_COMBINED_SMM_DXE +PE_TYPE=BS_DRIVER +!ELSEIF "$(TYPE)"=="APPLICATION" +SUBSYSTEM = EFI_APPLICATION +FV_TYPE=EFI_FV_FILETYPE_APPLICATION +PE_TYPE=$(TYPE) +!ELSEIF "$(TYPE)"=="PEI_CORE" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_PEI_CORE +PE_TYPE=BS_DRIVER +!ELSEIF "$(TYPE)"=="DXE_CORE" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_DXE_CORE +PE_TYPE=BS_DRIVER +!ELSEIF "$(TYPE)"=="SMM_CORE" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_SMM_CORE +PE_TYPE=BS_DRIVER +DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX +!ELSEIF "$(TYPE)"=="PEIM" +SUBSYSTEM = EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_PEIM +PE_TYPE=BS_DRIVER +DEPEX1_TYPE=EFI_SECTION_PEI_DEPEX +!ELSEIF "$(TYPE)"=="COMBINED" +SUBSYSTEM=EFI_BOOT_SERVICE_DRIVER +FV_TYPE=EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER +PE_TYPE=BS_DRIVER +!ELSEIF "$(TYPE)"=="LIBRARY" || "$(TYPE)"=="PEI_LIBRARY" +!UNDEF TYPE +TYPE=LIBRARY +!ELSEIF "$(TYPE)"=="PEI_GUID_LIBRARY" || "$(TYPE)"=="GUID_LIBRARY" +!IF "$(TYPE)"=="PEI_GUID_LIBRARY" +FORCE_INCLUDE=/FIPEI.h +!ELSE +FORCE_INCLUDE=/FIEFI.h +!ENDIF +!UNDEF TYPE +TYPE=GUID_LIBRARY +!ELSEIF "$(TYPE)"=="SDB" +!ELSEIF "$(TYPE)"=="RESOURCES" +!ELSEIF "$(TYPE)"=="LEGACY16" || "$(TYPE)"=="BINARY" +FV_TYPE=EFI_FV_FILETYPE_FREEFORM +!IFNDEF BINFILE +BINFILE=$(BUILD_DIR)\$(NAME).bin + +bin : $(DIRS) $(BUILD_DIR)\$(NAME).bin + +!IF "$(TYPE)"=="BINARY" +$(BUILD_DIR)\$(NAME).bin : $(BUILD_DIR)\$(NAME).dll + pe2bin $(BUILD_DIR)\$(NAME).dll $(BUILD_DIR)\$(NAME).bin +!ELSE +$(BUILD_DIR)\$(NAME).bin : $(OBJECTS) + $(ASMLINK) $(ASMLINKFLAGS) $(OBJECTS: =+), $(BUILD_DIR)\$(NAME).exe, $(BUILD_DIR)\$(NAME).map,,, +!IFNDEF POST_PROCESS + exe2bin $(BUILD_DIR)\$(NAME).exe $(BUILD_DIR)\$(NAME).bin +!ELSE + exe2bin $(BUILD_DIR)\$(NAME).exe $(BUILD_DIR)\$(NAME)1.bin + $(POST_PROCESS) $(BUILD_DIR)\$(NAME)1.bin $(BUILD_DIR)\$(NAME).bin +!ENDIF # !IFNDEF POST_PROCESS +!ENDIF # !IF "$(TYPE)"=="BINARY" +!ENDIF # !IFNDEF BINFILE +!ELSEIF "$(TYPE)"=="PEI_DXE_LIBRARY" +!ELSEIF "$(TYPE)"=="" +!ERROR Error in the makefile of component $(NAME): 'TYPE' is undefined +!ELSE +!ERROR Error in the makefile of component $(NAME): TYPE $(TYPE) is unsupported +!ENDIF + +!IF "$(TYPE)"=="BINARY" +EXTRA_LFLAGS = $(EXTRA_LFLAGS) /NOENTRY /FIXED +!ELSE +EXTRA_LFLAGS = $(EXTRA_LFLAGS) /ENTRY:$(ENTRY_POINT) +!ENDIF + +# Linkers newer than VC6 can directly generate .efi files. +# However, we use FWIMAGE to generate .efi files because +# FWIMAGE can set date/time stamp to a predefined value +# This is useful for baniray reproducibility of the BIOS +!IF "$(COMPONENT_DEBUG_INFO)"=="1" +FWIMAGE_KEEP_EXCEPTION_TABLE=-e +!ENDIF + +{$(BUILD_DIR)}.dll{$(BUILD_DIR)}.efi: + $(FWIMAGE) -t $(TODAY),$(NOW) $(FWIMAGE_KEEP_EXCEPTION_TABLE) $(PE_TYPE) $< $@ + +!IF "$(TYPE)"=="APPLICATION" && "$(BUILD_FFS)"!="1" +all : $(BUILD_DIR)\$(NAME).efi +!ELSEIF "$(TYPE)"=="LIBRARY" || "$(TYPE)"=="GUID_LIBRARY" +!IFNDEF LIBRARY_NAME +LIBRARY_NAME=$(BUILD_DIR)\$(NAME).lib +!ENDIF +all : $(LIBRARY_NAME) + +!IF "$(TYPE)"=="GUID_LIBRARY" +$(LIBRARY_NAME) : $(HEADERS) + $(SILENT)if not exist $(BUILD_DIR)\$(@B) md $(BUILD_DIR)\$(@B) +!IF "$(USE_CC_RESPONSE_FILE)"=="1" + $(CC) @<<$(BUILD_DIR)\$(NAME)CcOptions.txt +$(FINAL_CFLAGS) $(EXTRA_DEFINES) $(EXTRA_INCLUDES) /TC /DGUID_VARIABLE_DEFINITION /Fo$(BUILD_DIR)\$(@B)\\ $** +<<KEEP +!ELSE + $(CC) $(FINAL_CFLAGS) $(EXTRA_DEFINES) $(EXTRA_INCLUDES) /TC /DGUID_VARIABLE_DEFINITION /Fo$(BUILD_DIR)\$(@B)\\ $** +!ENDIF + $(SILENT)cd $(BUILD_DIR)\$(@B) + $(LIBEXE) $(LIBFLAGS) /OUT:$(PROJECT_DIR)\$@ $(**F:.h=.obj) + $(SILENT)cd $(MAKEDIR) +!ENDIF +!ELSEIF "$(TYPE)"=="SDB" +all : CreateSdb +!ELSEIF "$(TYPE)"=="RESOURCES" +all : CreateAllPacks +!ELSEIF "$(TYPE)"=="PEI_DXE_LIBRARY" +!ELSE +all : $(FFS_FILE) +!ENDIF + +# Strings and VFRs processing +!IF "$(SDB_FILES)"!="" +!IF "$(OBJECTS)"!=""||"$(VFR_PACKS)"!="" +$(OBJECTS) $(VFR_PACKS) : $(BUILD_DIR)\$(NAME)StrTokens.h +!ENDIF + +PACKS=$(BUILD_DIR)\$(NAME)Str.hpk $(PACKS) +STRGATHER_DUMP_FLAGS=-dump -lang $(SUPPORTED_LANGUAGES: = -lang ) -bn $(NAME) -hpk $(BUILD_DIR)\$(NAME)Str.hpk -oh $(BUILD_DIR)\$(NAME)StrTokens.h -override + +CreateSdb : $(DIRS) $(SDB_FILES) $(STRING_CONSUMERS) +!IF "$(STRING_CONSUMERS)"!="" + $(STRGATHER) -scan $(STRGATHER_FLAGS) $(MY_SDBS) -od $(BUILD_DIR)\$(NAME).sdb $(STRING_CONSUMERS) +!ENDIF + +$(BUILD_DIR)\$(NAME)StrTokens.h $(BUILD_DIR)\$(NAME)Str.hpk : $(DIRS) $(SDB_FILES) $(STRING_CONSUMERS) +!IF "$(STRING_CONSUMERS)"=="" + $(STRGATHER) $(STRGATHER_DUMP_FLAGS) $(STRGATHER_FLAGS) $(MY_SDBS) +!ELSE + $(STRGATHER) -scan $(STRGATHER_FLAGS) $(MY_SDBS) -od $(BUILD_DIR)\$(NAME).sdb $(STRING_CONSUMERS) + $(STRGATHER) $(STRGATHER_DUMP_FLAGS) -db $(BUILD_DIR)\$(NAME).sdb +!ENDIF + $(ECHO) #ifndef VFRCOMPILE >> $(BUILD_DIR)\$(NAME)StrTokens.h + $(ECHO) #ifndef STRING_TOKEN >> $(BUILD_DIR)\$(NAME)StrTokens.h + $(ECHO) #define STRING_TOKEN(x) x >> $(BUILD_DIR)\$(NAME)StrTokens.h + $(ECHO) #endif >> $(BUILD_DIR)\$(NAME)StrTokens.h + $(ECHO) #endif >> $(BUILD_DIR)\$(NAME)StrTokens.h + $(STRING_PACK_POST_PROCESS_COMMAND) +!ENDIF + +CreateAllPacks : $(DIRS) $(PACKS) + +!IF "$(PACKS)"!="" +!IF "$(ITK_SUPPORT)"=="1" +$(FFS_FILE) : $(BUILD_DIR)\$(NAME).hii + +$(BUILD_DIR)\$(NAME).hii: $(PACKS) + $(HIIPACK) create -g $(GUID) -p $(PACKS) -o $(BUILD_DIR)\$(NAME).hii +!ENDIF +!IF "$(EMBEDDED_RESOURCES)"=="1" +EXTRA_LFLAGS = $(EXTRA_LFLAGS) $(BUILD_DIR)\$(NAME)Resources.obj +$(BUILD_DIR)\$(NAME).dll : $(BUILD_DIR)\$(NAME)Resources.obj +$(BUILD_DIR)\$(NAME)Resources.obj : $(PACKS) + $(AMIRC) /j /o$@ $** +!ELSE +SECTION=$(NAME)Resources.sec +$(FFS_FILE) : $(BUILD_DIR)\$(NAME)Resources.sec +$(BUILD_DIR)\$(NAME)Resources.sec : $(PACKS) + $(AMIRC) /s /o$@ $** +!ENDIF +!ENDIF + +# sources have priority over the binary +!IF "$(TYPE)"!="LEGACY16" && "$(TYPE)"!="BINARY" && ("$(EFI_FILE)"==""||"$(OBJECTS)"!=""||"$(ALL_EXT_OBJS)"!=" ") +!UNDEF EFI_FILE +EFI_FILE=$(BUILD_DIR)\$(NAME).efi +!ENDIF + +efi : $(DIRS) $(EFI_FILE) + +!IFDEF RAWFILE +FFS_DEPS=$(FFS_DEPS) $(PROJECT_DIR)\$(RAWFILE)\ +!ENDIF +!IFDEF SECTION +FFS_DEPS=$(FFS_DEPS) $(BUILD_DIR)\$(SECTION)\ +!ENDIF + +$(FFS_FILE) : $(EFI_FILE) $(MAKEFILES) Core\FFS.mak $(DEPEX1) $(DEPEX2) $(BINFILE) $(FFS_DEPS) + $(MAKE) /$(MAKEFLAGS) /f Core\FFS.mak \ + NAME=$(NAME) \ + BUILD_DIR=$(BUILD_ROOT) SOURCE_DIR=$(SOURCE_DIR) \ + GUID=$(GUID) \ + TYPE=$(FV_TYPE) \ + FFSFILE=$@ COMPRESS=$(COMPRESS) \ + "EXTRA_DEFINES=$(EXTRA_DEFINES)" "EXTRA_INCLUDES=$(EXTRA_INCLUDES)" "CPFLAGS=$(CPFLAGS)"\ +!IF "$(EFI_FILE)"!="" + PEFILE=$(EFI_FILE) \ +!ENDIF +!IF "$(DEPEX1)"!="" + DEPEX1=$(DEPEX1) DEPEX1_TYPE=$(DEPEX1_TYPE) \ +!ENDIF +!IFDEF DEPEX2 + DEPEX2=$(DEPEX2) DEPEX2_TYPE=$(DEPEX2_TYPE) \ +!ENDIF +!IFDEF BINFILE + BINFILE=$(BINFILE) \ +!ENDIF +!IFDEF RAWFILE + RAWFILE=$(RAWFILE) \ +!ENDIF +!IFDEF SECTION + SECTION=$(SECTION) \ +!ENDIF +!IFDEF FFS_CHECKSUM + FFS_CHECKSUM=$(FFS_CHECKSUM) \ +!ENDIF +!IFDEF FFS_ALIGNMENT + FFS_ALIGNMENT=$(FFS_ALIGNMENT) \ +!ENDIF +!IFDEF PE_IMAGE_FORMAT + PE_IMAGE_FORMAT=$(PE_IMAGE_FORMAT) \ +!ENDIF + +!IFDEF INIT_LIST +INIT_LIST_DEFINES=/D"INIT_LIST=$(INIT_LIST)" +!IFDEF INIT_LIST2 +INIT_LIST_DEFINES=$(INIT_LIST_DEFINES) /D"INIT_LIST2=$(INIT_LIST2)" +!ENDIF +!IF "$(TYPE)"=="LIBRARY" +$(LIBRARY_NAME) : $(BUILD_DIR)\$(NAME)_INIT_LIST.obj +LIBFLAGS = $(LIBFLAGS) $(BUILD_DIR)\$(NAME)_INIT_LIST.obj +!ELSE +EXTRA_LFLAGS = $(EXTRA_LFLAGS) $(BUILD_DIR)\$(NAME)_INIT_LIST.obj +$(BUILD_DIR)\$(NAME).dll : $(BUILD_DIR)\$(NAME)_INIT_LIST.obj +!ENDIF # !IF "$(TYPE)"=="LIBRARY" +$(BUILD_DIR)\$(NAME)_INIT_LIST.obj : $(PROJECT_DIR)\Core\InitList.c $(BUILD_ROOT)\token.h + $(CC) $(FINAL_CFLAGS) $(INIT_LIST_DEFINES) /Fo$@ $(PROJECT_DIR)\Core\InitList.c +!ENDIF # !IFDEF INIT_LIST + +#We no longer need build-through-lib mode. +#Let's keep IF statement is case we will want to change it in the future +#!IF "$(BUILD_BASE_LIB)"=="1" && "$(OBJECTS)"!="" +#$(BUILD_DIR)\$(NAME)Base.lib : $(OBJECTS) +# $(LIBEXE) $(LIBFLAGS) /OUT:$@ $(OBJECTS) +#$(BUILD_DIR)\$(NAME).dll : $(BUILD_DIR)\$(NAME)Base.lib $(ALL_EXT_OBJS) $(MAKEFILE) +# $(LINK) $(FINAL_LFLAGS) $(BUILD_DIR)\$(NAME)Base.lib $(ALL_EXT_OBJS) +#!ELSE +!IF "$(USE_CC_RESPONSE_FILE)"=="1" +$(BUILD_DIR)\$(NAME).dll : $(BUILD_DIR)\$(NAME)CcOptions.txt + +# This target is required to make sure +# $(BUILD_DIR)\$(NAME)CcOptions.txt is regenerated during every build +CcOptionsPhonyTargetWithTheLongName: + +$(BUILD_DIR)\$(NAME)CcOptions.txt : CcOptionsPhonyTargetWithTheLongName + $(SILENT)copy << $@ +$(FINAL_CFLAGS) $(EXTRA_DEFINES) $(EXTRA_INCLUDES) +<< +!ENDIF +$(BUILD_DIR)\$(NAME).dll : $(OBJECTS) $(ALL_EXT_OBJS) $(MAKEFILES) +!IF "$(USE_LINKER_RESPONSE_FILE)"=="1" + $(LINK) @<<$(BUILD_DIR)\$(NAME)LinkerOptions.txt +$(FINAL_LFLAGS) $(OBJECTS) $(ALL_EXT_OBJS) +<<KEEP +!ELSE + $(LINK) $(FINAL_LFLAGS) $(OBJECTS) $(ALL_EXT_OBJS) +!ENDIF +#!ENDIF +!IF "$(TYPE)"=="LIBRARY" +!IF "$(USE_CC_RESPONSE_FILE)"=="1" +$(LIBRARY_NAME) : $(BUILD_DIR)\$(NAME)CcOptions.txt +!ENDIF +$(LIBRARY_NAME) : $(OBJECTS) $(ALL_EXT_OBJS) +!IF "$(USE_LINKER_RESPONSE_FILE)"=="1" + $(LIBEXE) @<<$(BUILD_DIR)\$(NAME)LibOptions.txt +$(LIBFLAGS) /OUT:$@ $(OBJECTS) $(ALL_EXT_OBJS) +<<KEEP +!ELSE + $(LIBEXE) $(LIBFLAGS) /OUT:$@ $(OBJECTS) $(ALL_EXT_OBJS) +!ENDIF +!ENDIF +!IF EXIST ($(BUILD_ROOT)\targets.mak) +!INCLUDE $(BUILD_ROOT)\targets.mak +!ENDIF +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2011, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#**********************************************************************
\ No newline at end of file |