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 05217d210e 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 <derek.lin2@hpe.com>
Reviewed-by: Bob Feng <bob.c.feng@intel.com>
This commit is contained in:
Lin, Derek (HPS SW) 2019-10-16 14:17:26 +08:00 committed by Feng, Bob C
parent e797a806a8
commit b1c6e9f55e
1 changed files with 11 additions and 7 deletions

View File

@ -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[:]: