mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 19:23:54 +01:00 
			
		
		
		
	1.BaseTool add ATTRIBUTE (+/-RT, RO) support in PCD declaration in DSC file 2.BaseTool collect valid PCD value in DEC file and generate data base for runtime sanity check 3.BaseTool support SetPcd error. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Bob Feng" <bob.c.feng@intel.com> Reviewed-by: "Chen, Hesheng" <hesheng.chen@intel.com> Reviewed-by: "Liu, Yingke D" <yingke.d.liu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17158 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			475 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			475 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # This file is used to define common items of class object
 | |
| #
 | |
| # Copyright (c) 2007 - 2015, 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.
 | |
| 
 | |
| 
 | |
| #
 | |
| # Generate help text
 | |
| #
 | |
| def GenerateHelpText(Text, Lang):
 | |
|     if Text:
 | |
|         Ht = HelpTextClass()
 | |
|         Ht.Lang = Lang
 | |
|         Ht.String = Text
 | |
|     
 | |
|         return Ht
 | |
|     
 | |
|     return None
 | |
| 
 | |
| ## CommonClass
 | |
| #
 | |
| # This class defined common items used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:       Inherited from object class
 | |
| # @param Usage:        Input value for Usage, default is [] 
 | |
| # @param FeatureFlag:  Input value for FeatureFalg, default is ''
 | |
| # @param SupArchList:  Input value for SupArchList, default is []
 | |
| # @param HelpText:     Input value for HelpText, default is ''
 | |
| #
 | |
| # @var Usage:          To store value for Usage, selection scope is in below list
 | |
| #                      ALWAYS_CONSUMED | SOMETIMES_CONSUMED | ALWAYS_PRODUCED | SOMETIMES_PRODUCED | TO_START | BY_START | PRIVATE
 | |
| # @var FeatureFlag:    To store value for FeatureFlag
 | |
| # @var SupArchList:    To store value for SupArchList, selection scope is in below list
 | |
| #                      EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64
 | |
| # @var HelpText:       To store value for HelpText
 | |
| #
 | |
| class CommonClass(object):
 | |
|     def __init__(self, Usage = None, FeatureFlag = '', SupArchList = None, HelpText = ''):
 | |
|         self.Usage = Usage
 | |
|         if self.Usage == None:
 | |
|             self.Usage = []
 | |
|         self.FeatureFlag = FeatureFlag
 | |
|         self.SupArchList = SupArchList
 | |
|         if self.SupArchList == None:
 | |
|             self.SupArchList = []
 | |
|         self.HelpText = HelpText
 | |
|         self.HelpTextList = []
 | |
| 
 | |
| ## CommonHeaderClass
 | |
| #
 | |
| # This class defined common items used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:          Inherited from object class
 | |
| #
 | |
| # @var Abstract:          To store value for Abstract
 | |
| # @var Description:       To store value for Description
 | |
| # @var Copyright:         To store value for Copyright
 | |
| # @var License:           To store value for License
 | |
| # @var Specification:     To store value for Specification
 | |
| #
 | |
| class CommonHeaderClass(object):
 | |
|     def __init__(self):
 | |
|         self.Abstract = ''
 | |
|         self.Description = ''
 | |
|         self.Copyright = ''
 | |
|         self.License = ''
 | |
|         self.Specification = {}
 | |
| 
 | |
| ## HelpTextClass
 | |
| #
 | |
| # This class defined HelpText item used in PKG file
 | |
| # 
 | |
| # @param object:     Inherited from object class
 | |
| #
 | |
| # @var Lang:         To store value for Lang
 | |
| # @var String:       To store value for String
 | |
| #
 | |
| class HelpTextClass(object):
 | |
|     def __init__(self):
 | |
|         self.Lang = ''
 | |
|         self.String = ''
 | |
|     
 | |
| ## DefineClass
 | |
| #
 | |
| # This class defined item DEFINE used in Module/Platform/Package files
 | |
| #
 | |
| # @param object:  Inherited from object class
 | |
| #
 | |
| # @var Define:    To store value for Define, it is a set structure as
 | |
| #                 { (DefineName, Arch) : DefineValue, ... }
 | |
| #
 | |
| class DefineClass(object):
 | |
|     def __init__(self):
 | |
|         self.Define = {}
 | |
| 
 | |
| ## ClonedRecordClass
 | |
| #
 | |
| # This class defined ClonedRecord items used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:        Inherited from object class
 | |
| #
 | |
| # @var Id:              To store value for Id
 | |
| # @var FarGuid:         To store value for FarGuid
 | |
| # @var PackageGuid:     To store value for PackageGuid
 | |
| # @var PackageVersion:  To store value for PackageVersion
 | |
| # @var ModuleGuid:      To store value for ModuleGuid
 | |
| # @var ModuleVersion:   To store value for ModuleVersion
 | |
| #
 | |
| class ClonedRecordClass(object):
 | |
|     def __init__(self):
 | |
|         self.Id = 0
 | |
|         self.FarGuid = ''
 | |
|         self.PackageGuid = ''
 | |
|         self.PackageVersion = ''
 | |
|         self.ModuleGuid = ''
 | |
|         self.ModuleVersion = ''
 | |
| 
 | |
| ## IdentificationClass
 | |
| #
 | |
| # This class defined Identification items used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:  Inherited from object class
 | |
| #
 | |
| # @var Name:      To store value for Name
 | |
| #                 ModuleName(Inf) / PackageName(Dec) / PlatformName(Dsc)
 | |
| # @var Guid:      To store value for Guid
 | |
| # @var Version:   To store value for Version
 | |
| # @var FileName:  To store value for FileName
 | |
| # @var FullPath:  To store value for FullPath
 | |
| #
 | |
| class IdentificationClass(object):
 | |
|     def __init__(self):
 | |
|         self.Name = ''
 | |
|         self.BaseName = ''
 | |
|         self.Guid = ''
 | |
|         self.Version = ''
 | |
|         self.FileName = ''
 | |
|         self.FullPath = ''
 | |
|         self.RelaPath = ''
 | |
|         self.PackagePath = ''
 | |
|         self.ModulePath = ''
 | |
|         self.CombinePath = ''
 | |
| 
 | |
| ## IncludeStatementClass
 | |
| #
 | |
| # This class defined IncludeFiles item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:      Inherited from object class
 | |
| #
 | |
| # @var IncludeFiles:  To store value for IncludeFiles
 | |
| #                     It is a set structure as { IncludeFile : [Arch1, Arch2, ...], ... }
 | |
| #
 | |
| class IncludeStatementClass(object):
 | |
|     def __init__(self):
 | |
|         self.IncludeFiles = {}                             
 | |
| 
 | |
| ## GuidProtocolPpiCommonClass
 | |
| #
 | |
| # This class defined Guid, Protocol and Ppi like items used in Module/Platform/Package files
 | |
| # 
 | |
| # @param CommonClass:  Inherited from CommonClass class
 | |
| #
 | |
| # @var Name:           To store value for Name
 | |
| # @var CName:          To store value for CName
 | |
| # @var Guid:           To store value for Guid
 | |
| # @var Notify:         To store value for Notify
 | |
| # @var GuidTypeList:   To store value for GuidTypeList, selection scope is in below list
 | |
| #                      DATA_HUB_RECORD | EFI_EVENT | EFI_SYSTEM_CONFIGURATION_TABLE | EFI_VARIABLE | GUID | HII_PACKAGE_LIST | HOB | TOKEN_SPACE_GUID
 | |
| # @var SupModuleList:  To store value for SupModuleList, selection scope is in below list
 | |
| #                      BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE
 | |
| #
 | |
| class GuidProtocolPpiCommonClass(CommonClass):
 | |
|     def __init__(self):
 | |
|         self.Name = ''
 | |
|         self.CName = ''
 | |
|         self.Guid = ''
 | |
|         self.VariableName = ''
 | |
|         self.Notify = False
 | |
|         self.GuidTypeList = []
 | |
|         self.GuidTypeLists = []
 | |
|         self.SupModuleList = []                           
 | |
|         CommonClass.__init__(self)
 | |
| 
 | |
| ## LibraryClassClass
 | |
| #
 | |
| # This class defined Library item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param CommonClass:               Inherited from CommonClass class
 | |
| # @param DefineClass:               Inherited from DefineClass class
 | |
| #
 | |
| # @var LibraryClass:                To store value for LibraryClass
 | |
| # @var IncludeHeader:               To store value for IncludeHeader
 | |
| # @var RecommendedInstanceVersion:  To store value for RecommendedInstanceVersion
 | |
| # @var RecommendedInstanceGuid:     To store value for RecommendedInstanceGuid
 | |
| # @var RecommendedInstance:         To store value for RecommendedInstance, selection scope is in below list
 | |
| #                                   DATA_HUB_RECORD | EFI_EVENT | EFI_SYSTEM_CONFIGURATION_TABLE | EFI_VARIABLE | GUID | HII_PACKAGE_LIST | HOB | TOKEN_SPACE_GUID
 | |
| # @var SupModuleList:               To store value for SupModuleList, selection scope is in below list
 | |
| #                                   BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE
 | |
| #
 | |
| class LibraryClassClass(CommonClass, DefineClass):
 | |
|     def __init__(self):
 | |
|         self.LibraryClass = ''
 | |
|         self.IncludeHeader = ''
 | |
|         self.RecommendedInstanceVersion = ''
 | |
|         self.RecommendedInstanceGuid = ''
 | |
|         self.RecommendedInstance = ''
 | |
|         self.SupModuleList = []
 | |
|         CommonClass.__init__(self)
 | |
|         DefineClass.__init__(self)
 | |
| 
 | |
| ## GuidClass
 | |
| #
 | |
| # This class defined Guid item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param GuidProtocolPpiCommonClass:  Inherited from GuidProtocolPpiCommonClass class
 | |
| #
 | |
| class GuidClass(GuidProtocolPpiCommonClass):
 | |
|     def __init__(self):
 | |
|         GuidProtocolPpiCommonClass.__init__(self)
 | |
| 
 | |
| ## ProtocolClass
 | |
| #
 | |
| # This class defined Protocol item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param GuidProtocolPpiCommonClass:  Inherited from GuidProtocolPpiCommonClass class
 | |
| #
 | |
| class ProtocolClass(GuidProtocolPpiCommonClass):
 | |
|     def __init__(self):
 | |
|         GuidProtocolPpiCommonClass.__init__(self)
 | |
| 
 | |
| ## PpiClass
 | |
| #
 | |
| # This class defined Ppi item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param GuidProtocolPpiCommonClass:  Inherited from GuidProtocolPpiCommonClass class
 | |
| #
 | |
| class PpiClass(GuidProtocolPpiCommonClass):        
 | |
|     def __init__(self):
 | |
|         GuidProtocolPpiCommonClass.__init__(self)
 | |
| 
 | |
| ## SkuInfoClass
 | |
| #
 | |
| # This class defined SkuInfo item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:           Inherited from object class
 | |
| # @param SkuIdName:        Input value for SkuIdName, default is ''
 | |
| # @param SkuId:            Input value for SkuId, default is ''
 | |
| # @param VariableName:     Input value for VariableName, default is ''
 | |
| # @param VariableGuid:     Input value for VariableGuid, default is ''
 | |
| # @param VariableOffset:   Input value for VariableOffset, default is ''
 | |
| # @param HiiDefaultValue:  Input value for HiiDefaultValue, default is ''
 | |
| # @param VpdOffset:        Input value for VpdOffset, default is ''
 | |
| # @param DefaultValue:     Input value for DefaultValue, default is ''
 | |
| #
 | |
| # @var SkuIdName:          To store value for SkuIdName
 | |
| # @var SkuId:              To store value for SkuId
 | |
| # @var VariableName:       To store value for VariableName
 | |
| # @var VariableGuid:       To store value for VariableGuid
 | |
| # @var VariableOffset:     To store value for VariableOffset
 | |
| # @var HiiDefaultValue:    To store value for HiiDefaultValue
 | |
| # @var VpdOffset:          To store value for VpdOffset
 | |
| # @var DefaultValue:       To store value for DefaultValue
 | |
| #
 | |
| class SkuInfoClass(object):
 | |
|     def __init__(self, SkuIdName = '', SkuId = '', VariableName = '', VariableGuid = '', VariableOffset = '', 
 | |
|                  HiiDefaultValue = '', VpdOffset = '', DefaultValue = '', VariableGuidValue = '', VariableAttribute = ''):
 | |
|         self.SkuIdName = SkuIdName
 | |
|         self.SkuId = SkuId
 | |
|         
 | |
|         #
 | |
|         # Used by Hii
 | |
|         #
 | |
|         self.VariableName = VariableName
 | |
|         self.VariableGuid = VariableGuid
 | |
|         self.VariableGuidValue = VariableGuidValue
 | |
|         self.VariableOffset = VariableOffset
 | |
|         self.HiiDefaultValue = HiiDefaultValue
 | |
|         self.VariableAttribute = VariableAttribute
 | |
|         
 | |
|         #
 | |
|         # Used by Vpd
 | |
|         #
 | |
|         self.VpdOffset = VpdOffset
 | |
|         
 | |
|         #
 | |
|         # Used by Default
 | |
|         #
 | |
|         self.DefaultValue = DefaultValue
 | |
|         
 | |
|     ## Convert the class to a string
 | |
|     #
 | |
|     #  Convert each member of the class to string
 | |
|     #  Organize to a signle line format string
 | |
|     #
 | |
|     #  @retval Rtn Formatted String
 | |
|     #
 | |
|     def __str__(self):
 | |
|         Rtn = 'SkuId = ' + str(self.SkuId) + "," + \
 | |
|                     'SkuIdName = ' + str(self.SkuIdName) + "," + \
 | |
|                     'VariableName = ' + str(self.VariableName) + "," + \
 | |
|                     'VariableGuid = ' + str(self.VariableGuid) + "," + \
 | |
|                     'VariableOffset = ' + str(self.VariableOffset) + "," + \
 | |
|                     'HiiDefaultValue = ' + str(self.HiiDefaultValue) + "," + \
 | |
|                     'VpdOffset = ' + str(self.VpdOffset) + "," + \
 | |
|                     'DefaultValue = ' + str(self.DefaultValue) + ","
 | |
|         return Rtn
 | |
| ## PcdErrorClass
 | |
| #
 | |
| #
 | |
| #
 | |
| class PcdErrorClass(object):
 | |
|     def __init__(self):
 | |
|         self.ValidValueList = ''
 | |
|         self.ValidValueListLang = ''
 | |
|         self.ValidValueRange = ''
 | |
|         self.Expression = ''
 | |
|         self.ErrorNumber = ''
 | |
|         self.ErrorMessage = []
 | |
| 
 | |
| ## PcdClass
 | |
| #
 | |
| # This class defined Pcd item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param CommonClass:          Inherited from CommonClass class
 | |
| # @param CName:                Input value for CName, default is ''
 | |
| # @param Token:                Input value for Token, default is ''
 | |
| # @param TokenSpaceGuidCName:  Input value for TokenSpaceGuidCName, default is ''
 | |
| # @param DatumType:            Input value for DatumType, default is ''
 | |
| # @param MaxDatumSize:         Input value for MaxDatumSize, default is ''
 | |
| # @param DefaultValue:         Input value for DefaultValue, default is ''
 | |
| # @param ItemType:             Input value for ItemType, default is ''
 | |
| # @param ValidUsage:           Input value for ValidUsage, default is []
 | |
| # @param SkuInfoList:          Input value for SkuInfoList, default is {}
 | |
| # @param SupModuleList:        Input value for SupModuleList, default is []
 | |
| #
 | |
| # @var CName:                  To store value for CName
 | |
| # @var Token:                  To store value for Token
 | |
| # @var TokenSpaceGuidCName:    To store value for TokenSpaceGuidCName
 | |
| # @var DatumType:              To store value for DatumType, selection scope is in below list
 | |
| #                              UINT8 | UINT16 | UINT32 | UINT64 | VOID* | BOOLEAN 
 | |
| # @var MaxDatumSize:           To store value for MaxDatumSize
 | |
| # @var DefaultValue:           To store value for DefaultValue
 | |
| # @var ItemType:               To store value for ItemType, selection scope is in below list
 | |
| #                              FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX
 | |
| # @var ValidUsage:             To store value for ValidUsage, selection scope is in below list
 | |
| #                              FEATURE_FLAG | FIXED_AT_BUILD | PATCHABLE_IN_MODULE | DYNAMIC | DYNAMIC_EX
 | |
| # @var SkuInfoList:            To store value for SkuInfoList
 | |
| #                              It is a set structure as { [SkuIdName] : SkuInfoClass } 
 | |
| # @var SupModuleList:          To store value for SupModuleList, selection scope is in below list
 | |
| #                              BASE | SEC | PEI_CORE | PEIM | DXE_CORE | DXE_DRIVER | DXE_RUNTIME_DRIVER | DXE_SAL_DRIVER | DXE_SMM_DRIVER | UEFI_DRIVER | UEFI_APPLICATION | USER_DEFINED | SMM_CORE
 | |
| #
 | |
| class PcdClass(CommonClass):
 | |
|     def __init__(self, CName = '', Token = '', TokenSpaceGuidCName = '', DatumType = '', MaxDatumSize = '', DefaultValue = '', ItemType = '', ValidUsage = None, SkuInfoList = None, SupModuleList = None):
 | |
|         self.CName = CName
 | |
|         self.Token = Token
 | |
|         self.TokenSpaceGuidCName = TokenSpaceGuidCName
 | |
|         self.DatumType = DatumType
 | |
|         self.MaxDatumSize = MaxDatumSize
 | |
|         self.DefaultValue = DefaultValue
 | |
|         self.ItemType = ItemType
 | |
|         self.ValidUsage = ValidUsage
 | |
|         self.PcdItemType = ''
 | |
|         self.TokenSpaceGuidValue = ''
 | |
|         self.PcdUsage = ''
 | |
|         self.PcdCName = ''
 | |
|         self.Value = ''
 | |
|         self.Offset = ''
 | |
|         if self.ValidUsage == None:
 | |
|             self.ValidUsage = []
 | |
|         self.SkuInfoList = SkuInfoList
 | |
|         if self.SkuInfoList  == None:
 | |
|             self.SkuInfoList  = {}
 | |
|         self.SupModuleList = SupModuleList
 | |
|         if self.SupModuleList == None:
 | |
|             self.SupModuleList = []
 | |
|         CommonClass.__init__(self)
 | |
|         self.PcdErrors = []
 | |
| 
 | |
| ## BuildOptionClass
 | |
| #
 | |
| # This class defined BuildOption item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param IncludeStatementClass:  Inherited from IncludeStatementClass class
 | |
| # @param ToolChainFamily:        Input value for ToolChainFamily, default is ''
 | |
| # @param ToolChain:              Input value for ToolChain, default is ''
 | |
| # @param Option:                 Input value for Option, default is ''
 | |
| #
 | |
| # @var Statement:                To store value for Statement
 | |
| #                                It is a string in a special format as "Family:Target_TagName_Tarch_ToolCode_FLAGS = String"
 | |
| # @var ToolChainFamily:          To store value for ToolChainFamily
 | |
| # @var ToolChain:                To store value for ToolChain
 | |
| # @var Option:                   To store value for Option
 | |
| # @var BuildTarget:              To store value for BuildTarget
 | |
| # @var TagName:                  To store value for TagName
 | |
| # @var ToolCode:                 To store value for ToolCode
 | |
| # @var SupArchList:              To store value for SupArchList, selection scope is in below list
 | |
| #                                EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64
 | |
| #
 | |
| class BuildOptionClass(IncludeStatementClass):
 | |
|     def __init__(self, ToolChainFamily = '', ToolChain = '', Option = ''):
 | |
|         IncludeStatementClass.__init__(self)
 | |
|         self.Statement = ''                               
 | |
|         self.ToolChainFamily = ToolChainFamily
 | |
|         self.ToolChain = ToolChain
 | |
|         self.Option = Option
 | |
|         self.BuildTarget = ''
 | |
|         self.TagName = ''
 | |
|         self.ToolCode = ''
 | |
|         self.SupArchList = []
 | |
| 
 | |
| ## IncludeClass
 | |
| #
 | |
| # This class defined Include item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param CommonClass:  Inherited from CommonClass class
 | |
| #
 | |
| # @var FilePath:       To store value for FilePath
 | |
| # @var ModuleType:     To store value for ModuleType
 | |
| # @var Comment:        To store value for Comment
 | |
| #
 | |
| class IncludeClass(CommonClass):
 | |
|     def __init__(self):
 | |
|         self.FilePath = ''
 | |
|         self.ModuleType = ''
 | |
|         self.SupModuleList = []
 | |
|         self.Comment = ''
 | |
|         CommonClass.__init__(self)        
 | |
| 
 | |
| ## FileClass
 | |
| #
 | |
| #
 | |
| class FileClass(CommonClass):
 | |
|     def __init__(self):
 | |
|         self.Filename = ''
 | |
|         self.Executable = ''
 | |
|         self.Family = ''
 | |
|         self.FileType = ''
 | |
|         CommonClass.__init__(self)
 | |
|         
 | |
| 
 | |
| ## MiscFileClass
 | |
| #
 | |
| #
 | |
| class MiscFileClass(CommonHeaderClass):
 | |
|     def __init__(self):
 | |
|         CommonHeaderClass.__init__(self)
 | |
|         self.Name = ''
 | |
|         self.Files = []
 | |
|     
 | |
| 
 | |
| ## UserExtensionsClass
 | |
| #
 | |
| # This class defined UserExtensions item used in Module/Platform/Package files
 | |
| # 
 | |
| # @param object:    Inherited from object class
 | |
| #
 | |
| # @var UserID:      To store value for UserID
 | |
| # @var Identifier:  To store value for Identifier
 | |
| # @var Content:     To store value for Content
 | |
| #       
 | |
| class UserExtensionsClass(object):
 | |
|     def __init__(self):
 | |
|         self.UserID = ''
 | |
|         self.Identifier = 0
 | |
|         self.Content = ''
 | |
|         self.Defines = []
 | |
|         self.BuildOptions = []
 |