mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 13:51:33 -06:00
Makefiles: ensure transparent switch between dependencies strategies
This commit is contained in:
@@ -345,27 +345,51 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules()
|
||||
this->LocalGenerator->GetBinaryDirectory(), compilerDependFile))
|
||||
<< "\n\n";
|
||||
|
||||
if (!cmSystemTools::FileExists(compilerDependFile)) {
|
||||
// Write an empty dependency file.
|
||||
cmGeneratedFileStream depFileStream(
|
||||
compilerDependFile, false,
|
||||
this->GlobalGenerator->GetMakefileEncoding());
|
||||
depFileStream << "# Empty compiler generated dependencies file for "
|
||||
<< this->GeneratorTarget->GetName() << ".\n"
|
||||
<< "# This may be replaced when dependencies are built.\n";
|
||||
}
|
||||
// Write an empty dependency file.
|
||||
cmGeneratedFileStream depFileStream(
|
||||
compilerDependFile, false, this->GlobalGenerator->GetMakefileEncoding());
|
||||
depFileStream << "# Empty compiler generated dependencies file for "
|
||||
<< this->GeneratorTarget->GetName() << ".\n"
|
||||
<< "# This may be replaced when dependencies are built.\n";
|
||||
// remove internal dependency file
|
||||
cmSystemTools::RemoveFile(
|
||||
cmStrCat(this->TargetBuildDirectoryFull, "/compiler_depend.internal"));
|
||||
|
||||
std::string compilerDependTimestamp =
|
||||
cmStrCat(this->TargetBuildDirectoryFull, "/compiler_depend.ts");
|
||||
if (!cmSystemTools::FileExists(compilerDependTimestamp)) {
|
||||
// Write a dependency timestamp file.
|
||||
cmGeneratedFileStream depFileStream(
|
||||
cmGeneratedFileStream timestampFileStream(
|
||||
compilerDependTimestamp, false,
|
||||
this->GlobalGenerator->GetMakefileEncoding());
|
||||
depFileStream << "# CMAKE generated file: DO NOT EDIT!\n"
|
||||
<< "# Timestamp file for compiler generated dependencies "
|
||||
"management for "
|
||||
<< this->GeneratorTarget->GetName() << ".\n";
|
||||
timestampFileStream
|
||||
<< "# CMAKE generated file: DO NOT EDIT!\n"
|
||||
<< "# Timestamp file for compiler generated dependencies "
|
||||
"management for "
|
||||
<< this->GeneratorTarget->GetName() << ".\n";
|
||||
}
|
||||
|
||||
// deactivate no longer needed legacy dependency files
|
||||
// Write an empty dependency file.
|
||||
cmGeneratedFileStream legacyDepFileStream(
|
||||
dependFileNameFull, false, this->GlobalGenerator->GetMakefileEncoding());
|
||||
legacyDepFileStream
|
||||
<< "# Empty dependencies file for " << this->GeneratorTarget->GetName()
|
||||
<< ".\n"
|
||||
<< "# This may be replaced when dependencies are built.\n";
|
||||
// remove internal dependency file
|
||||
cmSystemTools::RemoveFile(
|
||||
cmStrCat(this->TargetBuildDirectoryFull, "/depend.internal"));
|
||||
} else {
|
||||
// make sure the depend file exists
|
||||
if (!cmSystemTools::FileExists(dependFileNameFull)) {
|
||||
// Write an empty dependency file.
|
||||
cmGeneratedFileStream depFileStream(
|
||||
dependFileNameFull, false,
|
||||
this->GlobalGenerator->GetMakefileEncoding());
|
||||
depFileStream << "# Empty dependencies file for "
|
||||
<< this->GeneratorTarget->GetName() << ".\n"
|
||||
<< "# This may be replaced when dependencies are built.\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -381,16 +405,6 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules()
|
||||
<< "\n\n";
|
||||
}
|
||||
|
||||
// make sure the depend file exists
|
||||
if (!cmSystemTools::FileExists(dependFileNameFull)) {
|
||||
// Write an empty dependency file.
|
||||
cmGeneratedFileStream depFileStream(
|
||||
dependFileNameFull, false, this->GlobalGenerator->GetMakefileEncoding());
|
||||
depFileStream << "# Empty dependencies file for "
|
||||
<< this->GeneratorTarget->GetName() << ".\n"
|
||||
<< "# This may be replaced when dependencies are built.\n";
|
||||
}
|
||||
|
||||
// Open the flags file. This should be copy-if-different because the
|
||||
// rules may depend on this file itself.
|
||||
this->FlagFileNameFull =
|
||||
@@ -855,6 +869,7 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
|
||||
shellDependencyFile = this->LocalGenerator->ConvertToOutputFormat(
|
||||
depFile, cmOutputConverter::SHELL);
|
||||
vars.DependencyFile = shellDependencyFile.c_str();
|
||||
this->CleanFiles.insert(depFile);
|
||||
|
||||
dependencyTimestamp = this->LocalGenerator->MaybeConvertToRelativePath(
|
||||
this->LocalGenerator->GetBinaryDirectory(),
|
||||
|
||||
Reference in New Issue
Block a user