1
0
Эх сурвалжийг харах

Merge topic 'ninja-multi-automoc-regression'

23fe4b861f Ninja Multi-Config: Fix dependencies of custom commands

Acked-by: Kitware Robot <[email protected]>
Merge-request: !5238
Brad King 5 жил өмнө
parent
commit
5d952fd6e2

+ 1 - 0
Source/cmGlobalNinjaGenerator.cxx

@@ -1222,6 +1222,7 @@ void cmGlobalNinjaGenerator::AppendTargetDependsClosure(
     for (auto const& dep_target : this->GetTargetDirectDepends(target)) {
       if (!dep_target->IsInBuildSystem() ||
           (target->GetType() != cmStateEnums::UTILITY &&
+           dep_target->GetType() != cmStateEnums::UTILITY &&
            this->EnableCrossConfigBuild() && !dep_target.IsCross())) {
         continue;
       }

+ 5 - 0
Tests/RunCMake/NinjaMultiConfig/CustomCommandsAndTargets-release-leaf-byproduct-ninja-check.cmake

@@ -0,0 +1,5 @@
+check_files("${RunCMake_TEST_BINARY_DIR}"
+  INCLUDE
+    ${TARGET_BYPRODUCTS_LeafExe}
+    ${TARGET_BYPRODUCTS_RootCustom}
+  )

+ 1 - 0
Tests/RunCMake/NinjaMultiConfig/CustomCommandsAndTargets-release-leaf-exe-ninja-check.cmake

@@ -1,6 +1,7 @@
 check_files("${RunCMake_TEST_BINARY_DIR}"
   INCLUDE
     ${TARGET_FILE_LeafExe_Release}
+    ${TARGET_BYPRODUCTS_LeafExe}
     ${TARGET_BYPRODUCTS_RootCustom}
     ${TARGET_FILE_RootExe_Release}
   )

+ 8 - 6
Tests/RunCMake/NinjaMultiConfig/CustomCommandsAndTargets.cmake

@@ -35,13 +35,15 @@ add_subdirectory(CustomCommandsAndTargetsSubdir)
 create_targets(Top)
 
 add_executable(RootExe main.c)
-add_custom_target(RootCustom COMMAND ${CMAKE_COMMAND} -E touch Root.txt BYPRODUCTS Root.txt)
-add_executable(LeafExe main.c)
-add_custom_target(LeafCustom COMMAND ${CMAKE_COMMAND} -E touch Leaf.txt BYPRODUCTS Leaf.txt DEPENDS RootCustom RootExe)
-add_dependencies(LeafExe RootExe RootCustom)
+add_custom_target(RootCustom COMMAND ${CMAKE_COMMAND} -E touch RootCustom.txt BYPRODUCTS RootCustom.txt)
+add_custom_command(OUTPUT main.c COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/main.c ${CMAKE_CURRENT_BINARY_DIR}/main.c DEPENDS RootCustom)
+add_executable(LeafExe ${CMAKE_CURRENT_BINARY_DIR}/main.c)
+add_custom_target(LeafCustom COMMAND ${CMAKE_COMMAND} -E touch LeafCustom.txt BYPRODUCTS LeafCustom.txt DEPENDS RootCustom RootExe)
+add_dependencies(LeafExe RootExe)
 file(APPEND "${CMAKE_BINARY_DIR}/target_files_custom.cmake"
-"set(TARGET_BYPRODUCTS_LeafCustom [==[${CMAKE_CURRENT_BINARY_DIR}/Leaf.txt]==])
-set(TARGET_BYPRODUCTS_RootCustom [==[${CMAKE_CURRENT_BINARY_DIR}/Root.txt]==])
+"set(TARGET_BYPRODUCTS_LeafCustom [==[${CMAKE_CURRENT_BINARY_DIR}/LeafCustom.txt]==])
+set(TARGET_BYPRODUCTS_LeafExe [==[${CMAKE_CURRENT_BINARY_DIR}/main.c]==])
+set(TARGET_BYPRODUCTS_RootCustom [==[${CMAKE_CURRENT_BINARY_DIR}/RootCustom.txt]==])
 ")
 
 include(${CMAKE_CURRENT_LIST_DIR}/Common.cmake)

+ 7 - 0
Tests/RunCMake/NinjaMultiConfig/Qt5-automoc-check-ninja-stdout.txt

@@ -0,0 +1,7 @@
+  input: CUSTOM_COMMAND(
+    [^
+]*)*
+    \|\| exe_autogen_timestamp_deps:Debug(
+    [^
+]*)*
+  outputs:

+ 6 - 1
Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake

@@ -236,9 +236,11 @@ run_ninja(CustomCommandsAndTargets release-postbuild build-Release.ninja SubdirP
 run_cmake_build(CustomCommandsAndTargets debug-targetpostbuild Debug TopTargetPostBuild)
 run_ninja(CustomCommandsAndTargets release-targetpostbuild build-Release.ninja SubdirTargetPostBuild)
 run_cmake_build(CustomCommandsAndTargets release-clean Release clean:all)
-run_ninja(CustomCommandsAndTargets release-leaf-custom build-Release.ninja Leaf.txt)
+run_ninja(CustomCommandsAndTargets release-leaf-custom build-Release.ninja LeafCustom.txt)
 run_cmake_build(CustomCommandsAndTargets release-clean Release clean:all)
 run_ninja(CustomCommandsAndTargets release-leaf-exe build-Release.ninja LeafExe)
+run_cmake_build(CustomCommandsAndTargets release-clean Release clean:all)
+run_ninja(CustomCommandsAndTargets release-leaf-byproduct build-Release.ninja main.c)
 
 unset(RunCMake_TEST_BINARY_DIR)
 
@@ -314,4 +316,7 @@ if(CMake_TEST_Qt5)
   unset(RunCMake_TEST_OPTIONS)
   include(${RunCMake_TEST_BINARY_DIR}/target_files.cmake)
   run_cmake_build(Qt5 debug-in-release-graph Release exe:Debug)
+  if(CMAKE_TEST_Qt5Core_Version VERSION_GREATER_EQUAL 5.15.0)
+    run_ninja(Qt5 automoc-check build-Debug.ninja -t query exe_autogen/timestamp)
+  endif()
 endif()