summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/CommonDataClass/PlatformClass.py
diff options
context:
space:
mode:
Diffstat (limited to 'BaseTools/Source/Python/CommonDataClass/PlatformClass.py')
-rw-r--r--BaseTools/Source/Python/CommonDataClass/PlatformClass.py432
1 files changed, 432 insertions, 0 deletions
diff --git a/BaseTools/Source/Python/CommonDataClass/PlatformClass.py b/BaseTools/Source/Python/CommonDataClass/PlatformClass.py
new file mode 100644
index 0000000000..a95ec068b1
--- /dev/null
+++ b/BaseTools/Source/Python/CommonDataClass/PlatformClass.py
@@ -0,0 +1,432 @@
+## @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 | 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 = ''
+
+## 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()