]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/UPT/PomAdapter/InfPomAlignmentMisc.py
BaseTools: Remove equality operator with None
[mirror_edk2.git] / BaseTools / Source / Python / UPT / PomAdapter / InfPomAlignmentMisc.py
1 ## @file InfPomAlignmentMisc.py
2 # This file contained the routines for InfPomAlignment
3 #
4 # Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
5 #
6 # This program and the accompanying materials are licensed and made available
7 # under the terms and conditions of the BSD License which accompanies this
8 # distribution. The full text of the license may be found at
9 # http://opensource.org/licenses/bsd-license.php
10 #
11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 #
14
15 '''
16 InfPomAlignmentMisc
17 '''
18
19 ##
20 # Import modules
21 #
22 import Logger.Log as Logger
23 from Library import DataType as DT
24 from Library.Misc import ConvertArchList
25 from Object.POM.ModuleObject import BinaryFileObject
26 from Object.POM import CommonObject
27 from Library.String import FORMAT_INVALID
28 from Library.Misc import CheckGuidRegFormat
29 from Logger import StringTable as ST
30
31
32 ## GenModuleHeaderUserExt
33 #
34 #
35 def GenModuleHeaderUserExt(DefineObj, ArchString):
36 DefinesDictNew = {}
37 EdkReleaseVersion = DefineObj.GetEdkReleaseVersion()
38 Shadow = DefineObj.GetShadow()
39 DpxSource = DefineObj.GetDpxSource()
40 PciVendorId = DefineObj.GetPciVendorId()
41 PciDeviceId = DefineObj.GetPciDeviceId()
42 PciClassCode = DefineObj.GetPciClassCode()
43 PciRevision = DefineObj.GetPciRevision()
44 PciCompress = DefineObj.GetPciCompress()
45 CustomMakefile = DefineObj.GetCustomMakefile()
46 UefiHiiResourceSection = DefineObj.GetUefiHiiResourceSection()
47
48 if EdkReleaseVersion is not None:
49 Name = DT.TAB_INF_DEFINES_EDK_RELEASE_VERSION
50 Value = EdkReleaseVersion.GetValue()
51 Statement = _GenInfDefineStateMent(EdkReleaseVersion.Comments.GetHeaderComments(),
52 Name,
53 Value,
54 EdkReleaseVersion.Comments.GetTailComments())
55 DefinesDictNew[Statement] = ArchString
56
57 if Shadow is not None:
58 Name = DT.TAB_INF_DEFINES_SHADOW
59 Value = Shadow.GetValue()
60 Statement = _GenInfDefineStateMent(Shadow.Comments.GetHeaderComments(),
61 Name,
62 Value,
63 Shadow.Comments.GetTailComments())
64 DefinesDictNew[Statement] = ArchString
65
66 if DpxSource is not None:
67 Name = DT.TAB_INF_DEFINES_DPX_SOURCE
68 for DpxSourceItem in DpxSource:
69 Value = DpxSourceItem[0]
70 Statement = _GenInfDefineStateMent(DpxSourceItem[1].GetHeaderComments(),
71 Name,
72 Value,
73 DpxSourceItem[1].GetTailComments())
74 DefinesDictNew[Statement] = ArchString
75
76 if PciVendorId is not None:
77 Name = DT.TAB_INF_DEFINES_PCI_VENDOR_ID
78 Value = PciVendorId.GetValue()
79 Statement = _GenInfDefineStateMent(PciVendorId.Comments.GetHeaderComments(),
80 Name,
81 Value,
82 PciVendorId.Comments.GetTailComments())
83 DefinesDictNew[Statement] = ArchString
84
85 if PciDeviceId is not None:
86 Name = DT.TAB_INF_DEFINES_PCI_DEVICE_ID
87 Value = PciDeviceId.GetValue()
88 Statement = _GenInfDefineStateMent(PciDeviceId.Comments.GetHeaderComments(),
89 Name,
90 Value,
91 PciDeviceId.Comments.GetTailComments())
92 DefinesDictNew[Statement] = ArchString
93
94 if PciClassCode is not None:
95 Name = DT.TAB_INF_DEFINES_PCI_CLASS_CODE
96 Value = PciClassCode.GetValue()
97 Statement = _GenInfDefineStateMent(PciClassCode.Comments.GetHeaderComments(),
98 Name,
99 Value,
100 PciClassCode.Comments.GetTailComments())
101 DefinesDictNew[Statement] = ArchString
102
103 if PciRevision is not None:
104 Name = DT.TAB_INF_DEFINES_PCI_REVISION
105 Value = PciRevision.GetValue()
106 Statement = _GenInfDefineStateMent(PciRevision.Comments.GetHeaderComments(),
107 Name,
108 Value,
109 PciRevision.Comments.GetTailComments())
110 DefinesDictNew[Statement] = ArchString
111
112 if PciCompress is not None:
113 Name = DT.TAB_INF_DEFINES_PCI_COMPRESS
114 Value = PciCompress.GetValue()
115 Statement = _GenInfDefineStateMent(PciCompress.Comments.GetHeaderComments(),
116 Name,
117 Value,
118 PciCompress.Comments.GetTailComments())
119 DefinesDictNew[Statement] = ArchString
120
121 if len(CustomMakefile) >= 1:
122 for CustomMakefileItem in CustomMakefile:
123 Name = DT.TAB_INF_DEFINES_CUSTOM_MAKEFILE
124 #
125 # Not with Feature Flag Expression
126 #
127 if len(CustomMakefileItem) == 3:
128 if CustomMakefileItem[0] != '':
129 Value = CustomMakefileItem[0] + ' | ' + CustomMakefileItem[1]
130 else:
131 Value = CustomMakefileItem[1]
132
133 Comments = CustomMakefileItem[2]
134 Statement = _GenInfDefineStateMent(Comments.GetHeaderComments(),
135 Name,
136 Value,
137 Comments.GetTailComments())
138
139 DefinesDictNew[Statement] = ArchString
140
141 if UefiHiiResourceSection is not None:
142 Name = DT.TAB_INF_DEFINES_UEFI_HII_RESOURCE_SECTION
143 Value = UefiHiiResourceSection.GetValue()
144 HeaderComment = UefiHiiResourceSection.Comments.GetHeaderComments()
145 TailComment = UefiHiiResourceSection.Comments.GetTailComments()
146 Statement = _GenInfDefineStateMent(HeaderComment,
147 Name,
148 Value,
149 TailComment)
150 DefinesDictNew[Statement] = ""
151
152 return DefinesDictNew
153
154
155 ## Generate the define statement that will be put into userextension
156 # Not support comments.
157 #
158 # @param HeaderComment: the original header comment (# not remvoed)
159 # @param Name: the definition keyword, should not be empty or none
160 # @param Value: the definition keyword value
161 # @param TailComment: the original Tail comment (# not remvoed)
162 #
163 # @return: the regenerated define statement
164 #
165 def _GenInfDefineStateMent(HeaderComment, Name, Value, TailComment):
166 Logger.Debug(5, HeaderComment + TailComment)
167 Statement = '%s = %s' % (Name, Value)
168
169 return Statement
170
171 ## GenBinaryData
172 #
173 #
174 def GenBinaryData(BinaryData, BinaryObj, BinariesDict, AsBuildIns, BinaryFileObjectList, \
175 SupArchList, BinaryModule, DecObjList=None):
176 if BinaryModule:
177 pass
178 OriSupArchList = SupArchList
179 for Item in BinaryData:
180 ItemObj = BinaryObj[Item][0][0]
181 if ItemObj.GetType() not in DT.BINARY_FILE_TYPE_UI_LIST + DT.BINARY_FILE_TYPE_VER_LIST:
182 TagName = ItemObj.GetTagName()
183 Family = ItemObj.GetFamily()
184 else:
185 TagName = ''
186 Family = ''
187
188 FFE = ItemObj.GetFeatureFlagExp()
189
190 #
191 # If have architecturie specified, then use the specified architecturie;
192 # If the section tag does not have an architecture modifier or the modifier is "common" (case in-sensitive),
193 # and the VALID_ARCHITECTURES comment exists, the list from the VALID_ARCHITECTURES comment
194 # can be used for the attribute.
195 # If both not have VALID_ARCHITECTURE comment and no architecturie specified, then keep it empty.
196 #
197 SupArchList = ConvertArchList(ItemObj.GetSupArchList())
198 SupArchList.sort()
199 if len(SupArchList) == 1 and SupArchList[0] == 'COMMON':
200 if not (len(OriSupArchList) == 1 or OriSupArchList[0] == 'COMMON'):
201 SupArchList = OriSupArchList
202 else:
203 SupArchList = ['COMMON']
204
205 FileNameObj = CommonObject.FileNameObject()
206 FileNameObj.SetFileType(ItemObj.GetType())
207 FileNameObj.SetFilename(ItemObj.GetFileName())
208 FileNameObj.SetFeatureFlag(FFE)
209 #
210 # Get GUID value of the GUID CName in the DEC file
211 #
212 if ItemObj.GetType() == DT.SUBTYPE_GUID_BINARY_FILE_TYPE:
213 if not CheckGuidRegFormat(ItemObj.GetGuidValue()):
214 if not DecObjList:
215 if DT.TAB_HORIZON_LINE_SPLIT in ItemObj.GetGuidValue() or \
216 DT.TAB_COMMA_SPLIT in ItemObj.GetGuidValue():
217 Logger.Error("\nMkPkg",
218 FORMAT_INVALID,
219 ST.ERR_DECPARSE_DEFINE_PKGGUID,
220 ExtraData=ItemObj.GetGuidValue(),
221 RaiseError=True)
222 else:
223 Logger.Error("\nMkPkg",
224 FORMAT_INVALID,
225 ST.ERR_UNI_SUBGUID_VALUE_DEFINE_DEC_NOT_FOUND % \
226 (ItemObj.GetGuidValue()),
227 RaiseError=True)
228 else:
229 for DecObj in DecObjList:
230 for GuidObj in DecObj.GetGuidList():
231 if GuidObj.GetCName() == ItemObj.GetGuidValue():
232 FileNameObj.SetGuidValue(GuidObj.GetGuid())
233 break
234
235 if not FileNameObj.GetGuidValue():
236 Logger.Error("\nMkPkg",
237 FORMAT_INVALID,
238 ST.ERR_DECPARSE_CGUID_NOT_FOUND % \
239 (ItemObj.GetGuidValue()),
240 RaiseError=True)
241 else:
242 FileNameObj.SetGuidValue(ItemObj.GetGuidValue().strip())
243
244 FileNameObj.SetSupArchList(SupArchList)
245 FileNameList = [FileNameObj]
246
247 BinaryFile = BinaryFileObject()
248 BinaryFile.SetFileNameList(FileNameList)
249 BinaryFile.SetAsBuiltList(AsBuildIns)
250 BinaryFileObjectList.append(BinaryFile)
251
252 SupArchStr = ' '.join(SupArchList)
253 Key = (ItemObj.GetFileName(), ItemObj.GetType(), FFE, SupArchStr)
254 ValueItem = (ItemObj.GetTarget(), Family, TagName, '')
255 if Key in BinariesDict:
256 ValueList = BinariesDict[Key]
257 ValueList.append(ValueItem)
258 BinariesDict[Key] = ValueList
259 else:
260 BinariesDict[Key] = [ValueItem]
261
262 return BinariesDict, AsBuildIns, BinaryFileObjectList