]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/Python/spd2dec/LoadSpd.py
MdeModulePkg: Fix build warning on Xhci driver with XCode 32 tool chain.
[mirror_edk2.git] / BaseTools / Source / Python / spd2dec / LoadSpd.py
CommitLineData
30fdf114
LG
1## @file\r
2# Open an SPD file and load all its contents to a PackageClass object.\r
3#\r
40d841f6
LG
4# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
5# This program and the accompanying materials\r
30fdf114
LG
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##\r
15# Import Modules\r
16#\r
17import os\r
18from Common.XmlRoutines import *\r
19from Common.MigrationUtilities import *\r
20from CommonDataClass.PackageClass import *\r
21\r
22\r
23## Load a list of Package Cloned Records.\r
24#\r
25# Read an input Package XML DOM object and return a list of Cloned Records\r
26# contained in the DOM object.\r
27#\r
28# @param XmlSpd An XML DOM object read from SPD file.\r
29#\r
30# @retvel ClonedRecords A list of Cloned Records loaded from XmlSpd.\r
31#\r
32def LoadPackageClonedRecords(XmlSpd):\r
33 XmlTag = "PackageSurfaceArea/PackageDefinitions/ClonedFrom/Cloned"\r
34 return map(LoadClonedRecord, XmlList(XmlSpd, XmlTag))\r
35\r
36\r
37## Load Package Header.\r
38#\r
39# Read an input Package XML DOM object and return Package Header class object\r
40# contained in the DOM object.\r
41#\r
42# @param XmlSpd An XML DOM object read from SPD file.\r
43# @param SpdFileName The file path of SPD File.\r
44#\r
45# @retvel PackageHeader A new Package Header object loaded from XmlSpd.\r
46#\r
47def LoadPackageHeader(XmlSpd, SpdFileName):\r
48 PackageHeader = PackageHeaderClass()\r
49 \r
50 XmlTag = "PackageSurfaceArea/SpdHeader"\r
51 SpdHeader = XmlNode(XmlSpd, XmlTag)\r
52 \r
53 SetIdentification(PackageHeader, SpdHeader, "PackageName", SpdFileName)\r
54 SetCommonHeader(PackageHeader, SpdHeader)\r
55 \r
56 XmlTag = "PackageSurfaceArea/PackageDefinitions/ReadOnly"\r
57 if XmlElement(XmlSpd, XmlTag).lower() == "true":\r
58 PackageHeader.ReadOnly = True\r
59\r
60 XmlTag = "PackageSurfaceArea/PackageDefinitions/RePackage"\r
61 if XmlElement(XmlSpd, XmlTag).lower() == "true":\r
62 PackageHeader.RePackage = True\r
63\r
64 PackageHeader.ClonedFrom = LoadPackageClonedRecords(XmlSpd)\r
65 \r
66 return PackageHeader\r
67\r
68\r
69## Load a list of Package Library Classes.\r
70#\r
71# Read an input Package XML DOM object and return a list of Library Classes\r
72# contained in the DOM object.\r
73#\r
74# @param XmlSpd An XML DOM object read from SPD file.\r
75#\r
76# @retvel LibraryClasses A list of Library Classes loaded from XmlSpd.\r
77#\r
78def LoadPackageLibraryClasses(XmlSpd):\r
79 XmlTag = "PackageSurfaceArea/LibraryClassDeclarations/LibraryClass"\r
80 return map(LoadLibraryClass, XmlList(XmlSpd, XmlTag))\r
81\r
82\r
83## Load a new Package Industry Std Header class object.\r
84#\r
85# Read an input XML IndustryStdHeader DOM object and return an object of\r
86# Industry Std Header contained in the DOM object.\r
87#\r
88# @param XmlIndustryStdHeader A child XML DOM object in Package XML DOM.\r
89#\r
90# @retvel PackageIndustryStdHeader A new Industry Std Header object created by XmlIndustryStdHeader.\r
91#\r
92def LoadPackageIndustryStdHeader(XmlIndustryStdHeader):\r
93 PackageIndustryStdHeader = PackageIndustryStdHeaderClass()\r
94 \r
95 XmlTag = "Name"\r
96 Name = XmlAttribute(XmlIndustryStdHeader, XmlTag)\r
97 PackageIndustryStdHeader.Name = Name\r
98 \r
99 XmlTag = "IndustryStdHeader/IncludeHeader"\r
100 IncludeHeader = XmlElement(XmlIndustryStdHeader, XmlTag)\r
101 PackageIndustryStdHeader.IncludeHeader = IncludeHeader\r
102 \r
103 SetCommon(PackageIndustryStdHeader, XmlIndustryStdHeader)\r
104 \r
105 return PackageIndustryStdHeader\r
106\r
107\r
108## Load a list of Package Industry Std Headers.\r
109#\r
110# Read an input Package XML DOM object and return a list of Industry Std Headers\r
111# contained in the DOM object.\r
112#\r
113# @param XmlSpd An XML DOM object read from SPD file.\r
114#\r
115# @retvel IndustryStdHeaders A list of Industry Std Headers loaded from XmlSpd.\r
116#\r
117def LoadPackageIndustryStdHeaders(XmlSpd):\r
118 XmlTag = "PackageSurfaceArea/IndustryStdIncludes/IndustryStdHeader"\r
119 return map(LoadPackageIndustryStdHeader, XmlList(XmlSpd, XmlTag))\r
120\r
121\r
122## Load a list of Package Module Files.\r
123#\r
124# Read an input Package XML DOM object and return a list of Module Files\r
125# contained in the DOM object.\r
126#\r
127# @param XmlSpd An XML DOM object read from SPD file.\r
128#\r
129# @retvel ModuleFiles A list of Module Files loaded from XmlSpd.\r
130#\r
131def LoadPackageModuleFiles(XmlSpd):\r
132 XmlTag = "PackageSurfaceArea/MsaFiles/Filename"\r
133 return XmlElementList(XmlSpd, XmlTag)\r
134\r
135\r
136## Load a new Package Include Pkg Header class object.\r
137#\r
138# Read an input XML IncludePkgHeader DOM object and return an object of Include\r
139# Package Header contained in the DOM object.\r
140#\r
141# @param XmlPackageIncludeHeader A child XML DOM object in Package XML DOM.\r
142#\r
143# @retvel PackageIncludePkgHeader A new Include Pkg Header object created by\r
144# XmlPackageIncludeHeader.\r
145#\r
146def LoadPackageIncludePkgHeader(XmlPackageIncludeHeader):\r
147 PackageIncludeHeader = PackageIncludePkgHeaderClass()\r
148 \r
149 IncludeHeader = XmlElementData(XmlPackageIncludeHeader)\r
150 PackageIncludeHeader.IncludeHeader = IncludeHeader\r
151 \r
152 XmlTag = "ModuleType"\r
153 ModuleTypes = XmlAttribute(XmlPackageIncludeHeader, XmlTag)\r
154 PackageIncludeHeader.ModuleType = ModuleTypes.split()\r
155 \r
156 return PackageIncludeHeader\r
157\r
158\r
159## Load a list of Package Include Pkg Headers.\r
160#\r
161# Read an input Package XML DOM object and return a list of Include Pkg Headers\r
162# contained in the DOM object.\r
163#\r
164# @param XmlSpd An XML DOM object read from SPD file.\r
165#\r
166# @retvel IncludePkgHeaders A list of Include Pkg Headers loaded from XmlSpd.\r
167#\r
168def LoadPackageIncludePkgHeaders(XmlSpd):\r
169 XmlTag = "PackageSurfaceArea/PackageHeaders/IncludePkgHeader"\r
170 return map(LoadPackageIncludePkgHeader, XmlList(XmlSpd, XmlTag))\r
171\r
172\r
173## Load a list of Package Guid Declarations.\r
174#\r
175# Read an input Package XML DOM object and return a list of Guid Declarations\r
176# contained in the DOM object.\r
177#\r
178# @param XmlSpd An XML DOM object read from SPD file.\r
179#\r
180# @retvel GuidDeclarations A list of Guid Declarations loaded from XmlSpd.\r
181#\r
182def LoadPackageGuidDeclarations(XmlSpd):\r
183 XmlTag = "PackageSurfaceArea/GuidDeclarations/Entry"\r
184 return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r
185\r
186\r
187## Load a list of Package Protocol Declarations.\r
188#\r
189# Read an input Package XML DOM object and return a list of Protocol Declarations\r
190# contained in the DOM object.\r
191#\r
192# @param XmlSpd An XML DOM object read from SPD file.\r
193#\r
194# @retvel ProtocolDeclarations A list of Protocol Declarations loaded from XmlSpd.\r
195#\r
196def LoadPackageProtocolDeclarations(XmlSpd):\r
197 XmlTag = "PackageSurfaceArea/ProtocolDeclarations/Entry"\r
198 return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r
199\r
200\r
201## Load a list of Package Ppi Declarations.\r
202#\r
203# Read an input Package XML DOM object and return a list of Ppi Declarations\r
204# contained in the DOM object.\r
205#\r
206# @param XmlSpd An XML DOM object read from SPD file.\r
207#\r
208# @retvel PpiDeclarations A list of Ppi Declarations loaded from XmlSpd.\r
209#\r
210def LoadPackagePpiDeclarations(XmlSpd):\r
211 XmlTag = "PackageSurfaceArea/PpiDeclarations/Entry"\r
212 return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r
213\r
214\r
215## Load a list of Package Pcd Declarations.\r
216#\r
217# Read an input Package XML DOM object and return a list of Pcd Declarations\r
218# contained in the DOM object.\r
219#\r
220# @param XmlSpd An XML DOM object read from SPD file.\r
221#\r
222# @retvel PcdDeclarations A list of Pcd Declarations loaded from XmlSpd.\r
223#\r
224def LoadPackagePcdDeclarations(XmlSpd):\r
225 XmlTag = "PackageSurfaceArea/PcdDeclarations/PcdEntry"\r
226 return map(LoadPcd, XmlList(XmlSpd, XmlTag))\r
227\r
228\r
229## Load a list of Package User Extensions.\r
230#\r
231# Read an input Package XML DOM object and return a list of User Extensions\r
232# contained in the DOM object.\r
233#\r
234# @param XmlSpd An XML DOM object read from SPD file.\r
235#\r
236# @retvel UserExtensions A list of User Extensions loaded from XmlSpd.\r
237#\r
238def LoadPackageUserExtensions(XmlSpd):\r
239 XmlTag = "PackageSurfaceArea/UserExtensions"\r
240 return map(LoadUserExtensions, XmlList(XmlSpd, XmlTag))\r
241\r
242\r
243## Load a new Package class object.\r
244#\r
245# Read an input SPD File and return a new Package class Object.\r
246#\r
247# @param SpdFileName An XML DOM object read from SPD file.\r
248#\r
249# @retvel Package A new Module class object loaded from SPD File.\r
250#\r
251def LoadSpd(SpdFileName):\r
252 XmlSpd = XmlParseFile(SpdFileName)\r
253 EdkLogger.verbose("Xml Object loaded for file %s" % SpdFileName)\r
254\r
255 Package = PackageClass()\r
256 Package.Header = LoadPackageHeader(XmlSpd, SpdFileName)\r
257 Package.LibraryClassDeclarations = LoadPackageLibraryClasses(XmlSpd)\r
258 Package.IndustryStdHeaders = LoadPackageIndustryStdHeaders(XmlSpd)\r
259 Package.ModuleFiles = LoadPackageModuleFiles(XmlSpd)\r
260 Package.PackageIncludePkgHeaders = LoadPackageIncludePkgHeaders(XmlSpd)\r
261 Package.GuidDeclarations = LoadPackageGuidDeclarations(XmlSpd)\r
262 Package.ProtocolDeclarations = LoadPackageProtocolDeclarations(XmlSpd)\r
263 Package.PpiDeclarations = LoadPackagePpiDeclarations(XmlSpd)\r
264 Package.PcdDeclarations = LoadPackagePcdDeclarations(XmlSpd)\r
265 Package.UserExtensions = LoadPackageUserExtensions(XmlSpd)\r
266 \r
267 return Package\r
268\r
269\r
270# This acts like the main() function for the script, unless it is 'import'ed\r
271# into another script.\r
272if __name__ == '__main__':\r
273 pass\r