* [PATCH v1 1/1] BaseTools: Refactoring to save time
[not found] <cover.1528122425.git.jaben.carsey@intel.com>
@ 2018-06-04 14:27 ` Jaben Carsey
0 siblings, 0 replies; only message in thread
From: Jaben Carsey @ 2018-06-04 14:27 UTC (permalink / raw)
To: edk2-devel; +Cc: Liming Gao, Yonghong Zhu
when not needed, change from our custom TemplateString class to a simple list of strings.
this is the .Append->.append changes and "".join(<splat>) changes.
this parimary affects variables named AutoGenC and AutoGenH
change GenMake dependency searching to not double search.
remove unused sdict class
Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
---
BaseTools/Source/Python/AutoGen/AutoGen.py | 38 +-
BaseTools/Source/Python/AutoGen/GenC.py | 454 ++++++++++----------
BaseTools/Source/Python/AutoGen/GenMake.py | 59 ++-
BaseTools/Source/Python/AutoGen/GenPcdDb.py | 48 +--
BaseTools/Source/Python/Common/Misc.py | 207 +--------
5 files changed, 314 insertions(+), 492 deletions(-)
diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py
index 9a57b9abd992..37398e42a9e1 100644
--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
@@ -3588,23 +3588,28 @@ class ModuleAutoGen(AutoGen):
# @retval list The list of auto-generated file
#
def _GetAutoGenFileList(self):
- UniStringAutoGenC = True
- IdfStringAutoGenC = True
- UniStringBinBuffer = StringIO()
- IdfGenBinBuffer = StringIO()
- if self.BuildType == 'UEFI_HII':
- UniStringAutoGenC = False
- IdfStringAutoGenC = False
- if self._AutoGenFileList is None:
+ if not self._AutoGenFileList:
+ UniStringBinBuffer = StringIO()
+ IdfGenBinBuffer = StringIO()
+ if self.BuildType == 'UEFI_HII':
+ UniStringAutoGenC = False
+ IdfStringAutoGenC = False
+ else:
+ UniStringAutoGenC = True
+ IdfStringAutoGenC = True
self._AutoGenFileList = {}
- AutoGenC = TemplateString()
- AutoGenH = TemplateString()
- StringH = TemplateString()
- StringIdf = TemplateString()
+ AutoGenC = []
+ AutoGenH = []
+ StringH = []
+ StringIdf = []
GenC.CreateCode(self, AutoGenC, AutoGenH, StringH, UniStringAutoGenC, UniStringBinBuffer, StringIdf, IdfStringAutoGenC, IdfGenBinBuffer)
#
# AutoGen.c is generated if there are library classes in inf, or there are object files
#
+ AutoGenC = "".join(AutoGenC)
+ AutoGenH = "".join(AutoGenH)
+ StringH = "".join(StringH)
+ StringIdf = "".join(StringIdf)
if str(AutoGenC) != "" and (len(self.Module.LibraryClasses) > 0
or TAB_OBJECT_FILE in self.FileTypes):
AutoFile = PathClass(gAutoGenCodeFileName, self.DebugDir)
@@ -4269,10 +4274,7 @@ class ModuleAutoGen(AutoGen):
if DepexExpresion:
AsBuiltInfDict['depexsection_item'] = DepexExpresion
- AsBuiltInf = TemplateString()
- AsBuiltInf.Append(gAsBuiltInfHeaderString.Replace(AsBuiltInfDict))
-
- SaveFileOnChange(os.path.join(self.OutputDir, self.Name + '.inf'), str(AsBuiltInf), False)
+ SaveFileOnChange(os.path.join(self.OutputDir, self.Name + '.inf'), gAsBuiltInfHeaderString.Replace(AsBuiltInfDict), False)
self.IsAsBuiltInfCreated = True
if GlobalData.gBinCacheDest:
@@ -4317,7 +4319,7 @@ class ModuleAutoGen(AutoGen):
File = path.join(root, f)
shutil.copy2(File, self.OutputDir)
if self.Name == "PcdPeim" or self.Name == "PcdDxe":
- CreatePcdDatabaseCode(self, TemplateString(), TemplateString())
+ CreatePcdDatabaseCode(self)
return True
return False
@@ -4371,7 +4373,7 @@ class ModuleAutoGen(AutoGen):
# Need to generate PcdDatabase even PcdDriver is binarymodule
if self.IsBinaryModule and self.PcdIsDriver != '':
- CreatePcdDatabaseCode(self, TemplateString(), TemplateString())
+ CreatePcdDatabaseCode(self)
return
if self.IsBinaryModule:
if self.IsLibrary:
diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py
index 1be27d2b89e0..7f94fff382ce 100644
--- a/BaseTools/Source/Python/AutoGen/GenC.py
+++ b/BaseTools/Source/Python/AutoGen/GenC.py
@@ -802,7 +802,7 @@ def DynExPcdTokenNumberMapping(Info, AutoGenH):
PcdExList.append(Pcd)
if len(ExTokenCNameList) == 0:
return
- AutoGenH.Append('\n#define COMPAREGUID(Guid1, Guid2) (BOOLEAN)(*(CONST UINT64*)Guid1 == *(CONST UINT64*)Guid2 && *((CONST UINT64*)Guid1 + 1) == *((CONST UINT64*)Guid2 + 1))\n')
+ AutoGenH.append('\n#define COMPAREGUID(Guid1, Guid2) (BOOLEAN)(*(CONST UINT64*)Guid1 == *(CONST UINT64*)Guid2 && *((CONST UINT64*)Guid1 + 1) == *((CONST UINT64*)Guid2 + 1))\n')
# AutoGen for each PCD listed in a [PcdEx] section of a Module/Lib INF file.
# Auto generate a macro for each TokenName that takes a Guid pointer as a parameter.
# Use the Guid pointer to see if it matches any of the token space GUIDs.
@@ -821,14 +821,14 @@ def DynExPcdTokenNumberMapping(Info, AutoGenH):
if Pcd.TokenCName == TokenCName:
Index = Index + 1
if Index == 1:
- AutoGenH.Append('\n#define __PCD_%s_ADDR_CMP(GuidPtr) (' % (RealTokenCName))
- AutoGenH.Append('\\\n (GuidPtr == &%s) ? _PCD_TOKEN_%s_%s:'
+ AutoGenH.append('\n#define __PCD_%s_ADDR_CMP(GuidPtr) (' % (RealTokenCName))
+ AutoGenH.append('\\\n (GuidPtr == &%s) ? _PCD_TOKEN_%s_%s:'
% (Pcd.TokenSpaceGuidCName, Pcd.TokenSpaceGuidCName, RealTokenCName))
else:
- AutoGenH.Append('\\\n (GuidPtr == &%s) ? _PCD_TOKEN_%s_%s:'
+ AutoGenH.append('\\\n (GuidPtr == &%s) ? _PCD_TOKEN_%s_%s:'
% (Pcd.TokenSpaceGuidCName, Pcd.TokenSpaceGuidCName, RealTokenCName))
if Index == Count:
- AutoGenH.Append('0 \\\n )\n')
+ AutoGenH.append('0 \\\n )\n')
TokenCNameList.add(TokenCName)
TokenCNameList = set()
@@ -846,20 +846,20 @@ def DynExPcdTokenNumberMapping(Info, AutoGenH):
if Pcd.Type in PCD_DYNAMIC_EX_TYPE_SET and Pcd.TokenCName == TokenCName:
Index = Index + 1
if Index == 1:
- AutoGenH.Append('\n#define __PCD_%s_VAL_CMP(GuidPtr) (' % (RealTokenCName))
- AutoGenH.Append('\\\n (GuidPtr == NULL) ? 0:')
- AutoGenH.Append('\\\n COMPAREGUID (GuidPtr, &%s) ? _PCD_TOKEN_%s_%s:'
+ AutoGenH.append('\n#define __PCD_%s_VAL_CMP(GuidPtr) (' % (RealTokenCName))
+ AutoGenH.append('\\\n (GuidPtr == NULL) ? 0:')
+ AutoGenH.append('\\\n COMPAREGUID (GuidPtr, &%s) ? _PCD_TOKEN_%s_%s:'
% (Pcd.TokenSpaceGuidCName, Pcd.TokenSpaceGuidCName, RealTokenCName))
else:
- AutoGenH.Append('\\\n COMPAREGUID (GuidPtr, &%s) ? _PCD_TOKEN_%s_%s:'
+ AutoGenH.append('\\\n COMPAREGUID (GuidPtr, &%s) ? _PCD_TOKEN_%s_%s:'
% (Pcd.TokenSpaceGuidCName, Pcd.TokenSpaceGuidCName, RealTokenCName))
if Index == Count:
- AutoGenH.Append('0 \\\n )\n')
+ AutoGenH.append('0 \\\n )\n')
# Autogen internal worker macro to compare GUIDs. Guid1 is a pointer to a GUID.
# Guid2 is a C name for a GUID. Compare pointers first because optimizing compiler
# can do this at build time on CONST GUID pointers and optimize away call to COMPAREGUID().
# COMPAREGUID() will only be used if the Guid passed in is local to the module.
- AutoGenH.Append('#define _PCD_TOKEN_EX_%s(GuidPtr) __PCD_%s_ADDR_CMP(GuidPtr) ? __PCD_%s_ADDR_CMP(GuidPtr) : __PCD_%s_VAL_CMP(GuidPtr) \n'
+ AutoGenH.append('#define _PCD_TOKEN_EX_%s(GuidPtr) __PCD_%s_ADDR_CMP(GuidPtr) ? __PCD_%s_ADDR_CMP(GuidPtr) : __PCD_%s_VAL_CMP(GuidPtr) \n'
% (RealTokenCName, RealTokenCName, RealTokenCName, RealTokenCName))
TokenCNameList.add(TokenCName)
@@ -896,7 +896,7 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd):
# Add TokenSpaceGuidValue value to PcdTokenName to discriminate the DynamicEx PCDs with
# different Guids but same TokenCName
PcdExTokenName = '_PCD_TOKEN_' + Pcd.TokenSpaceGuidCName + '_' + TokenCName
- AutoGenH.Append('\n#define %s %dU\n' % (PcdExTokenName, TokenNumber))
+ AutoGenH.append('\n#define %s %dU\n' % (PcdExTokenName, TokenNumber))
else:
if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) not in PcdTokenNumber:
# If one of the Source built modules listed in the DSC is not listed in FDF modules,
@@ -915,7 +915,7 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd):
ExtraData="[%s]" % str(Info))
else:
TokenNumber = PcdTokenNumber[Pcd.TokenCName, Pcd.TokenSpaceGuidCName]
- AutoGenH.Append('\n#define %s %dU\n' % (PcdTokenName, TokenNumber))
+ AutoGenH.append('\n#define %s %dU\n' % (PcdTokenName, TokenNumber))
EdkLogger.debug(EdkLogger.DEBUG_3, "Creating code for " + TokenCName + "." + Pcd.TokenSpaceGuidCName)
if Pcd.Type not in gItemTypeStringDatabase:
@@ -946,26 +946,26 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd):
# If only PcdToken and PcdGet/Set used in all Pcds with different CName, it should succeed to build.
# If PcdToken and PcdGet/Set used in the Pcds with different Guids but same CName, it should failed to build.
if PcdExCNameTest > 1:
- AutoGenH.Append('// Disabled the macros, as PcdToken and PcdGet/Set are not allowed in the case that more than one DynamicEx Pcds are different Guids but same CName.\n')
- AutoGenH.Append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))
- AutoGenH.Append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// Disabled the macros, as PcdToken and PcdGet/Set are not allowed in the case that more than one DynamicEx Pcds are different Guids but same CName.\n')
+ AutoGenH.append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))
+ AutoGenH.append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('// #define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('// #define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))
- AutoGenH.Append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))
+ AutoGenH.append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('#define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('#define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
elif Pcd.Type in PCD_DYNAMIC_TYPE_SET:
PcdCNameTest = 0
for PcdModule in Info.LibraryPcdList + Info.ModulePcdList:
@@ -977,14 +977,14 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd):
if PcdCNameTest > 1:
EdkLogger.error("build", AUTOGEN_ERROR, "More than one Dynamic Pcds [%s] are different Guids but same CName. They need to be changed to DynamicEx type to avoid the confliction.\n" % (TokenCName), ExtraData="[%s]" % str(Info.MetaFile.Path))
else:
- AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))
- AutoGenH.Append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))
+ AutoGenH.append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
else:
- AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))
- AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
else:
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[Pcd.Type] + '_' + TokenCName
Const = 'const'
@@ -1107,57 +1107,57 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd):
#
# For unicode, UINT16 array will be generated, so the alignment of unicode is guaranteed.
#
- AutoGenH.Append('#define %s %s%s\n' %(PcdValueName, Type, PcdVariableName))
+ AutoGenH.append('#define %s %s%s\n' %(PcdValueName, Type, PcdVariableName))
if Unicode:
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s UINT16 %s%s = %s;\n' % (Const, PcdVariableName, Array, Value))
- AutoGenH.Append('extern %s UINT16 %s%s;\n' %(Const, PcdVariableName, Array))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED %s UINT16 %s%s = %s;\n' % (Const, PcdVariableName, Array, Value))
+ AutoGenH.append('extern %s UINT16 %s%s;\n' %(Const, PcdVariableName, Array))
else:
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s UINT8 %s%s = %s;\n' % (Const, PcdVariableName, Array, Value))
- AutoGenH.Append('extern %s UINT8 %s%s;\n' %(Const, PcdVariableName, Array))
- AutoGenH.Append('#define %s %s%s\n' %(GetModeName, Type, PcdVariableName))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED %s UINT8 %s%s = %s;\n' % (Const, PcdVariableName, Array, Value))
+ AutoGenH.append('extern %s UINT8 %s%s;\n' %(Const, PcdVariableName, Array))
+ AutoGenH.append('#define %s %s%s\n' %(GetModeName, Type, PcdVariableName))
PcdDataSize = Pcd.GetPcdSize()
if Pcd.Type == TAB_PCDS_FIXED_AT_BUILD:
- AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
- AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,FixPcdSizeTokenName))
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED const UINTN %s = %s;\n' % (FixedPcdSizeVariableName,PcdDataSize))
+ AutoGenH.append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
+ AutoGenH.append('#define %s %s \n' % (GetModeSizeName,FixPcdSizeTokenName))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED const UINTN %s = %s;\n' % (FixedPcdSizeVariableName,PcdDataSize))
if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:
- AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, Pcd.MaxDatumSize))
- AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,PatchPcdSizeVariableName))
- AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariableName)
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = %s;\n' % (PatchPcdSizeVariableName,PcdDataSize))
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED const UINTN %s = %s;\n' % (PatchPcdMaxSizeVariable,Pcd.MaxDatumSize))
+ AutoGenH.append('#define %s %s\n' % (PatchPcdSizeTokenName, Pcd.MaxDatumSize))
+ AutoGenH.append('#define %s %s \n' % (GetModeSizeName,PatchPcdSizeVariableName))
+ AutoGenH.append('extern UINTN %s; \n' % PatchPcdSizeVariableName)
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = %s;\n' % (PatchPcdSizeVariableName,PcdDataSize))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED const UINTN %s = %s;\n' % (PatchPcdMaxSizeVariable,Pcd.MaxDatumSize))
elif Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:
- AutoGenH.Append('#define %s %s\n' %(PcdValueName, Value))
- AutoGenC.Append('volatile %s %s %s = %s;\n' %(Const, Pcd.DatumType, PcdVariableName, PcdValueName))
- AutoGenH.Append('extern volatile %s %s %s%s;\n' % (Const, Pcd.DatumType, PcdVariableName, Array))
- AutoGenH.Append('#define %s %s%s\n' % (GetModeName, Type, PcdVariableName))
+ AutoGenH.append('#define %s %s\n' %(PcdValueName, Value))
+ AutoGenC.append('volatile %s %s %s = %s;\n' %(Const, Pcd.DatumType, PcdVariableName, PcdValueName))
+ AutoGenH.append('extern volatile %s %s %s%s;\n' % (Const, Pcd.DatumType, PcdVariableName, Array))
+ AutoGenH.append('#define %s %s%s\n' % (GetModeName, Type, PcdVariableName))
PcdDataSize = Pcd.GetPcdSize()
- AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, PcdDataSize))
+ AutoGenH.append('#define %s %s\n' % (PatchPcdSizeTokenName, PcdDataSize))
- AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,PatchPcdSizeVariableName))
- AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariableName)
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = %s;\n' % (PatchPcdSizeVariableName,PcdDataSize))
+ AutoGenH.append('#define %s %s \n' % (GetModeSizeName,PatchPcdSizeVariableName))
+ AutoGenH.append('extern UINTN %s; \n' % PatchPcdSizeVariableName)
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED UINTN %s = %s;\n' % (PatchPcdSizeVariableName,PcdDataSize))
else:
PcdDataSize = Pcd.GetPcdSize()
- AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
- AutoGenH.Append('#define %s %s \n' % (GetModeSizeName,FixPcdSizeTokenName))
+ AutoGenH.append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
+ AutoGenH.append('#define %s %s \n' % (GetModeSizeName,FixPcdSizeTokenName))
- AutoGenH.Append('#define %s %s\n' %(PcdValueName, Value))
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s %s = %s;\n' %(Const, Pcd.DatumType, PcdVariableName, PcdValueName))
- AutoGenH.Append('extern %s %s %s%s;\n' % (Const, Pcd.DatumType, PcdVariableName, Array))
- AutoGenH.Append('#define %s %s%s\n' % (GetModeName, Type, PcdVariableName))
+ AutoGenH.append('#define %s %s\n' %(PcdValueName, Value))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s %s = %s;\n' %(Const, Pcd.DatumType, PcdVariableName, PcdValueName))
+ AutoGenH.append('extern %s %s %s%s;\n' % (Const, Pcd.DatumType, PcdVariableName, Array))
+ AutoGenH.append('#define %s %s%s\n' % (GetModeName, Type, PcdVariableName))
if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE:
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &_gPcd_BinaryPatch_Size_%s, (UINTN)_PCD_PATCHABLE_%s_SIZE, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, Pcd.TokenCName, Pcd.TokenCName, Pcd.TokenCName))
else:
- AutoGenH.Append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))
- AutoGenH.Append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS) \n' % (SetModeStatusName, PcdVariableName))
+ AutoGenH.append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))
+ AutoGenH.append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS) \n' % (SetModeStatusName, PcdVariableName))
else:
- AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)
+ AutoGenH.append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)
## Create code for library module PCDs
#
@@ -1229,7 +1229,7 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
PcdItemType = Pcd.Type
if PcdItemType in PCD_DYNAMIC_EX_TYPE_SET:
PcdExTokenName = '_PCD_TOKEN_' + TokenSpaceGuidCName + '_' + TokenCName
- AutoGenH.Append('\n#define %s %dU\n' % (PcdExTokenName, TokenNumber))
+ AutoGenH.append('\n#define %s %dU\n' % (PcdExTokenName, TokenNumber))
if Info.IsLibrary:
PcdList = Info.LibraryPcdList
@@ -1246,28 +1246,28 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
# If only PcdGet/Set used in all Pcds with different CName, it should succeed to build.
# If PcdGet/Set used in the Pcds with different Guids but same CName, it should failed to build.
if PcdExCNameTest > 1:
- AutoGenH.Append('// Disabled the macros, as PcdToken and PcdGet/Set are not allowed in the case that more than one DynamicEx Pcds are different Guids but same CName.\n')
- AutoGenH.Append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))
- AutoGenH.Append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// Disabled the macros, as PcdToken and PcdGet/Set are not allowed in the case that more than one DynamicEx Pcds are different Guids but same CName.\n')
+ AutoGenH.append('// #define %s %s\n' % (PcdTokenName, PcdExTokenName))
+ AutoGenH.append('// #define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('// #define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('// #define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('// #define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))
- AutoGenH.Append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s %s\n' % (PcdTokenName, PcdExTokenName))
+ AutoGenH.append('#define %s LibPcdGetEx%s(&%s, %s)\n' % (GetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s LibPcdGetExSize(&%s, %s)\n' % (GetModeSizeName,Pcd.TokenSpaceGuidCName, PcdTokenName))
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%s(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSetEx%sS(&%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('#define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
- AutoGenH.Append('#define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSetEx%s(&%s, %s, (Value))\n' % (SetModeName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSetEx%sS(&%s, %s, (Value))\n' % (SetModeStatusName, DatumSizeLib, Pcd.TokenSpaceGuidCName, PcdTokenName))
else:
- AutoGenH.Append('#define _PCD_TOKEN_%s %dU\n' % (TokenCName, TokenNumber))
+ AutoGenH.append('#define _PCD_TOKEN_%s %dU\n' % (TokenCName, TokenNumber))
if PcdItemType in PCD_DYNAMIC_TYPE_SET:
PcdList = []
PcdCNameList = []
@@ -1279,14 +1279,14 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
if PcdCNameList.count(Pcd.TokenCName) > 1:
EdkLogger.error("build", AUTOGEN_ERROR, "More than one Dynamic Pcds [%s] are different Guids but same CName.They need to be changed to DynamicEx type to avoid the confliction.\n" % (TokenCName), ExtraData="[%s]" % str(Info.MetaFile.Path))
else:
- AutoGenH.Append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))
- AutoGenH.Append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))
+ AutoGenH.append('#define %s LibPcdGet%s(%s)\n' % (GetModeName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s LibPcdGetSize(%s)\n' % (GetModeSizeName, PcdTokenName))
if DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%s(%s, (SizeOfBuffer), (Buffer))\n' %(SetModeName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPcdSet%sS(%s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
else:
- AutoGenH.Append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))
- AutoGenH.Append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSet%s(%s, (Value))\n' % (SetModeName, DatumSizeLib, PcdTokenName))
+ AutoGenH.append('#define %s(Value) LibPcdSet%sS(%s, (Value))\n' % (SetModeStatusName, DatumSizeLib, PcdTokenName))
if PcdItemType == TAB_PCDS_PATCHABLE_IN_MODULE:
GetModeMaxSizeName = '_PCD_GET_MODE_MAXSIZE' + '_' + TokenCName
PcdVariableName = '_gPcd_' + gItemTypeStringDatabase[TAB_PCDS_PATCHABLE_IN_MODULE] + '_' + TokenCName
@@ -1295,23 +1295,23 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
DatumType = [TAB_UINT8, TAB_UINT16][Pcd.DefaultValue[0] == 'L']
else:
DatumType = TAB_UINT8
- AutoGenH.Append('extern %s _gPcd_BinaryPatch_%s%s;\n' %(DatumType, TokenCName, Array))
+ AutoGenH.append('extern %s _gPcd_BinaryPatch_%s%s;\n' %(DatumType, TokenCName, Array))
else:
- AutoGenH.Append('extern volatile %s %s%s;\n' % (DatumType, PcdVariableName, Array))
- AutoGenH.Append('#define %s %s_gPcd_BinaryPatch_%s\n' %(GetModeName, Type, TokenCName))
+ AutoGenH.append('extern volatile %s %s%s;\n' % (DatumType, PcdVariableName, Array))
+ AutoGenH.append('#define %s %s_gPcd_BinaryPatch_%s\n' %(GetModeName, Type, TokenCName))
PcdDataSize = Pcd.GetPcdSize()
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))
- AutoGenH.Append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))
- AutoGenH.Append('#define %s %s\n' % (GetModeMaxSizeName, PatchPcdMaxSizeVariable))
- AutoGenH.Append('extern const UINTN %s; \n' % PatchPcdMaxSizeVariable)
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSize((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))
+ AutoGenH.append('#define %s(SizeOfBuffer, Buffer) LibPatchPcdSetPtrAndSizeS((VOID *)_gPcd_BinaryPatch_%s, &%s, %s, (SizeOfBuffer), (Buffer))\n' % (SetModeStatusName, TokenCName, PatchPcdSizeVariableName, PatchPcdMaxSizeVariable))
+ AutoGenH.append('#define %s %s\n' % (GetModeMaxSizeName, PatchPcdMaxSizeVariable))
+ AutoGenH.append('extern const UINTN %s; \n' % PatchPcdMaxSizeVariable)
else:
- AutoGenH.Append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))
- AutoGenH.Append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS)\n' % (SetModeStatusName, PcdVariableName))
- AutoGenH.Append('#define %s %s\n' % (PatchPcdSizeTokenName, PcdDataSize))
+ AutoGenH.append('#define %s(Value) (%s = (Value))\n' % (SetModeName, PcdVariableName))
+ AutoGenH.append('#define %s(Value) ((%s = (Value)), RETURN_SUCCESS)\n' % (SetModeStatusName, PcdVariableName))
+ AutoGenH.append('#define %s %s\n' % (PatchPcdSizeTokenName, PcdDataSize))
- AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,PatchPcdSizeVariableName))
- AutoGenH.Append('extern UINTN %s; \n' % PatchPcdSizeVariableName)
+ AutoGenH.append('#define %s %s\n' % (GetModeSizeName,PatchPcdSizeVariableName))
+ AutoGenH.append('extern UINTN %s; \n' % PatchPcdSizeVariableName)
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD or PcdItemType == TAB_PCDS_FEATURE_FLAG:
key = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))
@@ -1320,9 +1320,9 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
DatumType = [TAB_UINT8, TAB_UINT16][Pcd.DefaultValue[0] == 'L']
if DatumType not in TAB_PCD_NUMERIC_TYPES_VOID:
DatumType = TAB_UINT8
- AutoGenH.Append('extern const %s _gPcd_FixedAtBuild_%s%s;\n' %(DatumType, TokenCName, Array))
- AutoGenH.Append('#define %s %s_gPcd_FixedAtBuild_%s\n' %(GetModeName, Type, TokenCName))
- AutoGenH.Append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)
+ AutoGenH.append('extern const %s _gPcd_FixedAtBuild_%s%s;\n' %(DatumType, TokenCName, Array))
+ AutoGenH.append('#define %s %s_gPcd_FixedAtBuild_%s\n' %(GetModeName, Type, TokenCName))
+ AutoGenH.append('//#define %s ASSERT(FALSE) // It is not allowed to set value for a FIXED_AT_BUILD PCD\n' % SetModeName)
ConstFixedPcd = False
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD and (key in Info.ConstPcd or (Info.IsLibrary and not Info._ReferenceModules)):
@@ -1330,22 +1330,22 @@ def CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd):
if key in Info.ConstPcd:
Pcd.DefaultValue = Info.ConstPcd[key]
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
- AutoGenH.Append('#define _PCD_VALUE_%s %s%s\n' %(TokenCName, Type, PcdVariableName))
+ AutoGenH.append('#define _PCD_VALUE_%s %s%s\n' %(TokenCName, Type, PcdVariableName))
else:
- AutoGenH.Append('#define _PCD_VALUE_%s %s\n' %(TokenCName, Pcd.DefaultValue))
+ AutoGenH.append('#define _PCD_VALUE_%s %s\n' %(TokenCName, Pcd.DefaultValue))
PcdDataSize = Pcd.GetPcdSize()
if PcdItemType == TAB_PCDS_FIXED_AT_BUILD:
if Pcd.DatumType not in TAB_PCD_NUMERIC_TYPES:
if ConstFixedPcd:
- AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
- AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixPcdSizeTokenName))
+ AutoGenH.append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
+ AutoGenH.append('#define %s %s\n' % (GetModeSizeName,FixPcdSizeTokenName))
else:
- AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixedPcdSizeVariableName))
- AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName,FixedPcdSizeVariableName))
- AutoGenH.Append('extern const UINTN %s; \n' % FixedPcdSizeVariableName)
+ AutoGenH.append('#define %s %s\n' % (GetModeSizeName,FixedPcdSizeVariableName))
+ AutoGenH.append('#define %s %s\n' % (FixPcdSizeTokenName,FixedPcdSizeVariableName))
+ AutoGenH.append('extern const UINTN %s; \n' % FixedPcdSizeVariableName)
else:
- AutoGenH.Append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
- AutoGenH.Append('#define %s %s\n' % (GetModeSizeName,FixPcdSizeTokenName))
+ AutoGenH.append('#define %s %s\n' % (FixPcdSizeTokenName, PcdDataSize))
+ AutoGenH.append('#define %s %s\n' % (GetModeSizeName,FixPcdSizeTokenName))
## Create code for library constructor
#
@@ -1357,8 +1357,8 @@ def CreateLibraryConstructorCode(Info, AutoGenC, AutoGenH):
#
# Library Constructors
#
- ConstructorPrototypeString = TemplateString()
- ConstructorCallingString = TemplateString()
+ ConstructorPrototypeString = []
+ ConstructorCallingString = []
if Info.IsLibrary:
DependentLibraryList = [Info.Module]
else:
@@ -1368,27 +1368,21 @@ def CreateLibraryConstructorCode(Info, AutoGenC, AutoGenH):
continue
Dict = {'Function':Lib.ConstructorList}
if Lib.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC]:
- ConstructorPrototypeString.Append(gLibraryStructorPrototype[SUP_MODULE_BASE].Replace(Dict))
- ConstructorCallingString.Append(gLibraryStructorCall[SUP_MODULE_BASE].Replace(Dict))
+ ConstructorPrototypeString.append(gLibraryStructorPrototype[SUP_MODULE_BASE].Replace(Dict))
+ ConstructorCallingString.append(gLibraryStructorCall[SUP_MODULE_BASE].Replace(Dict))
elif Lib.ModuleType in SUP_MODULE_SET_PEI:
- ConstructorPrototypeString.Append(gLibraryStructorPrototype['PEI'].Replace(Dict))
- ConstructorCallingString.Append(gLibraryStructorCall['PEI'].Replace(Dict))
+ ConstructorPrototypeString.append(gLibraryStructorPrototype['PEI'].Replace(Dict))
+ ConstructorCallingString.append(gLibraryStructorCall['PEI'].Replace(Dict))
elif Lib.ModuleType in [SUP_MODULE_DXE_CORE,SUP_MODULE_DXE_DRIVER,SUP_MODULE_DXE_SMM_DRIVER,SUP_MODULE_DXE_RUNTIME_DRIVER,
SUP_MODULE_DXE_SAL_DRIVER,SUP_MODULE_UEFI_DRIVER,SUP_MODULE_UEFI_APPLICATION,SUP_MODULE_SMM_CORE]:
- ConstructorPrototypeString.Append(gLibraryStructorPrototype['DXE'].Replace(Dict))
- ConstructorCallingString.Append(gLibraryStructorCall['DXE'].Replace(Dict))
+ ConstructorPrototypeString.append(gLibraryStructorPrototype['DXE'].Replace(Dict))
+ ConstructorCallingString.append(gLibraryStructorCall['DXE'].Replace(Dict))
elif Lib.ModuleType in [SUP_MODULE_MM_STANDALONE,SUP_MODULE_MM_CORE_STANDALONE]:
- ConstructorPrototypeString.Append(gLibraryStructorPrototype['MM'].Replace(Dict))
- ConstructorCallingString.Append(gLibraryStructorCall['MM'].Replace(Dict))
+ ConstructorPrototypeString.append(gLibraryStructorPrototype['MM'].Replace(Dict))
+ ConstructorCallingString.append(gLibraryStructorCall['MM'].Replace(Dict))
- if str(ConstructorPrototypeString) == '':
- ConstructorPrototypeList = []
- else:
- ConstructorPrototypeList = [str(ConstructorPrototypeString)]
- if str(ConstructorCallingString) == '':
- ConstructorCallingList = []
- else:
- ConstructorCallingList = [str(ConstructorCallingString)]
+ ConstructorPrototypeList = ["".join(ConstructorPrototypeString)]
+ ConstructorCallingList = ["".join(ConstructorCallingString)]
Dict = {
'Type' : 'Constructor',
@@ -1396,17 +1390,17 @@ def CreateLibraryConstructorCode(Info, AutoGenC, AutoGenH):
'FunctionCall' : ConstructorCallingList
}
if Info.IsLibrary:
- AutoGenH.Append("${BEGIN}${FunctionPrototype}${END}", Dict)
+ AutoGenH.append(TemplateString("${BEGIN}${FunctionPrototype}${END}").Replace(Dict))
else:
if Info.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC]:
- AutoGenC.Append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
+ AutoGenC.append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
elif Info.ModuleType in SUP_MODULE_SET_PEI:
- AutoGenC.Append(gLibraryString['PEI'].Replace(Dict))
+ AutoGenC.append(gLibraryString['PEI'].Replace(Dict))
elif Info.ModuleType in [SUP_MODULE_DXE_CORE,SUP_MODULE_DXE_DRIVER,SUP_MODULE_DXE_SMM_DRIVER,SUP_MODULE_DXE_RUNTIME_DRIVER,
SUP_MODULE_DXE_SAL_DRIVER,SUP_MODULE_UEFI_DRIVER,SUP_MODULE_UEFI_APPLICATION,SUP_MODULE_SMM_CORE]:
- AutoGenC.Append(gLibraryString['DXE'].Replace(Dict))
+ AutoGenC.append(gLibraryString['DXE'].Replace(Dict))
elif Info.ModuleType in [SUP_MODULE_MM_STANDALONE,SUP_MODULE_MM_CORE_STANDALONE]:
- AutoGenC.Append(gLibraryString['MM'].Replace(Dict))
+ AutoGenC.append(gLibraryString['MM'].Replace(Dict))
## Create code for library destructor
#
@@ -1458,17 +1452,17 @@ def CreateLibraryDestructorCode(Info, AutoGenC, AutoGenH):
'FunctionCall' : DestructorCallingList
}
if Info.IsLibrary:
- AutoGenH.Append("${BEGIN}${FunctionPrototype}${END}", Dict)
+ AutoGenH.append(TemplateString("${BEGIN}${FunctionPrototype}${END}").Replace(Dict))
else:
if Info.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC]:
- AutoGenC.Append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
+ AutoGenC.append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
elif Info.ModuleType in SUP_MODULE_SET_PEI:
- AutoGenC.Append(gLibraryString['PEI'].Replace(Dict))
+ AutoGenC.append(gLibraryString['PEI'].Replace(Dict))
elif Info.ModuleType in [SUP_MODULE_DXE_CORE,SUP_MODULE_DXE_DRIVER,SUP_MODULE_DXE_SMM_DRIVER,SUP_MODULE_DXE_RUNTIME_DRIVER,
SUP_MODULE_DXE_SAL_DRIVER,SUP_MODULE_UEFI_DRIVER,SUP_MODULE_UEFI_APPLICATION,SUP_MODULE_SMM_CORE]:
- AutoGenC.Append(gLibraryString['DXE'].Replace(Dict))
+ AutoGenC.append(gLibraryString['DXE'].Replace(Dict))
elif Info.ModuleType in [SUP_MODULE_MM_STANDALONE,SUP_MODULE_MM_CORE_STANDALONE]:
- AutoGenC.Append(gLibraryString['MM'].Replace(Dict))
+ AutoGenC.append(gLibraryString['MM'].Replace(Dict))
## Create code for ModuleEntryPoint
@@ -1509,47 +1503,47 @@ def CreateModuleEntryPointCode(Info, AutoGenC, AutoGenH):
ExtraData= ", ".join(Info.Module.ModuleEntryPointList)
)
if Info.ModuleType == SUP_MODULE_PEI_CORE:
- AutoGenC.Append(gPeiCoreEntryPointString.Replace(Dict))
- AutoGenH.Append(gPeiCoreEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gPeiCoreEntryPointString.Replace(Dict))
+ AutoGenH.append(gPeiCoreEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_DXE_CORE:
- AutoGenC.Append(gDxeCoreEntryPointString.Replace(Dict))
- AutoGenH.Append(gDxeCoreEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gDxeCoreEntryPointString.Replace(Dict))
+ AutoGenH.append(gDxeCoreEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_SMM_CORE:
- AutoGenC.Append(gSmmCoreEntryPointString.Replace(Dict))
- AutoGenH.Append(gSmmCoreEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gSmmCoreEntryPointString.Replace(Dict))
+ AutoGenH.append(gSmmCoreEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_MM_CORE_STANDALONE:
- AutoGenC.Append(gMmCoreStandaloneEntryPointString.Replace(Dict))
- AutoGenH.Append(gMmCoreStandaloneEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gMmCoreStandaloneEntryPointString.Replace(Dict))
+ AutoGenH.append(gMmCoreStandaloneEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_PEIM:
if NumEntryPoints < 2:
- AutoGenC.Append(gPeimEntryPointString[NumEntryPoints].Replace(Dict))
+ AutoGenC.append(gPeimEntryPointString[NumEntryPoints].Replace(Dict))
else:
- AutoGenC.Append(gPeimEntryPointString[2].Replace(Dict))
- AutoGenH.Append(gPeimEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gPeimEntryPointString[2].Replace(Dict))
+ AutoGenH.append(gPeimEntryPointPrototype.Replace(Dict))
elif Info.ModuleType in [SUP_MODULE_DXE_RUNTIME_DRIVER,SUP_MODULE_DXE_DRIVER,SUP_MODULE_DXE_SAL_DRIVER,SUP_MODULE_UEFI_DRIVER]:
if NumEntryPoints < 2:
- AutoGenC.Append(gUefiDriverEntryPointString[NumEntryPoints].Replace(Dict))
+ AutoGenC.append(gUefiDriverEntryPointString[NumEntryPoints].Replace(Dict))
else:
- AutoGenC.Append(gUefiDriverEntryPointString[2].Replace(Dict))
- AutoGenH.Append(gUefiDriverEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gUefiDriverEntryPointString[2].Replace(Dict))
+ AutoGenH.append(gUefiDriverEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_DXE_SMM_DRIVER:
if NumEntryPoints == 0:
- AutoGenC.Append(gDxeSmmEntryPointString[0].Replace(Dict))
+ AutoGenC.append(gDxeSmmEntryPointString[0].Replace(Dict))
else:
- AutoGenC.Append(gDxeSmmEntryPointString[1].Replace(Dict))
- AutoGenH.Append(gDxeSmmEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gDxeSmmEntryPointString[1].Replace(Dict))
+ AutoGenH.append(gDxeSmmEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_MM_STANDALONE:
if NumEntryPoints < 2:
- AutoGenC.Append(gMmStandaloneEntryPointString[NumEntryPoints].Replace(Dict))
+ AutoGenC.append(gMmStandaloneEntryPointString[NumEntryPoints].Replace(Dict))
else:
- AutoGenC.Append(gMmStandaloneEntryPointString[2].Replace(Dict))
- AutoGenH.Append(gMmStandaloneEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gMmStandaloneEntryPointString[2].Replace(Dict))
+ AutoGenH.append(gMmStandaloneEntryPointPrototype.Replace(Dict))
elif Info.ModuleType == SUP_MODULE_UEFI_APPLICATION:
if NumEntryPoints < 2:
- AutoGenC.Append(gUefiApplicationEntryPointString[NumEntryPoints].Replace(Dict))
+ AutoGenC.append(gUefiApplicationEntryPointString[NumEntryPoints].Replace(Dict))
else:
- AutoGenC.Append(gUefiApplicationEntryPointString[2].Replace(Dict))
- AutoGenH.Append(gUefiApplicationEntryPointPrototype.Replace(Dict))
+ AutoGenC.append(gUefiApplicationEntryPointString[2].Replace(Dict))
+ AutoGenH.append(gUefiApplicationEntryPointPrototype.Replace(Dict))
## Create code for ModuleUnloadImage
#
@@ -1566,10 +1560,10 @@ def CreateModuleUnloadImageCode(Info, AutoGenC, AutoGenH):
NumUnloadImage = len(Info.Module.ModuleUnloadImageList)
Dict = {'Count':str(NumUnloadImage) + 'U', 'Function':Info.Module.ModuleUnloadImageList}
if NumUnloadImage < 2:
- AutoGenC.Append(gUefiUnloadImageString[NumUnloadImage].Replace(Dict))
+ AutoGenC.append(gUefiUnloadImageString[NumUnloadImage].Replace(Dict))
else:
- AutoGenC.Append(gUefiUnloadImageString[2].Replace(Dict))
- AutoGenH.Append(gUefiUnloadImagePrototype.Replace(Dict))
+ AutoGenC.append(gUefiUnloadImageString[2].Replace(Dict))
+ AutoGenH.append(gUefiUnloadImagePrototype.Replace(Dict))
## Create code for GUID
#
@@ -1585,15 +1579,15 @@ def CreateGuidDefinitionCode(Info, AutoGenC, AutoGenH):
if Info.GuidList:
if not Info.IsLibrary:
- AutoGenC.Append("\n// Guids\n")
- AutoGenH.Append("\n// Guids\n")
+ AutoGenC.append("\n// Guids\n")
+ AutoGenH.append("\n// Guids\n")
#
# GUIDs
#
for Key in Info.GuidList:
if not Info.IsLibrary:
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.GuidList[Key]))
- AutoGenH.Append('extern %s %s;\n' % (GuidType, Key))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.GuidList[Key]))
+ AutoGenH.append('extern %s %s;\n' % (GuidType, Key))
## Create code for protocol
#
@@ -1609,15 +1603,15 @@ def CreateProtocolDefinitionCode(Info, AutoGenC, AutoGenH):
if Info.ProtocolList:
if not Info.IsLibrary:
- AutoGenC.Append("\n// Protocols\n")
- AutoGenH.Append("\n// Protocols\n")
+ AutoGenC.append("\n// Protocols\n")
+ AutoGenH.append("\n// Protocols\n")
#
# Protocol GUIDs
#
for Key in Info.ProtocolList:
if not Info.IsLibrary:
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.ProtocolList[Key]))
- AutoGenH.Append('extern %s %s;\n' % (GuidType, Key))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.ProtocolList[Key]))
+ AutoGenH.append('extern %s %s;\n' % (GuidType, Key))
## Create code for PPI
#
@@ -1633,15 +1627,15 @@ def CreatePpiDefinitionCode(Info, AutoGenC, AutoGenH):
if Info.PpiList:
if not Info.IsLibrary:
- AutoGenC.Append("\n// PPIs\n")
- AutoGenH.Append("\n// PPIs\n")
+ AutoGenC.append("\n// PPIs\n")
+ AutoGenH.append("\n// PPIs\n")
#
# PPI GUIDs
#
for Key in Info.PpiList:
if not Info.IsLibrary:
- AutoGenC.Append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.PpiList[Key]))
- AutoGenH.Append('extern %s %s;\n' % (GuidType, Key))
+ AutoGenC.append('GLOBAL_REMOVE_IF_UNREFERENCED %s %s = %s;\n' % (GuidType, Key, Info.PpiList[Key]))
+ AutoGenH.append('extern %s %s;\n' % (GuidType, Key))
## Create code for PCD
#
@@ -1658,36 +1652,36 @@ def CreatePcdCode(Info, AutoGenC, AutoGenH):
TokenSpaceList += [Pcd.TokenSpaceGuidCName]
SkuMgr = Info.Workspace.Platform.SkuIdMgr
- AutoGenH.Append("\n// Definition of SkuId Array\n")
- AutoGenH.Append("extern UINT64 _gPcd_SkuId_Array[];\n")
+ AutoGenH.append("\n// Definition of SkuId Array\n")
+ AutoGenH.append("extern UINT64 _gPcd_SkuId_Array[];\n")
# Add extern declarations to AutoGen.h if one or more Token Space GUIDs were found
if TokenSpaceList:
- AutoGenH.Append("\n// Definition of PCD Token Space GUIDs used in this module\n\n")
+ AutoGenH.append("\n// Definition of PCD Token Space GUIDs used in this module\n\n")
if Info.ModuleType in [SUP_MODULE_USER_DEFINED, SUP_MODULE_BASE]:
GuidType = TAB_GUID
else:
GuidType = "EFI_GUID"
for Item in TokenSpaceList:
- AutoGenH.Append('extern %s %s;\n' % (GuidType, Item))
+ AutoGenH.append('extern %s %s;\n' % (GuidType, Item))
if Info.IsLibrary:
if Info.ModulePcdList:
- AutoGenH.Append("\n// PCD definitions\n")
+ AutoGenH.append("\n// PCD definitions\n")
for Pcd in Info.ModulePcdList:
CreateLibraryPcdCode(Info, AutoGenC, AutoGenH, Pcd)
DynExPcdTokenNumberMapping (Info, AutoGenH)
else:
- AutoGenC.Append("\n// Definition of SkuId Array\n")
- AutoGenC.Append("GLOBAL_REMOVE_IF_UNREFERENCED UINT64 _gPcd_SkuId_Array[] = %s;\n" % SkuMgr.DumpSkuIdArrary())
+ AutoGenC.append("\n// Definition of SkuId Array\n")
+ AutoGenC.append("GLOBAL_REMOVE_IF_UNREFERENCED UINT64 _gPcd_SkuId_Array[] = %s;\n" % SkuMgr.DumpSkuIdArrary())
if Info.ModulePcdList:
- AutoGenH.Append("\n// Definition of PCDs used in this module\n")
- AutoGenC.Append("\n// Definition of PCDs used in this module\n")
+ AutoGenH.append("\n// Definition of PCDs used in this module\n")
+ AutoGenC.append("\n// Definition of PCDs used in this module\n")
for Pcd in Info.ModulePcdList:
CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd)
DynExPcdTokenNumberMapping (Info, AutoGenH)
if Info.LibraryPcdList:
- AutoGenH.Append("\n// Definition of PCDs used in libraries is in AutoGen.c\n")
- AutoGenC.Append("\n// Definition of PCDs used in libraries\n")
+ AutoGenH.append("\n// Definition of PCDs used in libraries is in AutoGen.c\n")
+ AutoGenC.append("\n// Definition of PCDs used in libraries\n")
for Pcd in Info.LibraryPcdList:
CreateModulePcdCode(Info, AutoGenC, AutoGenC, Pcd)
CreatePcdDatabaseCode(Info, AutoGenC, AutoGenH)
@@ -1749,13 +1743,13 @@ def CreateUnicodeStringCode(Info, AutoGenC, AutoGenH, UniGenCFlag, UniGenBinBuff
FilterInfo = [EDK2Module] + [Info.PlatformInfo.Platform.ISOLanguages]
Header, Code = GetStringFiles(Info.UnicodeFileList, SrcList, IncList, Info.IncludePathList, ['.uni', '.inf'], Info.Name, CompatibleMode, ShellMode, UniGenCFlag, UniGenBinBuffer, FilterInfo)
if CompatibleMode or UniGenCFlag:
- AutoGenC.Append("\n//\n//Unicode String Pack Definition\n//\n")
- AutoGenC.Append(Code)
- AutoGenC.Append("\n")
- AutoGenH.Append("\n//\n//Unicode String ID\n//\n")
- AutoGenH.Append(Header)
+ AutoGenC.append("\n//\n//Unicode String Pack Definition\n//\n")
+ AutoGenC.append(Code)
+ AutoGenC.append("\n")
+ AutoGenH.append("\n//\n//Unicode String ID\n//\n")
+ AutoGenH.append(Header)
if CompatibleMode or UniGenCFlag:
- AutoGenH.Append("\n#define STRING_ARRAY_NAME %sStrings\n" % Info.Name)
+ AutoGenH.append("\n#define STRING_ARRAY_NAME %sStrings\n" % Info.Name)
os.chdir(WorkingDir)
def CreateIdfFileCode(Info, AutoGenC, StringH, IdfGenCFlag, IdfGenBinBuffer):
@@ -1769,7 +1763,7 @@ def CreateIdfFileCode(Info, AutoGenC, StringH, IdfGenCFlag, IdfGenBinBuffer):
SkipList = ['.jpg', '.png', '.bmp', '.inf', '.idf']
FileList = GetFileList(SrcList, IncList, SkipList)
ValueStartPtr = 60
- StringH.Append("\n//\n//Image ID\n//\n")
+ StringH.append("\n//\n//Image ID\n//\n")
ImageInfoOffset = 0
PaletteInfoOffset = 0
ImageBuffer = pack('x')
@@ -1810,7 +1804,7 @@ def CreateIdfFileCode(Info, AutoGenC, StringH, IdfGenCFlag, IdfGenBinBuffer):
BufferStr = WriteLine(BufferStr, '// %s: %s: %s' % (DecToHexStr(Index, 4), ID, DecToHexStr(Index, 4)))
TempBufferList = AscToHexList(DuplicateBlock)
BufferStr = WriteLine(BufferStr, CreateArrayItem(TempBufferList, 16) + '\n')
- StringH.Append(Line)
+ StringH.append(Line)
Index += 1
continue
@@ -1843,7 +1837,7 @@ def CreateIdfFileCode(Info, AutoGenC, StringH, IdfGenCFlag, IdfGenBinBuffer):
TempBufferList = AscToHexList(TempBuffer)
BufferStr = WriteLine(BufferStr, CreateArrayItem(TempBufferList, 16) + '\n')
- StringH.Append(Line)
+ StringH.append(Line)
Index += 1
BufferStr = WriteLine(BufferStr, '// End of the Image Info')
@@ -1881,7 +1875,7 @@ def CreateIdfFileCode(Info, AutoGenC, StringH, IdfGenCFlag, IdfGenBinBuffer):
if IdfGenCFlag:
TotalLength = EFI_HII_ARRAY_SIZE_LENGTH + PACKAGE_HEADER_Length
- AutoGenC.Append("\n//\n//Image Pack Definition\n//\n")
+ AutoGenC.append("\n//\n//Image Pack Definition\n//\n")
AllStr = WriteLine('', CHAR_ARRAY_DEFIN + ' ' + Info.Module.BaseName + 'Images' + '[] = {\n')
AllStr = WriteLine(AllStr, '// STRGATHER_OUTPUT_HEADER')
AllStr = WriteLine(AllStr, CreateArrayItem(DecToHexList(TotalLength)) + '\n')
@@ -1899,10 +1893,10 @@ def CreateIdfFileCode(Info, AutoGenC, StringH, IdfGenCFlag, IdfGenBinBuffer):
AllStr = WriteLine(AllStr, '// Palette Data\n')
AllStr = WriteLine(AllStr, PaletteStr)
AllStr = WriteLine(AllStr, '};')
- AutoGenC.Append(AllStr)
- AutoGenC.Append("\n")
- StringH.Append('\nextern unsigned char ' + Info.Module.BaseName + 'Images[];\n')
- StringH.Append("\n#define IMAGE_ARRAY_NAME %sImages\n" % Info.Module.BaseName)
+ AutoGenC.append(AllStr)
+ AutoGenC.append("\n")
+ StringH.append('\nextern unsigned char ' + Info.Module.BaseName + 'Images[];\n')
+ StringH.append("\n#define IMAGE_ARRAY_NAME %sImages\n" % Info.Module.BaseName)
# typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
# EFI_HII_PACKAGE_HEADER Header; # Standard package header, where Header.Type = EFI_HII_PACKAGE_IMAGES
@@ -2007,48 +2001,48 @@ def BmpImageDecoder(File, Buffer, PaletteIndex, TransParent):
#
def CreateHeaderCode(Info, AutoGenC, AutoGenH):
# file header
- AutoGenH.Append(gAutoGenHeaderString.Replace({'FileName':'AutoGen.h'}))
+ AutoGenH.append(gAutoGenHeaderString.Replace({'FileName':'AutoGen.h'}))
# header file Prologue
- AutoGenH.Append(gAutoGenHPrologueString.Replace({'File':'AUTOGENH','Guid':Info.Guid.replace('-','_')}))
- AutoGenH.Append(gAutoGenHCppPrologueString)
+ AutoGenH.append(gAutoGenHPrologueString.Replace({'File':'AUTOGENH','Guid':Info.Guid.replace('-','_')}))
+ AutoGenH.append(gAutoGenHCppPrologueString)
if Info.AutoGenVersion >= 0x00010005:
# header files includes
- AutoGenH.Append("#include <%s>\n" % gBasicHeaderFile)
+ AutoGenH.append("#include <%s>\n" % gBasicHeaderFile)
if Info.ModuleType in gModuleTypeHeaderFile \
and gModuleTypeHeaderFile[Info.ModuleType][0] != gBasicHeaderFile:
- AutoGenH.Append("#include <%s>\n" % gModuleTypeHeaderFile[Info.ModuleType][0])
+ AutoGenH.append("#include <%s>\n" % gModuleTypeHeaderFile[Info.ModuleType][0])
#
# if either PcdLib in [LibraryClasses] sections or there exist Pcd section, add PcdLib.h
# As if modules only uses FixedPcd, then PcdLib is not needed in [LibraryClasses] section.
#
if 'PcdLib' in Info.Module.LibraryClasses or Info.Module.Pcds:
- AutoGenH.Append("#include <Library/PcdLib.h>\n")
+ AutoGenH.append("#include <Library/PcdLib.h>\n")
- AutoGenH.Append('\nextern GUID gEfiCallerIdGuid;')
- AutoGenH.Append('\nextern CHAR8 *gEfiCallerBaseName;\n\n')
+ AutoGenH.append('\nextern GUID gEfiCallerIdGuid;')
+ AutoGenH.append('\nextern CHAR8 *gEfiCallerBaseName;\n\n')
if Info.IsLibrary:
return
- AutoGenH.Append("#define EFI_CALLER_ID_GUID \\\n %s\n" % GuidStringToGuidStructureString(Info.Guid))
+ AutoGenH.append("#define EFI_CALLER_ID_GUID \\\n %s\n" % GuidStringToGuidStructureString(Info.Guid))
if Info.IsLibrary:
return
# C file header
- AutoGenC.Append(gAutoGenHeaderString.Replace({'FileName':'AutoGen.c'}))
+ AutoGenC.append(gAutoGenHeaderString.Replace({'FileName':'AutoGen.c'}))
if Info.AutoGenVersion >= 0x00010005:
# C file header files includes
if Info.ModuleType in gModuleTypeHeaderFile:
for Inc in gModuleTypeHeaderFile[Info.ModuleType]:
- AutoGenC.Append("#include <%s>\n" % Inc)
+ AutoGenC.append("#include <%s>\n" % Inc)
else:
- AutoGenC.Append("#include <%s>\n" % gBasicHeaderFile)
+ AutoGenC.append("#include <%s>\n" % gBasicHeaderFile)
#
# Publish the CallerId Guid
#
- AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED GUID gEfiCallerIdGuid = %s;\n' % GuidStringToGuidStructureString(Info.Guid))
- AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *gEfiCallerBaseName = "%s";\n' % Info.Name)
+ AutoGenC.append('\nGLOBAL_REMOVE_IF_UNREFERENCED GUID gEfiCallerIdGuid = %s;\n' % GuidStringToGuidStructureString(Info.Guid))
+ AutoGenC.append('\nGLOBAL_REMOVE_IF_UNREFERENCED CHAR8 *gEfiCallerBaseName = "%s";\n' % Info.Name)
## Create common code for header file
#
@@ -2057,7 +2051,7 @@ def CreateHeaderCode(Info, AutoGenC, AutoGenH):
# @param AutoGenH The TemplateString object for header file
#
def CreateFooterCode(Info, AutoGenC, AutoGenH):
- AutoGenH.Append(gAutoGenHEpilogueString)
+ AutoGenH.append(gAutoGenHEpilogueString)
## Create code for a module
#
@@ -2086,8 +2080,8 @@ def CreateCode(Info, AutoGenC, AutoGenH, StringH, UniGenCFlag, UniGenBinBuffer,
if Info.UnicodeFileList:
FileName = "%sStrDefs.h" % Info.Name
- StringH.Append(gAutoGenHeaderString.Replace({'FileName':FileName}))
- StringH.Append(gAutoGenHPrologueString.Replace({'File':'STRDEFS', 'Guid':Info.Guid.replace('-','_')}))
+ StringH.append(gAutoGenHeaderString.Replace({'FileName':FileName}))
+ StringH.append(gAutoGenHPrologueString.Replace({'File':'STRDEFS', 'Guid':Info.Guid.replace('-','_')}))
CreateUnicodeStringCode(Info, AutoGenC, StringH, UniGenCFlag, UniGenBinBuffer)
GuidMacros = []
@@ -2124,25 +2118,25 @@ def CreateCode(Info, AutoGenC, AutoGenH, StringH, UniGenCFlag, UniGenBinBuffer,
GuidMacros.append('#include "%sImgDefs.h"' % Info.Name)
if GuidMacros:
- StringH.Append('\n#ifdef VFRCOMPILE\n%s\n#endif\n' % '\n'.join(GuidMacros))
+ StringH.append('\n#ifdef VFRCOMPILE\n%s\n#endif\n' % '\n'.join(GuidMacros))
- StringH.Append("\n#endif\n")
- AutoGenH.Append('#include "%s"\n' % FileName)
+ StringH.append("\n#endif\n")
+ AutoGenH.append('#include "%s"\n' % FileName)
if Info.IdfFileList:
FileName = "%sImgDefs.h" % Info.Name
- StringIdf.Append(gAutoGenHeaderString.Replace({'FileName':FileName}))
- StringIdf.Append(gAutoGenHPrologueString.Replace({'File':'IMAGEDEFS', 'Guid':Info.Guid.replace('-','_')}))
+ StringIdf.append(gAutoGenHeaderString.Replace({'FileName':FileName}))
+ StringIdf.append(gAutoGenHPrologueString.Replace({'File':'IMAGEDEFS', 'Guid':Info.Guid.replace('-','_')}))
CreateIdfFileCode(Info, AutoGenC, StringIdf, IdfGenCFlag, IdfGenBinBuffer)
- StringIdf.Append("\n#endif\n")
- AutoGenH.Append('#include "%s"\n' % FileName)
+ StringIdf.append("\n#endif\n")
+ AutoGenH.append('#include "%s"\n' % FileName)
CreateFooterCode(Info, AutoGenC, AutoGenH)
# no generation of AutoGen.c for Edk modules without unicode file
if Info.AutoGenVersion < 0x00010005 and len(Info.UnicodeFileList) == 0:
- AutoGenC.String = ''
+ AutoGenC = []
## Create the code file
#
diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py
index 6e83b3d73e61..7a088d68df60 100644
--- a/BaseTools/Source/Python/AutoGen/GenMake.py
+++ b/BaseTools/Source/Python/AutoGen/GenMake.py
@@ -34,6 +34,10 @@ gIncludePattern = re.compile(r"^[ \t]*#?[ \t]*include(?:[ \t]*(?:\\(?:\r\n|\r|\n
gMacroPattern = re.compile("([_A-Z][_A-Z0-9]*)[ \t]*\((.+)\)", re.UNICODE)
gIsFileMap = {}
+gMacroPatternfindall = gMacroPattern.findall
+ospathnormpath = os.path.normpath
+ospathjoin = os.path.join
+ospathisfile = os.path.isfile
## pattern for include style in Edk.x code
gProtocolDefinition = "Protocol/%(HeaderKey)s/%(HeaderKey)s.h"
@@ -879,10 +883,10 @@ cleanlib:
if File.Ext == '.h':
ForceIncludedFile.append(File)
SourceFileList = []
- OutPutFileList = []
+ OutPutFileList = set()
for Target in self._AutoGenObject.IntroTargetList:
SourceFileList.extend(Target.Inputs)
- OutPutFileList.extend(Target.Outputs)
+ OutPutFileList.union(Target.Outputs)
if OutPutFileList:
for Item in OutPutFileList:
@@ -986,10 +990,7 @@ cleanlib:
# @retval dict The mapping between source file path and its dependencies
#
def GetFileDependency(self, FileList, ForceInculeList, SearchPathList):
- Dependency = {}
- for F in FileList:
- Dependency[F] = self.GetDependencyList(F, ForceInculeList, SearchPathList)
- return Dependency
+ return {F:self.GetDependencyList(F, ForceInculeList, SearchPathList) for F in FileList}
## Find dependencies for one source file
#
@@ -1005,25 +1006,23 @@ cleanlib:
#
def GetDependencyList(self, File, ForceList, SearchPathList):
EdkLogger.debug(EdkLogger.DEBUG_1, "Try to get dependency files for %s" % File)
- FileStack = [File] + ForceList
- DependencySet = set()
+ DependencySet = set([File] + ForceList)
+ FileStack = set(DependencySet)
if self._AutoGenObject.Arch not in gDependencyDatabase:
gDependencyDatabase[self._AutoGenObject.Arch] = {}
DepDb = gDependencyDatabase[self._AutoGenObject.Arch]
- while len(FileStack) > 0:
+ while FileStack:
F = FileStack.pop()
- FullPathDependList = []
+ # check the module specific cache if this file was already done.
if F in self.FileCache:
- for CacheFile in self.FileCache[F]:
- FullPathDependList.append(CacheFile)
- if CacheFile not in DependencySet:
- FileStack.append(CacheFile)
- DependencySet.update(FullPathDependList)
+ FullPathDependSet = self.FileCache[F]
+ # extend FileStack with all not already in DependencySet or FileStack (analyzed for previous component)
+ FileStack.update(FullPathDependSet.difference(DependencySet))
+ DependencySet.update(FullPathDependSet)
continue
-
CurrentFileDependencyList = []
if F in DepDb:
CurrentFileDependencyList = DepDb[F]
@@ -1038,14 +1037,14 @@ cleanlib:
if len(FileContent) == 0:
continue
- if FileContent[0] == 0xff or FileContent[0] == 0xfe:
+ if FileContent[0] in {0xff,0xfe}:
FileContent = unicode(FileContent, "utf-16")
IncludedFileList = gIncludePattern.findall(FileContent)
for Inc in IncludedFileList:
Inc = Inc.strip()
# if there's macro used to reference header file, expand it
- HeaderList = gMacroPattern.findall(Inc)
+ HeaderList = gMacroPatternfindall(Inc)
if len(HeaderList) == 1 and len(HeaderList[0]) == 2:
HeaderType = HeaderList[0][0]
HeaderKey = HeaderList[0][1]
@@ -1056,42 +1055,40 @@ cleanlib:
# returning a empty dependency
self.FileCache[File] = []
return []
- Inc = os.path.normpath(Inc)
+ Inc = ospathnormpath(Inc)
CurrentFileDependencyList.append(Inc)
DepDb[F] = CurrentFileDependencyList
CurrentFilePath = F.Dir
PathList = [CurrentFilePath] + SearchPathList
+ FullPathDependSet = set()
for Inc in CurrentFileDependencyList:
for SearchPath in PathList:
- FilePath = os.path.join(SearchPath, Inc)
+ FilePath = ospathjoin(SearchPath, Inc)
if FilePath in gIsFileMap:
if not gIsFileMap[FilePath]:
continue
# If isfile is called too many times, the performance is slow down.
- elif not os.path.isfile(FilePath):
+ elif not ospathisfile(FilePath):
gIsFileMap[FilePath] = False
continue
else:
gIsFileMap[FilePath] = True
FilePath = PathClass(FilePath)
- FullPathDependList.append(FilePath)
+ FullPathDependSet.add(FilePath)
if FilePath not in DependencySet:
- FileStack.append(FilePath)
+ FileStack.add(FilePath)
break
else:
EdkLogger.debug(EdkLogger.DEBUG_9, "%s included by %s was not found "\
"in any given path:\n\t%s" % (Inc, F, "\n\t".join(SearchPathList)))
- self.FileCache[F] = FullPathDependList
- DependencySet.update(FullPathDependList)
+ self.FileCache[F] = FullPathDependSet
+ DependencySet.update(FullPathDependSet)
- DependencySet.update(ForceList)
- if File in DependencySet:
- DependencySet.remove(File)
- DependencyList = list(DependencySet) # remove duplicate ones
-
- return DependencyList
+ # now remove the initial file
+ DependencySet.remove(File)
+ return list(DependencySet)
_TemplateDict = property(_CreateTemplateDict)
diff --git a/BaseTools/Source/Python/AutoGen/GenPcdDb.py b/BaseTools/Source/Python/AutoGen/GenPcdDb.py
index 2e05b77e14c2..4390dfe840bd 100644
--- a/BaseTools/Source/Python/AutoGen/GenPcdDb.py
+++ b/BaseTools/Source/Python/AutoGen/GenPcdDb.py
@@ -10,7 +10,6 @@
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
-from StringIO import StringIO
from Common.Misc import *
from Common.StringUtils import StringToArray
from struct import pack
@@ -865,7 +864,7 @@ def BuildExDataBase(Dict):
# @param AutoGenC The TemplateString object for C code
# @param AutoGenH The TemplateString object for header file
#
-def CreatePcdDatabaseCode (Info, AutoGenC, AutoGenH):
+def CreatePcdDatabaseCode (Info, AutoGenC=None, AutoGenH=None):
if Info.PcdIsDriver == "":
return
if Info.PcdIsDriver not in gPcdPhaseMap:
@@ -873,24 +872,26 @@ def CreatePcdDatabaseCode (Info, AutoGenC, AutoGenH):
ExtraData="[%s]" % str(Info))
AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer = NewCreatePcdDatabasePhaseSpecificAutoGen (Info.PlatformInfo, 'PEI')
- AutoGenH.Append(AdditionalAutoGenH.String)
+ if AutoGenH:
+ AutoGenH += AdditionalAutoGenH
Phase = gPcdPhaseMap[Info.PcdIsDriver]
- if Phase == 'PEI':
- AutoGenC.Append(AdditionalAutoGenC.String)
+ if Phase == 'PEI' and AutoGenC:
+ AutoGenC += AdditionalAutoGenC
- if Phase == 'DXE':
+ if Phase == 'DXE' and (AutoGenC or AutoGenH):
AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer = NewCreatePcdDatabasePhaseSpecificAutoGen (Info.PlatformInfo, Phase)
- AutoGenH.Append(AdditionalAutoGenH.String)
- AutoGenC.Append(AdditionalAutoGenC.String)
+ if AutoGenH:
+ AutoGenH += AdditionalAutoGenH
+ if AutoGenC:
+ AutoGenC += AdditionalAutoGenC
if Info.IsBinaryModule:
DbFileName = os.path.join(Info.PlatformInfo.BuildDir, TAB_FV_DIRECTORY, Phase + "PcdDataBase.raw")
else:
DbFileName = os.path.join(Info.OutputDir, Phase + "PcdDataBase.raw")
- DbFile = StringIO()
- DbFile.write(PcdDbBuffer)
- Changed = SaveFileOnChange(DbFileName, DbFile.getvalue(), True)
+ Changed = SaveFileOnChange(DbFileName, PcdDbBuffer, True)
+
def CreatePcdDataBase(PcdDBData):
delta = {}
for skuname,skuid in PcdDBData:
@@ -923,15 +924,13 @@ def CreatePcdDataBase(PcdDBData):
return newbuffer
-def CreateVarCheckBin(VarCheckTab):
- return VarCheckTab[(TAB_DEFAULT,"0")]
-
def CreateAutoGen(PcdDriverAutoGenData):
- autogenC = TemplateString()
+ autogenC = []
for skuname,skuid in PcdDriverAutoGenData:
- autogenC.Append("//SKUID: %s" % skuname)
- autogenC.Append(PcdDriverAutoGenData[(skuname,skuid)][1].String)
- return (PcdDriverAutoGenData[(skuname,skuid)][0],autogenC)
+ autogenC.append("//SKUID: %s" % skuname)
+ autogenC += PcdDriverAutoGenData[(skuname,skuid)][1]
+ return PcdDriverAutoGenData[(skuname,skuid)][0],autogenC
+
def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform,Phase):
def prune_sku(pcd,skuname):
new_pcd = copy.deepcopy(pcd)
@@ -968,7 +967,7 @@ def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform,Phase):
VarCheckTableData[(skuname,skuid)] = VarCheckTab
if Platform.Platform.VarCheckFlag:
dest = os.path.join(Platform.BuildDir, TAB_FV_DIRECTORY)
- VarCheckTable = CreateVarCheckBin(VarCheckTableData)
+ VarCheckTable = VarCheckTableData[(TAB_DEFAULT,"0")]
VarCheckTable.dump(dest, Phase)
AdditionalAutoGenH, AdditionalAutoGenC = CreateAutoGen(PcdDriverAutoGenData)
else:
@@ -986,9 +985,6 @@ def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform,Phase):
# respectively
#
def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
- AutoGenC = TemplateString()
- AutoGenH = TemplateString()
-
Dict = {
'PHASE' : Phase,
'SERVICE_DRIVER_VERSION' : DATABASE_VERSION,
@@ -1562,9 +1558,9 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
Dict['SKUID_VALUE'].append(AvailableSkuNumber)
Dict['SKUID_VALUE'][0] = len(Dict['SKUID_VALUE']) - 1
- AutoGenH.Append(gPcdDatabaseAutoGenH.Replace(Dict))
+ AutoGenC = []
if NumberOfLocalTokens == 0:
- AutoGenC.Append(gEmptyPcdDatabaseAutoGenC.Replace(Dict))
+ AutoGenC.append(gEmptyPcdDatabaseAutoGenC.Replace(Dict))
else:
#
# Update Size Table to the right order, it should be same with LocalTokenNumberTable
@@ -1595,12 +1591,12 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
Dict['SIZE_TABLE_CURRENT_LENGTH'][Count] = SizeCurLenTempList[Count]
Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count] = SizeMaxLenTempList[Count]
- AutoGenC.Append(gPcdDatabaseAutoGenC.Replace(Dict))
+ AutoGenC.append(gPcdDatabaseAutoGenC.Replace(Dict))
# print Phase
Buffer = BuildExDataBase(Dict)
- return AutoGenH, AutoGenC, Buffer,VarCheckTab
+ return [gPcdDatabaseAutoGenH.Replace(Dict)], AutoGenC, Buffer,VarCheckTab
def GetOrderedDynamicPcdList(DynamicPcdList, PcdTokenNumberList):
ReorderedDyPcdList = [None for i in range(len(DynamicPcdList))]
diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py
index 90350f863826..4e1953f6f427 100644
--- a/BaseTools/Source/Python/Common/Misc.py
+++ b/BaseTools/Source/Python/Common/Misc.py
@@ -14,6 +14,7 @@
##
# Import Modules
#
+from collections import deque
import Common.LongFilePathOs as os
import sys
import string
@@ -25,8 +26,6 @@ import cPickle
import array
import shutil
from struct import pack
-from UserDict import IterableUserDict
-from UserList import UserList
from Common import EdkLogger as EdkLogger
from Common import GlobalData as GlobalData
@@ -737,7 +736,7 @@ class TemplateString(object):
if PlaceHolder not in PlaceHolderValues:
continue
Value = PlaceHolderValues[PlaceHolder]
- if type(Value) in self._LIST_TYPES:
+ if type(Value) in TemplateString.Section._LIST_TYPES:
if RepeatTime < 0:
RepeatTime = len(Value)
elif RepeatTime != len(Value):
@@ -774,11 +773,9 @@ class TemplateString(object):
return "".join(StringList)
## Constructor
- def __init__(self, Template=None):
+ def __init__(self, Template = ''):
self.String = ''
- self.IsBinary = False
- self._Template = Template
- self._TemplateSectionList = self._Parse(Template)
+ self._TemplateSectionList = TemplateString._Parse(Template)
## str() operator
#
@@ -791,38 +788,34 @@ class TemplateString(object):
#
# @retval list A list of TemplateString.Section objects
#
- def _Parse(self, Template):
+ @staticmethod
+ def _Parse(Template):
SectionStart = 0
SearchFrom = 0
- MatchEnd = 0
PlaceHolderList = []
TemplateSectionList = []
- while Template:
+ while True:
MatchObj = gPlaceholderPattern.search(Template, SearchFrom)
if not MatchObj:
- if MatchEnd <= len(Template):
- TemplateSection = TemplateString.Section(Template[SectionStart:], PlaceHolderList)
- TemplateSectionList.append(TemplateSection)
+ if SearchFrom <= len(Template):
+ TemplateSectionList.append(TemplateString.Section(Template[SectionStart:], PlaceHolderList))
break
MatchString = MatchObj.group(1)
MatchStart = MatchObj.start()
- MatchEnd = MatchObj.end()
+ SearchFrom = MatchObj.end()
- if MatchString == self._REPEAT_START_FLAG:
+ if MatchString == TemplateString._REPEAT_START_FLAG:
if MatchStart > SectionStart:
- TemplateSection = TemplateString.Section(Template[SectionStart:MatchStart], PlaceHolderList)
- TemplateSectionList.append(TemplateSection)
- SectionStart = MatchEnd
+ TemplateSectionList.append(TemplateString.Section(Template[SectionStart:MatchStart], PlaceHolderList))
+ SectionStart = SearchFrom
PlaceHolderList = []
- elif MatchString == self._REPEAT_END_FLAG:
- TemplateSection = TemplateString.Section(Template[SectionStart:MatchStart], PlaceHolderList)
- TemplateSectionList.append(TemplateSection)
- SectionStart = MatchEnd
+ elif MatchString == TemplateString._REPEAT_END_FLAG:
+ TemplateSectionList.append(TemplateString.Section(Template[SectionStart:MatchStart], PlaceHolderList))
+ SectionStart = SearchFrom
PlaceHolderList = []
else:
- PlaceHolderList.append((MatchString, MatchStart - SectionStart, MatchEnd - SectionStart))
- SearchFrom = MatchEnd
+ PlaceHolderList.append((MatchString, MatchStart - SectionStart, SearchFrom - SectionStart))
return TemplateSectionList
## Replace the string template with dictionary of placeholders and append it to previous one
@@ -832,7 +825,7 @@ class TemplateString(object):
#
def Append(self, AppendString, Dictionary=None):
if Dictionary:
- SectionList = self._Parse(AppendString)
+ SectionList = TemplateString._Parse(AppendString)
self.String += "".join(S.Instantiate(Dictionary) for S in SectionList)
else:
self.String += AppendString
@@ -919,166 +912,6 @@ class Progressor:
Progressor._ProgressThread.join()
Progressor._ProgressThread = None
-## A dict which can access its keys and/or values orderly
-#
-# The class implements a new kind of dict which its keys or values can be
-# accessed in the order they are added into the dict. It guarantees the order
-# by making use of an internal list to keep a copy of keys.
-#
-class sdict(IterableUserDict):
- ## Constructor
- def __init__(self):
- IterableUserDict.__init__(self)
- self._key_list = []
-
- ## [] operator
- def __setitem__(self, key, value):
- if key not in self._key_list:
- self._key_list.append(key)
- IterableUserDict.__setitem__(self, key, value)
-
- ## del operator
- def __delitem__(self, key):
- self._key_list.remove(key)
- IterableUserDict.__delitem__(self, key)
-
- ## used in "for k in dict" loop to ensure the correct order
- def __iter__(self):
- return self.iterkeys()
-
- ## len() support
- def __len__(self):
- return len(self._key_list)
-
- ## "in" test support
- def __contains__(self, key):
- return key in self._key_list
-
- ## indexof support
- def index(self, key):
- return self._key_list.index(key)
-
- ## insert support
- def insert(self, key, newkey, newvalue, order):
- index = self._key_list.index(key)
- if order == 'BEFORE':
- self._key_list.insert(index, newkey)
- IterableUserDict.__setitem__(self, newkey, newvalue)
- elif order == 'AFTER':
- self._key_list.insert(index + 1, newkey)
- IterableUserDict.__setitem__(self, newkey, newvalue)
-
- ## append support
- def append(self, sdict):
- for key in sdict:
- if key not in self._key_list:
- self._key_list.append(key)
- IterableUserDict.__setitem__(self, key, sdict[key])
-
- def has_key(self, key):
- return key in self._key_list
-
- ## Empty the dict
- def clear(self):
- self._key_list = []
- IterableUserDict.clear(self)
-
- ## Return a copy of keys
- def keys(self):
- keys = []
- for key in self._key_list:
- keys.append(key)
- return keys
-
- ## Return a copy of values
- def values(self):
- values = []
- for key in self._key_list:
- values.append(self[key])
- return values
-
- ## Return a copy of (key, value) list
- def items(self):
- items = []
- for key in self._key_list:
- items.append((key, self[key]))
- return items
-
- ## Iteration support
- def iteritems(self):
- return iter(self.items())
-
- ## Keys interation support
- def iterkeys(self):
- return iter(self.keys())
-
- ## Values interation support
- def itervalues(self):
- return iter(self.values())
-
- ## Return value related to a key, and remove the (key, value) from the dict
- def pop(self, key, *dv):
- value = None
- if key in self._key_list:
- value = self[key]
- self.__delitem__(key)
- elif len(dv) != 0 :
- value = kv[0]
- return value
-
- ## Return (key, value) pair, and remove the (key, value) from the dict
- def popitem(self):
- key = self._key_list[-1]
- value = self[key]
- self.__delitem__(key)
- return key, value
-
- def update(self, dict=None, **kwargs):
- if dict is not None:
- for k, v in dict.items():
- self[k] = v
- if len(kwargs):
- for k, v in kwargs.items():
- self[k] = v
-
-## Dictionary with restricted keys
-#
-class rdict(dict):
- ## Constructor
- def __init__(self, KeyList):
- for Key in KeyList:
- dict.__setitem__(self, Key, "")
-
- ## []= operator
- def __setitem__(self, key, value):
- if key not in self:
- EdkLogger.error("RestrictedDict", ATTRIBUTE_SET_FAILURE, "Key [%s] is not allowed" % key,
- ExtraData=", ".join(dict.keys(self)))
- dict.__setitem__(self, key, value)
-
- ## =[] operator
- def __getitem__(self, key):
- if key not in self:
- return ""
- return dict.__getitem__(self, key)
-
- ## del operator
- def __delitem__(self, key):
- EdkLogger.error("RestrictedDict", ATTRIBUTE_ACCESS_DENIED, ExtraData="del")
-
- ## Empty the dict
- def clear(self):
- for Key in self:
- self.__setitem__(Key, "")
-
- ## Return value related to a key, and remove the (key, value) from the dict
- def pop(self, key, *dv):
- EdkLogger.error("RestrictedDict", ATTRIBUTE_ACCESS_DENIED, ExtraData="pop")
-
- ## Return (key, value) pair, and remove the (key, value) from the dict
- def popitem(self):
- EdkLogger.error("RestrictedDict", ATTRIBUTE_ACCESS_DENIED, ExtraData="popitem")
-
## Dictionary using prioritized list as key
#
class tdict:
@@ -1956,11 +1789,11 @@ class SkuClass():
ExtraData = "SKU-ID [%s] value %s exceeds the max value of UINT64"
% (SkuName, SkuId))
- self.AvailableSkuIds = sdict()
+ self.AvailableSkuIds = {}
self.SkuIdSet = []
self.SkuIdNumberSet = []
self.SkuData = SkuIds
- self.__SkuInherit = {}
+ self.__SkuInherit = None
self.__SkuIdentifier = SkuIdentifier
if SkuIdentifier == '' or SkuIdentifier is None:
self.SkuIdSet = ['DEFAULT']
--
2.16.2.windows.1
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2018-06-04 14:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <cover.1528122425.git.jaben.carsey@intel.com>
2018-06-04 14:27 ` [PATCH v1 1/1] BaseTools: Refactoring to save time Jaben Carsey
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox