Sync BaseTool trunk (version r2474) into EDKII BaseTools.
Signed-off-by: lgao4 Reviewed-by: gikidy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12883 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -173,7 +173,8 @@ class WorkspaceAutoGen(AutoGen):
|
||||
# @param SkuId SKU id from command line
|
||||
#
|
||||
def _Init(self, WorkspaceDir, ActivePlatform, Target, Toolchain, ArchList, MetaFileDb,
|
||||
BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=None, Fvs=None, Caps=None, SkuId='', UniFlag=None):
|
||||
BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=None, Fvs=None, Caps=None, SkuId='', UniFlag=None,
|
||||
Progress=None, BuildModule=None):
|
||||
if Fds is None:
|
||||
Fds = []
|
||||
if Fvs is None:
|
||||
@ -236,8 +237,25 @@ class WorkspaceAutoGen(AutoGen):
|
||||
# parse FDF file to get PCDs in it, if any
|
||||
if not self.FdfFile:
|
||||
self.FdfFile = self.Platform.FlashDefinition
|
||||
EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile)
|
||||
|
||||
EdkLogger.info("")
|
||||
if self.ArchList:
|
||||
EdkLogger.info('%-16s = %s' % ("Architecture(s)", ' '.join(self.ArchList)))
|
||||
EdkLogger.info('%-16s = %s' % ("Build target", self.BuildTarget))
|
||||
EdkLogger.info('%-16s = %s' % ("Toolchain",self.ToolChain))
|
||||
|
||||
EdkLogger.info('\n%-24s = %s' % ("Active Platform", self.Platform))
|
||||
if BuildModule:
|
||||
EdkLogger.info('%-24s = %s' % ("Active Module", BuildModule))
|
||||
|
||||
if self.FdfFile:
|
||||
EdkLogger.info('%-24s = %s' % ("Flash Image Definition", self.FdfFile))
|
||||
|
||||
EdkLogger.verbose("\nFLASH_DEFINITION = %s" % self.FdfFile)
|
||||
|
||||
if Progress:
|
||||
Progress.Start("\nProcessing meta-data")
|
||||
|
||||
if self.FdfFile:
|
||||
#
|
||||
# Mark now build in AutoGen Phase
|
||||
|
@ -1575,6 +1575,35 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
|
||||
if NumberOfLocalTokens == 0:
|
||||
AutoGenC.Append(gEmptyPcdDatabaseAutoGenC.Replace(Dict))
|
||||
else:
|
||||
#
|
||||
# Update Size Table to the right order, it should be same with LocalTokenNumberTable
|
||||
#
|
||||
SizeCNameTempList = []
|
||||
SizeGuidTempList = []
|
||||
SizeCurLenTempList = []
|
||||
SizeMaxLenTempList = []
|
||||
ReOrderFlag = True
|
||||
|
||||
if len(Dict['SIZE_TABLE_CNAME']) == 1:
|
||||
if not (Dict['SIZE_TABLE_CNAME'][0] and Dict['SIZE_TABLE_GUID'][0]):
|
||||
ReOrderFlag = False
|
||||
|
||||
if ReOrderFlag:
|
||||
for Count in range(len(Dict['TOKEN_CNAME'])):
|
||||
for Count1 in range(len(Dict['SIZE_TABLE_CNAME'])):
|
||||
if Dict['TOKEN_CNAME'][Count] == Dict['SIZE_TABLE_CNAME'][Count1] and \
|
||||
Dict['TOKEN_GUID'][Count] == Dict['SIZE_TABLE_GUID'][Count1]:
|
||||
SizeCNameTempList.append(Dict['SIZE_TABLE_CNAME'][Count1])
|
||||
SizeGuidTempList.append(Dict['SIZE_TABLE_GUID'][Count1])
|
||||
SizeCurLenTempList.append(Dict['SIZE_TABLE_CURRENT_LENGTH'][Count1])
|
||||
SizeMaxLenTempList.append(Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count1])
|
||||
|
||||
for Count in range(len(Dict['SIZE_TABLE_CNAME'])):
|
||||
Dict['SIZE_TABLE_CNAME'][Count] = SizeCNameTempList[Count]
|
||||
Dict['SIZE_TABLE_GUID'][Count] = SizeGuidTempList[Count]
|
||||
Dict['SIZE_TABLE_CURRENT_LENGTH'][Count] = SizeCurLenTempList[Count]
|
||||
Dict['SIZE_TABLE_MAXIMUM_LENGTH'][Count] = SizeMaxLenTempList[Count]
|
||||
|
||||
AutoGenC.Append(gPcdDatabaseAutoGenC.Replace(Dict))
|
||||
|
||||
return AutoGenH, AutoGenC
|
||||
|
@ -1,3 +1,16 @@
|
||||
#This file is for build version number auto generation
|
||||
## @file
|
||||
#
|
||||
gBUILD_VERSION = "Build 2460"
|
||||
# This file is for build version number auto generation
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
# distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
|
||||
gBUILD_VERSION = "Build 2474"
|
||||
|
@ -22,12 +22,12 @@ from MetaDataParser import *
|
||||
from optparse import OptionParser
|
||||
from Configuration import Configuration
|
||||
from Check import Check
|
||||
|
||||
import Common.GlobalData as GlobalData
|
||||
|
||||
from Common.String import NormPath
|
||||
from Common.BuildVersion import gBUILD_VERSION
|
||||
from Common import BuildToolError
|
||||
|
||||
from Common.Misc import PathClass
|
||||
from MetaFileWorkspace.MetaFileParser import DscParser
|
||||
from MetaFileWorkspace.MetaFileParser import DecParser
|
||||
from MetaFileWorkspace.MetaFileParser import InfParser
|
||||
@ -61,7 +61,41 @@ class Ecc(object):
|
||||
|
||||
# Parse the options and args
|
||||
self.ParseOption()
|
||||
|
||||
#
|
||||
# Check EFI_SOURCE (Edk build convention). EDK_SOURCE will always point to ECP
|
||||
#
|
||||
WorkspaceDir = os.path.normcase(os.path.normpath(os.environ["WORKSPACE"]))
|
||||
os.environ["WORKSPACE"] = WorkspaceDir
|
||||
if "ECP_SOURCE" not in os.environ:
|
||||
os.environ["ECP_SOURCE"] = os.path.join(WorkspaceDir, GlobalData.gEdkCompatibilityPkg)
|
||||
if "EFI_SOURCE" not in os.environ:
|
||||
os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]
|
||||
if "EDK_SOURCE" not in os.environ:
|
||||
os.environ["EDK_SOURCE"] = os.environ["ECP_SOURCE"]
|
||||
|
||||
#
|
||||
# Unify case of characters on case-insensitive systems
|
||||
#
|
||||
EfiSourceDir = os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"]))
|
||||
EdkSourceDir = os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"]))
|
||||
EcpSourceDir = os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"]))
|
||||
|
||||
os.environ["EFI_SOURCE"] = EfiSourceDir
|
||||
os.environ["EDK_SOURCE"] = EdkSourceDir
|
||||
os.environ["ECP_SOURCE"] = EcpSourceDir
|
||||
|
||||
GlobalData.gWorkspace = WorkspaceDir
|
||||
GlobalData.gEfiSource = EfiSourceDir
|
||||
GlobalData.gEdkSource = EdkSourceDir
|
||||
GlobalData.gEcpSource = EcpSourceDir
|
||||
|
||||
GlobalData.gGlobalDefines["WORKSPACE"] = WorkspaceDir
|
||||
GlobalData.gGlobalDefines["EFI_SOURCE"] = EfiSourceDir
|
||||
GlobalData.gGlobalDefines["EDK_SOURCE"] = EdkSourceDir
|
||||
GlobalData.gGlobalDefines["ECP_SOURCE"] = EcpSourceDir
|
||||
|
||||
|
||||
# Generate checkpoints list
|
||||
EccGlobalData.gConfig = Configuration(self.ConfigFile)
|
||||
|
||||
@ -152,7 +186,7 @@ class Ecc(object):
|
||||
EdkLogger.quiet("Parsing %s" % Filename)
|
||||
Op.write("%s\r" % Filename)
|
||||
#Dsc(Filename, True, True, EccGlobalData.gWorkspace, EccGlobalData.gDb)
|
||||
self.MetaFile = DscParser(Filename, MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True))
|
||||
self.MetaFile = DscParser(PathClass(Filename, Root), MODEL_FILE_DSC, MetaFileStorage(EccGlobalData.gDb.TblDsc.Cur, Filename, MODEL_FILE_DSC, True))
|
||||
# alwasy do post-process, in case of macros change
|
||||
self.MetaFile.DoPostProcess()
|
||||
self.MetaFile.Start()
|
||||
|
@ -770,13 +770,13 @@ class DscParser(MetaFileParser):
|
||||
def Start(self):
|
||||
Content = ''
|
||||
try:
|
||||
Content = open(str(self.MetaFile), 'r').readlines()
|
||||
Content = open(str(self.MetaFile.Path), 'r').readlines()
|
||||
except:
|
||||
EdkLogger.error("Parser", FILE_READ_FAILURE, ExtraData=self.MetaFile)
|
||||
#
|
||||
# Insert a record for file
|
||||
#
|
||||
Filename = NormPath(self.MetaFile)
|
||||
Filename = NormPath(self.MetaFile.Path)
|
||||
FileID = self.TblFile.GetFileId(Filename)
|
||||
if FileID:
|
||||
self.FileID = FileID
|
||||
@ -1162,6 +1162,8 @@ class DscParser(MetaFileParser):
|
||||
self._IdMapping[Id] = self._LastItem
|
||||
|
||||
RecordList = self._Table.GetAll()
|
||||
self._Table.Drop()
|
||||
self._RawTable.Drop()
|
||||
for Record in RecordList:
|
||||
EccGlobalData.gDb.TblDsc.Insert(Record[1],Record[2],Record[3],Record[4],Record[5],Record[6],Record[7],Record[8],Record[9],Record[10],Record[11],Record[12],Record[13],Record[14])
|
||||
GlobalData.gPlatformDefines.update(self._FileLocalMacros)
|
||||
@ -1300,7 +1302,7 @@ class DscParser(MetaFileParser):
|
||||
#
|
||||
elif "ECP_SOURCE" in GlobalData.gCommandLineDefines.keys():
|
||||
__IncludeMacros['ECP_SOURCE'] = GlobalData.gCommandLineDefines['ECP_SOURCE']
|
||||
|
||||
|
||||
__IncludeMacros['EFI_SOURCE'] = GlobalData.gGlobalDefines['EFI_SOURCE']
|
||||
__IncludeMacros['EDK_SOURCE'] = GlobalData.gGlobalDefines['EDK_SOURCE']
|
||||
#
|
||||
|
@ -679,7 +679,7 @@ class FdfParser:
|
||||
PreIndex = 0
|
||||
StartPos = CurLine.find('$(', PreIndex)
|
||||
EndPos = CurLine.find(')', StartPos+2)
|
||||
while StartPos != -1 and EndPos != -1:
|
||||
while StartPos != -1 and EndPos != -1 and not (self.__Token == '!ifdef' or self.__Token == '!ifndef'):
|
||||
MacroName = CurLine[StartPos+2 : EndPos]
|
||||
MacorValue = self.__GetMacroValue(MacroName)
|
||||
if MacorValue != None:
|
||||
|
@ -316,7 +316,7 @@ class FV (FvClassObject):
|
||||
Buffer += pack('B', int(ByteList[Index1], 16))
|
||||
|
||||
Guid = self.FvNameGuid.split('-')
|
||||
Buffer = pack('LHHBBBBBBBBL',
|
||||
Buffer = pack('=LHHBBBBBBBBL',
|
||||
int(Guid[0], 16),
|
||||
int(Guid[1], 16),
|
||||
int(Guid[2], 16),
|
||||
|
@ -1,3 +1,20 @@
|
||||
#This file is for build version number auto generation
|
||||
## @file
|
||||
#
|
||||
gBUILD_VERSION = "Build 2460"
|
||||
# This file is for build version number auto generation
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
# distribution. The full text of the license may be found at
|
||||
# http://opensource.org/licenses/bsd-license.php
|
||||
#
|
||||
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#
|
||||
|
||||
'''
|
||||
Build version information
|
||||
'''
|
||||
|
||||
gBUILD_VERSION = "Build 2474"
|
||||
|
@ -403,7 +403,7 @@ def Main(Options = None):
|
||||
DestFile = os.path.normpath(os.path.join(DestDir, DistFileName))
|
||||
if os.path.exists(DestFile):
|
||||
FileName, Ext = os.path.splitext(DistFileName)
|
||||
NewFileName = FileName + '_' + DistPkg.Header.GetGuid() + '_' + DistPkg.Header.GetVersion() + '.' + Ext
|
||||
NewFileName = FileName + '_' + DistPkg.Header.GetGuid() + '_' + DistPkg.Header.GetVersion() + Ext
|
||||
DestFile = os.path.normpath(os.path.join(DestDir, NewFileName))
|
||||
if os.path.exists(DestFile):
|
||||
#
|
||||
|
@ -286,7 +286,7 @@ def IsValidInstallPath(Path):
|
||||
if os.path.isabs(Path):
|
||||
return False
|
||||
else:
|
||||
if Path[1:2] == ':' or Path.find('\\') >=0:
|
||||
if Path[1:2] == ':':
|
||||
return False
|
||||
if os.path.isabs(Path):
|
||||
return False
|
||||
|
@ -643,35 +643,6 @@ def ConvertToSqlString(StringList):
|
||||
def ConvertToSqlString2(String):
|
||||
return String.replace("'", "''")
|
||||
|
||||
## RemoveBlockComment
|
||||
#
|
||||
# Remove comment block
|
||||
#
|
||||
# @param Lines: Block Comment Lines
|
||||
#
|
||||
def RemoveBlockComment(Lines):
|
||||
IsFindBlockComment = False
|
||||
ReservedLine = ''
|
||||
NewLines = []
|
||||
|
||||
for Line in Lines:
|
||||
Line = Line.strip()
|
||||
#
|
||||
# Remove comment block
|
||||
#
|
||||
if Line.find(DataType.TAB_COMMENT_EDK1_START) > -1:
|
||||
ReservedLine = GetSplitList(Line, DataType.TAB_COMMENT_EDK1_START, 1)[0]
|
||||
IsFindBlockComment = True
|
||||
if Line.find(DataType.TAB_COMMENT_EDK1_END) > -1:
|
||||
Line = ReservedLine + GetSplitList(Line, DataType.TAB_COMMENT_EDK1_END, 1)[1]
|
||||
ReservedLine = ''
|
||||
IsFindBlockComment = False
|
||||
if IsFindBlockComment:
|
||||
NewLines.append('')
|
||||
continue
|
||||
NewLines.append(Line)
|
||||
return NewLines
|
||||
|
||||
## GetStringOfList
|
||||
#
|
||||
# Get String of a List
|
||||
|
@ -339,7 +339,7 @@ class InfParser(InfSectionParser):
|
||||
#
|
||||
# Found the first section, No file header.
|
||||
#
|
||||
if not DefineSectionParsedFlag:
|
||||
if DefineSectionParsedFlag and not HeaderCommentEnd:
|
||||
Logger.Error("InfParser",
|
||||
FORMAT_INVALID,
|
||||
ST.ERR_INF_PARSER_HEADER_MISSGING,
|
||||
|
@ -750,7 +750,6 @@ class InfPomAlignment(ModuleObject):
|
||||
BinaryObj = self.Parser.InfBinariesSection.GetBinary()
|
||||
|
||||
BinaryData = BinaryObj.keys()
|
||||
BinaryData.sort()
|
||||
|
||||
#
|
||||
# If the INF file does not contain a [Sources] section, and the INF file does contain a [Binaries] section,
|
||||
|
@ -383,10 +383,21 @@ class DscBuildData(PlatformBuildClassObject):
|
||||
self._LoadFixAddress = int (self._LoadFixAddress, 0)
|
||||
except:
|
||||
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (self._LoadFixAddress))
|
||||
if self._LoadFixAddress < 0:
|
||||
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value %s" % (self._LoadFixAddress))
|
||||
if self._LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self._LoadFixAddress % 0x1000 != 0:
|
||||
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value %s" % (self._LoadFixAddress))
|
||||
|
||||
#
|
||||
# If command line defined, should override the value in DSC file.
|
||||
#
|
||||
if 'FIX_LOAD_TOP_MEMORY_ADDRESS' in GlobalData.gCommandLineDefines.keys():
|
||||
try:
|
||||
self._LoadFixAddress = int(GlobalData.gCommandLineDefines['FIX_LOAD_TOP_MEMORY_ADDRESS'], 0)
|
||||
except:
|
||||
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS %s is not valid dec or hex string" % (GlobalData.gCommandLineDefines['FIX_LOAD_TOP_MEMORY_ADDRESS']))
|
||||
|
||||
if self._LoadFixAddress < 0:
|
||||
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid negative value 0x%x" % (self._LoadFixAddress))
|
||||
if self._LoadFixAddress != 0xFFFFFFFFFFFFFFFF and self._LoadFixAddress % 0x1000 != 0:
|
||||
EdkLogger.error("build", PARAMETER_INVALID, "FIX_LOAD_TOP_MEMORY_ADDRESS is set to the invalid unaligned 4K value 0x%x" % (self._LoadFixAddress))
|
||||
|
||||
return self._LoadFixAddress
|
||||
|
||||
## Retrieve RFCLanguage filter
|
||||
|
@ -745,17 +745,8 @@ class Build():
|
||||
EdkLogger.quiet("%-16s = %s" % ("EDK_TOOLS_PATH", os.environ["EDK_TOOLS_PATH"]))
|
||||
|
||||
EdkLogger.info("")
|
||||
if self.ArchList:
|
||||
EdkLogger.info('%-16s = %s' % ("Architecture(s)", ' '.join(self.ArchList)))
|
||||
EdkLogger.info('%-16s = %s' % ("Build target", ' '.join(self.BuildTargetList)))
|
||||
EdkLogger.info('%-16s = %s' % ("Toolchain", ' '.join(self.ToolChainList)))
|
||||
|
||||
EdkLogger.info('\n%-16s = %s' % ("Active Platform", self.PlatformFile))
|
||||
if self.ModuleFile:
|
||||
EdkLogger.info('%-16s = %s' % ("Active Module", self.ModuleFile))
|
||||
|
||||
os.chdir(self.WorkspaceDir)
|
||||
self.Progress.Start("\nProcessing meta-data")
|
||||
|
||||
## Load configuration
|
||||
#
|
||||
@ -1241,7 +1232,8 @@ class Build():
|
||||
self.FvList,
|
||||
self.CapList,
|
||||
self.SkuId,
|
||||
self.UniFlag
|
||||
self.UniFlag,
|
||||
self.Progress
|
||||
)
|
||||
self.Fdf = Wa.FdfFile
|
||||
self.LoadFixAddress = Wa.Platform.LoadFixAddress
|
||||
@ -1316,7 +1308,9 @@ class Build():
|
||||
self.FvList,
|
||||
self.CapList,
|
||||
self.SkuId,
|
||||
self.UniFlag
|
||||
self.UniFlag,
|
||||
self.Progress,
|
||||
self.ModuleFile
|
||||
)
|
||||
self.Fdf = Wa.FdfFile
|
||||
self.LoadFixAddress = Wa.Platform.LoadFixAddress
|
||||
@ -1401,7 +1395,8 @@ class Build():
|
||||
self.FvList,
|
||||
self.CapList,
|
||||
self.SkuId,
|
||||
self.UniFlag
|
||||
self.UniFlag,
|
||||
self.Progress
|
||||
)
|
||||
self.Fdf = Wa.FdfFile
|
||||
self.LoadFixAddress = Wa.Platform.LoadFixAddress
|
||||
|
Reference in New Issue
Block a user