BaseTools: Leverage compiler output to optimize binary cache
Redesign the binary cache and bases on the compiler to output the dependency header files info for every module. The binary cache will directly consume the dependency header files info and doesn't parse the C source code by iteself. Also redesign the dependency files list format for module and try to share the common lib hash result as more as possible in local process. Remove the unnecessary share data access across multiprocessing. Signed-off-by: Steven Shi <steven.shi@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
@ -104,29 +104,20 @@ gUseHashCache = None
|
||||
gBinCacheDest = None
|
||||
gBinCacheSource = None
|
||||
gPlatformHash = None
|
||||
gPackageHash = {}
|
||||
gModuleHash = {}
|
||||
gPlatformHashFile = None
|
||||
gPackageHash = None
|
||||
gPackageHashFile = None
|
||||
gModuleHashFile = None
|
||||
gCMakeHashFile = None
|
||||
gHashChainStatus = None
|
||||
gModulePreMakeCacheStatus = None
|
||||
gModuleMakeCacheStatus = None
|
||||
gFileHashDict = None
|
||||
gModuleAllCacheStatus = None
|
||||
gModuleCacheHit = None
|
||||
|
||||
gEnableGenfdsMultiThread = True
|
||||
gSikpAutoGenCache = set()
|
||||
|
||||
# Dictionary for tracking Module build status as success or failure
|
||||
# Top Dict: Key: Arch Type Value: Dictionary
|
||||
# Second Dict: Key: AutoGen Obj Value: 'SUCCESS'\'FAIL'\'FAIL_METAFILE'
|
||||
gModuleBuildTracking = dict()
|
||||
|
||||
# Dictionary of booleans that dictate whether a module or
|
||||
# library can be skiped
|
||||
# Top Dict: Key: Arch Type Value: Dictionary
|
||||
# Second Dict: Key: Module\Library Name Value: True\False
|
||||
gBuildHashSkipTracking = dict()
|
||||
|
||||
# Common dictionary to share module cache intermediate result and state
|
||||
gCacheIR = None
|
||||
# Common lock for the module cache intermediate data
|
||||
cache_lock = None
|
||||
# Common lock for the file access in multiple process AutoGens
|
||||
file_lock = None
|
||||
# Common dictionary to share platform libraries' constant Pcd
|
||||
libConstPcd = None
|
||||
# Common dictionary to share platform libraries' reference info
|
||||
Refes = None
|
||||
|
||||
|
Reference in New Issue
Block a user