git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8964 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. 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()
 |