Home | History | Annotate | Download | only in CommonDataClass
      1 ## @file

      2 # This file is used to define a class object to describe a module

      3 #

      4 # Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>

      5 # This program and the accompanying materials

      6 # are licensed and made available under the terms and conditions of the BSD License

      7 # which accompanies this distribution.    The full text of the license may be found at

      8 # http://opensource.org/licenses/bsd-license.php

      9 #

     10 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,

     11 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

     12 
     13 ##

     14 # Import Modules

     15 #

     16 from CommonClass import *
     17 
     18 ## ModuleHeaderClass

     19 #

     20 # This class defined header items used in Module file

     21 # 

     22 # @param IdentificationClass:    Inherited from IdentificationClass class

     23 # @param CommonHeaderClass:      Inherited from CommonHeaderClass class

     24 # @param DefineClass:            Inherited from DefineClass class

     25 #

     26 # @var ModuleType:               To store value for ModuleType

     27 # @var SupArchList:              To store value for SupArchList, selection scope is in below list

     28 #                                EBC | IA32 | X64 | IPF | ARM | PPC | AARCH64

     29 # @var BinaryModule:             To store value for BinaryModule

     30 # @var OutputFileBasename:       To store value for OutputFileBasename

     31 # @var ClonedFrom:               To store value for ClonedFrom, it is a set structure as

     32 #                                [ ClonedRecordClass, ... ]

     33 # @var PcdIsDriver:              To store value for PcdIsDriver, selection scope is in below list

     34 #                                PEI_PCD_DRIVER | DXE_PCD_DRIVER

     35 # @var TianoEdkFlashMap_h:       To store value for TianoEdkFlashMap_h

     36 # @var InfVersion:               To store value for InfVersion

     37 # @var UefiSpecificationVersion: To store value for UefiSpecificationVersion

     38 # @var EdkReleaseVersion:        To store value for EdkReleaseVersion

     39 # @var LibraryClass:             To store value for LibraryClass, it is a set structure as

     40 #                                [ LibraryClassClass, ...]

     41 # @var ComponentType:            To store value for ComponentType, selection scope is in below list

     42 #                                LIBRARY | SECURITY_CORE | PEI_CORE | COMBINED_PEIM_DRIVER | PIC_PEIM | RELOCATABLE_PEIM | BS_DRIVER | RT_DRIVER | SAL_RT_DRIVER | APPLICATION

     43 # @var MakefileName:             To store value for MakefileName

     44 # @var BuildNumber:              To store value for BuildNumber

     45 # @var BuildType:                To store value for BuildType

     46 # @var FfsExt:                   To store value for FfsExt

     47 # @var FvExt:                    To store value for FvExt

     48 # @var SourceFv:                 To store value for SourceFv

     49 # @var CustomMakefile:           To store value for CustomMakefile, it is a set structure as

     50 #                                { Family : Filename, ... }

     51 # @var Shadow:                   To store value for Shadow

     52 # @var MacroDefines              To store the defined macros

     53 #

     54 class ModuleHeaderClass(IdentificationClass, CommonHeaderClass, DefineClass):
     55     def __init__(self):
     56         IdentificationClass.__init__(self)
     57         CommonHeaderClass.__init__(self)
     58         DefineClass.__init__(self)
     59         self.ModuleType = ''
     60         self.SupModuleList = []
     61         self.SupArchList = []
     62         self.BinaryModule = False
     63         self.OutputFileBasename = ''
     64         self.ClonedFrom = []
     65         self.PcdIsDriver = ''
     66         self.TianoEdkFlashMap_h = False
     67         self.InfVersion = ''
     68         self.PiSpecificationVersion = ''
     69         self.UefiSpecificationVersion = ''
     70         self.EdkReleaseVersion = ''
     71         self.LibraryClass = []
     72         self.ComponentType = ''
     73         self.MakefileName = ''
     74         self.BuildNumber = ''
     75         self.BuildType = ''
     76         self.FfsExt = ''
     77         self.FvExt = ''
     78         self.SourceFv = ''
     79         self.CustomMakefile = {}
     80         self.Shadow = ''
     81         self.MacroDefines = {}
     82         self.SourceOverridePath = ''
     83         self.Specification = []
     84 
     85 ## ModuleSourceFileClass

     86 #

     87 # This class defined source file item used in Module file

     88 # 

     89 # @param CommonClass:      Inherited from CommonClass class

     90 # @param SourceFile:       Input value for SourceFile, default is ''

     91 # @param TagName:          Input value for TagName, default is ''

     92 # @param ToolCode:         Input value for ToolCode, default is ''

     93 # @param ToolChainFamily:  Input value for ToolChainFamily, default is ''

     94 # @param FeatureFlag:      Input value for FeatureFlag, default is ''

     95 # @param SupArchList:      Input value for SupArchList, default is []

     96 #

     97 # @var SourceFile:         To store value for SourceFile

     98 # @var TagName:            To store value for TagName

     99 # @var ToolCode:           To store value for ToolCode

    100 # @var ToolChainFamily:    To store value for ToolChainFamily

    101 #

    102 class ModuleSourceFileClass(CommonClass):
    103     def __init__(self, SourceFile = '', TagName = '', ToolCode = '', ToolChainFamily = '', FeatureFlag = '', SupArchList = None):
    104         self.SourceFile = SourceFile
    105         self.TagName = TagName
    106         self.ToolCode = ToolCode
    107         self.ToolChainFamily = ToolChainFamily
    108         self.FileType = ''
    109         CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)
    110 
    111 ## ModuleBinaryFileClass

    112 #

    113 # This class defined binary file item used in Module file

    114 # 

    115 # @param CommonClass:    Inherited from CommonClass class

    116 # @param BinaryFile:     Input value for BinaryFile, default is ''

    117 # @param FileType:       Input value for FileType, default is ''

    118 # @param FeatureFlag:    Input value for FeatureFlag, default is ''

    119 # @param SupArchList:    Input value for SupArchList, default is []

    120 #

    121 # @var BinaryFile:       To store value for BinaryFile

    122 # @var FileType:         To store value for FileType, selection scope is in below list

    123 #                        FW | GUID | PREEFORM | UEFI_APP | UNI_UI | UNI_VER | LIB | PE32 | PIC | PEI_DEPEX | DXE_DEPEX | SMM_DEPEX| TE | VER | UI | BIN | FV

    124 # @var Target:           To store value for Target

    125 # @var ToolChainFamily:  To store value for ToolChainFamily

    126 #

    127 class ModuleBinaryFileClass(CommonClass):
    128     def __init__(self, BinaryFile = '', FileType = '', Target = '', FeatureFlag = '', SupArchList = None):
    129         self.BinaryFile = BinaryFile
    130         self.FileType = FileType
    131         self.Target = Target
    132         CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)
    133         self.Filenames = []
    134         self.PatchPcdValues = []
    135         self.PcdExValues = []
    136         self.LibraryInstances = []
    137         self.BuildFlags = []
    138 
    139 ## ModulePackageDependencyClass

    140 #

    141 # This class defined package dependency item used in Module file

    142 # 

    143 # @param CommonClass:   Inherited from CommonClass class

    144 # @param DefineClass:   Input value for DefineClass class

    145 #

    146 # @var FilePath:        To store value for FilePath

    147 # @var PackageName:     To store value for PackageName

    148 # @var PackageVersion:  To store value for PackageVersion

    149 # @var PackageGuid:     To store value for PackageGuid

    150 #

    151 class ModulePackageDependencyClass(CommonClass, DefineClass):
    152     def __init__(self):
    153         self.FilePath = ''
    154         self.PackageName = ''
    155         self.PackageVersion = ''
    156         self.PackageGuid = ''
    157         self.Description = ''
    158         CommonClass.__init__(self)
    159         DefineClass.__init__(self)       
    160 
    161 ## ModuleLibraryClass

    162 #

    163 # This class defined library item used in Module file

    164 # 

    165 # @param CommonClass:  Inherited from CommonClass class

    166 #

    167 # @var Library:        To store value for Library

    168 #

    169 class ModuleLibraryClass(CommonClass):
    170     def __init__(self):
    171         self.Library = ''
    172         CommonClass.__init__(self)
    173 
    174 ## ModuleEventClass

    175 #

    176 # This class defined event item used in Module file

    177 # 

    178 # @param CommonClass:  Inherited from CommonClass class

    179 #

    180 # @var CName:          To store value for CName

    181 # @var GuidCName:      To store value for GuidCName

    182 # @var Type:           To store value for Type, selection scope is in below list

    183 #                      CREATE_EVENT | SIGNAL_EVENT

    184 #

    185 class ModuleEventClass(CommonClass):        
    186     def __init__(self):
    187         self.CName = ''
    188         self.GuidCName = ''
    189         self.Type = ''                              
    190         CommonClass.__init__(self)
    191 
    192 ## ModuleHobClass

    193 #

    194 # This class defined hob item used in Module file

    195 # 

    196 # @param CommonClass:  Inherited from CommonClass class

    197 #

    198 # @var GuidCName:      To store value for GuidCName

    199 # @var Type:           To store value for Type, selection scope is in below list

    200 #                      PHIT | MEMORY_ALLOCATION | RESOURCE_DESCRIPTOR | GUID_EXTENSION | FIRMWARE_VOLUME | CPU | POOL | CAPSULE_VOLUME

    201 #

    202 class ModuleHobClass(CommonClass):
    203     def __init__(self):
    204         self.Type = ''
    205         self.GuidCName = ''
    206         CommonClass.__init__(self)
    207 
    208 ## ModuleVariableClass

    209 #

    210 # This class defined variable item used in Module file

    211 # 

    212 # @param CommonClass:  Inherited from CommonClass class

    213 #

    214 # @var GuidCName:      To store value for GuidCName

    215 # @var Name:           To store value for Name

    216 #

    217 class ModuleVariableClass(CommonClass):
    218     def __init__(self):
    219         self.Name = ''
    220         self.GuidCName = ''
    221         CommonClass.__init__(self)
    222 
    223 ## ModuleBootModeClass

    224 #

    225 # This class defined boot mode item used in Module file

    226 # 

    227 # @param CommonClass:  Inherited from CommonClass class

    228 #

    229 # @var Name:           To store value for Name, selection scope is in below list

    230 #                      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 

    231 #

    232 class ModuleBootModeClass(CommonClass):
    233     def __init__(self):
    234         self.Name = ''
    235         CommonClass.__init__(self)
    236 
    237 ## ModuleSystemTableClass

    238 #

    239 # This class defined system table item used in Module file

    240 # 

    241 # @param CommonClass:  Inherited from CommonClass class

    242 #

    243 # @var CName:          To store value for CName

    244 #

    245 class ModuleSystemTableClass(CommonClass):
    246     def __init__(self):
    247         self.CName = ''
    248         CommonClass.__init__(self)
    249 
    250 ## ModuleDataHubClass

    251 #

    252 # This class defined data hub item used in Module file

    253 # 

    254 # @param CommonClass:  Inherited from CommonClass class

    255 #

    256 # @var CName:          To store value for CName

    257 #

    258 class ModuleDataHubClass(CommonClass):
    259     def __init__(self):
    260         self.CName = ''
    261         CommonClass.__init__(self)        
    262 
    263 ## ModuleHiiPackageClass

    264 #

    265 # This class defined Hii package item used in Module file

    266 # 

    267 # @param CommonClass:  Inherited from CommonClass class

    268 #

    269 # @var CName:          To store value for CName

    270 #

    271 class ModuleHiiPackageClass(CommonClass):
    272     def __init__(self):
    273         self.CName = ''
    274         CommonClass.__init__(self)
    275 
    276 ## ModuleExternImageClass

    277 #

    278 # This class defined Extern Image item used in Module file

    279 # 

    280 # @param object:           Inherited from object class

    281 #

    282 # @var ModuleEntryPoint:   To store value for ModuleEntryPoint

    283 # @var ModuleUnloadImage:  To store value for ModuleUnloadImage

    284 #

    285 class ModuleExternImageClass(object):
    286     def __init__(self):
    287         self.ModuleEntryPoint = ''
    288         self.ModuleUnloadImage = ''
    289 
    290 ## ModuleExternLibraryClass

    291 #

    292 # This class defined Extern Library item used in Module file

    293 # 

    294 # @param object:     Inherited from object class

    295 #

    296 # @var Constructor:  To store value for Constructor

    297 # @var Destructor:   To store value for Destructor

    298 #

    299 class ModuleExternLibraryClass(object):
    300     def __init__(self):
    301         self.Constructor = ''
    302         self.Destructor = ''
    303 
    304 ## ModuleExternDriverClass

    305 #

    306 # This class defined Extern Driver item used in Module file

    307 # 

    308 # @param object:       Inherited from object class

    309 #

    310 # @var DriverBinding:  To store value for DriverBinding

    311 # @var ComponentName:  To store value for ComponentName

    312 # @var DriverConfig:   To store value for DriverConfig

    313 # @var DriverDiag:     To store value for DriverDiag

    314 #

    315 class ModuleExternDriverClass(object):
    316     def __init__(self):
    317         self.DriverBinding= ''
    318         self.ComponentName = ''
    319         self.DriverConfig = ''
    320         self.DriverDiag = ''
    321 
    322 ## ModuleExternCallBackClass

    323 #

    324 # This class defined Extern Call Back item used in Module file

    325 # 

    326 # @param object:                      Inherited from object class

    327 #

    328 # @var SetVirtualAddressMapCallBack:  To store value for SetVirtualAddressMapCallBack

    329 # @var ExitBootServicesCallBack:      To store value for ExitBootServicesCallBack

    330 #

    331 class ModuleExternCallBackClass(object):
    332     def __init__(self):
    333         self.SetVirtualAddressMapCallBack = ''
    334         self.ExitBootServicesCallBack = ''
    335 
    336 ## ModuleExternClass

    337 #

    338 # This class defined Extern used in Module file

    339 # 

    340 # @param object:                      Inherited from object class

    341 #

    342 #

    343 class ModuleExternClass(CommonClass):
    344     def __init__(self):
    345         self.EntryPoint = ''
    346         self.UnloadImage = ''
    347         self.Constructor = ''
    348         self.Destructor = ''
    349         CommonClass.__init__(self)
    350 
    351 ## ModuleDepexClass

    352 #

    353 # This class defined depex item used in Module file

    354 # 

    355 # @param CommonClass:  Inherited from CommonClass class

    356 # @param DefineClass:  Input value for DefineClass class

    357 #

    358 # @var Depex:          To store value for Depex

    359 #

    360 class ModuleDepexClass(CommonClass, DefineClass):
    361     def __init__(self):
    362         CommonClass.__init__(self)
    363         DefineClass.__init__(self)
    364         self.Depex = ''
    365 
    366 ## ModuleNmakeClass

    367 #

    368 # This class defined nmake item used in Module file

    369 # 

    370 # @param CommonClass:  Inherited from CommonClass class

    371 #

    372 # @var Name:           To store value for Name

    373 # @var Value:          To store value for Value

    374 #

    375 class ModuleNmakeClass(CommonClass):
    376     def __init__(self):
    377         CommonClass.__init__(self)
    378         self.Name = ''
    379         self.Value = ''
    380 
    381 ## ModuleClass

    382 #

    383 # This class defined a complete module item

    384 # 

    385 # @param object:    Inherited from object class

    386 #

    387 # @var Header:               To store value for Header, it is a structure as

    388 #                            {Arch : ModuleHeaderClass}

    389 # @var LibraryClasses:       To store value for LibraryClasses, it is a list structure as

    390 #                            [ LibraryClassClass, ...]

    391 # @var Libraries:            To store value for Libraries, it is a list structure as

    392 #                            [ ModuleLibraryClass, ...]

    393 # @var Sources:              To store value for Sources, it is a list structure as

    394 #                            [ ModuleSourceFileClass, ...]

    395 # @var Binaries:             To store value for Binaries, it is a list structure as

    396 #                            [ ModuleBinaryFileClass, ...]

    397 # @var NonProcessedFiles:    To store value for NonProcessedFiles, it is a list structure as

    398 #                            [ '', '', ...]

    399 # @var PackageDependencies:  To store value for PackageDependencies, it is a list structure as

    400 #                            [ ModulePackageDependencyClass, ... ] 

    401 # @var Nmake:                To store value for Nmake, it is a list structure as

    402 #                            [ ModuleNmakeClass, ... ]

    403 # @var Depex:                To store value for Depex, it is a list structure as

    404 #                            [ ModuleDepexClass, ... ]

    405 # @var Includes:             To store value for Includes, it is a list structure as

    406 #                            [ IncludeClass, ...]

    407 # @var Protocols:            To store value for Protocols, it is a list structure as

    408 #                            [ ProtocolClass, ...]

    409 # @var Ppis:                 To store value for Ppis, it is a list structure as

    410 #                            [ PpiClass, ...]

    411 # @var Events:               To store value for Events, it is a list structure as

    412 #                            [ ModuleEventClass, ...]

    413 # @var Hobs:                 To store value for Hobs, it is a list structure as

    414 #                            [ ModuleHobClass, ...] 

    415 # @var Variables:            To store value for Variables, it is a list structure as

    416 #                            [ ModuleVariableClass, ...]

    417 # @var BootModes:            To store value for BootModes, it is a list structure as

    418 #                            [ ModuleBootModeClass, ...]

    419 # @var SystemTables:         To store value for SystemTables, it is a list structure as

    420 #                            [ ModuleSystemTableClass, ...]

    421 # @var DataHubs:             To store value for DataHubs, it is a list structure as

    422 #                            [ ModuleDataHubClass, ...]

    423 # @var HiiPackages:          To store value for HiiPackages, it is a list structure as

    424 #                            [ ModuleHiiPackageClass, ...]

    425 # @var Guids:                To store value for Guids, it is a list structure as

    426 #                            [ GuidClass, ...]

    427 # @var PcdCodes:             To store value for PcdCodes, it is a list structure as

    428 #                            [ PcdClass, ...]

    429 # @var ExternImages:         To store value for ExternImages, it is a list structure as

    430 #                            [ ModuleExternImageClass, ...]

    431 # @var ExternLibraries:      To store value for ExternLibraries, it is a list structure as

    432 #                            [ ModuleExternLibraryClass, ...]

    433 # @var ExternDrivers:        To store value for ExternDrivers, it is a list structure as

    434 #                            [ ModuleExternDriverClass, ...]

    435 # @var ExternCallBacks:      To store value for ExternCallBacks, it is a list structure as

    436 #                            [ ModuleExternCallBackClass, ...]

    437 # @var BuildOptions:         To store value for BuildOptions, it is a list structure as

    438 #                            [ BuildOptionClass, ...]

    439 # @var UserExtensions:       To store value for UserExtensions, it is a list structure as

    440 #                            [ UserExtensionsClass, ...]

    441 #

    442 class ModuleClass(object):
    443     def __init__(self):
    444         self.Header = {}
    445         self.ModuleHeader = ModuleHeaderClass()
    446         self.LibraryClasses = []
    447         self.Libraries = []
    448         self.Sources = []
    449         self.Binaries = []
    450         self.NonProcessedFiles = []
    451         self.PackageDependencies = []
    452         self.Nmake = []
    453         self.Depex = []
    454         self.PeiDepex = None
    455         self.DxeDepex = None
    456         self.SmmDepex = None
    457         self.Includes = []
    458         self.Protocols = []
    459         self.Ppis = []
    460         self.Events = []
    461         self.Hobs = []
    462         self.Variables = []
    463         self.BootModes = []
    464         self.SystemTables = []
    465         self.DataHubs = []
    466         self.HiiPackages = []
    467         self.Guids = []
    468         self.PcdCodes = []
    469         self.ExternImages = []
    470         self.ExternLibraries = []
    471         self.ExternDrivers = []
    472         self.ExternCallBacks = []
    473         self.Externs = []
    474         self.BuildOptions = []
    475         self.UserExtensions = None
    476         self.MiscFiles = None
    477         self.FileList = []
    478 
    479 ##

    480 #

    481 # This acts like the main() function for the script, unless it is 'import'ed into another

    482 # script.

    483 #

    484 if __name__ == '__main__':
    485     M = ModuleClass()
    486