diff options
author | Brad King <brad.king@kitware.com> | 2023-01-26 14:10:51 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-01-26 14:11:08 (GMT) |
commit | eb130c0864775846a6e15c9da97251d73c736f5b (patch) | |
tree | bf27771b0dd19b7c69c202bef4edc977f7b3d393 | |
parent | 3c9766d3a256b7ad1285c5f00bafa176d753db5a (diff) | |
parent | 8024c41685f898656c350a503a81acbafacdf452 (diff) | |
download | CMake-eb130c0864775846a6e15c9da97251d73c736f5b.zip CMake-eb130c0864775846a6e15c9da97251d73c736f5b.tar.gz CMake-eb130c0864775846a6e15c9da97251d73c736f5b.tar.bz2 |
Merge topic 'vs-BuildInParallel'
8024c41685 VS: Do not concurrently build custom commands with generated MAIN_DEPENDENCY
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8120
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.cxx | 15 | ||||
-rw-r--r-- | Source/cmVisualStudio10TargetGenerator.h | 7 |
2 files changed, 16 insertions, 6 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 5065876..7b3f348 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -1806,9 +1806,13 @@ void cmVisualStudio10TargetGenerator::WriteCustomRule( this->WriteCustomRuleCSharp(e0, c, name, script, additional_inputs.str(), outputs.str(), comment, ccg); } else { - this->WriteCustomRuleCpp(*spe2, c, script, additional_inputs.str(), - outputs.str(), comment, ccg, symbolic, - command.GetUsesTerminal()); + this->WriteCustomRuleCpp( + *spe2, c, script, additional_inputs.str(), outputs.str(), comment, ccg, + symbolic, + (command.GetUsesTerminal() || + (command.HasMainDependency() && source->GetIsGenerated())) + ? BuildInParallel::No + : BuildInParallel::Yes); } } } @@ -1817,10 +1821,11 @@ void cmVisualStudio10TargetGenerator::WriteCustomRuleCpp( Elem& e2, std::string const& config, std::string const& script, std::string const& additional_inputs, std::string const& outputs, std::string const& comment, cmCustomCommandGenerator const& ccg, - bool symbolic, bool uses_terminal) + bool symbolic, BuildInParallel buildInParallel) { const std::string cond = this->CalcCondition(config); - if (this->GlobalGenerator->IsBuildInParallelSupported() && !uses_terminal) { + if (buildInParallel == BuildInParallel::Yes && + this->GlobalGenerator->IsBuildInParallelSupported()) { e2.WritePlatformConfigTag("BuildInParallel", cond, "true"); } e2.WritePlatformConfigTag("Message", cond, comment); diff --git a/Source/cmVisualStudio10TargetGenerator.h b/Source/cmVisualStudio10TargetGenerator.h index 194fbaa..e00f692 100644 --- a/Source/cmVisualStudio10TargetGenerator.h +++ b/Source/cmVisualStudio10TargetGenerator.h @@ -152,13 +152,18 @@ private: void OutputLinkIncremental(Elem& e1, std::string const& configName); void WriteCustomRule(Elem& e0, cmSourceFile const* source, cmCustomCommand const& command); + enum class BuildInParallel + { + No, + Yes, + }; void WriteCustomRuleCpp(Elem& e2, std::string const& config, std::string const& script, std::string const& additional_inputs, std::string const& outputs, std::string const& comment, cmCustomCommandGenerator const& ccg, bool symbolic, - bool uses_terminal); + BuildInParallel buildInParallel); void WriteCustomRuleCSharp(Elem& e0, std::string const& config, std::string const& commandName, std::string const& script, |