summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-01-26 14:10:51 (GMT)
committerKitware Robot <kwrobot@kitware.com>2023-01-26 14:11:08 (GMT)
commiteb130c0864775846a6e15c9da97251d73c736f5b (patch)
treebf27771b0dd19b7c69c202bef4edc977f7b3d393 /Source
parent3c9766d3a256b7ad1285c5f00bafa176d753db5a (diff)
parent8024c41685f898656c350a503a81acbafacdf452 (diff)
downloadCMake-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
Diffstat (limited to 'Source')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx15
-rw-r--r--Source/cmVisualStudio10TargetGenerator.h7
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,