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