]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - BaseTools/Source/Python/GenFds/OptRomInfStatement.py
Check In tool source code based on Build tool project revision r1655.
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / OptRomInfStatement.py
... / ...
CommitLineData
1## @file\r
2# process OptionROM generation from INF statement\r
3#\r
4# Copyright (c) 2007, Intel Corporation\r
5#\r
6# All rights reserved. This program and the accompanying materials\r
7# are licensed and made available under the terms and conditions of the BSD License\r
8# which accompanies this distribution. The full text of the license may be found at\r
9# http://opensource.org/licenses/bsd-license.php\r
10#\r
11# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13#\r
14\r
15##\r
16# Import Modules\r
17#\r
18import RuleSimpleFile\r
19import RuleComplexFile\r
20import Section\r
21import OptionRom\r
22import Common.GlobalData as GlobalData\r
23\r
24from Common.DataType import *\r
25from Common.String import *\r
26from FfsInfStatement import FfsInfStatement\r
27from GenFdsGlobalVariable import GenFdsGlobalVariable\r
28\r
29## \r
30#\r
31#\r
32class OptRomInfStatement (FfsInfStatement):\r
33 ## The constructor\r
34 #\r
35 # @param self The object pointer\r
36 #\r
37 def __init__(self):\r
38 FfsInfStatement.__init__(self)\r
39 self.OverrideAttribs = None\r
40\r
41 ## __GetOptRomParams() method\r
42 #\r
43 # Parse inf file to get option ROM related parameters\r
44 #\r
45 # @param self The object pointer\r
46 #\r
47 def __GetOptRomParams(self):\r
48 \r
49 if self.OverrideAttribs == None:\r
50 self.OverrideAttribs = OptionRom.OverrideAttribs()\r
51 \r
52 if self.OverrideAttribs.PciVendorId == None:\r
53 self.OverrideAttribs.PciVendorId = self.OptRomDefs.get ('PCI_VENDOR_ID')\r
54 \r
55 if self.OverrideAttribs.PciClassCode == None:\r
56 self.OverrideAttribs.PciClassCode = self.OptRomDefs.get ('PCI_CLASS_CODE')\r
57 \r
58 if self.OverrideAttribs.PciDeviceId == None:\r
59 self.OverrideAttribs.PciDeviceId = self.OptRomDefs.get ('PCI_DEVICE_ID')\r
60 \r
61 if self.OverrideAttribs.PciRevision == None:\r
62 self.OverrideAttribs.PciRevision = self.OptRomDefs.get ('PCI_REVISION')\r
63 \r
64# InfObj = GenFdsGlobalVariable.WorkSpace.BuildObject[self.PathClassObj, self.CurrentArch] \r
65# RecordList = InfObj._RawData[MODEL_META_DATA_HEADER, InfObj._Arch, InfObj._Platform]\r
66# for Record in RecordList:\r
67# Record = ReplaceMacros(Record, GlobalData.gEdkGlobal, False)\r
68# Name = Record[0] \r
69 ## GenFfs() method\r
70 #\r
71 # Generate FFS\r
72 #\r
73 # @param self The object pointer\r
74 # @retval string Generated .efi file name\r
75 #\r
76 def GenFfs(self):\r
77 #\r
78 # Parse Inf file get Module related information\r
79 #\r
80\r
81 self.__InfParse__()\r
82 self.__GetOptRomParams()\r
83 #\r
84 # Get the rule of how to generate Ffs file\r
85 #\r
86 Rule = self.__GetRule__()\r
87 GenFdsGlobalVariable.VerboseLogger( "Packing binaries from inf file : %s" %self.InfFileName)\r
88 #FileType = Ffs.Ffs.ModuleTypeToFileType[Rule.ModuleType]\r
89 #\r
90 # For the rule only has simpleFile\r
91 #\r
92 if isinstance (Rule, RuleSimpleFile.RuleSimpleFile) :\r
93 EfiOutputList = self.__GenSimpleFileSection__(Rule)\r
94 return EfiOutputList\r
95 #\r
96 # For Rule has ComplexFile\r
97 #\r
98 elif isinstance(Rule, RuleComplexFile.RuleComplexFile):\r
99 EfiOutputList = self.__GenComplexFileSection__(Rule)\r
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
110 def __GenSimpleFileSection__(self, Rule):\r
111 #\r
112 # Prepare the parameter of GenSection\r
113 #\r
114\r
115 OutputFileList = []\r
116 if Rule.FileName != None:\r
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
133 def __GenComplexFileSection__(self, Rule):\r
134\r
135 OutputFileList = []\r
136 for Sect in Rule.SectionList:\r
137 if Sect.SectionType == 'PE32':\r
138 if Sect.FileName != None:\r
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
143 OutputFileList.extend(FileList) \r
144 \r
145 return OutputFileList\r
146\r
147