cmSourceFile: mark known locations as such

Primarily, this includes:

  - the rule files generated for custom targets;
  - source files representing custom targets directly;
  - outputs of custom commands;
  - byproducts of custom commands; and
  - dependencies of custom commands.
This commit is contained in:
Ben Boeckel
2018-01-09 09:09:53 -05:00
parent b0716fbcc5
commit d6dfde3cd3
3 changed files with 14 additions and 7 deletions

View File

@@ -855,7 +855,7 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
std::string outName = gg->GenerateRuleFile(outputs[0]);
// Check if the rule file already exists.
file = this->GetSource(outName);
file = this->GetSource(outName, cmSourceFileLocationKind::Known);
if (file && file->GetCustomCommand() && !replace) {
// The rule file already exists.
if (commandLines != file->GetCustomCommand()->GetCommandLines()) {
@@ -868,19 +868,22 @@ cmSourceFile* cmMakefile::AddCustomCommandToOutput(
// Create a cmSourceFile for the rule file.
if (!file) {
file = this->CreateSource(outName, true);
file =
this->CreateSource(outName, true, cmSourceFileLocationKind::Known);
}
file->SetProperty("__CMAKE_RULE", "1");
}
// Always create the output sources and mark them generated.
for (std::string const& o : outputs) {
if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
if (cmSourceFile* out =
this->GetOrCreateSource(o, true, cmSourceFileLocationKind::Known)) {
out->SetProperty("GENERATED", "1");
}
}
for (std::string const& o : byproducts) {
if (cmSourceFile* out = this->GetOrCreateSource(o, true)) {
if (cmSourceFile* out =
this->GetOrCreateSource(o, true, cmSourceFileLocationKind::Known)) {
out->SetProperty("GENERATED", "1");
}
}
@@ -1092,7 +1095,8 @@ cmTarget* cmMakefile::AddUtilityCommand(
// Always create the byproduct sources and mark them generated.
for (std::string const& byproduct : byproducts) {
if (cmSourceFile* out = this->GetOrCreateSource(byproduct, true)) {
if (cmSourceFile* out = this->GetOrCreateSource(
byproduct, true, cmSourceFileLocationKind::Known)) {
out->SetProperty("GENERATED", "1");
}
}

View File

@@ -7,6 +7,7 @@
#include "cmPropertyMap.h"
#include "cmSourceFileLocation.h"
#include "cmSourceFileLocationKind.h"
#include <string>
#include <vector>

View File

@@ -607,7 +607,8 @@ public:
cmSourceFile* cmTarget::AddSource(const std::string& src)
{
cmSourceFileLocation sfl(this->Makefile, src);
cmSourceFileLocation sfl(this->Makefile, src,
cmSourceFileLocationKind::Known);
if (std::find_if(this->Internal->SourceEntries.begin(),
this->Internal->SourceEntries.end(),
TargetPropertyEntryFinder(sfl)) ==
@@ -619,7 +620,8 @@ cmSourceFile* cmTarget::AddSource(const std::string& src)
if (cmGeneratorExpression::Find(src) != std::string::npos) {
return nullptr;
}
return this->Makefile->GetOrCreateSource(src);
return this->Makefile->GetOrCreateSource(src, false,
cmSourceFileLocationKind::Known);
}
void cmTarget::AddLinkDirectory(const std::string& d)