]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/Python/CommonDataClass/ModuleClass.py
Sync tool code to BuildTools project r1739.
[mirror_edk2.git] / BaseTools / Source / Python / CommonDataClass / ModuleClass.py
CommitLineData
30fdf114
LG
1## @file\r
2# This file is used to define a class object to describe a module\r
3#\r
4# Copyright (c) 2007, Intel Corporation\r
5# All rights reserved. This program and the accompanying materials\r
6# are licensed and made available under the terms and conditions of the BSD License\r
7# which accompanies this distribution. The full text of the license may be found at\r
8# http://opensource.org/licenses/bsd-license.php\r
9#\r
10# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13##\r
14# Import Modules\r
15#\r
16from CommonClass import *\r
17\r
18## ModuleHeaderClass\r
19#\r
20# This class defined header items used in Module file\r
21# \r
22# @param IdentificationClass: Inherited from IdentificationClass class\r
23# @param CommonHeaderClass: Inherited from CommonHeaderClass class\r
24# @param DefineClass: Inherited from DefineClass class\r
25#\r
26# @var ModuleType: To store value for ModuleType\r
27# @var SupArchList: To store value for SupArchList, selection scope is in below list\r
28# EBC | IA32 | X64 | IPF | ARM | PPC\r
29# @var BinaryModule: To store value for BinaryModule\r
30# @var OutputFileBasename: To store value for OutputFileBasename\r
31# @var ClonedFrom: To store value for ClonedFrom, it is a set structure as\r
32# [ ClonedRecordClass, ... ]\r
33# @var PcdIsDriver: To store value for PcdIsDriver, selection scope is in below list\r
34# PEI_PCD_DRIVER | DXE_PCD_DRIVER\r
35# @var TianoR8FlashMap_h: To store value for TianoR8FlashMap_h\r
36# @var InfVersion: To store value for InfVersion\r
37# @var EfiSpecificationVersion: To store value for EfiSpecificationVersion\r
38# @var EdkReleaseVersion: To store value for EdkReleaseVersion\r
39# @var LibraryClass: To store value for LibraryClass, it is a set structure as\r
40# [ LibraryClassClass, ...]\r
41# @var ComponentType: To store value for ComponentType, selection scope is in below list\r
42# LIBRARY | SECURITY_CORE | PEI_CORE | COMBINED_PEIM_DRIVER | PIC_PEIM | RELOCATABLE_PEIM | BS_DRIVER | RT_DRIVER | SAL_RT_DRIVER | APPLICATION\r
43# @var MakefileName: To store value for MakefileName\r
44# @var BuildNumber: To store value for BuildNumber\r
45# @var BuildType: To store value for BuildType\r
46# @var FfsExt: To store value for FfsExt\r
47# @var FvExt: To store value for FvExt\r
48# @var SourceFv: To store value for SourceFv\r
49# @var CustomMakefile: To store value for CustomMakefile, it is a set structure as\r
50# { Family : Filename, ... }\r
51# @var Shadow: To store value for Shadow\r
52# @var MacroDefines To store the defined macros\r
53#\r
54class ModuleHeaderClass(IdentificationClass, CommonHeaderClass, DefineClass):\r
55 def __init__(self):\r
56 IdentificationClass.__init__(self)\r
57 CommonHeaderClass.__init__(self)\r
58 DefineClass.__init__(self)\r
59 self.ModuleType = ''\r
60 self.SupModuleList = []\r
61 self.SupArchList = []\r
62 self.BinaryModule = False\r
63 self.OutputFileBasename = ''\r
64 self.ClonedFrom = []\r
65 self.PcdIsDriver = ''\r
66 self.TianoR8FlashMap_h = False\r
67 self.InfVersion = ''\r
68 self.EfiSpecificationVersion = ''\r
69 self.PiSpecificationVersion = ''\r
70 self.UefiSpecificationVersion = ''\r
71 self.EdkReleaseVersion = ''\r
72 self.LibraryClass = []\r
73 self.ComponentType = ''\r
74 self.MakefileName = ''\r
75 self.BuildNumber = ''\r
76 self.BuildType = ''\r
77 self.FfsExt = ''\r
78 self.FvExt = ''\r
79 self.SourceFv = ''\r
80 self.CustomMakefile = {}\r
81 self.Shadow = ''\r
82 self.MacroDefines = {}\r
83 self.SourceOverridePath = ''\r
84 self.Specification = []\r
85\r
86## ModuleSourceFileClass\r
87#\r
88# This class defined source file item used in Module file\r
89# \r
90# @param CommonClass: Inherited from CommonClass class\r
91# @param SourceFile: Input value for SourceFile, default is ''\r
92# @param TagName: Input value for TagName, default is ''\r
93# @param ToolCode: Input value for ToolCode, default is ''\r
94# @param ToolChainFamily: Input value for ToolChainFamily, default is ''\r
95# @param FeatureFlag: Input value for FeatureFlag, default is ''\r
96# @param SupArchList: Input value for SupArchList, default is []\r
97#\r
98# @var SourceFile: To store value for SourceFile\r
99# @var TagName: To store value for TagName\r
100# @var ToolCode: To store value for ToolCode\r
101# @var ToolChainFamily: To store value for ToolChainFamily\r
102#\r
103class ModuleSourceFileClass(CommonClass):\r
104 def __init__(self, SourceFile = '', TagName = '', ToolCode = '', ToolChainFamily = '', FeatureFlag = '', SupArchList = None):\r
105 self.SourceFile = SourceFile\r
106 self.TagName = TagName\r
107 self.ToolCode = ToolCode\r
108 self.ToolChainFamily = ToolChainFamily\r
109 self.FileType = ''\r
110 CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)\r
111\r
112## ModuleBinaryFileClass\r
113#\r
114# This class defined binary file item used in Module file\r
115# \r
116# @param CommonClass: Inherited from CommonClass class\r
117# @param BinaryFile: Input value for BinaryFile, default is ''\r
118# @param FileType: Input value for FileType, default is ''\r
119# @param FeatureFlag: Input value for FeatureFlag, default is ''\r
120# @param SupArchList: Input value for SupArchList, default is []\r
121#\r
122# @var BinaryFile: To store value for BinaryFile\r
123# @var FileType: To store value for FileType, selection scope is in below list\r
b303ea72 124# FW | GUID | PREEFORM | UEFI_APP | UNI_UI | UNI_VER | LIB | PE32 | PIC | PEI_DEPEX | DXE_DEPEX | SMM_DEPEX| TE | VER | UI | BIN | FV\r
30fdf114
LG
125# @var Target: To store value for Target\r
126# @var ToolChainFamily: To store value for ToolChainFamily\r
127#\r
128class ModuleBinaryFileClass(CommonClass):\r
129 def __init__(self, BinaryFile = '', FileType = '', Target = '', FeatureFlag = '', SupArchList = None):\r
130 self.BinaryFile = BinaryFile\r
131 self.FileType = FileType\r
132 self.Target = Target\r
133 CommonClass.__init__(self, FeatureFlag = FeatureFlag, SupArchList = SupArchList)\r
134 self.Filenames = []\r
135 self.PatchPcdValues = []\r
136 self.PcdExValues = []\r
137 self.LibraryInstances = []\r
138 self.BuildFlags = []\r
139\r
140## ModulePackageDependencyClass\r
141#\r
142# This class defined package dependency item used in Module file\r
143# \r
144# @param CommonClass: Inherited from CommonClass class\r
145# @param DefineClass: Input value for DefineClass class\r
146#\r
147# @var FilePath: To store value for FilePath\r
148# @var PackageName: To store value for PackageName\r
149# @var PackageVersion: To store value for PackageVersion\r
150# @var PackageGuid: To store value for PackageGuid\r
151#\r
152class ModulePackageDependencyClass(CommonClass, DefineClass):\r
153 def __init__(self):\r
154 self.FilePath = ''\r
155 self.PackageName = ''\r
156 self.PackageVersion = ''\r
157 self.PackageGuid = ''\r
158 self.Description = ''\r
159 CommonClass.__init__(self)\r
160 DefineClass.__init__(self) \r
161\r
162## ModuleLibraryClass\r
163#\r
164# This class defined library item used in Module file\r
165# \r
166# @param CommonClass: Inherited from CommonClass class\r
167#\r
168# @var Library: To store value for Library\r
169#\r
170class ModuleLibraryClass(CommonClass):\r
171 def __init__(self):\r
172 self.Library = ''\r
173 CommonClass.__init__(self)\r
174\r
175## ModuleEventClass\r
176#\r
177# This class defined event item used in Module file\r
178# \r
179# @param CommonClass: Inherited from CommonClass class\r
180#\r
181# @var CName: To store value for CName\r
182# @var GuidCName: To store value for GuidCName\r
183# @var Type: To store value for Type, selection scope is in below list\r
184# CREATE_EVENT | SIGNAL_EVENT\r
185#\r
186class ModuleEventClass(CommonClass): \r
187 def __init__(self):\r
188 self.CName = ''\r
189 self.GuidCName = ''\r
190 self.Type = '' \r
191 CommonClass.__init__(self)\r
192\r
193## ModuleHobClass\r
194#\r
195# This class defined hob item used in Module file\r
196# \r
197# @param CommonClass: Inherited from CommonClass class\r
198#\r
199# @var GuidCName: To store value for GuidCName\r
200# @var Type: To store value for Type, selection scope is in below list\r
201# PHIT | MEMORY_ALLOCATION | RESOURCE_DESCRIPTOR | GUID_EXTENSION | FIRMWARE_VOLUME | CPU | POOL | CAPSULE_VOLUME\r
202#\r
203class ModuleHobClass(CommonClass):\r
204 def __init__(self):\r
205 self.Type = ''\r
206 self.GuidCName = ''\r
207 CommonClass.__init__(self)\r
208\r
209## ModuleVariableClass\r
210#\r
211# This class defined variable item used in Module file\r
212# \r
213# @param CommonClass: Inherited from CommonClass class\r
214#\r
215# @var GuidCName: To store value for GuidCName\r
216# @var Name: To store value for Name\r
217#\r
218class ModuleVariableClass(CommonClass):\r
219 def __init__(self):\r
220 self.Name = ''\r
221 self.GuidCName = ''\r
222 CommonClass.__init__(self)\r
223\r
224## ModuleBootModeClass\r
225#\r
226# This class defined boot mode item used in Module file\r
227# \r
228# @param CommonClass: Inherited from CommonClass class\r
229#\r
230# @var Name: To store value for Name, selection scope is in below list\r
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 \r
232#\r
233class ModuleBootModeClass(CommonClass):\r
234 def __init__(self):\r
235 self.Name = ''\r
236 CommonClass.__init__(self)\r
237\r
238## ModuleSystemTableClass\r
239#\r
240# This class defined system table item used in Module file\r
241# \r
242# @param CommonClass: Inherited from CommonClass class\r
243#\r
244# @var CName: To store value for CName\r
245#\r
246class ModuleSystemTableClass(CommonClass):\r
247 def __init__(self):\r
248 self.CName = ''\r
249 CommonClass.__init__(self)\r
250\r
251## ModuleDataHubClass\r
252#\r
253# This class defined data hub item used in Module file\r
254# \r
255# @param CommonClass: Inherited from CommonClass class\r
256#\r
257# @var CName: To store value for CName\r
258#\r
259class ModuleDataHubClass(CommonClass):\r
260 def __init__(self):\r
261 self.CName = ''\r
262 CommonClass.__init__(self) \r
263\r
264## ModuleHiiPackageClass\r
265#\r
266# This class defined Hii package item used in Module file\r
267# \r
268# @param CommonClass: Inherited from CommonClass class\r
269#\r
270# @var CName: To store value for CName\r
271#\r
272class ModuleHiiPackageClass(CommonClass):\r
273 def __init__(self):\r
274 self.CName = ''\r
275 CommonClass.__init__(self)\r
276\r
277## ModuleExternImageClass\r
278#\r
279# This class defined Extern Image item used in Module file\r
280# \r
281# @param object: Inherited from object class\r
282#\r
283# @var ModuleEntryPoint: To store value for ModuleEntryPoint\r
284# @var ModuleUnloadImage: To store value for ModuleUnloadImage\r
285#\r
286class ModuleExternImageClass(object):\r
287 def __init__(self):\r
288 self.ModuleEntryPoint = ''\r
289 self.ModuleUnloadImage = ''\r
290\r
291## ModuleExternLibraryClass\r
292#\r
293# This class defined Extern Library item used in Module file\r
294# \r
295# @param object: Inherited from object class\r
296#\r
297# @var Constructor: To store value for Constructor\r
298# @var Destructor: To store value for Destructor\r
299#\r
300class ModuleExternLibraryClass(object):\r
301 def __init__(self):\r
302 self.Constructor = ''\r
303 self.Destructor = ''\r
304\r
305## ModuleExternDriverClass\r
306#\r
307# This class defined Extern Driver item used in Module file\r
308# \r
309# @param object: Inherited from object class\r
310#\r
311# @var DriverBinding: To store value for DriverBinding\r
312# @var ComponentName: To store value for ComponentName\r
313# @var DriverConfig: To store value for DriverConfig\r
314# @var DriverDiag: To store value for DriverDiag\r
315#\r
316class ModuleExternDriverClass(object):\r
317 def __init__(self):\r
318 self.DriverBinding= ''\r
319 self.ComponentName = ''\r
320 self.DriverConfig = ''\r
321 self.DriverDiag = ''\r
322\r
323## ModuleExternCallBackClass\r
324#\r
325# This class defined Extern Call Back item used in Module file\r
326# \r
327# @param object: Inherited from object class\r
328#\r
329# @var SetVirtualAddressMapCallBack: To store value for SetVirtualAddressMapCallBack\r
330# @var ExitBootServicesCallBack: To store value for ExitBootServicesCallBack\r
331#\r
332class ModuleExternCallBackClass(object):\r
333 def __init__(self):\r
334 self.SetVirtualAddressMapCallBack = ''\r
335 self.ExitBootServicesCallBack = ''\r
336\r
337## ModuleExternClass\r
338#\r
339# This class defined Extern used in Module file\r
340# \r
341# @param object: Inherited from object class\r
342#\r
343#\r
344class ModuleExternClass(CommonClass):\r
345 def __init__(self):\r
346 self.EntryPoint = ''\r
347 self.UnloadImage = ''\r
348 self.Constructor = ''\r
349 self.Destructor = ''\r
350 CommonClass.__init__(self)\r
351\r
352## ModuleDepexClass\r
353#\r
354# This class defined depex item used in Module file\r
355# \r
356# @param CommonClass: Inherited from CommonClass class\r
357# @param DefineClass: Input value for DefineClass class\r
358#\r
359# @var Depex: To store value for Depex\r
360#\r
361class ModuleDepexClass(CommonClass, DefineClass):\r
362 def __init__(self):\r
363 CommonClass.__init__(self)\r
364 DefineClass.__init__(self)\r
365 self.Depex = ''\r
366\r
367## ModuleNmakeClass\r
368#\r
369# This class defined nmake item used in Module file\r
370# \r
371# @param CommonClass: Inherited from CommonClass class\r
372#\r
373# @var Name: To store value for Name\r
374# @var Value: To store value for Value\r
375#\r
376class ModuleNmakeClass(CommonClass):\r
377 def __init__(self):\r
378 CommonClass.__init__(self)\r
379 self.Name = ''\r
380 self.Value = ''\r
381\r
382## ModuleClass\r
383#\r
384# This class defined a complete module item\r
385# \r
386# @param object: Inherited from object class\r
387#\r
388# @var Header: To store value for Header, it is a structure as\r
389# {Arch : ModuleHeaderClass}\r
390# @var LibraryClasses: To store value for LibraryClasses, it is a list structure as\r
391# [ LibraryClassClass, ...]\r
392# @var Libraries: To store value for Libraries, it is a list structure as\r
393# [ ModuleLibraryClass, ...]\r
394# @var Sources: To store value for Sources, it is a list structure as\r
395# [ ModuleSourceFileClass, ...]\r
396# @var Binaries: To store value for Binaries, it is a list structure as\r
397# [ ModuleBinaryFileClass, ...]\r
398# @var NonProcessedFiles: To store value for NonProcessedFiles, it is a list structure as\r
399# [ '', '', ...]\r
400# @var PackageDependencies: To store value for PackageDependencies, it is a list structure as\r
401# [ ModulePackageDependencyClass, ... ] \r
402# @var Nmake: To store value for Nmake, it is a list structure as\r
403# [ ModuleNmakeClass, ... ]\r
404# @var Depex: To store value for Depex, it is a list structure as\r
405# [ ModuleDepexClass, ... ]\r
406# @var Includes: To store value for Includes, it is a list structure as\r
407# [ IncludeClass, ...]\r
408# @var Protocols: To store value for Protocols, it is a list structure as\r
409# [ ProtocolClass, ...]\r
410# @var Ppis: To store value for Ppis, it is a list structure as\r
411# [ PpiClass, ...]\r
412# @var Events: To store value for Events, it is a list structure as\r
413# [ ModuleEventClass, ...]\r
414# @var Hobs: To store value for Hobs, it is a list structure as\r
415# [ ModuleHobClass, ...] \r
416# @var Variables: To store value for Variables, it is a list structure as\r
417# [ ModuleVariableClass, ...]\r
418# @var BootModes: To store value for BootModes, it is a list structure as\r
419# [ ModuleBootModeClass, ...]\r
420# @var SystemTables: To store value for SystemTables, it is a list structure as\r
421# [ ModuleSystemTableClass, ...]\r
422# @var DataHubs: To store value for DataHubs, it is a list structure as\r
423# [ ModuleDataHubClass, ...]\r
424# @var HiiPackages: To store value for HiiPackages, it is a list structure as\r
425# [ ModuleHiiPackageClass, ...]\r
426# @var Guids: To store value for Guids, it is a list structure as\r
427# [ GuidClass, ...]\r
428# @var PcdCodes: To store value for PcdCodes, it is a list structure as\r
429# [ PcdClass, ...]\r
430# @var ExternImages: To store value for ExternImages, it is a list structure as\r
431# [ ModuleExternImageClass, ...]\r
432# @var ExternLibraries: To store value for ExternLibraries, it is a list structure as\r
433# [ ModuleExternLibraryClass, ...]\r
434# @var ExternDrivers: To store value for ExternDrivers, it is a list structure as\r
435# [ ModuleExternDriverClass, ...]\r
436# @var ExternCallBacks: To store value for ExternCallBacks, it is a list structure as\r
437# [ ModuleExternCallBackClass, ...]\r
438# @var BuildOptions: To store value for BuildOptions, it is a list structure as\r
439# [ BuildOptionClass, ...]\r
440# @var UserExtensions: To store value for UserExtensions, it is a list structure as\r
441# [ UserExtensionsClass, ...]\r
442#\r
443class ModuleClass(object):\r
444 def __init__(self):\r
445 self.Header = {}\r
446 self.ModuleHeader = ModuleHeaderClass()\r
447 self.LibraryClasses = []\r
448 self.Libraries = []\r
449 self.Sources = []\r
450 self.Binaries = []\r
451 self.NonProcessedFiles = []\r
452 self.PackageDependencies = []\r
453 self.Nmake = []\r
454 self.Depex = []\r
455 self.PeiDepex = None\r
456 self.DxeDepex = None\r
457 self.SmmDepex = None\r
458 self.Includes = []\r
459 self.Protocols = []\r
460 self.Ppis = []\r
461 self.Events = []\r
462 self.Hobs = []\r
463 self.Variables = []\r
464 self.BootModes = []\r
465 self.SystemTables = []\r
466 self.DataHubs = []\r
467 self.HiiPackages = []\r
468 self.Guids = []\r
469 self.PcdCodes = []\r
470 self.ExternImages = []\r
471 self.ExternLibraries = []\r
472 self.ExternDrivers = []\r
473 self.ExternCallBacks = []\r
474 self.Externs = []\r
475 self.BuildOptions = []\r
476 self.UserExtensions = None\r
477 self.MiscFiles = None\r
478 self.FileList = []\r
479\r
480##\r
481#\r
482# This acts like the main() function for the script, unless it is 'import'ed into another\r
483# script.\r
484#\r
485if __name__ == '__main__':\r
486 M = ModuleClass()\r