summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2021-03-26 13:23:13 (GMT)
committerKitware Robot <kwrobot@kitware.com>2021-03-26 13:23:19 (GMT)
commit40b806ee967e9931365d6d1f3946126be22fb4be (patch)
tree3a41d80f7da539dc6380f89a3cab071839d0bed8
parent61fd90b90c9dfec154aee7fb4d97574921e651d1 (diff)
parent3b864b2583d977898638336f5a096ff33955bd7a (diff)
downloadCMake-40b806ee967e9931365d6d1f3946126be22fb4be.zip
CMake-40b806ee967e9931365d6d1f3946126be22fb4be.tar.gz
CMake-40b806ee967e9931365d6d1f3946126be22fb4be.tar.bz2
Merge topic 'ninja-multi-long-custom-command'
3b864b2583 Ninja Multi-Config: Include configs in long CC scripts Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5941
-rw-r--r--Source/cmLocalNinjaGenerator.cxx6
-rw-r--r--Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake16
-rw-r--r--Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake5
3 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index 981c9cf..f2575c9 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -654,6 +654,12 @@ void cmLocalNinjaGenerator::WriteCustomCommandBuildStatement(
gg->WriteBuild(this->GetImplFileStream(fileConfig), build);
} else {
std::string customStep = cmSystemTools::GetFilenameName(ninjaOutputs[0]);
+ if (this->GlobalGenerator->IsMultiConfig()) {
+ customStep += '-';
+ customStep += fileConfig;
+ customStep += '-';
+ customStep += ccg.GetOutputConfig();
+ }
// Hash full path to make unique.
customStep += '-';
cmCryptoHash hash(cmCryptoHash::AlgoSHA256);
diff --git a/Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake b/Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake
new file mode 100644
index 0000000..00aa896
--- /dev/null
+++ b/Tests/RunCMake/NinjaMultiConfig/LongCommandLine.cmake
@@ -0,0 +1,16 @@
+enable_language(C)
+
+add_executable(generator main.c)
+
+string(REPEAT "." 5000 very_long)
+
+add_custom_command(
+ OUTPUT gen.txt
+ COMMAND generator "${very_long}" > gen.txt
+ )
+
+add_custom_target(
+ custom
+ ALL
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gen.txt"
+ )
diff --git a/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake b/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake
index 21c2658..0d4db52 100644
--- a/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake
+++ b/Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake
@@ -193,9 +193,14 @@ run_cmake_build(SimpleCrossConfigs all-relwithdebinfo-in-release-graph Release a
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/PostBuild-build)
set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all")
run_cmake_configure(PostBuild)
+unset(RunCMake_TEST_OPTIONS)
run_cmake_build(PostBuild release Release Exe)
run_cmake_build(PostBuild debug-in-release-graph Release Exe:Debug)
+set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LongCommandLine-build)
+run_cmake_configure(LongCommandLine)
+run_cmake_build(LongCommandLine release Release custom)
+
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/Framework-build)
set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all")
run_cmake_configure(Framework)