diff options
author | Brad King <brad.king@kitware.com> | 2016-04-05 20:27:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-04-05 20:27:08 (GMT) |
commit | 9729dfb76547cf88183314ece57cb14e1d20f046 (patch) | |
tree | 3a0e300316272f84f50b3caef49d11ea7727595d | |
parent | 4ffd85cfb598c3927db7a7acf2f9af4131be488e (diff) | |
parent | add7abc8352b87184579401cb2493c72e07aa212 (diff) | |
download | CMake-9729dfb76547cf88183314ece57cb14e1d20f046.zip CMake-9729dfb76547cf88183314ece57cb14e1d20f046.tar.gz CMake-9729dfb76547cf88183314ece57cb14e1d20f046.tar.bz2 |
Merge branch 'ninja-restat-custom-command-byproducts' into release
-rw-r--r-- | Source/cmLocalNinjaGenerator.cxx | 4 | ||||
-rw-r--r-- | Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake | 28 | ||||
-rw-r--r-- | Tests/RunCMake/BuildDepends/RunCMakeTest.cmake | 1 |
3 files changed, 31 insertions, 2 deletions
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index b2927a9..2d13507 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -400,7 +400,7 @@ cmLocalNinjaGenerator::WriteCustomCommandBuildStatement( bool symbolic = false; for (std::vector<std::string>::const_iterator o = outputs.begin(); - o != outputs.end(); ++o) + !symbolic && o != outputs.end(); ++o) { if (cmSourceFile* sf = this->Makefile->GetSource(*o)) { @@ -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); diff --git a/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake b/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake new file mode 100644 index 0000000..6948c35 --- /dev/null +++ b/Tests/RunCMake/BuildDepends/Custom-Symbolic-and-Byproduct.cmake @@ -0,0 +1,28 @@ +add_custom_command( + OUTPUT gen-byproduct gen-byproduct-stamp + BYPRODUCTS byproduct + COMMAND ${CMAKE_COMMAND} -E touch gen-byproduct-stamp + COMMAND ${CMAKE_COMMAND} -E copy_if_different gen-byproduct-stamp byproduct + ) +set_property(SOURCE gen-byproduct PROPERTY SYMBOLIC 1) +add_custom_target(produce DEPENDS gen-byproduct) + +add_custom_command( + OUTPUT use-byproduct + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/byproduct + COMMAND ${CMAKE_COMMAND} -E touch use-byproduct + ) +add_custom_target(drive ALL DEPENDS use-byproduct) +add_dependencies(drive produce) + +file(GENERATE OUTPUT check-$<LOWER_CASE:$<CONFIG>>.cmake CONTENT " +if (check_step EQUAL 1) + set(check_pairs + \"${CMAKE_CURRENT_BINARY_DIR}/use-byproduct|${CMAKE_CURRENT_BINARY_DIR}/gen-byproduct-stamp\" + ) +else() + set(check_pairs + \"${CMAKE_CURRENT_BINARY_DIR}/gen-byproduct-stamp|${CMAKE_CURRENT_BINARY_DIR}/use-byproduct\" + ) +endif() +") diff --git a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake index 31c72fb..0dd27d4 100644 --- a/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake +++ b/Tests/RunCMake/BuildDepends/RunCMakeTest.cmake @@ -39,4 +39,5 @@ if(NOT RunCMake_GENERATOR MATCHES "Visual Studio [67]|Xcode") unset(run_BuildDepends_skip_step_2) endif() +run_BuildDepends(Custom-Symbolic-and-Byproduct) run_BuildDepends(Custom-Always) |