Sync BaseTools Branch (version r2271) to EDKII main trunk.
BaseTool Branch: https://edk2-buildtools.svn.sourceforge.net/svnroot/edk2-buildtools/branches/Releases/BaseTools_r2100 Signed-off-by: lgao4 Reviewed-by: hchen30 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12214 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
221
BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignmentMisc.py
Normal file
221
BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignmentMisc.py
Normal file
@ -0,0 +1,221 @@
|
||||
## @file InfPomAlignmentMisc.py
|
||||
# This file contained the routines for InfPomAlignment
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
'''
|
||||
InfPomAlignmentMisc
|
||||
'''
|
||||
|
||||
##
|
||||
# Import modules
|
||||
#
|
||||
import Logger.Log as Logger
|
||||
from Library import DataType as DT
|
||||
from Library.Misc import ConvertArchList
|
||||
from Object.POM.ModuleObject import BinaryFileObject
|
||||
from Object.POM import CommonObject
|
||||
|
||||
## GenModuleHeaderUserExt
|
||||
#
|
||||
#
|
||||
def GenModuleHeaderUserExt(DefineObj, ArchString):
|
||||
DefinesDictNew = {}
|
||||
EdkReleaseVersion = DefineObj.GetEdkReleaseVersion()
|
||||
Shadow = DefineObj.GetShadow()
|
||||
DpxSource = DefineObj.GetDpxSource()
|
||||
PciVendorId = DefineObj.GetPciVendorId()
|
||||
PciDeviceId = DefineObj.GetPciDeviceId()
|
||||
PciClassCode = DefineObj.GetPciClassCode()
|
||||
PciRevision = DefineObj.GetPciRevision()
|
||||
PciCompress = DefineObj.GetPciCompress()
|
||||
CustomMakefile = DefineObj.GetCustomMakefile()
|
||||
UefiHiiResourceSection = DefineObj.GetUefiHiiResourceSection()
|
||||
|
||||
if EdkReleaseVersion != None:
|
||||
Name = DT.TAB_INF_DEFINES_EDK_RELEASE_VERSION
|
||||
Value = EdkReleaseVersion.GetValue()
|
||||
Statement = _GenInfDefineStateMent(EdkReleaseVersion.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
EdkReleaseVersion.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if Shadow != None:
|
||||
Name = DT.TAB_INF_DEFINES_SHADOW
|
||||
Value = Shadow.GetValue()
|
||||
Statement = _GenInfDefineStateMent(Shadow.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
Shadow.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if DpxSource != None:
|
||||
Name = DT.TAB_INF_DEFINES_DPX_SOURCE
|
||||
for DpxSourceItem in DpxSource:
|
||||
Value = DpxSourceItem[0]
|
||||
Statement = _GenInfDefineStateMent(DpxSourceItem[1].GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
DpxSourceItem[1].GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if PciVendorId != None:
|
||||
Name = DT.TAB_INF_DEFINES_PCI_VENDOR_ID
|
||||
Value = PciVendorId.GetValue()
|
||||
Statement = _GenInfDefineStateMent(PciVendorId.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
PciVendorId.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if PciDeviceId != None:
|
||||
Name = DT.TAB_INF_DEFINES_PCI_DEVICE_ID
|
||||
Value = PciDeviceId.GetValue()
|
||||
Statement = _GenInfDefineStateMent(PciDeviceId.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
PciDeviceId.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if PciClassCode != None:
|
||||
Name = DT.TAB_INF_DEFINES_PCI_CLASS_CODE
|
||||
Value = PciClassCode.GetValue()
|
||||
Statement = _GenInfDefineStateMent(PciClassCode.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
PciClassCode.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if PciRevision != None:
|
||||
Name = DT.TAB_INF_DEFINES_PCI_REVISION
|
||||
Value = PciRevision.GetValue()
|
||||
Statement = _GenInfDefineStateMent(PciRevision.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
PciRevision.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if PciCompress != None:
|
||||
Name = DT.TAB_INF_DEFINES_PCI_COMPRESS
|
||||
Value = PciCompress.GetValue()
|
||||
Statement = _GenInfDefineStateMent(PciCompress.Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
PciCompress.Comments.GetTailComments())
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if len(CustomMakefile) >= 1:
|
||||
for CustomMakefileItem in CustomMakefile:
|
||||
Name = DT.TAB_INF_DEFINES_CUSTOM_MAKEFILE
|
||||
#
|
||||
# Not with Feature Flag Expression
|
||||
#
|
||||
if len(CustomMakefileItem) == 3:
|
||||
if CustomMakefileItem[0] != '':
|
||||
Value = CustomMakefileItem[0] + ' | ' + CustomMakefileItem[1]
|
||||
else:
|
||||
Value = CustomMakefileItem[1]
|
||||
|
||||
Comments = CustomMakefileItem[2]
|
||||
Statement = _GenInfDefineStateMent(Comments.GetHeaderComments(),
|
||||
Name,
|
||||
Value,
|
||||
Comments.GetTailComments())
|
||||
|
||||
DefinesDictNew[Statement] = ArchString
|
||||
|
||||
if UefiHiiResourceSection != None:
|
||||
Name = DT.TAB_INF_DEFINES_UEFI_HII_RESOURCE_SECTION
|
||||
Value = UefiHiiResourceSection.GetValue()
|
||||
HeaderComment = UefiHiiResourceSection.Comments.GetHeaderComments()
|
||||
TailComment = UefiHiiResourceSection.Comments.GetTailComments()
|
||||
Statement = _GenInfDefineStateMent(HeaderComment,
|
||||
Name,
|
||||
Value,
|
||||
TailComment)
|
||||
DefinesDictNew[Statement] = ""
|
||||
|
||||
return DefinesDictNew
|
||||
|
||||
|
||||
## Generate the define statement that will be put into userextension
|
||||
# Not support comments.
|
||||
#
|
||||
# @param HeaderComment: the original header comment (# not remvoed)
|
||||
# @param Name: the definition keyword, should not be empty or none
|
||||
# @param Value: the definition keyword value
|
||||
# @param TailComment: the original Tail comment (# not remvoed)
|
||||
#
|
||||
# @return: the regenerated define statement
|
||||
#
|
||||
def _GenInfDefineStateMent(HeaderComment, Name, Value, TailComment):
|
||||
Logger.Debug(5, HeaderComment + TailComment)
|
||||
Statement = '%s = %s' % (Name, Value)
|
||||
|
||||
return Statement
|
||||
|
||||
## GenBinaryData
|
||||
#
|
||||
#
|
||||
def GenBinaryData(BinaryData, BinaryObj, BinariesDict, AsBuildIns, BinaryFileObjectList, SupArchList, BinaryModule):
|
||||
if BinaryModule:
|
||||
pass
|
||||
OriSupArchList = SupArchList
|
||||
for Item in BinaryData:
|
||||
ItemObj = BinaryObj[Item][0][0]
|
||||
if ItemObj.GetType() not in DT.BINARY_FILE_TYPE_UI_LIST + DT.BINARY_FILE_TYPE_VER_LIST:
|
||||
TagName = ItemObj.GetTagName()
|
||||
Family = ItemObj.GetFamily()
|
||||
else:
|
||||
TagName = ''
|
||||
Family = ''
|
||||
FFE = ItemObj.GetFeatureFlagExp()
|
||||
|
||||
#
|
||||
# If have architecturie specified, then use the specified architecturie;
|
||||
# If the section tag does not have an architecture modifier or the modifier is "common" (case in-sensitive),
|
||||
# and the VALID_ARCHITECTURES comment exists, the list from the VALID_ARCHITECTURES comment
|
||||
# can be used for the attribute.
|
||||
# If both not have VALID_ARCHITECTURE comment and no architecturie specified, then keep it empty.
|
||||
#
|
||||
SupArchList = ConvertArchList(ItemObj.GetSupArchList())
|
||||
SupArchList.sort()
|
||||
if len(SupArchList) == 1 and SupArchList[0] == 'COMMON':
|
||||
if not (len(OriSupArchList) == 1 or OriSupArchList[0] == 'COMMON'):
|
||||
SupArchList = OriSupArchList
|
||||
else:
|
||||
SupArchList = ['COMMON']
|
||||
|
||||
FileNameObj = CommonObject.FileNameObject()
|
||||
FileNameObj.SetFileType(ItemObj.GetType())
|
||||
FileNameObj.SetFilename(ItemObj.GetFileName())
|
||||
FileNameObj.SetFeatureFlag(FFE)
|
||||
FileNameObj.SetSupArchList(SupArchList)
|
||||
FileNameList = [FileNameObj]
|
||||
|
||||
BinaryFile = BinaryFileObject()
|
||||
BinaryFile.SetFileNameList(FileNameList)
|
||||
BinaryFile.SetAsBuiltList(AsBuildIns)
|
||||
BinaryFileObjectList.append(BinaryFile)
|
||||
|
||||
SupArchStr = ' '.join(SupArchList)
|
||||
Key = (ItemObj.GetFileName(), ItemObj.GetType(), FFE, SupArchStr)
|
||||
ValueItem = (ItemObj.GetTarget(), Family, TagName, '')
|
||||
if Key in BinariesDict:
|
||||
ValueList = BinariesDict[Key]
|
||||
ValueList.append(ValueItem)
|
||||
BinariesDict[Key] = ValueList
|
||||
else:
|
||||
BinariesDict[Key] = [ValueItem]
|
||||
|
||||
return BinariesDict, AsBuildIns, BinaryFileObjectList
|
Reference in New Issue
Block a user