cmMakefile: Simplify custom target 'force' output name generation

Remove unnecessary check of policy CMP0049.  The policy can never
trigger on our internally-generated name because it has no variable
references.

The rename in commit 0ed5ce4cd8 (cmTarget: Rename AddSource method for
backward compatibility., 2014-03-17, v3.1.0-rc1~688^2~17) made it look
like this code path depended on CMP0049.  Then commit 0e1faa28cb
(cmMakefile: Separate custom command setup from actual creation,
2019-09-14, v3.16.0-rc1~85^2) and commit ea1bed34b2 (cmMakefile: Extract
utilities used for creation of custom commands, 2019-09-21,
v3.16.0-rc1~52^2~1) built additional infrastructure to thread that
dependence through the call stack.  Remove it all.
This commit is contained in:
Brad King 2020-10-30 11:17:24 -04:00
parent 2b1cc175ee
commit d29da8ed3e
5 changed files with 16 additions and 32 deletions

View File

@ -27,10 +27,3 @@ enum class cmObjectLibraryCommands
Reject, Reject,
Accept Accept
}; };
/** Utility target output source file name. */
struct cmUtilityOutput
{
std::string Name;
std::string NameCMP0049;
};

View File

@ -4115,7 +4115,7 @@ void AppendCustomCommandToOutput(cmLocalGenerator& lg,
void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt, void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
cmCommandOrigin origin, cmTarget* target, cmCommandOrigin origin, cmTarget* target,
const cmUtilityOutput& force, const char* workingDir, std::string const& force, const char* workingDir,
const std::vector<std::string>& byproducts, const std::vector<std::string>& byproducts,
const std::vector<std::string>& depends, const std::vector<std::string>& depends,
const cmCustomCommandLines& commandLines, const cmCustomCommandLines& commandLines,
@ -4131,7 +4131,7 @@ void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
std::string no_main_dependency; std::string no_main_dependency;
cmImplicitDependsList no_implicit_depends; cmImplicitDependsList no_implicit_depends;
cmSourceFile* rule = AddCustomCommand( cmSourceFile* rule = AddCustomCommand(
lg, lfbt, origin, { force.Name }, byproducts, depends, no_main_dependency, lg, lfbt, origin, { force }, byproducts, depends, no_main_dependency,
no_implicit_depends, commandLines, comment, workingDir, no_implicit_depends, commandLines, comment, workingDir,
/*replace=*/false, escapeOldStyle, uses_terminal, command_expand_lists, /*replace=*/false, escapeOldStyle, uses_terminal, command_expand_lists,
/*depfile=*/"", job_pool, stdPipesUTF8); /*depfile=*/"", job_pool, stdPipesUTF8);
@ -4139,9 +4139,7 @@ void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
lg.AddTargetByproducts(target, byproducts, lfbt, origin); lg.AddTargetByproducts(target, byproducts, lfbt, origin);
} }
if (!force.NameCMP0049.empty()) { target->AddSource(force);
target->AddSource(force.NameCMP0049);
}
} }
std::vector<std::string> ComputeISPCObjectSuffixes(cmGeneratorTarget* target) std::vector<std::string> ComputeISPCObjectSuffixes(cmGeneratorTarget* target)

View File

@ -684,7 +684,7 @@ void AppendCustomCommandToOutput(cmLocalGenerator& lg,
void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt, void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
cmCommandOrigin origin, cmTarget* target, cmCommandOrigin origin, cmTarget* target,
const cmUtilityOutput& force, const char* workingDir, std::string const& force, const char* workingDir,
const std::vector<std::string>& byproducts, const std::vector<std::string>& byproducts,
const std::vector<std::string>& depends, const std::vector<std::string>& depends,
const cmCustomCommandLines& commandLines, const cmCustomCommandLines& commandLines,

View File

@ -1257,25 +1257,18 @@ void cmMakefile::AppendCustomCommandToOutput(
} }
} }
cmUtilityOutput cmMakefile::GetUtilityOutput(cmTarget* target) std::string cmMakefile::GetUtilityOutput(cmTarget* target)
{ {
std::string force = cmStrCat(this->GetCurrentBinaryDirectory(), std::string force = cmStrCat(this->GetCurrentBinaryDirectory(),
"/CMakeFiles/", target->GetName()); "/CMakeFiles/", target->GetName());
std::string forceCMP0049 = target->GetSourceCMP0049(force); // The output is not actually created so mark it symbolic.
{ if (cmSourceFile* sf = this->GetOrCreateSource(
cmSourceFile* sf = nullptr; force, false, cmSourceFileLocationKind::Known)) {
if (!forceCMP0049.empty()) { sf->SetProperty("SYMBOLIC", "1");
sf = this->GetOrCreateSource(forceCMP0049, false, } else {
cmSourceFileLocationKind::Known); cmSystemTools::Error("Could not get source file entry for " + force);
}
// The output is not actually created so mark it symbolic.
if (sf) {
sf->SetProperty("SYMBOLIC", "1");
} else {
cmSystemTools::Error("Could not get source file entry for " + force);
}
} }
return { std::move(force), std::move(forceCMP0049) }; return force;
} }
cmTarget* cmMakefile::AddUtilityCommand( cmTarget* cmMakefile::AddUtilityCommand(
@ -1295,8 +1288,8 @@ cmTarget* cmMakefile::AddUtilityCommand(
} }
// Get the output name of the utility target and mark it generated. // Get the output name of the utility target and mark it generated.
cmUtilityOutput force = this->GetUtilityOutput(target); std::string force = this->GetUtilityOutput(target);
this->GetOrCreateGeneratedSource(force.Name); this->GetOrCreateGeneratedSource(force);
// Always create the byproduct sources and mark them generated. // Always create the byproduct sources and mark them generated.
this->CreateGeneratedOutputs(byproducts); this->CreateGeneratedOutputs(byproducts);

View File

@ -243,9 +243,9 @@ public:
bool excludeFromAll = false); bool excludeFromAll = false);
/** /**
* Return the utility target output source file name and the CMP0049 name. * Return the utility target output source file name.
*/ */
cmUtilityOutput GetUtilityOutput(cmTarget* target); std::string GetUtilityOutput(cmTarget* target);
/** /**
* Dispatch adding a utility to the build. A utility target is a command * Dispatch adding a utility to the build. A utility target is a command