BaseTools: Fixed a incremental build bug
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2451 If removing a header file from source code and file system, the incremental build will fail. This patch is to fix this issue by setting each header file as a target without any actions in makefile. Signed-off-by: Bob Feng <bob.c.feng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
## @file
|
## @file
|
||||||
# Create makefile for MS nmake and GNU make
|
# Create makefile for MS nmake and GNU make
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -191,6 +191,9 @@ class BuildFile(object):
|
|||||||
if not os.path.exists(os.path.join(self._AutoGenObject.MakeFileDir, "dependency")):
|
if not os.path.exists(os.path.join(self._AutoGenObject.MakeFileDir, "dependency")):
|
||||||
with open(os.path.join(self._AutoGenObject.MakeFileDir, "dependency"),"w+") as fd:
|
with open(os.path.join(self._AutoGenObject.MakeFileDir, "dependency"),"w+") as fd:
|
||||||
fd.write("")
|
fd.write("")
|
||||||
|
if not os.path.exists(os.path.join(self._AutoGenObject.MakeFileDir, "deps_target")):
|
||||||
|
with open(os.path.join(self._AutoGenObject.MakeFileDir, "deps_target"),"w+") as fd:
|
||||||
|
fd.write("")
|
||||||
return SaveFileOnChange(os.path.join(self._AutoGenObject.MakeFileDir, FileName), FileContent, False)
|
return SaveFileOnChange(os.path.join(self._AutoGenObject.MakeFileDir, FileName), FileContent, False)
|
||||||
|
|
||||||
## Return a list of directory creation command string
|
## Return a list of directory creation command string
|
||||||
@ -696,7 +699,9 @@ cleanlib:
|
|||||||
"file_macro" : FileMacroList,
|
"file_macro" : FileMacroList,
|
||||||
"file_build_target" : self.BuildTargetList,
|
"file_build_target" : self.BuildTargetList,
|
||||||
"backward_compatible_target": BcTargetList,
|
"backward_compatible_target": BcTargetList,
|
||||||
"INCLUDETAG" : self._INCLUDE_CMD_[self._FileType] + " " + os.path.join("$(MODULE_BUILD_DIR)","dependency")
|
"INCLUDETAG" : "\n".join([self._INCLUDE_CMD_[self._FileType] + " " + os.path.join("$(MODULE_BUILD_DIR)","dependency"),
|
||||||
|
self._INCLUDE_CMD_[self._FileType] + " " + os.path.join("$(MODULE_BUILD_DIR)","deps_target")
|
||||||
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
return MakefileTemplateDict
|
return MakefileTemplateDict
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
## @file
|
## @file
|
||||||
# Build cache intermediate result and state
|
# Build cache intermediate result and state
|
||||||
#
|
#
|
||||||
# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
#
|
#
|
||||||
from Common.caching import cached_property
|
from Common.caching import cached_property
|
||||||
@ -65,6 +65,9 @@ class IncludesAutoGen():
|
|||||||
print(e)
|
print(e)
|
||||||
SaveFileOnChange(os.path.join(self.makefile_folder,"dependency"),deps_include_str,False)
|
SaveFileOnChange(os.path.join(self.makefile_folder,"dependency"),deps_include_str,False)
|
||||||
|
|
||||||
|
def CreateDepsTarget(self):
|
||||||
|
SaveFileOnChange(os.path.join(self.makefile_folder,"deps_target"),"\n".join([item +":" for item in self.DepsCollection]),False)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def deps_files(self):
|
def deps_files(self):
|
||||||
""" Get all .deps file under module build folder. """
|
""" Get all .deps file under module build folder. """
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# build a platform or a module
|
# build a platform or a module
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
|
# Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
|
||||||
# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
|
||||||
# Copyright (c) 2018, Hewlett Packard Enterprise Development, L.P.<BR>
|
# Copyright (c) 2018, Hewlett Packard Enterprise Development, L.P.<BR>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||||
@ -280,6 +280,7 @@ def LaunchCommand(Command, WorkingDir,ModuleAuto = None):
|
|||||||
iau.UpdateDepsFileforTrim()
|
iau.UpdateDepsFileforTrim()
|
||||||
iau.CreateModuleDeps()
|
iau.CreateModuleDeps()
|
||||||
iau.CreateDepsInclude()
|
iau.CreateDepsInclude()
|
||||||
|
iau.CreateDepsTarget()
|
||||||
return "%dms" % (int(round((time.time() - BeginTime) * 1000)))
|
return "%dms" % (int(round((time.time() - BeginTime) * 1000)))
|
||||||
|
|
||||||
## The smallest unit that can be built in multi-thread build mode
|
## The smallest unit that can be built in multi-thread build mode
|
||||||
|
Reference in New Issue
Block a user