diff options
author | Brad King <brad.king@kitware.com> | 2020-10-30 15:17:24 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-12-15 12:00:52 (GMT) |
commit | d29da8ed3eb757d10643039aa738bad0727c1b6a (patch) | |
tree | 4fafdbdd3a0182055c26a3dd94a3af5049434a01 | |
parent | 2b1cc175ee913477c3f1dc6978dd63b2fdaff7e2 (diff) | |
download | CMake-d29da8ed3eb757d10643039aa738bad0727c1b6a.zip CMake-d29da8ed3eb757d10643039aa738bad0727c1b6a.tar.gz CMake-d29da8ed3eb757d10643039aa738bad0727c1b6a.tar.bz2 |
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.
-rw-r--r-- | Source/cmCustomCommandTypes.h | 7 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 8 | ||||
-rw-r--r-- | Source/cmLocalGenerator.h | 2 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 27 | ||||
-rw-r--r-- | Source/cmMakefile.h | 4 |
5 files changed, 16 insertions, 32 deletions
diff --git a/Source/cmCustomCommandTypes.h b/Source/cmCustomCommandTypes.h index 5c900ce..324da9e 100644 --- a/Source/cmCustomCommandTypes.h +++ b/Source/cmCustomCommandTypes.h @@ -27,10 +27,3 @@ enum class cmObjectLibraryCommands Reject, Accept }; - -/** Utility target output source file name. */ -struct cmUtilityOutput -{ - std::string Name; - std::string NameCMP0049; -}; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 9f9d725..acc4c77 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -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) diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 581badb..0c7ea45 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -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, diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4e93785..6743a89 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -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); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index a864074..cab3e17 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -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 |