mirror of https://github.com/acidanthera/audk.git
457 lines
18 KiB
Python
457 lines
18 KiB
Python
## @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()
|