mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-30 18:53:45 +01:00 
			
		
		
		
	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
		
			
				
	
	
		
			222 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @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
 |