Commit d29da8ed authored by Brad King's avatar Brad King
Browse files

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 0ed5ce4c (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 0e1faa28
(cmMakefile: Separate custom command setup from actual creation,
2019-09-14, v3.16.0-rc1~85^2) and commit ea1bed34 (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.
parent 2b1cc175
......@@ -27,10 +27,3 @@ enum class cmObjectLibraryCommands
Reject,
Accept
};
/** Utility target output source file name. */
struct cmUtilityOutput
{
std::string Name;
std::string NameCMP0049;
};
......@@ -4115,7 +4115,7 @@ void AppendCustomCommandToOutput(cmLocalGenerator& lg,
void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
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>& depends,
const cmCustomCommandLines& commandLines,
......@@ -4131,7 +4131,7 @@ void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
std::string no_main_dependency;
cmImplicitDependsList no_implicit_depends;
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,
/*replace=*/false, escapeOldStyle, uses_terminal, command_expand_lists,
/*depfile=*/"", job_pool, stdPipesUTF8);
......@@ -4139,9 +4139,7 @@ void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
lg.AddTargetByproducts(target, byproducts, lfbt, origin);
}
if (!force.NameCMP0049.empty()) {
target->AddSource(force.NameCMP0049);
}
target->AddSource(force);
}
std::vector<std::string> ComputeISPCObjectSuffixes(cmGeneratorTarget* target)
......
......@@ -684,7 +684,7 @@ void AppendCustomCommandToOutput(cmLocalGenerator& lg,
void AddUtilityCommand(cmLocalGenerator& lg, const cmListFileBacktrace& lfbt,
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>& depends,
const cmCustomCommandLines& commandLines,
......
......@@ -1257,25 +1257,18 @@ void cmMakefile::AppendCustomCommandToOutput(
}
}
cmUtilityOutput cmMakefile::GetUtilityOutput(cmTarget* target)
std::string cmMakefile::GetUtilityOutput(cmTarget* target)
{
std::string force = cmStrCat(this->GetCurrentBinaryDirectory(),
"/CMakeFiles/", target->GetName());
std::string forceCMP0049 = target->GetSourceCMP0049(force);
{
cmSourceFile* sf = nullptr;
if (!forceCMP0049.empty()) {
sf = this->GetOrCreateSource(forceCMP0049, false,
cmSourceFileLocationKind::Known);
}
// 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);
}
// The output is not actually created so mark it symbolic.
if (cmSourceFile* sf = this->GetOrCreateSource(
force, false, cmSourceFileLocationKind::Known)) {
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(
......@@ -1295,8 +1288,8 @@ cmTarget* cmMakefile::AddUtilityCommand(
}
// Get the output name of the utility target and mark it generated.
cmUtilityOutput force = this->GetUtilityOutput(target);
this->GetOrCreateGeneratedSource(force.Name);
std::string force = this->GetUtilityOutput(target);
this->GetOrCreateGeneratedSource(force);
// Always create the byproduct sources and mark them generated.
this->CreateGeneratedOutputs(byproducts);
......
......@@ -243,9 +243,9 @@ public:
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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment