-## @file\r
-# This file is used to define a class object to describe a module\r
-#\r
-# Copyright (c) 2007 - 2010, 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
-## ModuleHeaderClass\r
-#\r
-# This class defined header items used in Module 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 ModuleType: To store value for ModuleType\r
-# @var SupArchList: To store value for SupArchList, selection scope is in below list\r
-# EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64\r
-# @var BinaryModule: To store value for BinaryModule\r
-# @var OutputFileBasename: To store value for OutputFileBasename\r
-# @var ClonedFrom: To store value for ClonedFrom, it is a set structure as\r
-# [ ClonedRecordClass, ... ]\r
-# @var PcdIsDriver: To store value for PcdIsDriver, selection scope is in below list\r
-# PEI_PCD_DRIVER | DXE_PCD_DRIVER\r
-# @var TianoEdkFlashMap_h: To store value for TianoEdkFlashMap_h\r
-# @var InfVersion: To store value for InfVersion\r
-# @var UefiSpecificationVersion: To store value for UefiSpecificationVersion\r
-# @var EdkReleaseVersion: To store value for EdkReleaseVersion\r
-# @var LibraryClass: To store value for LibraryClass, it is a set structure as\r
-# [ LibraryClassClass, ...]\r
-# @var ComponentType: To store value for ComponentType, selection scope is in below list\r
-# LIBRARY | SECURITY_CORE | PEI_CORE | COMBINED_PEIM_DRIVER | PIC_PEIM | RELOCATABLE_PEIM | BS_DRIVER | RT_DRIVER | SAL_RT_DRIVER | APPLICATION\r
-# @var MakefileName: To store value for MakefileName\r
-# @var BuildNumber: To store value for BuildNumber\r
-# @var BuildType: To store value for BuildType\r
-# @var FfsExt: To store value for FfsExt\r
-# @var FvExt: To store value for FvExt\r
-# @var SourceFv: To store value for SourceFv\r
-# @var CustomMakefile: To store value for CustomMakefile, it is a set structure as\r
-# { Family : Filename, ... }\r
-# @var Shadow: To store value for Shadow\r
-# @var MacroDefines To store the defined macros\r
-#\r
-class ModuleHeaderClass(IdentificationClass, CommonHeaderClass, DefineClass):\r
- def __init__(self):\r
- IdentificationClass.__init__(self)\r
- CommonHeaderClass.__init__(self)\r
- DefineClass.__init__(self)\r
- self.ModuleType = ''\r
- self.SupModuleList = []\r
- self.SupArchList = []\r
- self.BinaryModule = False\r
- self.OutputFileBasename = ''\r
- self.ClonedFrom = []\r
- self.PcdIsDriver = ''\r
- self.TianoEdkFlashMap_h = False\r
- self.InfVersion = ''\r
- self.PiSpecificationVersion = ''\r
- self.UefiSpecificationVersion = ''\r
- self.EdkReleaseVersion = ''\r
- self.LibraryClass = []\r
- self.ComponentType = ''\r
- self.MakefileName = ''\r
- self.BuildNumber = ''\r
- self.BuildType = ''\r
- self.FfsExt = ''\r
- self.FvExt = ''\r
- self.SourceFv = ''\r
- self.CustomMakefile = {}\r
- self.Shadow = ''\r
- self.MacroDefines = {}\r
- self.SourceOverridePath = ''\r
- self.Specification = []\r
-\r
-## ModuleSourceFileClass\r
-#\r
-# This class defined source file item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-# @param SourceFile: Input value for SourceFile, default is ''\r
-# @param TagName: Input value for TagName, default is ''\r
-# @param ToolCode: Input value for ToolCode, default is ''\r
-# @param ToolChainFamily: Input value for ToolChainFamily, default is ''\r
-# @param FeatureFlag: Input value for FeatureFlag, default is ''\r
-# @param SupArchList: Input value for SupArchList, default is []\r
-#\r
-# @var SourceFile: To store value for SourceFile\r
-# @var TagName: To store value for TagName\r
-# @var ToolCode: To store value for ToolCode\r
-# @var ToolChainFamily: To store value for ToolChainFamily\r
-#\r
-class ModuleSourceFileClass(CommonClass):\r
- def __init__(self, SourceFile = '', TagName = '', ToolCode = '', ToolChainFamily = '', FeatureFlag = '', SupArchList = None):\r
- self.SourceFile = SourceFile\r
- self.TagName = TagName\r
- self.ToolCode = ToolCode\r
- self.ToolChainFamily = ToolChainFamily\r
- self.FileType = ''\r
- CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)\r
-\r
-## ModuleBinaryFileClass\r
-#\r
-# This class defined binary file item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-# @param BinaryFile: Input value for BinaryFile, default is ''\r
-# @param FileType: Input value for FileType, default is ''\r
-# @param FeatureFlag: Input value for FeatureFlag, default is ''\r
-# @param SupArchList: Input value for SupArchList, default is []\r
-#\r
-# @var BinaryFile: To store value for BinaryFile\r
-# @var FileType: To store value for FileType, selection scope is in below list\r
-# FW | GUID | PREEFORM | UEFI_APP | UNI_UI | UNI_VER | LIB | PE32 | PIC | PEI_DEPEX | DXE_DEPEX | SMM_DEPEX| TE | VER | UI | BIN | FV\r
-# @var Target: To store value for Target\r
-# @var ToolChainFamily: To store value for ToolChainFamily\r
-#\r
-class ModuleBinaryFileClass(CommonClass):\r
- def __init__(self, BinaryFile = '', FileType = '', Target = '', FeatureFlag = '', SupArchList = None):\r
- self.BinaryFile = BinaryFile\r
- self.FileType = FileType\r
- self.Target = Target\r
- CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)\r
- self.Filenames = []\r
- self.PatchPcdValues = []\r
- self.PcdExValues = []\r
- self.LibraryInstances = []\r
- self.BuildFlags = []\r
-\r
-## ModulePackageDependencyClass\r
-#\r
-# This class defined package dependency item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-# @param DefineClass: Input value for DefineClass class\r
-#\r
-# @var FilePath: To store value for FilePath\r
-# @var PackageName: To store value for PackageName\r
-# @var PackageVersion: To store value for PackageVersion\r
-# @var PackageGuid: To store value for PackageGuid\r
-#\r
-class ModulePackageDependencyClass(CommonClass, DefineClass):\r
- def __init__(self):\r
- self.FilePath = ''\r
- self.PackageName = ''\r
- self.PackageVersion = ''\r
- self.PackageGuid = ''\r
- self.Description = ''\r
- CommonClass.__init__(self)\r
- DefineClass.__init__(self) \r
-\r
-## ModuleLibraryClass\r
-#\r
-# This class defined library item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var Library: To store value for Library\r
-#\r
-class ModuleLibraryClass(CommonClass):\r
- def __init__(self):\r
- self.Library = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleEventClass\r
-#\r
-# This class defined event item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var CName: To store value for CName\r
-# @var GuidCName: To store value for GuidCName\r
-# @var Type: To store value for Type, selection scope is in below list\r
-# CREATE_EVENT | SIGNAL_EVENT\r
-#\r
-class ModuleEventClass(CommonClass): \r
- def __init__(self):\r
- self.CName = ''\r
- self.GuidCName = ''\r
- self.Type = '' \r
- CommonClass.__init__(self)\r
-\r
-## ModuleHobClass\r
-#\r
-# This class defined hob item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var GuidCName: To store value for GuidCName\r
-# @var Type: To store value for Type, selection scope is in below list\r
-# PHIT | MEMORY_ALLOCATION | RESOURCE_DESCRIPTOR | GUID_EXTENSION | FIRMWARE_VOLUME | CPU | POOL | CAPSULE_VOLUME\r
-#\r
-class ModuleHobClass(CommonClass):\r
- def __init__(self):\r
- self.Type = ''\r
- self.GuidCName = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleVariableClass\r
-#\r
-# This class defined variable item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var GuidCName: To store value for GuidCName\r
-# @var Name: To store value for Name\r
-#\r
-class ModuleVariableClass(CommonClass):\r
- def __init__(self):\r
- self.Name = ''\r
- self.GuidCName = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleBootModeClass\r
-#\r
-# This class defined boot mode item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var Name: To store value for Name, selection scope is in below list\r
-# FULL | MINIMAL | NO_CHANGE | DIAGNOSTICS | DEFAULT | S2_RESUME | S3_RESUME | S4_RESUME | S5_RESUME | FLASH_UPDATE | RECOVERY_FULL | RECOVERY_MINIMAL | RECOVERY_NO_CHANGE | RECOVERY_DIAGNOSTICS | RECOVERY_DEFAULT | RECOVERY_S2_RESUME | RECOVERY_S3_RESUME | RECOVERY_S4_RESUME | RECOVERY_S5_RESUME | RECOVERY_FLASH_UPDATE \r
-#\r
-class ModuleBootModeClass(CommonClass):\r
- def __init__(self):\r
- self.Name = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleSystemTableClass\r
-#\r
-# This class defined system table item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var CName: To store value for CName\r
-#\r
-class ModuleSystemTableClass(CommonClass):\r
- def __init__(self):\r
- self.CName = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleDataHubClass\r
-#\r
-# This class defined data hub item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var CName: To store value for CName\r
-#\r
-class ModuleDataHubClass(CommonClass):\r
- def __init__(self):\r
- self.CName = ''\r
- CommonClass.__init__(self) \r
-\r
-## ModuleHiiPackageClass\r
-#\r
-# This class defined Hii package item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var CName: To store value for CName\r
-#\r
-class ModuleHiiPackageClass(CommonClass):\r
- def __init__(self):\r
- self.CName = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleExternImageClass\r
-#\r
-# This class defined Extern Image item used in Module file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var ModuleEntryPoint: To store value for ModuleEntryPoint\r
-# @var ModuleUnloadImage: To store value for ModuleUnloadImage\r
-#\r
-class ModuleExternImageClass(object):\r
- def __init__(self):\r
- self.ModuleEntryPoint = ''\r
- self.ModuleUnloadImage = ''\r
-\r
-## ModuleExternLibraryClass\r
-#\r
-# This class defined Extern Library item used in Module file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var Constructor: To store value for Constructor\r
-# @var Destructor: To store value for Destructor\r
-#\r
-class ModuleExternLibraryClass(object):\r
- def __init__(self):\r
- self.Constructor = ''\r
- self.Destructor = ''\r
-\r
-## ModuleExternDriverClass\r
-#\r
-# This class defined Extern Driver item used in Module file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var DriverBinding: To store value for DriverBinding\r
-# @var ComponentName: To store value for ComponentName\r
-# @var DriverConfig: To store value for DriverConfig\r
-# @var DriverDiag: To store value for DriverDiag\r
-#\r
-class ModuleExternDriverClass(object):\r
- def __init__(self):\r
- self.DriverBinding= ''\r
- self.ComponentName = ''\r
- self.DriverConfig = ''\r
- self.DriverDiag = ''\r
-\r
-## ModuleExternCallBackClass\r
-#\r
-# This class defined Extern Call Back item used in Module file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-# @var SetVirtualAddressMapCallBack: To store value for SetVirtualAddressMapCallBack\r
-# @var ExitBootServicesCallBack: To store value for ExitBootServicesCallBack\r
-#\r
-class ModuleExternCallBackClass(object):\r
- def __init__(self):\r
- self.SetVirtualAddressMapCallBack = ''\r
- self.ExitBootServicesCallBack = ''\r
-\r
-## ModuleExternClass\r
-#\r
-# This class defined Extern used in Module file\r
-# \r
-# @param object: Inherited from object class\r
-#\r
-#\r
-class ModuleExternClass(CommonClass):\r
- def __init__(self):\r
- self.EntryPoint = ''\r
- self.UnloadImage = ''\r
- self.Constructor = ''\r
- self.Destructor = ''\r
- CommonClass.__init__(self)\r
-\r
-## ModuleDepexClass\r
-#\r
-# This class defined depex item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-# @param DefineClass: Input value for DefineClass class\r
-#\r
-# @var Depex: To store value for Depex\r
-#\r
-class ModuleDepexClass(CommonClass, DefineClass):\r
- def __init__(self):\r
- CommonClass.__init__(self)\r
- DefineClass.__init__(self)\r
- self.Depex = ''\r
-\r
-## ModuleNmakeClass\r
-#\r
-# This class defined nmake item used in Module file\r
-# \r
-# @param CommonClass: Inherited from CommonClass class\r
-#\r
-# @var Name: To store value for Name\r
-# @var Value: To store value for Value\r
-#\r
-class ModuleNmakeClass(CommonClass):\r
- def __init__(self):\r
- CommonClass.__init__(self)\r
- self.Name = ''\r
- self.Value = ''\r
-\r
-## ModuleClass\r
-#\r
-# This class defined a complete module 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 : ModuleHeaderClass}\r
-# @var LibraryClasses: To store value for LibraryClasses, it is a list structure as\r
-# [ LibraryClassClass, ...]\r
-# @var Libraries: To store value for Libraries, it is a list structure as\r
-# [ ModuleLibraryClass, ...]\r
-# @var Sources: To store value for Sources, it is a list structure as\r
-# [ ModuleSourceFileClass, ...]\r
-# @var Binaries: To store value for Binaries, it is a list structure as\r
-# [ ModuleBinaryFileClass, ...]\r
-# @var NonProcessedFiles: To store value for NonProcessedFiles, it is a list structure as\r
-# [ '', '', ...]\r
-# @var PackageDependencies: To store value for PackageDependencies, it is a list structure as\r
-# [ ModulePackageDependencyClass, ... ] \r
-# @var Nmake: To store value for Nmake, it is a list structure as\r
-# [ ModuleNmakeClass, ... ]\r
-# @var Depex: To store value for Depex, it is a list structure as\r
-# [ ModuleDepexClass, ... ]\r
-# @var Includes: To store value for Includes, it is a list structure as\r
-# [ IncludeClass, ...]\r
-# @var Protocols: To store value for Protocols, it is a list structure as\r
-# [ ProtocolClass, ...]\r
-# @var Ppis: To store value for Ppis, it is a list structure as\r
-# [ PpiClass, ...]\r
-# @var Events: To store value for Events, it is a list structure as\r
-# [ ModuleEventClass, ...]\r
-# @var Hobs: To store value for Hobs, it is a list structure as\r
-# [ ModuleHobClass, ...] \r
-# @var Variables: To store value for Variables, it is a list structure as\r
-# [ ModuleVariableClass, ...]\r
-# @var BootModes: To store value for BootModes, it is a list structure as\r
-# [ ModuleBootModeClass, ...]\r
-# @var SystemTables: To store value for SystemTables, it is a list structure as\r
-# [ ModuleSystemTableClass, ...]\r
-# @var DataHubs: To store value for DataHubs, it is a list structure as\r
-# [ ModuleDataHubClass, ...]\r
-# @var HiiPackages: To store value for HiiPackages, it is a list structure as\r
-# [ ModuleHiiPackageClass, ...]\r
-# @var Guids: To store value for Guids, it is a list structure as\r
-# [ GuidClass, ...]\r
-# @var PcdCodes: To store value for PcdCodes, it is a list structure as\r
-# [ PcdClass, ...]\r
-# @var ExternImages: To store value for ExternImages, it is a list structure as\r
-# [ ModuleExternImageClass, ...]\r
-# @var ExternLibraries: To store value for ExternLibraries, it is a list structure as\r
-# [ ModuleExternLibraryClass, ...]\r
-# @var ExternDrivers: To store value for ExternDrivers, it is a list structure as\r
-# [ ModuleExternDriverClass, ...]\r
-# @var ExternCallBacks: To store value for ExternCallBacks, it is a list structure as\r
-# [ ModuleExternCallBackClass, ...]\r
-# @var BuildOptions: To store value for BuildOptions, it is a list structure as\r
-# [ BuildOptionClass, ...]\r
-# @var UserExtensions: To store value for UserExtensions, it is a list structure as\r
-# [ UserExtensionsClass, ...]\r
-#\r
-class ModuleClass(object):\r
- def __init__(self):\r
- self.Header = {}\r
- self.ModuleHeader = ModuleHeaderClass()\r
- self.LibraryClasses = []\r
- self.Libraries = []\r
- self.Sources = []\r
- self.Binaries = []\r
- self.NonProcessedFiles = []\r
- self.PackageDependencies = []\r
- self.Nmake = []\r
- self.Depex = []\r
- self.PeiDepex = None\r
- self.DxeDepex = None\r
- self.SmmDepex = None\r
- self.Includes = []\r
- self.Protocols = []\r
- self.Ppis = []\r
- self.Events = []\r
- self.Hobs = []\r
- self.Variables = []\r
- self.BootModes = []\r
- self.SystemTables = []\r
- self.DataHubs = []\r
- self.HiiPackages = []\r
- self.Guids = []\r
- self.PcdCodes = []\r
- self.ExternImages = []\r
- self.ExternLibraries = []\r
- self.ExternDrivers = []\r
- self.ExternCallBacks = []\r
- self.Externs = []\r
- self.BuildOptions = []\r
- self.UserExtensions = None\r
- self.MiscFiles = None\r
- self.FileList = []\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
- M = ModuleClass()\r