]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFsp2Pkg/Tools/GenCfgOpt.py
IntelFsp2Pkg/GenCfgOpt: skip unnecessarily header/BSF recreating.
[mirror_edk2.git] / IntelFsp2Pkg / Tools / GenCfgOpt.py
index bcced590ce02555c60c6ab0a3af12fb251315ff1..af7e14a10ad95c82fb99e4e01578bcbc632063df 100644 (file)
@@ -810,6 +810,17 @@ EndList
                 SubItem['value'] = valuestr\r
         return Error\r
 \r
+    def NoDscFileChange (self, OutPutFile):\r
+        NoFileChange = True\r
+        if not os.path.exists(OutPutFile):\r
+            NoFileChange = False\r
+        else:\r
+            DscTime = os.path.getmtime(self._DscFile)\r
+            OutputTime = os.path.getmtime(OutPutFile)\r
+            if DscTime > OutputTime:\r
+                NoFileChange = False\r
+        return NoFileChange\r
+\r
     def CreateSplitUpdTxt (self, UpdTxtFile):\r
         GuidList = ['FSP_T_UPD_TOOL_GUID','FSP_M_UPD_TOOL_GUID','FSP_S_UPD_TOOL_GUID']\r
         SignatureList = ['0x545F', '0x4D5F','0x535F']        #  _T, _M, and _S signature for FSPT, FSPM, FSPS\r
@@ -823,16 +834,7 @@ EndList
             if UpdTxtFile == '':\r
                 UpdTxtFile = os.path.join(FvDir, self._MacroDict[GuidList[Index]] + '.txt')\r
 \r
-            ReCreate = False\r
-            if not os.path.exists(UpdTxtFile):\r
-                ReCreate = True\r
-            else:\r
-                DscTime = os.path.getmtime(self._DscFile)\r
-                TxtTime = os.path.getmtime(UpdTxtFile)\r
-                if DscTime > TxtTime:\r
-                    ReCreate = True\r
-\r
-            if not  ReCreate:\r
+            if (self.NoDscFileChange (UpdTxtFile)):\r
                 # DSC has not been modified yet\r
                 # So don't have to re-generate other files\r
                 self.Error = 'No DSC file change, skip to create UPD TXT file'\r
@@ -1056,7 +1058,11 @@ EndList
         HeaderFile = os.path.join(FvDir, HeaderFileName)\r
 \r
         # Check if header needs to be recreated\r
-        ReCreate = False\r
+        if (self.NoDscFileChange (HeaderFile)):\r
+            # DSC has not been modified yet\r
+            # So don't have to re-generate other files\r
+            self.Error = 'No DSC file change, skip to create UPD header file'\r
+            return 256\r
 \r
         TxtBody = []\r
         for Item in self._CfgItemList:\r
@@ -1382,6 +1388,12 @@ EndList
             self.Error = "BSF output file '%s' is invalid" % BsfFile\r
             return 1\r
 \r
+        if (self.NoDscFileChange (BsfFile)):\r
+            # DSC has not been modified yet\r
+            # So don't have to re-generate other files\r
+            self.Error = 'No DSC file change, skip to create UPD BSF file'\r
+            return 256\r
+\r
         Error = 0\r
         OptionDict = {}\r
         BsfFd      = open(BsfFile, "w")\r
@@ -1467,7 +1479,7 @@ EndList
 \r
 \r
 def Usage():\r
-    print ("GenCfgOpt Version 0.55")\r
+    print ("GenCfgOpt Version 0.56")\r
     print ("Usage:")\r
     print ("    GenCfgOpt  UPDTXT  PlatformDscFile BuildFvDir                 [-D Macros]")\r
     print ("    GenCfgOpt  HEADER  PlatformDscFile BuildFvDir  InputHFile     [-D Macros]")\r
@@ -1529,13 +1541,25 @@ def Main():
                     print ("ERROR: %s !" % (GenCfgOpt.Error))\r
             return Ret\r
         elif sys.argv[1] == "HEADER":\r
-            if GenCfgOpt.CreateHeaderFile(OutFile) != 0:\r
-                print ("ERROR: %s !" % GenCfgOpt.Error)\r
-                return 8\r
+            Ret = GenCfgOpt.CreateHeaderFile(OutFile)\r
+            if Ret != 0:\r
+                # No change is detected\r
+                if Ret == 256:\r
+                    print ("INFO: %s !" % (GenCfgOpt.Error))\r
+                else :\r
+                    print ("ERROR: %s !" % (GenCfgOpt.Error))\r
+                    return 8\r
+            return Ret\r
         elif sys.argv[1] == "GENBSF":\r
-            if GenCfgOpt.GenerateBsfFile(OutFile) != 0:\r
-                print ("ERROR: %s !" % GenCfgOpt.Error)\r
-                return 9\r
+            Ret = GenCfgOpt.GenerateBsfFile(OutFile)\r
+            if Ret != 0:\r
+                # No change is detected\r
+                if Ret == 256:\r
+                    print ("INFO: %s !" % (GenCfgOpt.Error))\r
+                else :\r
+                    print ("ERROR: %s !" % (GenCfgOpt.Error))\r
+                    return 9\r
+            return Ret\r
         else:\r
             if argc < 5:\r
                 Usage()\r