]>
git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/GenFds/OptRomInfStatement.py
2 # process OptionROM generation from INF statement
4 # Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
6 # SPDX-License-Identifier: BSD-2-Clause-Patent
12 from __future__
import absolute_import
13 from . import RuleSimpleFile
14 from . import RuleComplexFile
16 import Common
.GlobalData
as GlobalData
18 from Common
.DataType
import *
19 from Common
.StringUtils
import *
20 from .FfsInfStatement
import FfsInfStatement
21 from .GenFdsGlobalVariable
import GenFdsGlobalVariable
26 class OptRomInfStatement (FfsInfStatement
):
29 # @param self The object pointer
32 FfsInfStatement
.__init
__(self
)
33 self
.OverrideAttribs
= None
35 ## __GetOptRomParams() method
37 # Parse inf file to get option ROM related parameters
39 # @param self The object pointer
41 def __GetOptRomParams(self
):
42 if self
.OverrideAttribs
is None:
43 self
.OverrideAttribs
= OverrideAttribs()
45 if self
.OverrideAttribs
.NeedCompress
is None:
46 self
.OverrideAttribs
.NeedCompress
= self
.OptRomDefs
.get ('PCI_COMPRESS')
47 if self
.OverrideAttribs
.NeedCompress
is not None:
48 if self
.OverrideAttribs
.NeedCompress
.upper() not in ('TRUE', 'FALSE'):
49 GenFdsGlobalVariable
.ErrorLogger( "Expected TRUE/FALSE for PCI_COMPRESS: %s" %self
.InfFileName
)
50 self
.OverrideAttribs
.NeedCompress
= \
51 self
.OverrideAttribs
.NeedCompress
.upper() == 'TRUE'
53 if self
.OverrideAttribs
.PciVendorId
is None:
54 self
.OverrideAttribs
.PciVendorId
= self
.OptRomDefs
.get ('PCI_VENDOR_ID')
56 if self
.OverrideAttribs
.PciClassCode
is None:
57 self
.OverrideAttribs
.PciClassCode
= self
.OptRomDefs
.get ('PCI_CLASS_CODE')
59 if self
.OverrideAttribs
.PciDeviceId
is None:
60 self
.OverrideAttribs
.PciDeviceId
= self
.OptRomDefs
.get ('PCI_DEVICE_ID')
62 if self
.OverrideAttribs
.PciRevision
is None:
63 self
.OverrideAttribs
.PciRevision
= self
.OptRomDefs
.get ('PCI_REVISION')
65 # InfObj = GenFdsGlobalVariable.WorkSpace.BuildObject[self.PathClassObj, self.CurrentArch]
66 # RecordList = InfObj._RawData[MODEL_META_DATA_HEADER, InfObj._Arch, InfObj._Platform]
67 # for Record in RecordList:
68 # Record = ReplaceMacros(Record, GlobalData.gEdkGlobal, False)
74 # @param self The object pointer
75 # @retval string Generated .efi file name
77 def GenFfs(self
, IsMakefile
=False):
79 # Parse Inf file get Module related information
83 self
.__GetOptRomParams
()
85 # Get the rule of how to generate Ffs file
87 Rule
= self
.__GetRule
__()
88 GenFdsGlobalVariable
.VerboseLogger( "Packing binaries from inf file : %s" %self
.InfFileName
)
90 # For the rule only has simpleFile
92 if isinstance (Rule
, RuleSimpleFile
.RuleSimpleFile
) :
93 EfiOutputList
= self
.__GenSimpleFileSection
__(Rule
, IsMakefile
=IsMakefile
)
96 # For Rule has ComplexFile
98 elif isinstance(Rule
, RuleComplexFile
.RuleComplexFile
):
99 EfiOutputList
= self
.__GenComplexFileSection
__(Rule
, IsMakefile
=IsMakefile
)
102 ## __GenSimpleFileSection__() method
104 # Get .efi files according to simple rule.
106 # @param self The object pointer
107 # @param Rule The rule object used to generate section
108 # @retval string File name of the generated section file
110 def __GenSimpleFileSection__(self
, Rule
, IsMakefile
= False):
112 # Prepare the parameter of GenSection
116 if Rule
.FileName
is not None:
117 GenSecInputFile
= self
.__ExtendMacro
__(Rule
.FileName
)
118 OutputFileList
.append(GenSecInputFile
)
120 OutputFileList
, IsSect
= Section
.Section
.GetFileList(self
, '', Rule
.FileExtension
)
122 return OutputFileList
125 ## __GenComplexFileSection__() method
127 # Get .efi by sections in complex Rule
129 # @param self The object pointer
130 # @param Rule The rule object used to generate section
131 # @retval string File name of the generated section file
133 def __GenComplexFileSection__(self
, Rule
, IsMakefile
=False):
136 for Sect
in Rule
.SectionList
:
137 if Sect
.SectionType
== BINARY_FILE_TYPE_PE32
:
138 if Sect
.FileName
is not None:
139 GenSecInputFile
= self
.__ExtendMacro
__(Sect
.FileName
)
140 OutputFileList
.append(GenSecInputFile
)
142 FileList
, IsSect
= Section
.Section
.GetFileList(self
, '', Sect
.FileExtension
)
143 OutputFileList
.extend(FileList
)
145 return OutputFileList
147 class OverrideAttribs
:
151 # @param self The object pointer
155 self
.PciVendorId
= None
156 self
.PciClassCode
= None
157 self
.PciDeviceId
= None
158 self
.PciRevision
= None
159 self
.NeedCompress
= None