]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/Python/GenFds/OptRomInfStatement.py
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / OptRomInfStatement.py
CommitLineData
30fdf114
LG
1## @file\r
2# process OptionROM generation from INF statement\r
3#\r
f7496d71 4# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
30fdf114 5#\r
2e351cbe 6# SPDX-License-Identifier: BSD-2-Clause-Patent\r
30fdf114
LG
7#\r
8\r
9##\r
10# Import Modules\r
11#\r
1ccc4d89 12from __future__ import absolute_import\r
bfa65b61
GL
13from . import RuleSimpleFile\r
14from . import RuleComplexFile\r
15from . import Section\r
30fdf114
LG
16import Common.GlobalData as GlobalData\r
17\r
18from Common.DataType import *\r
5a57246e 19from Common.StringUtils import *\r
bfa65b61
GL
20from .FfsInfStatement import FfsInfStatement\r
21from .GenFdsGlobalVariable import GenFdsGlobalVariable\r
30fdf114 22\r
f7496d71 23##\r
30fdf114
LG
24#\r
25#\r
26class OptRomInfStatement (FfsInfStatement):\r
27 ## The constructor\r
28 #\r
29 # @param self The object pointer\r
30 #\r
31 def __init__(self):\r
32 FfsInfStatement.__init__(self)\r
33 self.OverrideAttribs = None\r
34\r
35 ## __GetOptRomParams() method\r
36 #\r
37 # Parse inf file to get option ROM related parameters\r
38 #\r
39 # @param self The object pointer\r
40 #\r
41 def __GetOptRomParams(self):\r
4231a819 42 if self.OverrideAttribs is None:\r
8f3f5794 43 self.OverrideAttribs = OverrideAttribs()\r
fd171542 44\r
4231a819 45 if self.OverrideAttribs.NeedCompress is None:\r
79b74a03 46 self.OverrideAttribs.NeedCompress = self.OptRomDefs.get ('PCI_COMPRESS')\r
fd171542 47 if self.OverrideAttribs.NeedCompress is not None:\r
48 if self.OverrideAttribs.NeedCompress.upper() not in ('TRUE', 'FALSE'):\r
79b74a03 49 GenFdsGlobalVariable.ErrorLogger( "Expected TRUE/FALSE for PCI_COMPRESS: %s" %self.InfFileName)\r
fd171542 50 self.OverrideAttribs.NeedCompress = \\r
51 self.OverrideAttribs.NeedCompress.upper() == 'TRUE'\r
52\r
4231a819 53 if self.OverrideAttribs.PciVendorId is None:\r
30fdf114 54 self.OverrideAttribs.PciVendorId = self.OptRomDefs.get ('PCI_VENDOR_ID')\r
f7496d71 55\r
4231a819 56 if self.OverrideAttribs.PciClassCode is None:\r
30fdf114 57 self.OverrideAttribs.PciClassCode = self.OptRomDefs.get ('PCI_CLASS_CODE')\r
f7496d71 58\r
4231a819 59 if self.OverrideAttribs.PciDeviceId is None:\r
30fdf114 60 self.OverrideAttribs.PciDeviceId = self.OptRomDefs.get ('PCI_DEVICE_ID')\r
f7496d71 61\r
4231a819 62 if self.OverrideAttribs.PciRevision is None:\r
30fdf114 63 self.OverrideAttribs.PciRevision = self.OptRomDefs.get ('PCI_REVISION')\r
f7496d71
LG
64\r
65# InfObj = GenFdsGlobalVariable.WorkSpace.BuildObject[self.PathClassObj, self.CurrentArch]\r
30fdf114
LG
66# RecordList = InfObj._RawData[MODEL_META_DATA_HEADER, InfObj._Arch, InfObj._Platform]\r
67# for Record in RecordList:\r
68# Record = ReplaceMacros(Record, GlobalData.gEdkGlobal, False)\r
f7496d71 69# Name = Record[0]\r
30fdf114
LG
70 ## GenFfs() method\r
71 #\r
72 # Generate FFS\r
73 #\r
74 # @param self The object pointer\r
75 # @retval string Generated .efi file name\r
76 #\r
37de70b7 77 def GenFfs(self, IsMakefile=False):\r
30fdf114
LG
78 #\r
79 # Parse Inf file get Module related information\r
80 #\r
81\r
82 self.__InfParse__()\r
83 self.__GetOptRomParams()\r
84 #\r
85 # Get the rule of how to generate Ffs file\r
86 #\r
87 Rule = self.__GetRule__()\r
88 GenFdsGlobalVariable.VerboseLogger( "Packing binaries from inf file : %s" %self.InfFileName)\r
30fdf114
LG
89 #\r
90 # For the rule only has simpleFile\r
91 #\r
92 if isinstance (Rule, RuleSimpleFile.RuleSimpleFile) :\r
37de70b7 93 EfiOutputList = self.__GenSimpleFileSection__(Rule, IsMakefile=IsMakefile)\r
30fdf114
LG
94 return EfiOutputList\r
95 #\r
96 # For Rule has ComplexFile\r
97 #\r
98 elif isinstance(Rule, RuleComplexFile.RuleComplexFile):\r
37de70b7 99 EfiOutputList = self.__GenComplexFileSection__(Rule, IsMakefile=IsMakefile)\r
30fdf114
LG
100 return EfiOutputList\r
101\r
102 ## __GenSimpleFileSection__() method\r
103 #\r
104 # Get .efi files according to simple rule.\r
105 #\r
106 # @param self The object pointer\r
107 # @param Rule The rule object used to generate section\r
108 # @retval string File name of the generated section file\r
109 #\r
37de70b7 110 def __GenSimpleFileSection__(self, Rule, IsMakefile = False):\r
30fdf114
LG
111 #\r
112 # Prepare the parameter of GenSection\r
113 #\r
114\r
115 OutputFileList = []\r
4231a819 116 if Rule.FileName is not None:\r
30fdf114
LG
117 GenSecInputFile = self.__ExtendMacro__(Rule.FileName)\r
118 OutputFileList.append(GenSecInputFile)\r
119 else:\r
120 OutputFileList, IsSect = Section.Section.GetFileList(self, '', Rule.FileExtension)\r
121\r
122 return OutputFileList\r
123\r
124\r
125 ## __GenComplexFileSection__() method\r
126 #\r
127 # Get .efi by sections in complex Rule\r
128 #\r
129 # @param self The object pointer\r
130 # @param Rule The rule object used to generate section\r
131 # @retval string File name of the generated section file\r
132 #\r
37de70b7 133 def __GenComplexFileSection__(self, Rule, IsMakefile=False):\r
30fdf114
LG
134\r
135 OutputFileList = []\r
136 for Sect in Rule.SectionList:\r
91fa33ee 137 if Sect.SectionType == BINARY_FILE_TYPE_PE32:\r
4231a819 138 if Sect.FileName is not None:\r
30fdf114
LG
139 GenSecInputFile = self.__ExtendMacro__(Sect.FileName)\r
140 OutputFileList.append(GenSecInputFile)\r
141 else:\r
142 FileList, IsSect = Section.Section.GetFileList(self, '', Sect.FileExtension)\r
f7496d71
LG
143 OutputFileList.extend(FileList)\r
144\r
30fdf114 145 return OutputFileList\r
8f3f5794
GL
146\r
147class OverrideAttribs:\r
148\r
149 ## The constructor\r
150 #\r
151 # @param self The object pointer\r
152 #\r
153 def __init__(self):\r
154\r
155 self.PciVendorId = None\r
156 self.PciClassCode = None\r
157 self.PciDeviceId = None\r
158 self.PciRevision = None\r
159 self.NeedCompress = None\r