summaryrefslogtreecommitdiffstats
path: root/Source/cmLocalNinjaGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2016-04-05 20:20:28 (GMT)
committerBrad King <brad.king@kitware.com>2016-04-05 20:20:28 (GMT)
commitadd7abc8352b87184579401cb2493c72e07aa212 (patch)
tree365a148a216223f3100be01b1be7a02b4d1877ca /Source/cmLocalNinjaGenerator.cxx
parentff805113c766371677b97d94cd3092cf6ff0bbf6 (diff)
downloadCMake-add7abc8352b87184579401cb2493c72e07aa212.zip
CMake-add7abc8352b87184579401cb2493c72e07aa212.tar.gz
CMake-add7abc8352b87184579401cb2493c72e07aa212.tar.bz2
Ninja: Restat custom command byproducts even with a SYMBOLIC output (#16049)
The change in commit v3.5.0-rc1~198^2 (Ninja: Always re-run custom commands that have symbolic dependencies, 2015-11-19) broke the byproducts feature added by commit v3.2.0-rc1~340^2~2 (Add an option for explicit BYPRODUCTS of custom commands, 2014-11-13) when SYMBOLIC outputs also appear. This case occurs with AUTORCC-generated custom targets because the output is SYMBOLIC (to always run) and the generated file is a byproduct (for restat so dependents do not run unnecessarily). The two use cases conflict because Ninja does not support per-output restat. Favor restat whenever byproducts are present because it is required for byproducts to work correctly. In use cases where we want an always-run chain we simply will not be able to also use byproducts.
Diffstat (limited to 'Source/cmLocalNinjaGenerator.cxx')
-rw-r--r--Source/cmLocalNinjaGenerator.cxx2
1 files changed, 1 insertions, 1 deletions
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index 6a5949c..2d13507 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -444,7 +444,7 @@ cmLocalNinjaGenerator::WriteCustomCommandBuildStatement(
this->ConstructComment(ccg),
"Custom command for " + ninjaOutputs[0],
cc->GetUsesTerminal(),
- /*restat*/!symbolic,
+ /*restat*/!symbolic || !byproducts.empty(),
ninjaOutputs,
ninjaDeps,
orderOnlyDeps);