## @file # This file is used to define a class object to describe a platform # # Copyright (c) 2007 - 2016, 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 | AARCH64 # @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 = '' ## BuildScriptClass # # This class defined PREBUILD/POSTBUILD 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 BuildScriptClass(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 Prebuild: To store value for PREBUILD, it is a structure as # BuildScriptClass # @var Postbuild: To store value for POSTBUILD, it is a structure as # BuildScriptClass # @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.Prebuild = BuildScriptClass() self.Postbuild = BuildScriptClass() 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()