+++ /dev/null
-## @file\r
-# This file is used to define a class object to describe a platform\r
-#\r
-# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-##\r
-# Import Modules\r
-#\r
-from CommonClass import *\r
-\r
-## SkuInfoListClass\r
-#\r
-# This class defined sku info list item used in platform file\r
-# \r
-# @param IncludeStatementClass: Inherited from IncludeStatementClass class\r
-#\r
-# @var SkuInfoList: To store value for SkuInfoList, it is a set structure as\r
-# { SkuName : SkuId }\r
-#\r
-class SkuInfoListClass(IncludeStatementClass):\r
- def __init__(self):\r
- IncludeStatementClass.__init__(self)\r
- self.SkuInfoList = {}\r
-\r
-## PlatformHeaderClass\r
-#\r
-# This class defined header items used in Platform file\r
-# \r
-# @param IdentificationClass: Inherited from IdentificationClass class\r
-# @param CommonHeaderClass: Inherited from CommonHeaderClass class\r
-# @param DefineClass: Inherited from DefineClass class\r
-#\r
-# @var DscSpecification: To store value for DscSpecification\r
-# @var SupArchList: To store value for SupArchList, selection scope is in below list\r
-# EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64\r
-# @var BuildTargets: To store value for BuildTargets, selection scope is in below list\r
-# RELEASE | DEBUG\r
-# @var IntermediateDirectories: To store value for IntermediateDirectories, selection scope is in below list\r
-# MODULE | UNIFIED\r
-# @var OutputDirectory: To store value for OutputDirectory\r
-# @var ForceDebugTarget: To store value for ForceDebugTarget\r
-# @var SkuIdName: To store value for SkuIdName\r
-# @var BuildNumber: To store value for BuildNumber\r
-# @var MakefileName: To store value for MakefileName\r
-# @var ClonedFrom: To store value for ClonedFrom, it is a list structure as\r
-# [ ClonedRecordClass, ... ]\r
-#\r
-class PlatformHeaderClass(IdentificationClass, CommonHeaderClass, DefineClass):\r
- def __init__(self):\r
- IdentificationClass.__init__(self)\r
- CommonHeaderClass.__init__(self)\r
- DefineClass.__init__(self)\r
- self.DscSpecification = ''\r
- self.SupArchList = []\r
- self.BuildTargets = []\r
- self.IntermediateDirectories = ''\r
- self.OutputDirectory = '' \r
- self.ForceDebugTarget = ''\r
- self.SkuIdName = []\r
- self.BuildNumber = ''\r
- self.MakefileName = ''\r
- self.ClonedFrom = []\r
-\r
-## PlatformFlashDefinitionFileClass\r
-#\r
-# This class defined FlashDefinitionFile item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Id: To store value for Id\r
-# @var UiName: To store value for UiName\r
-# @var Preferred: To store value for Preferred\r
-# @var FilePath: To store value for FilePath\r
-#\r
-class PlatformFlashDefinitionFileClass(object):\r
- def __init__(self):\r
- self.Id = ''\r
- self.UiName = ''\r
- self.Preferred = False\r
- self.FilePath = ''\r
-\r
-## BuildScriptClass\r
-#\r
-# This class defined PREBUILD/POSTBUILD item used in platform file\r
-#\r
-# @param object: Inherited from object class\r
-#\r
-# @var Id: To store value for Id\r
-# @var UiName: To store value for UiName\r
-# @var Preferred: To store value for Preferred\r
-# @var FilePath: To store value for FilePath\r
-#\r
-class BuildScriptClass(object):\r
- def __init__(self):\r
- self.Id = ''\r
- self.UiName = ''\r
- self.Preferred = False\r
- self.FilePath = ''\r
-\r
-## PlatformFvImageOptionClass\r
-#\r
-# This class defined FvImageOption item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var FvImageOptionName: To store value for FvImageOptionName\r
-# @var FvImageOptionValues: To store value for FvImageOptionValues\r
-#\r
-class PlatformFvImageOptionClass(object):\r
- def __init__(self):\r
- self.FvImageOptionName = ''\r
- self.FvImageOptionValues = []\r
-\r
-## PlatformFvImageClass\r
-#\r
-# This class defined FvImage item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Name: To store value for Name\r
-# @var Value: To store value for Value\r
-# @var Type: To store value for Type, selection scope is in below list\r
-# Attributes | Options | Components | ImageName \r
-# @var FvImageNames: To store value for FvImageNames\r
-# @var FvImageOptions: To store value for FvImageOptions, it is a list structure as\r
-# [ PlatformFvImageOption, ...]\r
-#\r
-class PlatformFvImageClass(object):\r
- def __init__(self):\r
- self.Name = ''\r
- self.Value = ''\r
- self.Type = ''\r
- self.FvImageNames = []\r
- self.FvImageOptions = []\r
-\r
-## PlatformFvImageNameClass\r
-#\r
-# This class defined FvImageName item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Name: To store value for Name\r
-# @var Type: To store value for Type, selection scope is in below list\r
-# FV_MAIN | FV_MAIN_COMPACT | NV_STORAGE | FV_RECOVERY | FV_RECOVERY_FLOPPY | FV_FILE | CAPSULE_CARGO | NULL | USER_DEFINED \r
-# @var FvImageOptions: To store value for FvImageOptions, it is a list structure as\r
-# [ PlatformFvImageOption, ...]\r
-#\r
-class PlatformFvImageNameClass(object):\r
- def __init__(self):\r
- self.Name = ''\r
- self.Type = ''\r
- self.FvImageOptions = []\r
-\r
-## PlatformFvImagesClass\r
-#\r
-# This class defined FvImages item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var FvImages: To store value for FvImages\r
-#\r
-class PlatformFvImagesClass(object):\r
- def __init__(self):\r
- self.FvImages = []\r
-\r
-## PlatformAntTaskClass\r
-#\r
-# This class defined AntTask item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Id: To store value for Id\r
-# @var AntCmdOptions: To store value for AntCmdOptions\r
-# @var FilePath: To store value for FilePath\r
-#\r
-class PlatformAntTaskClass(object):\r
- def __init__(self):\r
- self.Id = ''\r
- self.AntCmdOptions = ''\r
- self.FilePath = ''\r
-\r
-## PlatformFfsSectionClass\r
-#\r
-# This class defined FfsSection item used in platform file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var BindingOrder: To store value for BindingOrder\r
-# @var Compressible: To store value for Compressible\r
-# @var SectionType: To store value for SectionType\r
-# @var EncapsulationType: To store value for EncapsulationType\r
-# @var ToolName: To store value for ToolName\r
-# @var Filenames: To store value for Filenames\r
-# @var Args: To store value for Args\r
-# @var OutFile: To store value for OutFile\r
-# @var OutputFileExtension: To store value for OutputFileExtension\r
-# @var ToolNameElement: To store value for ToolNameElement\r
-#\r
-class PlatformFfsSectionClass(CommonClass):\r
- def __init__(self):\r
- CommonClass.__init__(self)\r
- self.BindingOrder = ''\r
- self.Compressible = ''\r
- self.SectionType = ''\r
- self.EncapsulationType = ''\r
- self.ToolName = ''\r
- self.Filenames = []\r
- self.Args = ''\r
- self.OutFile = ''\r
- self.OutputFileExtension = ''\r
- self.ToolNameElement = ''\r
-\r
-## PlatformFfsSectionsClass\r
-#\r
-# This class defined FfsSections item used in platform file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var BindingOrder: To store value for BindingOrder\r
-# @var Compressible: To store value for Compressible\r
-# @var SectionType: To store value for SectionType\r
-# @var EncapsulationType: To store value for EncapsulationType\r
-# @var ToolName: To store value for ToolName\r
-# @var Section: To store value for Section, it is a list structure as\r
-# [ PlatformFfsSectionClass, ... ]\r
-# @var Sections: To store value for Sections, it is a list structure as\r
-# [ PlatformFfsSectionsClass, ...]\r
-#\r
-class PlatformFfsSectionsClass(CommonClass):\r
- def __init__(self):\r
- CommonClass.__init__(self)\r
- self.BindingOrder = ''\r
- self.Compressible = ''\r
- self.SectionType = ''\r
- self.EncapsulationType = ''\r
- self.ToolName = ''\r
- self.Section = []\r
- self.Sections = []\r
-\r
-## PlatformFfsClass\r
-#\r
-# This class defined Ffs item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Attribute: To store value for Attribute, it is a set structure as\r
-# { [(Name, PlatformFfsSectionsClass)] : Value}\r
-# @var Sections: To store value for Sections, it is a list structure as\r
-# [ PlatformFfsSectionsClass]\r
-# @var ToolName: To store value for ToolName\r
-#\r
-class PlatformFfsClass(object):\r
- def __init__(self):\r
- self.Attribute = {}\r
- self.Sections = []\r
- self.Key = ''\r
-\r
-## PlatformBuildOptionClass\r
-#\r
-# This class defined BuildOption item used in platform file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var UserDefinedAntTasks: To store value for UserDefinedAntTasks, it is a set structure as\r
-# { [Id] : PlatformAntTaskClass, ...}\r
-# @var Options: To store value for Options, it is a list structure as\r
-# [ BuildOptionClass, ...]\r
-# @var UserExtensions: To store value for UserExtensions, it is a set structure as\r
-# { [(UserID, Identifier)] : UserExtensionsClass, ...}\r
-# @var FfsKeyList: To store value for FfsKeyList, it is a set structure as\r
-# { [FfsKey]: PlatformFfsClass, ...} \r
-#\r
-class PlatformBuildOptionClass(object):\r
- def __init__(self):\r
- self.UserDefinedAntTasks = {}\r
- self.Options = []\r
- self.UserExtensions = {}\r
- self.FfsKeyList = {}\r
-\r
-## PlatformBuildOptionClasses\r
-#\r
-# This class defined BuildOption item list used in platform file\r
-# \r
-# @param IncludeStatementClass: Inherited from IncludeStatementClass class\r
-#\r
-# @var FvBinding: To store value for FvBinding\r
-# @var FfsFileNameGuid: To store value for FfsFileNameGuid\r
-# @var FfsFormatKey: To store value for FfsFormatKey\r
-# @var BuildOptionList: To store value for BuildOptionList, it is a list structure as\r
-# [ BuildOptionClass, ... ]\r
-#\r
-class PlatformBuildOptionClasses(IncludeStatementClass):\r
- def __init__(self):\r
- IncludeStatementClass.__init__(self)\r
- self.FvBinding = ''\r
- self.FfsFileNameGuid = ''\r
- self.FfsFormatKey = ''\r
- self.BuildOptionList = []\r
-\r
-## PlatformLibraryClass\r
-#\r
-# This class defined Library item used in platform file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-# @param DefineClass: Inherited from DefineClass class\r
-# @param Name: Input value for Name, default is ''\r
-# @param FilePath: Input value for FilePath, default is ''\r
-#\r
-# @var Name: To store value for Name\r
-# @var FilePath: To store value for FilePath\r
-# @var ModuleType: To store value for ModuleType\r
-# @var SupModuleList: To store value for SupModuleList\r
-# @var ModuleGuid: To store value for ModuleGuid\r
-# @var ModuleVersion: To store value for ModuleVersion\r
-# @var PackageGuid: To store value for PackageGuid\r
-# @var PackageVersion: To store value for PackageVersion\r
-#\r
-class PlatformLibraryClass(CommonClass, DefineClass):\r
- def __init__(self, Name = '', FilePath = ''):\r
- CommonClass.__init__(self)\r
- DefineClass.__init__(self)\r
- self.Name = Name\r
- self.FilePath = FilePath\r
- self.ModuleType = []\r
- self.SupModuleList = []\r
- self.ModuleGuid = ''\r
- self.ModuleVersion = ''\r
- self.PackageGuid = ''\r
- self.PackageVersion = ''\r
-\r
-## PlatformLibraryClasses\r
-#\r
-# This class defined Library item list used in platform file\r
-# \r
-# @param IncludeStatementClass: Inherited from IncludeStatementClass class\r
-#\r
-# @var LibraryList: To store value for LibraryList, it is a list structure as\r
-# [ PlatformLibraryClass, ... ]\r
-#\r
-class PlatformLibraryClasses(IncludeStatementClass):\r
- def __init__(self):\r
- IncludeStatementClass.__init__(self)\r
- self.LibraryList = []\r
-\r
-## PlatformModuleClass\r
-#\r
-# This class defined Module item used in platform file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-# @param DefineClass: Inherited from DefineClass class\r
-# @param IncludeStatementClass: Inherited from IncludeStatementClass class\r
-#\r
-# @var Name: To store value for Name (Library name or libraryclass name or module name)\r
-# @var FilePath: To store value for FilePath\r
-# @var Type: To store value for Type, selection scope is in below list\r
-# LIBRARY | LIBRARY_CLASS | MODULE\r
-# @var ModuleType: To store value for ModuleType\r
-# @var ExecFilePath: To store value for ExecFilePath\r
-# @var LibraryClasses: To store value for LibraryClasses, it is a structure as\r
-# PlatformLibraryClasses\r
-# @var PcdBuildDefinitions: To store value for PcdBuildDefinitions, it is a list structure as\r
-# [ PcdClass, ...]\r
-# @var ModuleSaBuildOption: To store value for ModuleSaBuildOption, it is a structure as\r
-# PlatformBuildOptionClasses\r
-# @var Specifications: To store value for Specifications, it is a list structure as\r
-# [ '', '', ...]\r
-#\r
-class PlatformModuleClass(CommonClass, DefineClass, IncludeStatementClass):\r
- def __init__(self):\r
- CommonClass.__init__(self)\r
- DefineClass.__init__(self)\r
- self.Name = ''\r
- self.FilePath = ''\r
- self.Type = ''\r
- self.ModuleType = ''\r
- self.ExecFilePath = ''\r
- self.LibraryClasses = PlatformLibraryClasses()\r
- self.PcdBuildDefinitions = []\r
- self.ModuleSaBuildOption = PlatformBuildOptionClasses()\r
- self.Specifications = []\r
- self.SourceOverridePath = ''\r
-\r
-## PlatformModuleClasses\r
-#\r
-# This class defined Module item list used in platform file\r
-# \r
-# @param IncludeStatementClass: Inherited from IncludeStatementClass class\r
-#\r
-# @var ModuleList: To store value for ModuleList, it is a list structure as\r
-# [ PlatformModuleClass, ... ]\r
-#\r
-class PlatformModuleClasses(IncludeStatementClass):\r
- def __init__(self):\r
- IncludeStatementClass.__init__(self)\r
- self.ModuleList = []\r
-\r
-## PlatformClass\r
-#\r
-# This class defined a complete platform item\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Header: To store value for Header, it is a structure as\r
-# {Arch : PlatformHeaderClass()}\r
-# @var SkuInfos: To store value for SkuInfos, it is a structure as\r
-# SkuInfoListClass\r
-# @var Libraries: To store value for Libraries, it is a structure as\r
-# PlatformLibraryClasses\r
-# @var LibraryClasses: To store value for LibraryClasses, it is a structure as\r
-# PlatformLibraryClasses\r
-# @var Modules: To store value for Modules, it is a structure as\r
-# PlatformModuleClasses\r
-# @var FlashDefinitionFile: To store value for FlashDefinitionFile, it is a structure as\r
-# PlatformFlashDefinitionFileClass\r
-# @var Prebuild: To store value for PREBUILD, it is a structure as\r
-# BuildScriptClass\r
-# @var Postbuild: To store value for POSTBUILD, it is a structure as\r
-# BuildScriptClass\r
-# @var BuildOptions: To store value for BuildOptions, it is a structure as\r
-# PlatformBuildOptionClasses\r
-# @var DynamicPcdBuildDefinitions: To store value for DynamicPcdBuildDefinitions, it is a list structure as\r
-# [ PcdClass, ...]\r
-# @var Fdf: To store value for Fdf, it is a list structure as\r
-# [ FdfClass, ...]\r
-# @var UserExtensions: To store value for UserExtensions, it is a list structure as\r
-# [ UserExtensionsClass, ...]\r
-#\r
-class PlatformClass(object):\r
- def __init__(self):\r
- self.Header = {}\r
- self.SkuInfos = SkuInfoListClass()\r
- self.Libraries = PlatformLibraryClasses()\r
- self.LibraryClasses = PlatformLibraryClasses()\r
- self.Modules = PlatformModuleClasses()\r
- self.FlashDefinitionFile = PlatformFlashDefinitionFileClass()\r
- self.Prebuild = BuildScriptClass()\r
- self.Postbuild = BuildScriptClass()\r
- self.BuildOptions = PlatformBuildOptionClasses()\r
- self.DynamicPcdBuildDefinitions = []\r
- self.Fdf = []\r
- self.UserExtensions = []\r
-\r
-##\r
-#\r
-# This acts like the main() function for the script, unless it is 'import'ed into another\r
-# script.\r
-#\r
-if __name__ == '__main__':\r
- P = PlatformClass()\r