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. Cc: Liming Gao <liming....@intel.com> Signed-off-by: Bob Feng <bob.c.f...@intel.com> --- BaseTools/Source/Python/AutoGen/GenMake.py | 9 +++++++-- BaseTools/Source/Python/AutoGen/IncludesAutoGen.py | 5 ++++- BaseTools/Source/Python/build/build.py | 3 ++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index fe94f9a4c232..ba199c1aa73d 100755 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -1,9 +1,9 @@ ## @file # 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 # ## Import Modules # @@ -189,10 +189,13 @@ class BuildFile(object): with open(os.path.join(self._AutoGenObject.MakeFileDir, "deps.txt"),"w+") as fd: fd.write("") if not os.path.exists(os.path.join(self._AutoGenObject.MakeFileDir, "dependency")): with open(os.path.join(self._AutoGenObject.MakeFileDir, "dependency"),"w+") as fd: 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 a list of directory creation command string # # @param DirList The list of directory to be created @@ -694,11 +697,13 @@ cleanlib: "dependent_library_build_directory" : self.LibraryBuildDirectoryList, "library_build_command" : LibraryMakeCommandList, "file_macro" : FileMacroList, "file_build_target" : self.BuildTargetList, "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 def ParserGenerateFfsCmd(self): diff --git a/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py b/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py index bb6e883d84ca..1ca1798907ef 100644 --- a/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py +++ b/BaseTools/Source/Python/AutoGen/IncludesAutoGen.py @@ -1,9 +1,9 @@ ## @file # 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 # from Common.caching import cached_property import Common.EdkLogger as EdkLogger import Common.LongFilePathOs as os @@ -63,10 +63,13 @@ class IncludesAutoGen(): deps_include_str = _INCLUDE_DEPS_TEMPLATE.Replace(deps_file) except Exception as e: print(e) 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 def deps_files(self): """ Get all .deps file under module build folder. """ deps_files = [] for root, _, files in os.walk(self.d_folder, topdown=False): diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py index 34acdccbdbd0..1e47e382cba9 100755 --- a/BaseTools/Source/Python/build/build.py +++ b/BaseTools/Source/Python/build/build.py @@ -1,10 +1,10 @@ ## @file # build a platform or a module # # 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> # # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -278,10 +278,11 @@ def LaunchCommand(Command, WorkingDir,ModuleAuto = None): else: iau.UpdateDepsFileforNonMsvc() iau.UpdateDepsFileforTrim() iau.CreateModuleDeps() iau.CreateDepsInclude() + iau.CreateDepsTarget() return "%dms" % (int(round((time.time() - BeginTime) * 1000))) ## The smallest unit that can be built in multi-thread build mode # # This is the base class of build unit. The "Obj" parameter must provide -- 2.20.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#53340): https://edk2.groups.io/g/devel/message/53340 Mute This Topic: https://groups.io/mt/69770761/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-