]> git.proxmox.com Git - mirror_edk2.git/commitdiff
BaseTools:Define Macro in Inf file, the pcdvalue Can't convert
authorFan, ZhijuX <zhijux.fan@intel.com>
Fri, 25 Jan 2019 08:52:32 +0000 (16:52 +0800)
committerFeng, Bob C <bob.c.feng@intel.com>
Mon, 28 Jan 2019 03:44:42 +0000 (11:44 +0800)
Define Macro in Inf file, the pcdvalue Can't convert

in dec:
gUefiOvmfPkgGuid.test1|"ddd"|VOID*|0x3c
in inf:
DEFINE ABC=PATH
gUefiOvmfPkgTokenSpaceGuid.test1|$(ABC)

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Zhiju.Fan <zhijux.fan@intel.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
BaseTools/Source/Python/Workspace/MetaFileParser.py

index 6df0d3cdf84df7be4e6bfed9e7d98fcc45a4ac8c..f31dbc2649fe795d00aa5049ec622b67c9b8c4d0 100644 (file)
@@ -757,9 +757,13 @@ class InfParser(MetaFileParser):
         if self._ValueList[2] != '':\r
             InfPcdValueList = GetSplitValueList(TokenList[1], TAB_VALUE_SPLIT, 1)\r
             if InfPcdValueList[0] in ['True', 'true', 'TRUE']:\r
-                self._ValueList[2] = TokenList[1].replace(InfPcdValueList[0], '1', 1);\r
+                self._ValueList[2] = TokenList[1].replace(InfPcdValueList[0], '1', 1)\r
             elif InfPcdValueList[0] in ['False', 'false', 'FALSE']:\r
-                self._ValueList[2] = TokenList[1].replace(InfPcdValueList[0], '0', 1);\r
+                self._ValueList[2] = TokenList[1].replace(InfPcdValueList[0], '0', 1)\r
+            elif isinstance(InfPcdValueList[0], str) and InfPcdValueList[0].find('$(') >= 0:\r
+                Value = ReplaceExprMacro(InfPcdValueList[0],self._Macros)\r
+                if Value != '0':\r
+                    self._ValueList[2] = Value\r
         if (self._ValueList[0], self._ValueList[1]) not in self.PcdsDict:\r
             self.PcdsDict[self._ValueList[0], self._ValueList[1]] = self._SectionType\r
         elif self.PcdsDict[self._ValueList[0], self._ValueList[1]] != self._SectionType:\r