## @file | |
# This file is used to define a class object to describe a platform | |
# | |
# Copyright (c) 2007 - 2016, 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 | 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() |