Sync EDKII BaseTools to BaseTools project r2068.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10937 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1172,14 +1172,15 @@ def ParseConsoleLog(Filename):
|
|||||||
#
|
#
|
||||||
def CheckPcdDatum(Type, Value):
|
def CheckPcdDatum(Type, Value):
|
||||||
if Type == "VOID*":
|
if Type == "VOID*":
|
||||||
if not ((Value.startswith('L"') or Value.startswith('"') and Value.endswith('"'))
|
if not (((Value.startswith('L"') or Value.startswith('"')) and Value.endswith('"'))
|
||||||
or (Value.startswith('{') and Value.endswith('}'))
|
or (Value.startswith('{') and Value.endswith('}'))
|
||||||
):
|
):
|
||||||
return False, "Invalid value [%s] of type [%s]; must be in the form of {...} for array"\
|
return False, "Invalid value [%s] of type [%s]; must be in the form of {...} for array"\
|
||||||
", or \"...\" for string, or L\"...\" for unicode string" % (Value, Type)
|
", or \"...\" for string, or L\"...\" for unicode string" % (Value, Type)
|
||||||
elif Type == 'BOOLEAN':
|
elif Type == 'BOOLEAN':
|
||||||
if Value not in ['TRUE', 'FALSE']:
|
if Value not in ['TRUE', 'True', 'true', '0x1', '0x01', '1', 'FALSE', 'False', 'false', '0x0', '0x00', '0']:
|
||||||
return False, "Invalid value [%s] of type [%s]; must be TRUE or FALSE" % (Value, Type)
|
return False, "Invalid value [%s] of type [%s]; must be one of TRUE, True, true, 0x1, 0x01, 1"\
|
||||||
|
", FALSE, False, false, 0x0, 0x00, 0" % (Value, Type)
|
||||||
elif type(Value) == type(""):
|
elif type(Value) == type(""):
|
||||||
try:
|
try:
|
||||||
Value = long(Value, 0)
|
Value = long(Value, 0)
|
||||||
|
@ -41,7 +41,7 @@ gHexNumberPattern = re.compile("0[xX]([0-9a-fA-F]+)")
|
|||||||
## Regular expression for matching "Include ()" in asl file
|
## Regular expression for matching "Include ()" in asl file
|
||||||
gAslIncludePattern = re.compile("^(\s*)[iI]nclude\s*\(\"?([^\"\(\)]+)\"\)", re.MULTILINE)
|
gAslIncludePattern = re.compile("^(\s*)[iI]nclude\s*\(\"?([^\"\(\)]+)\"\)", re.MULTILINE)
|
||||||
## Regular expression for matching C style #include "XXX.asl" in asl file
|
## Regular expression for matching C style #include "XXX.asl" in asl file
|
||||||
gAslCIncludePattern = re.compile(r'^(\s*)#include\s*[<"]\s*([-\\/\w.]+)\s*[>"]', re.MULTILINE)
|
gAslCIncludePattern = re.compile(r'^(\s*)#include\s*[<"]\s*([-\\/\w.]+)\s*([>"])', re.MULTILINE)
|
||||||
## Regular expression for matching constant with 'ULL' and 'UL', 'LL', 'L' postfix
|
## Regular expression for matching constant with 'ULL' and 'UL', 'LL', 'L' postfix
|
||||||
gLongNumberPattern = re.compile("(0[xX][0-9a-fA-F]+|[0-9]+)U?LL", re.MULTILINE)
|
gLongNumberPattern = re.compile("(0[xX][0-9a-fA-F]+|[0-9]+)U?LL", re.MULTILINE)
|
||||||
## Patterns used to convert EDK conventions to EDK2 ECP conventions
|
## Patterns used to convert EDK conventions to EDK2 ECP conventions
|
||||||
@ -273,12 +273,23 @@ def TrimPreprocessedVfr(Source, Target):
|
|||||||
# @param Source File to be read
|
# @param Source File to be read
|
||||||
# @param Indent Spaces before the Include() statement
|
# @param Indent Spaces before the Include() statement
|
||||||
# @param IncludePathList The list of external include file
|
# @param IncludePathList The list of external include file
|
||||||
|
# @param LocalSearchPath If LocalSearchPath is specified, this path will be searched
|
||||||
|
# first for the included file; otherwise, only the path specified
|
||||||
|
# in the IncludePathList will be searched.
|
||||||
#
|
#
|
||||||
def DoInclude(Source, Indent='', IncludePathList=[]):
|
def DoInclude(Source, Indent='', IncludePathList=[], LocalSearchPath=None):
|
||||||
NewFileContent = []
|
NewFileContent = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for IncludePath in IncludePathList:
|
#
|
||||||
|
# Search LocalSearchPath first if it is specified.
|
||||||
|
#
|
||||||
|
if LocalSearchPath:
|
||||||
|
SearchPathList = [LocalSearchPath] + IncludePathList
|
||||||
|
else:
|
||||||
|
SearchPathList = IncludePathList
|
||||||
|
|
||||||
|
for IncludePath in SearchPathList:
|
||||||
IncludeFile = os.path.join(IncludePath, Source)
|
IncludeFile = os.path.join(IncludePath, Source)
|
||||||
if os.path.isfile(IncludeFile):
|
if os.path.isfile(IncludeFile):
|
||||||
F = open(IncludeFile, "r")
|
F = open(IncludeFile, "r")
|
||||||
@ -298,15 +309,21 @@ def DoInclude(Source, Indent='', IncludePathList=[]):
|
|||||||
gIncludedAslFile.append(IncludeFile)
|
gIncludedAslFile.append(IncludeFile)
|
||||||
|
|
||||||
for Line in F:
|
for Line in F:
|
||||||
|
LocalSearchPath = None
|
||||||
Result = gAslIncludePattern.findall(Line)
|
Result = gAslIncludePattern.findall(Line)
|
||||||
if len(Result) == 0:
|
if len(Result) == 0:
|
||||||
Result = gAslCIncludePattern.findall(Line)
|
Result = gAslCIncludePattern.findall(Line)
|
||||||
if len(Result) == 0 or os.path.splitext(Result[0][1])[1].lower() not in [".asl", ".asi"]:
|
if len(Result) == 0 or os.path.splitext(Result[0][1])[1].lower() not in [".asl", ".asi"]:
|
||||||
NewFileContent.append("%s%s" % (Indent, Line))
|
NewFileContent.append("%s%s" % (Indent, Line))
|
||||||
continue
|
continue
|
||||||
|
#
|
||||||
|
# We should first search the local directory if current file are using pattern #include "XXX"
|
||||||
|
#
|
||||||
|
if Result[0][2] == '"':
|
||||||
|
LocalSearchPath = os.path.dirname(IncludeFile)
|
||||||
CurrentIndent = Indent + Result[0][0]
|
CurrentIndent = Indent + Result[0][0]
|
||||||
IncludedFile = Result[0][1]
|
IncludedFile = Result[0][1]
|
||||||
NewFileContent.extend(DoInclude(IncludedFile, CurrentIndent, IncludePathList))
|
NewFileContent.extend(DoInclude(IncludedFile, CurrentIndent, IncludePathList, LocalSearchPath))
|
||||||
NewFileContent.append("\n")
|
NewFileContent.append("\n")
|
||||||
|
|
||||||
gIncludedAslFile.pop()
|
gIncludedAslFile.pop()
|
||||||
|
@ -503,6 +503,13 @@ class InfParser(MetaFileParser):
|
|||||||
EdkLogger.error('Parser', FORMAT_INVALID, "No token space GUID or PCD name specified",
|
EdkLogger.error('Parser', FORMAT_INVALID, "No token space GUID or PCD name specified",
|
||||||
ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<PcdCName>)",
|
ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<PcdCName>)",
|
||||||
File=self.MetaFile, Line=self._LineIndex+1)
|
File=self.MetaFile, Line=self._LineIndex+1)
|
||||||
|
# if value are 'True', 'true', 'TRUE' or 'False', 'false', 'FALSE', replace with integer 1 or 0.
|
||||||
|
if self._ValueList[2] != '':
|
||||||
|
InfPcdValueList = GetSplitValueList(TokenList[1], TAB_VALUE_SPLIT, 1)
|
||||||
|
if InfPcdValueList[0] in ['True', 'true', 'TRUE']:
|
||||||
|
self._ValueList[2] = TokenList[1].replace(InfPcdValueList[0], '1', 1);
|
||||||
|
elif InfPcdValueList[0] in ['False', 'false', 'FALSE']:
|
||||||
|
self._ValueList[2] = TokenList[1].replace(InfPcdValueList[0], '0', 1);
|
||||||
|
|
||||||
## [depex] section parser
|
## [depex] section parser
|
||||||
def _DepexParser(self):
|
def _DepexParser(self):
|
||||||
@ -929,7 +936,13 @@ class DscParser(MetaFileParser):
|
|||||||
EdkLogger.error('Parser', FORMAT_INVALID, "No PCD value given",
|
EdkLogger.error('Parser', FORMAT_INVALID, "No PCD value given",
|
||||||
ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<TokenCName>|<PcdValue>)",
|
ExtraData=self._CurrentLine + " (<TokenSpaceGuidCName>.<TokenCName>|<PcdValue>)",
|
||||||
File=self.MetaFile, Line=self._LineIndex+1)
|
File=self.MetaFile, Line=self._LineIndex+1)
|
||||||
|
# if value are 'True', 'true', 'TRUE' or 'False', 'false', 'FALSE', replace with integer 1 or 0.
|
||||||
|
DscPcdValueList = GetSplitValueList(TokenList[1], TAB_VALUE_SPLIT, 1)
|
||||||
|
if DscPcdValueList[0] in ['True', 'true', 'TRUE']:
|
||||||
|
self._ValueList[2] = TokenList[1].replace(DscPcdValueList[0], '1', 1);
|
||||||
|
elif DscPcdValueList[0] in ['False', 'false', 'FALSE']:
|
||||||
|
self._ValueList[2] = TokenList[1].replace(DscPcdValueList[0], '0', 1);
|
||||||
|
|
||||||
## [components] section parser
|
## [components] section parser
|
||||||
def _ComponentParser(self):
|
def _ComponentParser(self):
|
||||||
if self._CurrentLine[-1] == '{':
|
if self._CurrentLine[-1] == '{':
|
||||||
@ -1226,6 +1239,10 @@ class DecParser(MetaFileParser):
|
|||||||
if not IsValid:
|
if not IsValid:
|
||||||
EdkLogger.error('Parser', FORMAT_INVALID, Cause, ExtraData=self._CurrentLine,
|
EdkLogger.error('Parser', FORMAT_INVALID, Cause, ExtraData=self._CurrentLine,
|
||||||
File=self.MetaFile, Line=self._LineIndex+1)
|
File=self.MetaFile, Line=self._LineIndex+1)
|
||||||
|
if ValueList[0] in ['True', 'true', 'TRUE']:
|
||||||
|
ValueList[0] = '1'
|
||||||
|
elif ValueList[0] in ['False', 'false', 'FALSE']:
|
||||||
|
ValueList[0] = '0'
|
||||||
|
|
||||||
self._ValueList[2] = ValueList[0].strip() + '|' + ValueList[1].strip() + '|' + ValueList[2].strip()
|
self._ValueList[2] = ValueList[0].strip() + '|' + ValueList[1].strip() + '|' + ValueList[2].strip()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user