2 # This file is used to define a class object to describe a module
4 # Copyright (c) 2007, Intel Corporation
5 # All rights reserved. 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
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.
16 from CommonClass
import *
20 # This class defined header items used in Module file
22 # @param IdentificationClass: Inherited from IdentificationClass class
23 # @param CommonHeaderClass: Inherited from CommonHeaderClass class
24 # @param DefineClass: Inherited from DefineClass class
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
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 TianoR8FlashMap_h: To store value for TianoR8FlashMap_h
36 # @var InfVersion: To store value for InfVersion
37 # @var EfiSpecificationVersion: To store value for EfiSpecificationVersion
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
54 class ModuleHeaderClass(IdentificationClass
, CommonHeaderClass
, DefineClass
):
56 IdentificationClass
.__init
__(self
)
57 CommonHeaderClass
.__init
__(self
)
58 DefineClass
.__init
__(self
)
60 self
.SupModuleList
= []
62 self
.BinaryModule
= False
63 self
.OutputFileBasename
= ''
66 self
.TianoR8FlashMap_h
= False
68 self
.EfiSpecificationVersion
= ''
69 self
.PiSpecificationVersion
= ''
70 self
.UefiSpecificationVersion
= ''
71 self
.EdkReleaseVersion
= ''
72 self
.LibraryClass
= []
73 self
.ComponentType
= ''
74 self
.MakefileName
= ''
80 self
.CustomMakefile
= {}
82 self
.MacroDefines
= {}
83 self
.SourceOverridePath
= ''
84 self
.Specification
= []
86 ## ModuleSourceFileClass
88 # This class defined source file item used in Module file
90 # @param CommonClass: Inherited from CommonClass class
91 # @param SourceFile: Input value for SourceFile, default is ''
92 # @param TagName: Input value for TagName, default is ''
93 # @param ToolCode: Input value for ToolCode, default is ''
94 # @param ToolChainFamily: Input value for ToolChainFamily, default is ''
95 # @param FeatureFlag: Input value for FeatureFlag, default is ''
96 # @param SupArchList: Input value for SupArchList, default is []
98 # @var SourceFile: To store value for SourceFile
99 # @var TagName: To store value for TagName
100 # @var ToolCode: To store value for ToolCode
101 # @var ToolChainFamily: To store value for ToolChainFamily
103 class ModuleSourceFileClass(CommonClass
):
104 def __init__(self
, SourceFile
= '', TagName
= '', ToolCode
= '', ToolChainFamily
= '', FeatureFlag
= '', SupArchList
= None):
105 self
.SourceFile
= SourceFile
106 self
.TagName
= TagName
107 self
.ToolCode
= ToolCode
108 self
.ToolChainFamily
= ToolChainFamily
110 CommonClass
.__init
__(self
, FeatureFlag
= FeatureFlag
, SupArchList
= SupArchList
)
112 ## ModuleBinaryFileClass
114 # This class defined binary file item used in Module file
116 # @param CommonClass: Inherited from CommonClass class
117 # @param BinaryFile: Input value for BinaryFile, default is ''
118 # @param FileType: Input value for FileType, default is ''
119 # @param FeatureFlag: Input value for FeatureFlag, default is ''
120 # @param SupArchList: Input value for SupArchList, default is []
122 # @var BinaryFile: To store value for BinaryFile
123 # @var FileType: To store value for FileType, selection scope is in below list
124 # FW | GUID | PREEFORM | UEFI_APP | UNI_UI | UNI_VER | LIB | PE32 | PIC | PEI_DEPEX | DXE_DEPEX | TE | VER | UI | BIN | FV
125 # @var Target: To store value for Target
126 # @var ToolChainFamily: To store value for ToolChainFamily
128 class ModuleBinaryFileClass(CommonClass
):
129 def __init__(self
, BinaryFile
= '', FileType
= '', Target
= '', FeatureFlag
= '', SupArchList
= None):
130 self
.BinaryFile
= BinaryFile
131 self
.FileType
= FileType
133 CommonClass
.__init
__(self
, FeatureFlag
= FeatureFlag
, SupArchList
= SupArchList
)
135 self
.PatchPcdValues
= []
136 self
.PcdExValues
= []
137 self
.LibraryInstances
= []
140 ## ModulePackageDependencyClass
142 # This class defined package dependency item used in Module file
144 # @param CommonClass: Inherited from CommonClass class
145 # @param DefineClass: Input value for DefineClass class
147 # @var FilePath: To store value for FilePath
148 # @var PackageName: To store value for PackageName
149 # @var PackageVersion: To store value for PackageVersion
150 # @var PackageGuid: To store value for PackageGuid
152 class ModulePackageDependencyClass(CommonClass
, DefineClass
):
155 self
.PackageName
= ''
156 self
.PackageVersion
= ''
157 self
.PackageGuid
= ''
158 self
.Description
= ''
159 CommonClass
.__init
__(self
)
160 DefineClass
.__init
__(self
)
162 ## ModuleLibraryClass
164 # This class defined library item used in Module file
166 # @param CommonClass: Inherited from CommonClass class
168 # @var Library: To store value for Library
170 class ModuleLibraryClass(CommonClass
):
173 CommonClass
.__init
__(self
)
177 # This class defined event item used in Module file
179 # @param CommonClass: Inherited from CommonClass class
181 # @var CName: To store value for CName
182 # @var GuidCName: To store value for GuidCName
183 # @var Type: To store value for Type, selection scope is in below list
184 # CREATE_EVENT | SIGNAL_EVENT
186 class ModuleEventClass(CommonClass
):
191 CommonClass
.__init
__(self
)
195 # This class defined hob item used in Module file
197 # @param CommonClass: Inherited from CommonClass class
199 # @var GuidCName: To store value for GuidCName
200 # @var Type: To store value for Type, selection scope is in below list
201 # PHIT | MEMORY_ALLOCATION | RESOURCE_DESCRIPTOR | GUID_EXTENSION | FIRMWARE_VOLUME | CPU | POOL | CAPSULE_VOLUME
203 class ModuleHobClass(CommonClass
):
207 CommonClass
.__init
__(self
)
209 ## ModuleVariableClass
211 # This class defined variable item used in Module file
213 # @param CommonClass: Inherited from CommonClass class
215 # @var GuidCName: To store value for GuidCName
216 # @var Name: To store value for Name
218 class ModuleVariableClass(CommonClass
):
222 CommonClass
.__init
__(self
)
224 ## ModuleBootModeClass
226 # This class defined boot mode item used in Module file
228 # @param CommonClass: Inherited from CommonClass class
230 # @var Name: To store value for Name, selection scope is in below list
231 # 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
233 class ModuleBootModeClass(CommonClass
):
236 CommonClass
.__init
__(self
)
238 ## ModuleSystemTableClass
240 # This class defined system table item used in Module file
242 # @param CommonClass: Inherited from CommonClass class
244 # @var CName: To store value for CName
246 class ModuleSystemTableClass(CommonClass
):
249 CommonClass
.__init
__(self
)
251 ## ModuleDataHubClass
253 # This class defined data hub item used in Module file
255 # @param CommonClass: Inherited from CommonClass class
257 # @var CName: To store value for CName
259 class ModuleDataHubClass(CommonClass
):
262 CommonClass
.__init
__(self
)
264 ## ModuleHiiPackageClass
266 # This class defined Hii package item used in Module file
268 # @param CommonClass: Inherited from CommonClass class
270 # @var CName: To store value for CName
272 class ModuleHiiPackageClass(CommonClass
):
275 CommonClass
.__init
__(self
)
277 ## ModuleExternImageClass
279 # This class defined Extern Image item used in Module file
281 # @param object: Inherited from object class
283 # @var ModuleEntryPoint: To store value for ModuleEntryPoint
284 # @var ModuleUnloadImage: To store value for ModuleUnloadImage
286 class ModuleExternImageClass(object):
288 self
.ModuleEntryPoint
= ''
289 self
.ModuleUnloadImage
= ''
291 ## ModuleExternLibraryClass
293 # This class defined Extern Library item used in Module file
295 # @param object: Inherited from object class
297 # @var Constructor: To store value for Constructor
298 # @var Destructor: To store value for Destructor
300 class ModuleExternLibraryClass(object):
302 self
.Constructor
= ''
305 ## ModuleExternDriverClass
307 # This class defined Extern Driver item used in Module file
309 # @param object: Inherited from object class
311 # @var DriverBinding: To store value for DriverBinding
312 # @var ComponentName: To store value for ComponentName
313 # @var DriverConfig: To store value for DriverConfig
314 # @var DriverDiag: To store value for DriverDiag
316 class ModuleExternDriverClass(object):
318 self
.DriverBinding
= ''
319 self
.ComponentName
= ''
320 self
.DriverConfig
= ''
323 ## ModuleExternCallBackClass
325 # This class defined Extern Call Back item used in Module file
327 # @param object: Inherited from object class
329 # @var SetVirtualAddressMapCallBack: To store value for SetVirtualAddressMapCallBack
330 # @var ExitBootServicesCallBack: To store value for ExitBootServicesCallBack
332 class ModuleExternCallBackClass(object):
334 self
.SetVirtualAddressMapCallBack
= ''
335 self
.ExitBootServicesCallBack
= ''
339 # This class defined Extern used in Module file
341 # @param object: Inherited from object class
344 class ModuleExternClass(CommonClass
):
347 self
.UnloadImage
= ''
348 self
.Constructor
= ''
350 CommonClass
.__init
__(self
)
354 # This class defined depex item used in Module file
356 # @param CommonClass: Inherited from CommonClass class
357 # @param DefineClass: Input value for DefineClass class
359 # @var Depex: To store value for Depex
361 class ModuleDepexClass(CommonClass
, DefineClass
):
363 CommonClass
.__init
__(self
)
364 DefineClass
.__init
__(self
)
369 # This class defined nmake item used in Module file
371 # @param CommonClass: Inherited from CommonClass class
373 # @var Name: To store value for Name
374 # @var Value: To store value for Value
376 class ModuleNmakeClass(CommonClass
):
378 CommonClass
.__init
__(self
)
384 # This class defined a complete module item
386 # @param object: Inherited from object class
388 # @var Header: To store value for Header, it is a structure as
389 # {Arch : ModuleHeaderClass}
390 # @var LibraryClasses: To store value for LibraryClasses, it is a list structure as
391 # [ LibraryClassClass, ...]
392 # @var Libraries: To store value for Libraries, it is a list structure as
393 # [ ModuleLibraryClass, ...]
394 # @var Sources: To store value for Sources, it is a list structure as
395 # [ ModuleSourceFileClass, ...]
396 # @var Binaries: To store value for Binaries, it is a list structure as
397 # [ ModuleBinaryFileClass, ...]
398 # @var NonProcessedFiles: To store value for NonProcessedFiles, it is a list structure as
400 # @var PackageDependencies: To store value for PackageDependencies, it is a list structure as
401 # [ ModulePackageDependencyClass, ... ]
402 # @var Nmake: To store value for Nmake, it is a list structure as
403 # [ ModuleNmakeClass, ... ]
404 # @var Depex: To store value for Depex, it is a list structure as
405 # [ ModuleDepexClass, ... ]
406 # @var Includes: To store value for Includes, it is a list structure as
407 # [ IncludeClass, ...]
408 # @var Protocols: To store value for Protocols, it is a list structure as
409 # [ ProtocolClass, ...]
410 # @var Ppis: To store value for Ppis, it is a list structure as
412 # @var Events: To store value for Events, it is a list structure as
413 # [ ModuleEventClass, ...]
414 # @var Hobs: To store value for Hobs, it is a list structure as
415 # [ ModuleHobClass, ...]
416 # @var Variables: To store value for Variables, it is a list structure as
417 # [ ModuleVariableClass, ...]
418 # @var BootModes: To store value for BootModes, it is a list structure as
419 # [ ModuleBootModeClass, ...]
420 # @var SystemTables: To store value for SystemTables, it is a list structure as
421 # [ ModuleSystemTableClass, ...]
422 # @var DataHubs: To store value for DataHubs, it is a list structure as
423 # [ ModuleDataHubClass, ...]
424 # @var HiiPackages: To store value for HiiPackages, it is a list structure as
425 # [ ModuleHiiPackageClass, ...]
426 # @var Guids: To store value for Guids, it is a list structure as
428 # @var PcdCodes: To store value for PcdCodes, it is a list structure as
430 # @var ExternImages: To store value for ExternImages, it is a list structure as
431 # [ ModuleExternImageClass, ...]
432 # @var ExternLibraries: To store value for ExternLibraries, it is a list structure as
433 # [ ModuleExternLibraryClass, ...]
434 # @var ExternDrivers: To store value for ExternDrivers, it is a list structure as
435 # [ ModuleExternDriverClass, ...]
436 # @var ExternCallBacks: To store value for ExternCallBacks, it is a list structure as
437 # [ ModuleExternCallBackClass, ...]
438 # @var BuildOptions: To store value for BuildOptions, it is a list structure as
439 # [ BuildOptionClass, ...]
440 # @var UserExtensions: To store value for UserExtensions, it is a list structure as
441 # [ UserExtensionsClass, ...]
443 class ModuleClass(object):
446 self
.ModuleHeader
= ModuleHeaderClass()
447 self
.LibraryClasses
= []
451 self
.NonProcessedFiles
= []
452 self
.PackageDependencies
= []
465 self
.SystemTables
= []
467 self
.HiiPackages
= []
470 self
.ExternImages
= []
471 self
.ExternLibraries
= []
472 self
.ExternDrivers
= []
473 self
.ExternCallBacks
= []
475 self
.BuildOptions
= []
476 self
.UserExtensions
= None
477 self
.MiscFiles
= None
482 # This acts like the main() function for the script, unless it is 'import'ed into another
485 if __name__
== '__main__':