git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10502 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			433 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			433 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # This file is used to define a class object to describe a platform
 | |
| #
 | |
| # Copyright (c) 2007, 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.
 | |
| 
 | |
| ##
 | |
| # Import Modules
 | |
| #
 | |
| from CommonClass import *
 | |
| 
 | |
| ## SkuInfoListClass
 | |
| #
 | |
| # This class defined sku info list item used in platform file
 | |
| # 
 | |
| # @param IncludeStatementClass:  Inherited from IncludeStatementClass class
 | |
| #
 | |
| # @var SkuInfoList:              To store value for SkuInfoList, it is a set structure as
 | |
| #                                { SkuName : SkuId }
 | |
| #
 | |
| class SkuInfoListClass(IncludeStatementClass):
 | |
|     def __init__(self):
 | |
|         IncludeStatementClass.__init__(self)
 | |
|         self.SkuInfoList = {}
 | |
| 
 | |
| ## PlatformHeaderClass
 | |
| #
 | |
| # This class defined header items used in Platform file
 | |
| # 
 | |
| # @param IdentificationClass:    Inherited from IdentificationClass class
 | |
| # @param CommonHeaderClass:      Inherited from CommonHeaderClass class
 | |
| # @param DefineClass:            Inherited from DefineClass class
 | |
| #
 | |
| # @var DscSpecification:         To store value for DscSpecification
 | |
| # @var SupArchList:              To store value for SupArchList, selection scope is in below list
 | |
| #                                EBC | IA32 | X64 | IPF | ARM | PPC
 | |
| # @var BuildTargets:             To store value for BuildTargets, selection scope is in below list
 | |
| #                                RELEASE | DEBUG
 | |
| # @var IntermediateDirectories:  To store value for IntermediateDirectories, selection scope is in below list
 | |
| #                                MODULE | UNIFIED
 | |
| # @var OutputDirectory:          To store value for OutputDirectory
 | |
| # @var ForceDebugTarget:         To store value for ForceDebugTarget
 | |
| # @var SkuIdName:                To store value for SkuIdName
 | |
| # @var BuildNumber:              To store value for BuildNumber
 | |
| # @var MakefileName:             To store value for MakefileName
 | |
| # @var ClonedFrom:               To store value for ClonedFrom, it is a list structure as
 | |
| #                                [ ClonedRecordClass, ... ]
 | |
| #
 | |
| class PlatformHeaderClass(IdentificationClass, CommonHeaderClass, DefineClass):
 | |
|     def __init__(self):
 | |
|         IdentificationClass.__init__(self)
 | |
|         CommonHeaderClass.__init__(self)
 | |
|         DefineClass.__init__(self)
 | |
|         self.DscSpecification = ''
 | |
|         self.SupArchList = []
 | |
|         self.BuildTargets = []
 | |
|         self.IntermediateDirectories = ''
 | |
|         self.OutputDirectory = ''                                                    
 | |
|         self.ForceDebugTarget = ''
 | |
|         self.SkuIdName = []
 | |
|         self.BuildNumber = ''
 | |
|         self.MakefileName = ''
 | |
|         self.ClonedFrom = []
 | |
| 
 | |
| ## PlatformFlashDefinitionFileClass
 | |
| #
 | |
| # This class defined FlashDefinitionFile item used in platform file
 | |
| # 
 | |
| # @param object:   Inherited from object class
 | |
| #
 | |
| # @var Id:         To store value for Id
 | |
| # @var UiName:     To store value for UiName
 | |
| # @var Preferred:  To store value for Preferred
 | |
| # @var FilePath:   To store value for FilePath
 | |
| #
 | |
| class PlatformFlashDefinitionFileClass(object):
 | |
|     def __init__(self):
 | |
|         self.Id = ''
 | |
|         self.UiName = ''
 | |
|         self.Preferred = False
 | |
|         self.FilePath = ''
 | |
| 
 | |
| ## PlatformFvImageOptionClass
 | |
| #
 | |
| # This class defined FvImageOption item used in platform file
 | |
| # 
 | |
| # @param object:             Inherited from object class
 | |
| #
 | |
| # @var FvImageOptionName:    To store value for FvImageOptionName
 | |
| # @var FvImageOptionValues:  To store value for FvImageOptionValues
 | |
| #
 | |
| class PlatformFvImageOptionClass(object):
 | |
|     def __init__(self):
 | |
|         self.FvImageOptionName = ''
 | |
|         self.FvImageOptionValues = []
 | |
| 
 | |
| ## PlatformFvImageClass
 | |
| #
 | |
| # This class defined FvImage item used in platform file
 | |
| # 
 | |
| # @param object:        Inherited from object class
 | |
| #
 | |
| # @var Name:            To store value for Name
 | |
| # @var Value:           To store value for Value
 | |
| # @var Type:            To store value for Type, selection scope is in below list
 | |
| #                       Attributes | Options | Components | ImageName 
 | |
| # @var FvImageNames:    To store value for FvImageNames
 | |
| # @var FvImageOptions:  To store value for FvImageOptions, it is a list structure as
 | |
| #                       [ PlatformFvImageOption, ...]
 | |
| #
 | |
| class PlatformFvImageClass(object):
 | |
|     def __init__(self):
 | |
|         self.Name = ''
 | |
|         self.Value = ''
 | |
|         self.Type = ''
 | |
|         self.FvImageNames = []
 | |
|         self.FvImageOptions = []
 | |
| 
 | |
| ## PlatformFvImageNameClass
 | |
| #
 | |
| # This class defined FvImageName item used in platform file
 | |
| # 
 | |
| # @param object:        Inherited from object class
 | |
| #
 | |
| # @var Name:            To store value for Name
 | |
| # @var Type:            To store value for Type, selection scope is in below list
 | |
| #                       FV_MAIN | FV_MAIN_COMPACT | NV_STORAGE | FV_RECOVERY | FV_RECOVERY_FLOPPY | FV_FILE | CAPSULE_CARGO | NULL | USER_DEFINED 
 | |
| # @var FvImageOptions:  To store value for FvImageOptions, it is a list structure as
 | |
| #                       [ PlatformFvImageOption, ...]
 | |
| #
 | |
| class PlatformFvImageNameClass(object):
 | |
|     def __init__(self):
 | |
|         self.Name = ''
 | |
|         self.Type = ''
 | |
|         self.FvImageOptions = []
 | |
| 
 | |
| ## PlatformFvImagesClass
 | |
| #
 | |
| # This class defined FvImages item used in platform file
 | |
| # 
 | |
| # @param object:  Inherited from object class
 | |
| #
 | |
| # @var FvImages:  To store value for FvImages
 | |
| #
 | |
| class PlatformFvImagesClass(object):
 | |
|     def __init__(self):
 | |
|         self.FvImages = []
 | |
| 
 | |
| ## PlatformAntTaskClass
 | |
| #
 | |
| # This class defined AntTask item used in platform file
 | |
| # 
 | |
| # @param object:       Inherited from object class
 | |
| #
 | |
| # @var Id:             To store value for Id
 | |
| # @var AntCmdOptions:  To store value for AntCmdOptions
 | |
| # @var FilePath:       To store value for FilePath
 | |
| #
 | |
| class PlatformAntTaskClass(object):
 | |
|     def __init__(self):
 | |
|         self.Id = ''
 | |
|         self.AntCmdOptions = ''
 | |
|         self.FilePath = ''
 | |
| 
 | |
| ## PlatformFfsSectionClass
 | |
| #
 | |
| # This class defined FfsSection item used in platform file
 | |
| # 
 | |
| # @param CommonClass:        Inherited from CommonClass class
 | |
| #
 | |
| # @var BindingOrder:         To store value for BindingOrder
 | |
| # @var Compressible:         To store value for Compressible
 | |
| # @var SectionType:          To store value for SectionType
 | |
| # @var EncapsulationType:    To store value for EncapsulationType
 | |
| # @var ToolName:             To store value for ToolName
 | |
| # @var Filenames:            To store value for Filenames
 | |
| # @var Args:                 To store value for Args
 | |
| # @var OutFile:              To store value for OutFile
 | |
| # @var OutputFileExtension:  To store value for OutputFileExtension
 | |
| # @var ToolNameElement:      To store value for ToolNameElement
 | |
| #
 | |
| class PlatformFfsSectionClass(CommonClass):
 | |
|     def __init__(self):
 | |
|         CommonClass.__init__(self)
 | |
|         self.BindingOrder = ''
 | |
|         self.Compressible = ''
 | |
|         self.SectionType  = ''
 | |
|         self.EncapsulationType  = ''
 | |
|         self.ToolName = ''
 | |
|         self.Filenames = []
 | |
|         self.Args = ''
 | |
|         self.OutFile = ''
 | |
|         self.OutputFileExtension = ''
 | |
|         self.ToolNameElement = ''
 | |
| 
 | |
| ## PlatformFfsSectionsClass
 | |
| #
 | |
| # This class defined FfsSections item used in platform file
 | |
| # 
 | |
| # @param CommonClass:      Inherited from CommonClass class
 | |
| #
 | |
| # @var BindingOrder:       To store value for BindingOrder
 | |
| # @var Compressible:       To store value for Compressible
 | |
| # @var SectionType:        To store value for SectionType
 | |
| # @var EncapsulationType:  To store value for EncapsulationType
 | |
| # @var ToolName:           To store value for ToolName
 | |
| # @var Section:            To store value for Section, it is a list structure as
 | |
| #                          [ PlatformFfsSectionClass, ... ]
 | |
| # @var Sections:           To store value for Sections, it is a list structure as
 | |
| #                          [ PlatformFfsSectionsClass, ...]
 | |
| #
 | |
| class PlatformFfsSectionsClass(CommonClass):
 | |
|     def __init__(self):
 | |
|         CommonClass.__init__(self)
 | |
|         self.BindingOrder = ''
 | |
|         self.Compressible = ''
 | |
|         self.SectionType = ''
 | |
|         self.EncapsulationType = ''
 | |
|         self.ToolName = ''
 | |
|         self.Section = []
 | |
|         self.Sections = []
 | |
| 
 | |
| ## PlatformFfsClass
 | |
| #
 | |
| # This class defined Ffs item used in platform file
 | |
| # 
 | |
| # @param object:   Inherited from object class
 | |
| #
 | |
| # @var Attribute:  To store value for Attribute, it is a set structure as
 | |
| #                  { [(Name, PlatformFfsSectionsClass)] : Value}
 | |
| # @var Sections:   To store value for Sections, it is a list structure as
 | |
| #                  [ PlatformFfsSectionsClass]
 | |
| # @var ToolName:   To store value for ToolName
 | |
| #
 | |
| class PlatformFfsClass(object):
 | |
|     def __init__(self):
 | |
|         self.Attribute = {}
 | |
|         self.Sections = []
 | |
|         self.Key = ''
 | |
| 
 | |
| ## PlatformBuildOptionClass
 | |
| #
 | |
| # This class defined BuildOption item used in platform file
 | |
| # 
 | |
| # @param object:             Inherited from object class
 | |
| #
 | |
| # @var UserDefinedAntTasks:  To store value for UserDefinedAntTasks, it is a set structure as
 | |
| #                            { [Id] : PlatformAntTaskClass, ...}
 | |
| # @var Options:              To store value for Options, it is a list structure as
 | |
| #                            [ BuildOptionClass, ...]
 | |
| # @var UserExtensions:       To store value for UserExtensions, it is a set structure as
 | |
| #                            { [(UserID, Identifier)] : UserExtensionsClass, ...}
 | |
| # @var FfsKeyList:           To store value for FfsKeyList, it is a set structure as
 | |
| #                            { [FfsKey]: PlatformFfsClass, ...} 
 | |
| #
 | |
| class PlatformBuildOptionClass(object):
 | |
|     def __init__(self):
 | |
|         self.UserDefinedAntTasks = {}
 | |
|         self.Options = []
 | |
|         self.UserExtensions = {}
 | |
|         self.FfsKeyList = {}
 | |
| 
 | |
| ## PlatformBuildOptionClasses
 | |
| #
 | |
| # This class defined BuildOption item list used in platform file
 | |
| # 
 | |
| # @param IncludeStatementClass:  Inherited from IncludeStatementClass class
 | |
| #
 | |
| # @var FvBinding:                To store value for FvBinding
 | |
| # @var FfsFileNameGuid:          To store value for FfsFileNameGuid
 | |
| # @var FfsFormatKey:             To store value for FfsFormatKey
 | |
| # @var BuildOptionList:          To store value for BuildOptionList, it is a list structure as
 | |
| #                                [ BuildOptionClass, ... ]
 | |
| #
 | |
| class PlatformBuildOptionClasses(IncludeStatementClass):
 | |
|     def __init__(self):
 | |
|         IncludeStatementClass.__init__(self)
 | |
|         self.FvBinding = ''
 | |
|         self.FfsFileNameGuid = ''
 | |
|         self.FfsFormatKey = ''
 | |
|         self.BuildOptionList = []
 | |
| 
 | |
| ## PlatformLibraryClass
 | |
| #
 | |
| # This class defined Library item used in platform file
 | |
| # 
 | |
| # @param CommonClass:   Inherited from CommonClass class
 | |
| # @param DefineClass:   Inherited from DefineClass class
 | |
| # @param Name:          Input value for Name, default is ''
 | |
| # @param FilePath:      Input value for FilePath, default is ''
 | |
| #
 | |
| # @var Name:            To store value for Name
 | |
| # @var FilePath:        To store value for FilePath
 | |
| # @var ModuleType:      To store value for ModuleType
 | |
| # @var SupModuleList:   To store value for SupModuleList
 | |
| # @var ModuleGuid:      To store value for ModuleGuid
 | |
| # @var ModuleVersion:   To store value for ModuleVersion
 | |
| # @var PackageGuid:     To store value for PackageGuid
 | |
| # @var PackageVersion:  To store value for PackageVersion
 | |
| #
 | |
| class PlatformLibraryClass(CommonClass, DefineClass):
 | |
|     def __init__(self, Name = '', FilePath = ''):
 | |
|         CommonClass.__init__(self)
 | |
|         DefineClass.__init__(self)
 | |
|         self.Name = Name
 | |
|         self.FilePath = FilePath
 | |
|         self.ModuleType = []
 | |
|         self.SupModuleList = []
 | |
|         self.ModuleGuid = ''
 | |
|         self.ModuleVersion = ''
 | |
|         self.PackageGuid = ''
 | |
|         self.PackageVersion = ''
 | |
| 
 | |
| ## PlatformLibraryClasses
 | |
| #
 | |
| # This class defined Library item list used in platform file
 | |
| # 
 | |
| # @param IncludeStatementClass:  Inherited from IncludeStatementClass class
 | |
| #
 | |
| # @var LibraryList:              To store value for LibraryList, it is a list structure as
 | |
| #                                [ PlatformLibraryClass, ... ]
 | |
| #
 | |
| class PlatformLibraryClasses(IncludeStatementClass):
 | |
|     def __init__(self):
 | |
|         IncludeStatementClass.__init__(self)
 | |
|         self.LibraryList = []
 | |
| 
 | |
| ## PlatformModuleClass
 | |
| #
 | |
| # This class defined Module item used in platform file
 | |
| # 
 | |
| # @param CommonClass:            Inherited from CommonClass class
 | |
| # @param DefineClass:            Inherited from DefineClass class
 | |
| # @param IncludeStatementClass:  Inherited from IncludeStatementClass class
 | |
| #
 | |
| # @var Name:                     To store value for Name (Library name or libraryclass name or module name)
 | |
| # @var FilePath:                 To store value for FilePath
 | |
| # @var Type:                     To store value for Type, selection scope is in below list
 | |
| #                                LIBRARY | LIBRARY_CLASS | MODULE
 | |
| # @var ModuleType:               To store value for ModuleType
 | |
| # @var ExecFilePath:             To store value for ExecFilePath
 | |
| # @var LibraryClasses:           To store value for LibraryClasses, it is a structure as
 | |
| #                                PlatformLibraryClasses
 | |
| # @var PcdBuildDefinitions:      To store value for PcdBuildDefinitions, it is a list structure as
 | |
| #                                [ PcdClass, ...]
 | |
| # @var ModuleSaBuildOption:      To store value for ModuleSaBuildOption, it is a structure as
 | |
| #                                PlatformBuildOptionClasses
 | |
| # @var Specifications:           To store value for Specifications, it is a list structure as
 | |
| #                                [ '', '', ...]
 | |
| #
 | |
| class PlatformModuleClass(CommonClass, DefineClass, IncludeStatementClass):
 | |
|     def __init__(self):
 | |
|         CommonClass.__init__(self)
 | |
|         DefineClass.__init__(self)
 | |
|         self.Name = ''
 | |
|         self.FilePath = ''
 | |
|         self.Type = ''
 | |
|         self.ModuleType = ''
 | |
|         self.ExecFilePath = ''
 | |
|         self.LibraryClasses = PlatformLibraryClasses()
 | |
|         self.PcdBuildDefinitions = []
 | |
|         self.ModuleSaBuildOption = PlatformBuildOptionClasses()
 | |
|         self.Specifications = []
 | |
|         self.SourceOverridePath = ''
 | |
| 
 | |
| ## PlatformModuleClasses
 | |
| #
 | |
| # This class defined Module item list used in platform file
 | |
| # 
 | |
| # @param IncludeStatementClass:  Inherited from IncludeStatementClass class
 | |
| #
 | |
| # @var ModuleList:               To store value for ModuleList, it is a list structure as
 | |
| #                                [ PlatformModuleClass, ... ]
 | |
| #
 | |
| class PlatformModuleClasses(IncludeStatementClass):
 | |
|     def __init__(self):
 | |
|         IncludeStatementClass.__init__(self)
 | |
|         self.ModuleList = []
 | |
| 
 | |
| ## PlatformClass
 | |
| #
 | |
| # This class defined a complete platform item
 | |
| # 
 | |
| # @param object:                    Inherited from object class
 | |
| #
 | |
| # @var Header:                      To store value for Header, it is a structure as
 | |
| #                                   {Arch : PlatformHeaderClass()}
 | |
| # @var SkuInfos:                    To store value for SkuInfos, it is a structure as
 | |
| #                                   SkuInfoListClass
 | |
| # @var Libraries:                   To store value for Libraries, it is a structure as
 | |
| #                                   PlatformLibraryClasses
 | |
| # @var LibraryClasses:              To store value for LibraryClasses, it is a structure as
 | |
| #                                   PlatformLibraryClasses
 | |
| # @var Modules:                     To store value for Modules, it is a structure as
 | |
| #                                   PlatformModuleClasses
 | |
| # @var FlashDefinitionFile:         To store value for FlashDefinitionFile, it is a structure as
 | |
| #                                   PlatformFlashDefinitionFileClass
 | |
| # @var BuildOptions:                To store value for BuildOptions, it is a structure as
 | |
| #                                   PlatformBuildOptionClasses
 | |
| # @var DynamicPcdBuildDefinitions:  To store value for DynamicPcdBuildDefinitions, it is a list structure as
 | |
| #                                   [ PcdClass, ...]
 | |
| # @var Fdf:                         To store value for Fdf, it is a list structure as
 | |
| #                                   [ FdfClass, ...]
 | |
| # @var UserExtensions:              To store value for UserExtensions, it is a list structure as
 | |
| #                                   [ UserExtensionsClass, ...]
 | |
| #
 | |
| class PlatformClass(object):
 | |
|     def __init__(self):
 | |
|         self.Header = {}
 | |
|         self.SkuInfos = SkuInfoListClass()
 | |
|         self.Libraries = PlatformLibraryClasses()
 | |
|         self.LibraryClasses = PlatformLibraryClasses()
 | |
|         self.Modules = PlatformModuleClasses()
 | |
|         self.FlashDefinitionFile = PlatformFlashDefinitionFileClass()
 | |
|         self.BuildOptions = PlatformBuildOptionClasses()
 | |
|         self.DynamicPcdBuildDefinitions = []
 | |
|         self.Fdf = []
 | |
|         self.UserExtensions = []
 | |
| 
 | |
| ##
 | |
| #
 | |
| # This acts like the main() function for the script, unless it is 'import'ed into another
 | |
| # script.
 | |
| #
 | |
| if __name__ == '__main__':
 | |
|     P = PlatformClass()
 |