[CMake] [PATCH] Correctly generate depfiles when some pre-processor (like distcc or ccache) is used
Alexander Usov
a.s.usov at gmail.com
Wed Mar 14 08:00:24 EDT 2012
In pre-processing mode GCC doesn't have target filename and has to guess
target name for depfile.
Use -MT to force correct target name.
gcc -c -MMD -o foo.cc.o foo.cc => foo.cc.o: <dependencies>
gcc -E -MMD -o foo.i foo.cc => foo.o: <dependencies>
gcc -E -MMD -MT foo.cc.o -o foo.i foo.cc => foo.cc.o: <dependencies>
---
Modules/Compiler/GNU.cmake | 2 +-
Source/cmNinjaTargetGenerator.cxx | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake
index bdcaf9d..2c70806 100644
--- a/Modules/Compiler/GNU.cmake
+++ b/Modules/Compiler/GNU.cmake
@@ -30,7 +30,7 @@ macro(__compiler_gnu lang)
# in try_compile mode.
GET_PROPERTY(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)
if(NOT _IN_TC OR CMAKE_FORCE_DEPFILES)
- set(CMAKE_DEPFILE_FLAGS_${lang} "-MMD -MF <DEPFILE>")
+ set(CMAKE_DEPFILE_FLAGS_${lang} "-MMD -MT <DEPTARGET> -MF <DEPFILE>")
endif()
# Initial configuration flags.
diff --git a/Source/cmNinjaTargetGenerator.cxx
b/Source/cmNinjaTargetGenerator.cxx
index 8fa367f..991bf25 100644
--- a/Source/cmNinjaTargetGenerator.cxx
+++ b/Source/cmNinjaTargetGenerator.cxx
@@ -331,6 +331,7 @@ cmNinjaTargetGenerator
depfile = "$out.d";
cmSystemTools::ReplaceString(depfileFlagsStr, "<DEPFILE>",
depfile.c_str());
+ cmSystemTools::ReplaceString(depfileFlagsStr, "<DEPTARGET>", "$out");
flags += " " + depfileFlagsStr;
}
vars.Flags = flags.c_str();
--
1.7.9.4
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120314/7a463a4d/attachment.htm>
More information about the CMake
mailing list