]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/AutoGenWorker.py
BaseTools: Improve the cache hit in the edk2 build cache
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / AutoGenWorker.py
old mode 100644 (file)
new mode 100755 (executable)
index e583828..a84ed46
@@ -182,6 +182,12 @@ class AutoGenWorkerInProcess(mp.Process):
             GlobalData.gDisableIncludePathCheck = False\r
             GlobalData.gFdfParser = self.data_pipe.Get("FdfParser")\r
             GlobalData.gDatabasePath = self.data_pipe.Get("DatabasePath")\r
+            GlobalData.gBinCacheSource = self.data_pipe.Get("BinCacheSource")\r
+            GlobalData.gBinCacheDest = self.data_pipe.Get("BinCacheDest")\r
+            GlobalData.gCacheIR = self.data_pipe.Get("CacheIR")\r
+            GlobalData.gEnableGenfdsMultiThread = self.data_pipe.Get("EnableGenfdsMultiThread")\r
+            GlobalData.file_lock = self.file_lock\r
+            CommandTarget = self.data_pipe.Get("CommandTarget")\r
             pcd_from_build_option = []\r
             for pcd_tuple in self.data_pipe.Get("BuildOptPcd"):\r
                 pcd_id = ".".join((pcd_tuple[0],pcd_tuple[1]))\r
@@ -193,10 +199,13 @@ class AutoGenWorkerInProcess(mp.Process):
             FfsCmd = self.data_pipe.Get("FfsCommand")\r
             if FfsCmd is None:\r
                 FfsCmd = {}\r
+            GlobalData.FfsCmd = FfsCmd\r
             PlatformMetaFile = self.GetPlatformMetaFile(self.data_pipe.Get("P_Info").get("ActivePlatform"),\r
                                              self.data_pipe.Get("P_Info").get("WorkspaceDir"))\r
             libConstPcd = self.data_pipe.Get("LibConstPcd")\r
             Refes = self.data_pipe.Get("REFS")\r
+            GlobalData.libConstPcd = libConstPcd\r
+            GlobalData.Refes = Refes\r
             while True:\r
                 if self.module_queue.empty():\r
                     break\r
@@ -223,8 +232,20 @@ class AutoGenWorkerInProcess(mp.Process):
                         Ma.ConstPcd = libConstPcd[(Ma.MetaFile.File,Ma.MetaFile.Root,Ma.Arch,Ma.MetaFile.Path)]\r
                     if (Ma.MetaFile.File,Ma.MetaFile.Root,Ma.Arch,Ma.MetaFile.Path) in Refes:\r
                         Ma.ReferenceModules = Refes[(Ma.MetaFile.File,Ma.MetaFile.Root,Ma.Arch,Ma.MetaFile.Path)]\r
+                if GlobalData.gBinCacheSource and CommandTarget in [None, "", "all"]:\r
+                    Ma.GenModuleFilesHash(GlobalData.gCacheIR)\r
+                    Ma.GenPreMakefileHash(GlobalData.gCacheIR)\r
+                    if Ma.CanSkipbyPreMakefileCache(GlobalData.gCacheIR):\r
+                       continue\r
+\r
                 Ma.CreateCodeFile(False)\r
                 Ma.CreateMakeFile(False,GenFfsList=FfsCmd.get((Ma.MetaFile.File, Ma.Arch),[]))\r
+\r
+                if GlobalData.gBinCacheSource and CommandTarget in [None, "", "all"]:\r
+                    Ma.GenMakeHeaderFilesHash(GlobalData.gCacheIR)\r
+                    Ma.GenMakeHash(GlobalData.gCacheIR)\r
+                    if Ma.CanSkipbyMakeCache(GlobalData.gCacheIR):\r
+                        continue\r
         except Empty:\r
             pass\r
         except:\r