]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/FdfParser.py
License header updated to match correct format.
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / FdfParser.py
index 01dab7bdabac4075688fbddfb19ae264548fea0a..f4ccda9374232091f6f251bc352ce0d1acfecfb7 100644 (file)
@@ -218,6 +218,7 @@ class FdfParser:
         self.CurrentFvName = None\r
         self.__Token = ""\r
         self.__SkippedChars = ""\r
+        GlobalData.gFdfParser = self\r
 \r
         # Used to section info\r
         self.__CurSection = []\r
@@ -2356,6 +2357,9 @@ class FdfParser:
         ffsInf.CurrentLineNum = self.CurrentLineNumber\r
         ffsInf.CurrentLineContent = self.__CurrentLine()\r
 \r
+        #Replace $(SAPCE) with real space\r
+        ffsInf.InfFileName = ffsInf.InfFileName.replace('$(SPACE)', ' ')\r
+\r
         if ffsInf.InfFileName.replace('$(WORKSPACE)', '').find('$') == -1:\r
             #do case sensitive check for file path\r
             ErrorCode, ErrorInfo = PathClass(NormPath(ffsInf.InfFileName), GenFdsGlobalVariable.WorkSpaceDir).Validate()\r
@@ -2391,6 +2395,12 @@ class FdfParser:
     #   @param  FfsInfObj   for whom option is got\r
     #\r
     def __GetInfOptions(self, FfsInfObj):\r
+        if self.__IsKeyword("FILE_GUID"):\r
+            if not self.__IsToken("="):\r
+                raise Warning("expected '='", self.FileName, self.CurrentLineNumber)\r
+            if not self.__GetNextGuid():\r
+                raise Warning("expected GUID value", self.FileName, self.CurrentLineNumber)\r
+            FfsInfObj.OverrideGuid = self.__Token\r
 \r
         if self.__IsKeyword( "RuleOverride"):\r
             if not self.__IsToken( "="):\r
@@ -2426,8 +2436,8 @@ class FdfParser:
 \r
                 \r
         if self.__GetNextToken():\r
-            p = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')\r
-            if p.match(self.__Token):\r
+            p = re.compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAIN_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\))')\r
+            if p.match(self.__Token) and p.match(self.__Token).span()[1] == len(self.__Token):\r
                 FfsInfObj.KeyStringList.append(self.__Token)\r
                 if not self.__IsToken(","):\r
                     return\r
@@ -2576,7 +2586,7 @@ class FdfParser:
         else:\r
             FfsFileObj.CurrentLineNum = self.CurrentLineNumber\r
             FfsFileObj.CurrentLineContent = self.__CurrentLine()\r
-            FfsFileObj.FileName = self.__Token\r
+            FfsFileObj.FileName = self.__Token.replace('$(SPACE)', ' ')\r
             self.__VerifyFile(FfsFileObj.FileName)\r
 \r
         if not self.__IsToken( "}"):\r