Fix the bug that always use the '-e' as OPTROM_FLAGS even the .INF file
has statement 'PCI_COMPRESS  = TRUE'.

Cc: Liming Gao <liming....@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong....@intel.com>
---
 BaseTools/Source/Python/AutoGen/GenMake.py             | 13 +++++++++++++
 BaseTools/Source/Python/Workspace/WorkspaceDatabase.py |  6 +++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py 
b/BaseTools/Source/Python/AutoGen/GenMake.py
index 4b2902f..be07e46 100644
--- a/BaseTools/Source/Python/AutoGen/GenMake.py
+++ b/BaseTools/Source/Python/AutoGen/GenMake.py
@@ -486,10 +486,15 @@ cleanlib:
         if 'ARCH_ENTRY_POINT' not in self._AutoGenObject.Macros.keys():
             self._AutoGenObject.Macros['ARCH_ENTRY_POINT'] = ArchEntryPoint
         if 'IMAGE_ENTRY_POINT' not in self._AutoGenObject.Macros.keys():
             self._AutoGenObject.Macros['IMAGE_ENTRY_POINT'] = ImageEntryPoint
 
+        PCI_COMPRESS_Flag = False
+        for k, v in self._AutoGenObject.Module.Defines.iteritems():
+            if 'PCI_COMPRESS' == k and 'TRUE' == v:
+                PCI_COMPRESS_Flag = True
+
         # tools definitions
         ToolsDef = []
         IncPrefix = self._INC_FLAG_[self._AutoGenObject.ToolChainFamily]
         for Tool in self._AutoGenObject.BuildOption:
             for Attr in self._AutoGenObject.BuildOption[Tool]:
@@ -503,10 +508,18 @@ cleanlib:
                     if Tool == "MAKE":
                         continue
                     # Remove duplicated include path, if any
                     if Attr == "FLAGS":
                         Value = RemoveDupOption(Value, IncPrefix, 
self._AutoGenObject.IncludePathList)
+                        if Tool == "OPTROM" and PCI_COMPRESS_Flag:
+                            ValueList = Value.split()
+                            if ValueList:
+                                for i, v in enumerate(ValueList):
+                                    if '-e' == v:
+                                        ValueList[i] = '-ec'
+                                Value = ' '.join(ValueList)
+
                     ToolsDef.append("%s_%s = %s" % (Tool, Attr, Value))
             ToolsDef.append("")
 
         # generate the Response file and Response flag
         RespDict = self.CommandExceedLimit()
diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py 
b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
index 5168e83..86d8c32 100644
--- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
+++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
@@ -1928,12 +1928,16 @@ class InfBuildData(ModuleBuildClassObject):
                                 File=self.MetaFile, Line=LineNo)
             if (self._Specification == None) or (not 
'PI_SPECIFICATION_VERSION' in self._Specification) or 
(int(self._Specification['PI_SPECIFICATION_VERSION'], 16) < 0x0001000A):
                 if self._ModuleType == SUP_MODULE_SMM_CORE:
                     EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "SMM_CORE 
module type can't be used in the module with PI_SPECIFICATION_VERSION less than 
0x0001000A", File=self.MetaFile)
             if self._Defs and 'PCI_DEVICE_ID' in self._Defs and 
'PCI_VENDOR_ID' in self._Defs \
-               and 'PCI_CLASS_CODE' in self._Defs:
+               and 'PCI_CLASS_CODE' in self._Defs and 'PCI_REVISION' in 
self._Defs:
                 self._BuildType = 'UEFI_OPTIONROM'
+                if 'PCI_COMPRESS' in self._Defs:
+                    if self._Defs['PCI_COMPRESS'] not in ('TRUE', 'FALSE'):
+                        EdkLogger.error("build", FORMAT_INVALID, "Expected 
TRUE/FALSE for PCI_COMPRESS: %s" %self.MetaFile)
+
             elif self._Defs and 'UEFI_HII_RESOURCE_SECTION' in self._Defs \
                and self._Defs['UEFI_HII_RESOURCE_SECTION'] == 'TRUE':
                 self._BuildType = 'UEFI_HII'
             else:
                 self._BuildType = self._ModuleType.upper()
-- 
2.6.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to