PcdValue = Sku.DefaultValue\r
if PcdValue == "":\r
PcdValue = Pcd.DefaultValue\r
- if Sku.VpdOffset != '*':\r
+ if Sku.VpdOffset != TAB_STAR:\r
if PcdValue.startswith("{"):\r
Alignment = 8\r
elif PcdValue.startswith("L"):\r
VpdFile.Add(Pcd, SkuName, Sku.VpdOffset)\r
SkuValueMap[PcdValue].append(Sku)\r
# if the offset of a VPD is *, then it need to be fixed up by third party tool.\r
- if not NeedProcessVpdMapFile and Sku.VpdOffset == "*":\r
+ if not NeedProcessVpdMapFile and Sku.VpdOffset == TAB_STAR:\r
NeedProcessVpdMapFile = True\r
if self.Platform.VpdToolGuid is None or self.Platform.VpdToolGuid == '':\r
EdkLogger.error("Build", FILE_NOT_FOUND, \\r
PcdValue = Sku.DefaultValue\r
if PcdValue == "":\r
PcdValue = DscPcdEntry.DefaultValue\r
- if Sku.VpdOffset != '*':\r
+ if Sku.VpdOffset != TAB_STAR:\r
if PcdValue.startswith("{"):\r
Alignment = 8\r
elif PcdValue.startswith("L"):\r
SkuValueMap[PcdValue] = []\r
VpdFile.Add(DscPcdEntry, SkuName, Sku.VpdOffset)\r
SkuValueMap[PcdValue].append(Sku)\r
- if not NeedProcessVpdMapFile and Sku.VpdOffset == "*":\r
+ if not NeedProcessVpdMapFile and Sku.VpdOffset == TAB_STAR:\r
NeedProcessVpdMapFile = True\r
if DscPcdEntry.DatumType == TAB_VOID and PcdValue.startswith("L"):\r
UnicodePcdArray.add(DscPcdEntry)\r
if os.path.exists(VpdMapFilePath):\r
VpdFile.Read(VpdMapFilePath)\r
\r
- # Fixup "*" offset\r
+ # Fixup TAB_STAR offset\r
for pcd in VpdSkuMap:\r
vpdinfo = VpdFile.GetVpdInfo(pcd)\r
if vpdinfo is None:\r
def CalculatePriorityValue(self, Key):\r
Target, ToolChain, Arch, CommandType, Attr = Key.split('_')\r
PriorityValue = 0x11111\r
- if Target == "*":\r
+ if Target == TAB_STAR:\r
PriorityValue &= 0x01111\r
- if ToolChain == "*":\r
+ if ToolChain == TAB_STAR:\r
PriorityValue &= 0x10111\r
- if Arch == "*":\r
+ if Arch == TAB_STAR:\r
PriorityValue &= 0x11011\r
- if CommandType == "*":\r
+ if CommandType == TAB_STAR:\r
PriorityValue &= 0x11101\r
- if Attr == "*":\r
+ if Attr == TAB_STAR:\r
PriorityValue &= 0x11110\r
\r
return self.PrioList["0x%0.5x" % PriorityValue]\r
if (Key[0] == self.BuildRuleFamily and\r
(ModuleStyle is None or len(Key) < 3 or (len(Key) > 2 and Key[2] == ModuleStyle))):\r
Target, ToolChain, Arch, CommandType, Attr = Key[1].split('_')\r
- if (Target == self.BuildTarget or Target == "*") and\\r
- (ToolChain == self.ToolChain or ToolChain == "*") and\\r
- (Arch == self.Arch or Arch == "*") and\\r
+ if (Target == self.BuildTarget or Target == TAB_STAR) and\\r
+ (ToolChain == self.ToolChain or ToolChain == TAB_STAR) and\\r
+ (Arch == self.Arch or Arch == TAB_STAR) and\\r
Options[Key].startswith("="):\r
\r
if OverrideList.get(Key[1]) is not None:\r
# Compare two Key, if one is included by another, choose the higher priority one\r
#\r
Target2, ToolChain2, Arch2, CommandType2, Attr2 = NextKey.split("_")\r
- if (Target1 == Target2 or Target1 == "*" or Target2 == "*") and\\r
- (ToolChain1 == ToolChain2 or ToolChain1 == "*" or ToolChain2 == "*") and\\r
- (Arch1 == Arch2 or Arch1 == "*" or Arch2 == "*") and\\r
- (CommandType1 == CommandType2 or CommandType1 == "*" or CommandType2 == "*") and\\r
- (Attr1 == Attr2 or Attr1 == "*" or Attr2 == "*"):\r
+ if (Target1 == Target2 or Target1 == TAB_STAR or Target2 == TAB_STAR) and\\r
+ (ToolChain1 == ToolChain2 or ToolChain1 == TAB_STAR or ToolChain2 == TAB_STAR) and\\r
+ (Arch1 == Arch2 or Arch1 == TAB_STAR or Arch2 == TAB_STAR) and\\r
+ (CommandType1 == CommandType2 or CommandType1 == TAB_STAR or CommandType2 == TAB_STAR) and\\r
+ (Attr1 == Attr2 or Attr1 == TAB_STAR or Attr2 == TAB_STAR):\r
\r
if self.CalculatePriorityValue(NowKey) > self.CalculatePriorityValue(NextKey):\r
if Options.get((self.BuildRuleFamily, NextKey)) is not None:\r
continue\r
FamilyMatch = True\r
# expand any wildcard\r
- if Target == "*" or Target == self.BuildTarget:\r
- if Tag == "*" or Tag == self.ToolChain:\r
- if Arch == "*" or Arch == self.Arch:\r
+ if Target == TAB_STAR or Target == self.BuildTarget:\r
+ if Tag == TAB_STAR or Tag == self.ToolChain:\r
+ if Arch == TAB_STAR or Arch == self.Arch:\r
if Tool not in BuildOptions:\r
BuildOptions[Tool] = {}\r
if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or Options[Key].startswith('='):\r
continue\r
\r
# expand any wildcard\r
- if Target == "*" or Target == self.BuildTarget:\r
- if Tag == "*" or Tag == self.ToolChain:\r
- if Arch == "*" or Arch == self.Arch:\r
+ if Target == TAB_STAR or Target == self.BuildTarget:\r
+ if Tag == TAB_STAR or Tag == self.ToolChain:\r
+ if Arch == TAB_STAR or Arch == self.Arch:\r
if Tool not in BuildOptions:\r
BuildOptions[Tool] = {}\r
if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or Options[Key].startswith('='):\r
@cached_property\r
def SourceFileList(self):\r
RetVal = []\r
- ToolChainTagSet = {"", "*", self.ToolChain}\r
- ToolChainFamilySet = {"", "*", self.ToolChainFamily, self.BuildRuleFamily}\r
+ ToolChainTagSet = {"", TAB_STAR, self.ToolChain}\r
+ ToolChainFamilySet = {"", TAB_STAR, self.ToolChainFamily, self.BuildRuleFamily}\r
for F in self.Module.Sources:\r
# match tool chain\r
if F.TagName not in ToolChainTagSet:\r
def BinaryFileList(self):\r
RetVal = []\r
for F in self.Module.Binaries:\r
- if F.Target not in [TAB_ARCH_COMMON, '*'] and F.Target != self.BuildTarget:\r
+ if F.Target not in [TAB_ARCH_COMMON, TAB_STAR] and F.Target != self.BuildTarget:\r
continue\r
RetVal.append(F)\r
self._ApplyBuildRule(F, F.Type, BinaryFileList=RetVal)\r
self.IncListFileMacro = self.INC_LIST_MACRO\r
\r
self.SourceFileType = Type\r
- # source files listed not in "*" or "?" pattern format\r
+ # source files listed not in TAB_STAR or "?" pattern format\r
if not ExtraDependency:\r
self.ExtraSourceFileList = []\r
else:\r
self.SourceFileExtList = set()\r
for File in Input:\r
Base, Ext = os.path.splitext(File)\r
- if Base.find("*") >= 0:\r
- # There's "*" in the file name\r
+ if Base.find(TAB_STAR) >= 0:\r
+ # There's TAB_STAR in the file name\r
self.IsMultipleInput = True\r
self.GenFileListMacro = True\r
elif Base.find("?") < 0:\r
- # There's no "*" and "?" in file name\r
+ # There's no TAB_STAR and "?" in file name\r
self.ExtraSourceFileList.append(File)\r
continue\r
self.SourceFileExtList.add(Ext)\r
#\r
# @param FileExt The extension of a file\r
# @param ToolChainFamily The tool chain family name\r
- # @param BuildVersion The build version number. "*" means any rule\r
+ # @param BuildVersion The build version number. TAB_STAR means any rule\r
# is applicalbe.\r
#\r
# @retval FileType The file type string\r
import re\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
from struct import *\r
-from Common.DataType import MAX_SIZE_TYPE, MAX_VAL_TYPE\r
+from Common.DataType import MAX_SIZE_TYPE, MAX_VAL_TYPE, TAB_STAR\r
import Common.EdkLogger as EdkLogger\r
import Common.BuildToolError as BuildToolError\r
\r
# for both hexadecimal and decimal.\r
#\r
def _GenOffsetValue(self):\r
- if self.PcdOffset != "*" :\r
+ if self.PcdOffset != TAB_STAR:\r
try:\r
self.PcdBinOffset = int (self.PcdOffset)\r
except:\r
Alignment = 1\r
\r
PCD.Alignment = Alignment\r
- if PCD.PcdOffset != '*':\r
+ if PCD.PcdOffset != TAB_STAR:\r
if PCD.PcdOccupySize % Alignment != 0:\r
if PCD.PcdUnpackValue.startswith("{"):\r
EdkLogger.warn("BPDG", "The offset value of PCD %s is not 8-byte aligned!" %(PCD.PcdCName), File=self.InputFileName)\r
def FormatFileLine (self) :\r
\r
for eachPcd in self.FileLinesList :\r
- if eachPcd.PcdOffset != '*' :\r
+ if eachPcd.PcdOffset != TAB_STAR :\r
# Use pcd's Offset value as key, and pcd's Value as value\r
self.PcdFixedOffsetSizeList.append(eachPcd)\r
else :\r
def FixVpdOffset (self):\r
# At first, the offset should start at 0\r
# Sort fixed offset list in order to find out where has free spaces for the pcd's offset\r
- # value is "*" to insert into.\r
+ # value is TAB_STAR to insert into.\r
\r
self.PcdFixedOffsetSizeList.sort(key=lambda x: x.PcdBinOffset)\r
\r
self.PcdUnknownOffsetList[index+i -1 ], self.PcdUnknownOffsetList[index+i] = self.PcdUnknownOffsetList[index+i], self.PcdUnknownOffsetList[index+i -1]\r
\r
#\r
- # Process all Offset value are "*"\r
+ # Process all Offset value are TAB_STAR\r
#\r
if (len(self.PcdFixedOffsetSizeList) == 0) and (len(self.PcdUnknownOffsetList) != 0) :\r
# The offset start from 0\r
eachUnfixedPcd = self.PcdUnknownOffsetList[countOfUnfixedList]\r
needFixPcdSize = eachUnfixedPcd.PcdOccupySize\r
# Not been fixed\r
- if eachUnfixedPcd.PcdOffset == '*' :\r
+ if eachUnfixedPcd.PcdOffset == TAB_STAR :\r
if LastOffset % eachUnfixedPcd.Alignment != 0:\r
LastOffset = (LastOffset / eachUnfixedPcd.Alignment + 1) * eachUnfixedPcd.Alignment\r
# The offset un-fixed pcd can write into this free space\r
TAB_OPTION_END = '>'\r
TAB_SLASH = '\\'\r
TAB_BACK_SLASH = '/'\r
+TAB_STAR = '*'\r
TAB_LINE_BREAK = '\n'\r
TAB_PRINTCHAR_VT = '\x0b'\r
TAB_PRINTCHAR_BS = '\b'\r
'IN' : 'in'\r
}\r
\r
- NonLetterOpLst = ['+', '-', '*', '/', '%', '&', '|', '^', '~', '<<', '>>', '!', '=', '>', '<', '?', ':']\r
+ NonLetterOpLst = ['+', '-', TAB_STAR, '/', '%', '&', '|', '^', '~', '<<', '>>', '!', '=', '>', '<', '?', ':']\r
\r
\r
SymbolPattern = re.compile("("\r
\r
# A [ * B]*\r
def _MulExpr(self):\r
- return self._ExprFuncTemplate(self._UnaryExpr, {"*", "/", "%"})\r
+ return self._ExprFuncTemplate(self._UnaryExpr, {TAB_STAR, "/", "%"})\r
\r
# [!]*A\r
def _UnaryExpr(self):\r
_ListType = type([])\r
_TupleType = type(())\r
_Wildcard = 'COMMON'\r
- _ValidWildcardList = ['COMMON', 'DEFAULT', 'ALL', '*', 'PLATFORM']\r
+ _ValidWildcardList = ['COMMON', 'DEFAULT', 'ALL', TAB_STAR, 'PLATFORM']\r
\r
def __init__(self, _Single_=False, _Level_=2):\r
self._Level_ = _Level_\r
from Common.MultipleWorkspace import MultipleWorkspace as mws\r
from .DataType import TAB_TOD_DEFINES_TARGET, TAB_TOD_DEFINES_TOOL_CHAIN_TAG,\\r
TAB_TOD_DEFINES_TARGET_ARCH, TAB_TOD_DEFINES_COMMAND_TYPE\\r
- , TAB_TOD_DEFINES_FAMILY, TAB_TOD_DEFINES_BUILDRULEFAMILY\r
+ , TAB_TOD_DEFINES_FAMILY, TAB_TOD_DEFINES_BUILDRULEFAMILY,\\r
+ TAB_STAR, TAB_TAT_DEFINES_TOOL_CHAIN_CONF\r
\r
\r
##\r
# adding/removing items from the original dict.\r
for Key in list(self.ToolsDefTxtDictionary.keys()):\r
List = Key.split('_')\r
- if List[Index] == '*':\r
+ if List[Index] == TAB_STAR:\r
for String in self.ToolsDefTxtDatabase[KeyList[Index]]:\r
List[Index] = String\r
NewKey = '%s_%s_%s_%s_%s' % tuple(List)\r
if len(List) != 5:\r
EdkLogger.verbose("Line %d: Not a valid name of definition: %s" % ((Index + 1), Name))\r
continue\r
- elif List[4] == '*':\r
+ elif List[4] == TAB_STAR:\r
EdkLogger.verbose("Line %d: '*' is not allowed in last field: %s" % ((Index + 1), Name))\r
continue\r
else:\r
self.ToolsDefTxtDictionary[Name] = Value\r
- if List[0] != '*':\r
+ if List[0] != TAB_STAR:\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET] += [List[0]]\r
- if List[1] != '*':\r
+ if List[1] != TAB_STAR:\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG] += [List[1]]\r
- if List[2] != '*':\r
+ if List[2] != TAB_STAR:\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH] += [List[2]]\r
- if List[3] != '*':\r
+ if List[3] != TAB_STAR:\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE] += [List[3]]\r
- if List[4] == TAB_TOD_DEFINES_FAMILY and List[2] == '*' and List[3] == '*':\r
+ if List[4] == TAB_TOD_DEFINES_FAMILY and List[2] == TAB_STAR and List[3] == TAB_STAR:\r
if TAB_TOD_DEFINES_FAMILY not in self.ToolsDefTxtDatabase:\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_FAMILY] = {}\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_FAMILY][List[1]] = Value\r
self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_BUILDRULEFAMILY][List[1]] = Value\r
elif self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_FAMILY][List[1]] != Value:\r
EdkLogger.verbose("Line %d: No override allowed for the family of a tool chain: %s" % ((Index + 1), Name))\r
- if List[4] == TAB_TOD_DEFINES_BUILDRULEFAMILY and List[2] == '*' and List[3] == '*':\r
+ if List[4] == TAB_TOD_DEFINES_BUILDRULEFAMILY and List[2] == TAB_STAR and List[3] == TAB_STAR:\r
if TAB_TOD_DEFINES_BUILDRULEFAMILY not in self.ToolsDefTxtDatabase \\r
or List[1] not in self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_FAMILY]:\r
EdkLogger.verbose("Line %d: The family is not specified, but BuildRuleFamily is specified for the tool chain: %s" % ((Index + 1), Name))\r
def ToolDefDict(ConfDir):\r
Target = TargetTxtDict(ConfDir)\r
ToolDef = ToolDefClassObject()\r
- if DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF in Target.TargetTxtDictionary:\r
- ToolsDefFile = Target.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
+ if TAB_TAT_DEFINES_TOOL_CHAIN_CONF in Target.TargetTxtDictionary:\r
+ ToolsDefFile = Target.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF]\r
if ToolsDefFile:\r
ToolDef.LoadToolDefFile(os.path.normpath(ToolsDefFile))\r
else:\r
# <PcdName> ::= <TokenSpaceCName> "." <PcdCName>\r
# <TokenSpaceCName> ::= C Variable Name of the Token Space GUID\r
# <PcdCName> ::= C Variable Name of the PCD\r
-# <Offset> ::= {"*"} {<HexNumber>}\r
+# <Offset> ::= {TAB_STAR} {<HexNumber>}\r
# <HexNumber> ::= "0x" (a-fA-F0-9){1,8}\r
# <Size> ::= <HexNumber>\r
# <Value> ::= {<HexNumber>} {<NonNegativeInt>} {<QString>} {<Array>}\r
if (Vpd is None):\r
EdkLogger.error("VpdInfoFile", BuildToolError.ATTRIBUTE_UNKNOWN_ERROR, "Invalid VPD PCD entry.")\r
\r
- if not (Offset >= 0 or Offset == "*"):\r
+ if not (Offset >= 0 or Offset == TAB_STAR):\r
EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, "Invalid offset parameter: %s." % Offset)\r
\r
if Vpd.DatumType == TAB_VOID:\r
VpdObjectTokenCName = PcdItem[0]\r
for sku in VpdObject.SkuInfoList:\r
if VpdObject.TokenSpaceGuidCName == TokenSpaceName and VpdObjectTokenCName == PcdTokenName.strip() and sku == SkuId:\r
- if self._VpdArray[VpdObject][sku] == "*":\r
- if Offset == "*":\r
+ if self._VpdArray[VpdObject][sku] == TAB_STAR:\r
+ if Offset == TAB_STAR:\r
EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, "The offset of %s has not been fixed up by third-party BPDG tool." % PcdName)\r
self._VpdArray[VpdObject][sku] = Offset\r
Found = True\r
T_CHAR_TAB = '\t'\r
T_CHAR_DOUBLE_QUOTE = '\"'\r
T_CHAR_SINGLE_QUOTE = '\''\r
-T_CHAR_STAR = '*'\r
T_CHAR_BRACE_R = '}'\r
\r
SEPARATORS = {TAB_EQUAL_SPLIT, TAB_VALUE_SPLIT, TAB_COMMA_SPLIT, '{', T_CHAR_BRACE_R}\r
InComment = False\r
HashComment = False\r
# check for */ comment end\r
- elif InComment and not DoubleSlashComment and not HashComment and self._CurrentChar() == T_CHAR_STAR and self._NextChar() == TAB_BACK_SLASH:\r
+ elif InComment and not DoubleSlashComment and not HashComment and self._CurrentChar() == TAB_STAR and self._NextChar() == TAB_BACK_SLASH:\r
self._SetCurrentCharValue(TAB_SPACE_SPLIT)\r
self._GetOneChar()\r
self._SetCurrentCharValue(TAB_SPACE_SPLIT)\r
InComment = True\r
HashComment = True\r
# check for /* comment start\r
- elif self._CurrentChar() == TAB_BACK_SLASH and self._NextChar() == T_CHAR_STAR:\r
+ elif self._CurrentChar() == TAB_BACK_SLASH and self._NextChar() == TAB_STAR:\r
self._SetCurrentCharValue(TAB_SPACE_SPLIT)\r
self._GetOneChar()\r
self._SetCurrentCharValue(TAB_SPACE_SPLIT)\r
FileGuidList.append(FileStatementGuid)\r
Name = []\r
FfsPath = os.path.join(GenFdsGlobalVariable.FvDir, 'Ffs')\r
- FfsPath = glob(os.path.join(FfsPath, FileStatementGuid) + '*')\r
+ FfsPath = glob(os.path.join(FfsPath, FileStatementGuid) + TAB_STAR)\r
if not FfsPath:\r
continue\r
if not os.path.exists(FfsPath[0]):\r
\r
if not Inf.IsBinaryModule:\r
for File in Inf.Sources:\r
- if File.TagName in {"", "*", GenFdsGlobalVariable.ToolChainTag} and \\r
- File.ToolChainFamily in {"", "*", GenFdsGlobalVariable.ToolChainFamily}:\r
+ if File.TagName in {"", DataType.TAB_STAR, GenFdsGlobalVariable.ToolChainTag} and \\r
+ File.ToolChainFamily in {"", DataType.TAB_STAR, GenFdsGlobalVariable.ToolChainFamily}:\r
FileList.append((File, DataType.TAB_UNKNOWN_FILE))\r
\r
for File in Inf.Binaries:\r
- if File.Target in {DataType.TAB_COMMON, '*', GenFdsGlobalVariable.TargetName}:\r
+ if File.Target in {DataType.TAB_COMMON, DataType.TAB_STAR, GenFdsGlobalVariable.TargetName}:\r
FileList.append((File, File.Type))\r
\r
for File, FileType in FileList:\r
for Index in range(2, -1, -1):\r
for Key in list(BuildOption.keys()):\r
List = Key.split('_')\r
- if List[Index] == '*':\r
+ if List[Index] == DataType.TAB_STAR:\r
for String in ToolDb[ToolList[Index]]:\r
if String in [Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]:\r
List[Index] = String\r
if File.Type == FileType or (int(FfsInf.PiSpecVersion, 16) >= 0x0001000A \\r
and FileType == 'DXE_DPEX' and File.Type == BINARY_FILE_TYPE_SMM_DEPEX) \\r
or (FileType == BINARY_FILE_TYPE_TE and File.Type == BINARY_FILE_TYPE_PE32):\r
- if '*' in FfsInf.TargetOverrideList or File.Target == '*' or File.Target in FfsInf.TargetOverrideList or FfsInf.TargetOverrideList == []:\r
+ if TAB_STAR in FfsInf.TargetOverrideList or File.Target == TAB_STAR or File.Target in FfsInf.TargetOverrideList or FfsInf.TargetOverrideList == []:\r
FileList.append(FfsInf.PatchEfiFile(File.Path, File.Type))\r
else:\r
GenFdsGlobalVariable.InfLogger ("\nBuild Target \'%s\' of File %s is not in the Scope of %s specified by INF %s in FDF" %(File.Target, File.File, FfsInf.TargetOverrideList, FfsInf.InfFileName))\r
continue\r
if Attr != "FLAGS":\r
continue\r
- if Target == "*" or Target == self._Target:\r
- if Tag == "*" or Tag == self._Toolchain:\r
+ if Target == TAB_STAR or Target == self._Target:\r
+ if Tag == TAB_STAR or Tag == self._Toolchain:\r
if 'COMMON' not in BuildOptions:\r
BuildOptions['COMMON'] = set()\r
- if Arch == "*":\r
+ if Arch == TAB_STAR:\r
BuildOptions['COMMON'].add(self.BuildOptions[Options])\r
if Arch in self.SupArchList:\r
if Arch not in BuildOptions:\r