]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/CommonDataClass/ModuleClass.py
9d780725b9648e73310a8723523e25d0a44f0dd1
[mirror_edk2.git] / BaseTools / Source / Python / CommonDataClass / ModuleClass.py
1 ## @file
2 # This file is used to define a class object to describe a module
3 #
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
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
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
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.TianoR8FlashMap_h = False
67 self.InfVersion = ''
68 self.EfiSpecificationVersion = ''
69 self.PiSpecificationVersion = ''
70 self.UefiSpecificationVersion = ''
71 self.EdkReleaseVersion = ''
72 self.LibraryClass = []
73 self.ComponentType = ''
74 self.MakefileName = ''
75 self.BuildNumber = ''
76 self.BuildType = ''
77 self.FfsExt = ''
78 self.FvExt = ''
79 self.SourceFv = ''
80 self.CustomMakefile = {}
81 self.Shadow = ''
82 self.MacroDefines = {}
83 self.SourceOverridePath = ''
84 self.Specification = []
85
86 ## ModuleSourceFileClass
87 #
88 # This class defined source file item used in Module file
89 #
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 []
97 #
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
102 #
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
109 self.FileType = ''
110 CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)
111
112 ## ModuleBinaryFileClass
113 #
114 # This class defined binary file item used in Module file
115 #
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 []
121 #
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
127 #
128 class ModuleBinaryFileClass(CommonClass):
129 def __init__(self, BinaryFile = '', FileType = '', Target = '', FeatureFlag = '', SupArchList = None):
130 self.BinaryFile = BinaryFile
131 self.FileType = FileType
132 self.Target = Target
133 CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)
134 self.Filenames = []
135 self.PatchPcdValues = []
136 self.PcdExValues = []
137 self.LibraryInstances = []
138 self.BuildFlags = []
139
140 ## ModulePackageDependencyClass
141 #
142 # This class defined package dependency item used in Module file
143 #
144 # @param CommonClass: Inherited from CommonClass class
145 # @param DefineClass: Input value for DefineClass class
146 #
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
151 #
152 class ModulePackageDependencyClass(CommonClass, DefineClass):
153 def __init__(self):
154 self.FilePath = ''
155 self.PackageName = ''
156 self.PackageVersion = ''
157 self.PackageGuid = ''
158 self.Description = ''
159 CommonClass.__init__(self)
160 DefineClass.__init__(self)
161
162 ## ModuleLibraryClass
163 #
164 # This class defined library item used in Module file
165 #
166 # @param CommonClass: Inherited from CommonClass class
167 #
168 # @var Library: To store value for Library
169 #
170 class ModuleLibraryClass(CommonClass):
171 def __init__(self):
172 self.Library = ''
173 CommonClass.__init__(self)
174
175 ## ModuleEventClass
176 #
177 # This class defined event item used in Module file
178 #
179 # @param CommonClass: Inherited from CommonClass class
180 #
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
185 #
186 class ModuleEventClass(CommonClass):
187 def __init__(self):
188 self.CName = ''
189 self.GuidCName = ''
190 self.Type = ''
191 CommonClass.__init__(self)
192
193 ## ModuleHobClass
194 #
195 # This class defined hob item used in Module file
196 #
197 # @param CommonClass: Inherited from CommonClass class
198 #
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
202 #
203 class ModuleHobClass(CommonClass):
204 def __init__(self):
205 self.Type = ''
206 self.GuidCName = ''
207 CommonClass.__init__(self)
208
209 ## ModuleVariableClass
210 #
211 # This class defined variable item used in Module file
212 #
213 # @param CommonClass: Inherited from CommonClass class
214 #
215 # @var GuidCName: To store value for GuidCName
216 # @var Name: To store value for Name
217 #
218 class ModuleVariableClass(CommonClass):
219 def __init__(self):
220 self.Name = ''
221 self.GuidCName = ''
222 CommonClass.__init__(self)
223
224 ## ModuleBootModeClass
225 #
226 # This class defined boot mode item used in Module file
227 #
228 # @param CommonClass: Inherited from CommonClass class
229 #
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
232 #
233 class ModuleBootModeClass(CommonClass):
234 def __init__(self):
235 self.Name = ''
236 CommonClass.__init__(self)
237
238 ## ModuleSystemTableClass
239 #
240 # This class defined system table item used in Module file
241 #
242 # @param CommonClass: Inherited from CommonClass class
243 #
244 # @var CName: To store value for CName
245 #
246 class ModuleSystemTableClass(CommonClass):
247 def __init__(self):
248 self.CName = ''
249 CommonClass.__init__(self)
250
251 ## ModuleDataHubClass
252 #
253 # This class defined data hub item used in Module file
254 #
255 # @param CommonClass: Inherited from CommonClass class
256 #
257 # @var CName: To store value for CName
258 #
259 class ModuleDataHubClass(CommonClass):
260 def __init__(self):
261 self.CName = ''
262 CommonClass.__init__(self)
263
264 ## ModuleHiiPackageClass
265 #
266 # This class defined Hii package item used in Module file
267 #
268 # @param CommonClass: Inherited from CommonClass class
269 #
270 # @var CName: To store value for CName
271 #
272 class ModuleHiiPackageClass(CommonClass):
273 def __init__(self):
274 self.CName = ''
275 CommonClass.__init__(self)
276
277 ## ModuleExternImageClass
278 #
279 # This class defined Extern Image item used in Module file
280 #
281 # @param object: Inherited from object class
282 #
283 # @var ModuleEntryPoint: To store value for ModuleEntryPoint
284 # @var ModuleUnloadImage: To store value for ModuleUnloadImage
285 #
286 class ModuleExternImageClass(object):
287 def __init__(self):
288 self.ModuleEntryPoint = ''
289 self.ModuleUnloadImage = ''
290
291 ## ModuleExternLibraryClass
292 #
293 # This class defined Extern Library item used in Module file
294 #
295 # @param object: Inherited from object class
296 #
297 # @var Constructor: To store value for Constructor
298 # @var Destructor: To store value for Destructor
299 #
300 class ModuleExternLibraryClass(object):
301 def __init__(self):
302 self.Constructor = ''
303 self.Destructor = ''
304
305 ## ModuleExternDriverClass
306 #
307 # This class defined Extern Driver item used in Module file
308 #
309 # @param object: Inherited from object class
310 #
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
315 #
316 class ModuleExternDriverClass(object):
317 def __init__(self):
318 self.DriverBinding= ''
319 self.ComponentName = ''
320 self.DriverConfig = ''
321 self.DriverDiag = ''
322
323 ## ModuleExternCallBackClass
324 #
325 # This class defined Extern Call Back item used in Module file
326 #
327 # @param object: Inherited from object class
328 #
329 # @var SetVirtualAddressMapCallBack: To store value for SetVirtualAddressMapCallBack
330 # @var ExitBootServicesCallBack: To store value for ExitBootServicesCallBack
331 #
332 class ModuleExternCallBackClass(object):
333 def __init__(self):
334 self.SetVirtualAddressMapCallBack = ''
335 self.ExitBootServicesCallBack = ''
336
337 ## ModuleExternClass
338 #
339 # This class defined Extern used in Module file
340 #
341 # @param object: Inherited from object class
342 #
343 #
344 class ModuleExternClass(CommonClass):
345 def __init__(self):
346 self.EntryPoint = ''
347 self.UnloadImage = ''
348 self.Constructor = ''
349 self.Destructor = ''
350 CommonClass.__init__(self)
351
352 ## ModuleDepexClass
353 #
354 # This class defined depex item used in Module file
355 #
356 # @param CommonClass: Inherited from CommonClass class
357 # @param DefineClass: Input value for DefineClass class
358 #
359 # @var Depex: To store value for Depex
360 #
361 class ModuleDepexClass(CommonClass, DefineClass):
362 def __init__(self):
363 CommonClass.__init__(self)
364 DefineClass.__init__(self)
365 self.Depex = ''
366
367 ## ModuleNmakeClass
368 #
369 # This class defined nmake item used in Module file
370 #
371 # @param CommonClass: Inherited from CommonClass class
372 #
373 # @var Name: To store value for Name
374 # @var Value: To store value for Value
375 #
376 class ModuleNmakeClass(CommonClass):
377 def __init__(self):
378 CommonClass.__init__(self)
379 self.Name = ''
380 self.Value = ''
381
382 ## ModuleClass
383 #
384 # This class defined a complete module item
385 #
386 # @param object: Inherited from object class
387 #
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
399 # [ '', '', ...]
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
411 # [ PpiClass, ...]
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
427 # [ GuidClass, ...]
428 # @var PcdCodes: To store value for PcdCodes, it is a list structure as
429 # [ PcdClass, ...]
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, ...]
442 #
443 class ModuleClass(object):
444 def __init__(self):
445 self.Header = {}
446 self.ModuleHeader = ModuleHeaderClass()
447 self.LibraryClasses = []
448 self.Libraries = []
449 self.Sources = []
450 self.Binaries = []
451 self.NonProcessedFiles = []
452 self.PackageDependencies = []
453 self.Nmake = []
454 self.Depex = []
455 self.PeiDepex = None
456 self.DxeDepex = None
457 self.SmmDepex = None
458 self.Includes = []
459 self.Protocols = []
460 self.Ppis = []
461 self.Events = []
462 self.Hobs = []
463 self.Variables = []
464 self.BootModes = []
465 self.SystemTables = []
466 self.DataHubs = []
467 self.HiiPackages = []
468 self.Guids = []
469 self.PcdCodes = []
470 self.ExternImages = []
471 self.ExternLibraries = []
472 self.ExternDrivers = []
473 self.ExternCallBacks = []
474 self.Externs = []
475 self.BuildOptions = []
476 self.UserExtensions = None
477 self.MiscFiles = None
478 self.FileList = []
479
480 ##
481 #
482 # This acts like the main() function for the script, unless it is 'import'ed into another
483 # script.
484 #
485 if __name__ == '__main__':
486 M = ModuleClass()