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:
lgao4
2010-10-14 06:30:37 +00:00
parent 5b7183efb1
commit a725268048
25 changed files with 43 additions and 8 deletions

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.

View File

@ -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)

View File

@ -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()

View File

@ -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()