From b1c6e9f55e08843c0bec909abf87601579cea386 Mon Sep 17 00:00:00 2001 From: "Lin, Derek (HPS SW)" Date: Wed, 16 Oct 2019 14:17:26 +0800 Subject: [PATCH] BaseTools: Fix an incremental build issue caused by macro in #include When c/h file use macro after #include, for example, In this case, GenMake is not able to create a healthy dependency for the c file. GenMake used to add $(FORCE_REBUILD) dependency in the c file, this guarantee the c file is always compiled in incremental build. But, this function is broken since 05217d210e8da37b47d0be58ec363f7af2fa1c18 which enable /MP for MSVC compiler, in order to compile multiple c files in one command multi-processing. The fix here is adding '$(FORCE_REBUILD)' back to retain the original function. Line number 1728 and 978 are the code pieces which handle this logic. Signed-off-by: Derek Lin Reviewed-by: Bob Feng --- BaseTools/Source/Python/AutoGen/GenMake.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index 97ba158ff2..59a01a7f24 100755 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -1080,13 +1080,17 @@ cleanlib: else: CmdCppDict[item.Target.SubDir] = ['$(MAKE_FILE)', Path] if CppPath.Path in DependencyDict: - for Temp in DependencyDict[CppPath.Path]: - try: - Path = self.PlaceMacro(Temp.Path, self.Macros) - except: - continue - if Path not in (self.CommonFileDependency + CmdCppDict[item.Target.SubDir]): - CmdCppDict[item.Target.SubDir].append(Path) + if '$(FORCE_REBUILD)' in DependencyDict[CppPath.Path]: + if '$(FORCE_REBUILD)' not in (self.CommonFileDependency + CmdCppDict[item.Target.SubDir]): + CmdCppDict[item.Target.SubDir].append('$(FORCE_REBUILD)') + else: + for Temp in DependencyDict[CppPath.Path]: + try: + Path = self.PlaceMacro(Temp.Path, self.Macros) + except: + continue + if Path not in (self.CommonFileDependency + CmdCppDict[item.Target.SubDir]): + CmdCppDict[item.Target.SubDir].append(Path) if T.Commands: CommandList = T.Commands[:] for Item in CommandList[:]: -- 2.39.2