RunCMakeTest.cmake 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. include(RunCMake)
  2. run_cmake(NoQt)
  3. if (DEFINED with_qt_version)
  4. set(RunCMake_TEST_OPTIONS
  5. -Dwith_qt_version=${with_qt_version}
  6. "-DQt${with_qt_version}_DIR:PATH=${Qt${with_qt_version}_DIR}"
  7. "-DCMAKE_PREFIX_PATH:STRING=${CMAKE_PREFIX_PATH}"
  8. )
  9. run_cmake(QtInFunction)
  10. run_cmake(QtInFunctionNested)
  11. run_cmake(QtInFunctionProperty)
  12. run_cmake(CMP0111-imported-target-full)
  13. run_cmake(CMP0111-imported-target-libname)
  14. run_cmake(CMP0111-imported-target-implib-only)
  15. block()
  16. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocPredefs-build)
  17. run_cmake(MocPredefs)
  18. set(RunCMake_TEST_NO_CLEAN 1)
  19. run_cmake_command(MocPredefs-build ${CMAKE_COMMAND} --build . --config Debug)
  20. endblock()
  21. # Detect information from the toolchain:
  22. # - CMAKE_INCLUDE_FLAG_CXX
  23. # - CMAKE_INCLUDE_SYSTEM_FLAG_CXX
  24. run_cmake(Inspect)
  25. include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
  26. foreach(autogen_type IN ITEMS MOC UIC)
  27. block()
  28. set(RunCMake_TEST_VARIANT_DESCRIPTION "-AUTO${autogen_type}=ON")
  29. if(CMAKE_INCLUDE_SYSTEM_FLAG_CXX)
  30. if(RunCMake_GENERATOR MATCHES "Visual Studio")
  31. string(REGEX REPLACE "^-" "/" test_expect_stdout_common "${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}")
  32. else()
  33. set(test_expect_stdout_common "-*${CMAKE_INCLUDE_SYSTEM_FLAG_CXX}")
  34. endif()
  35. set(test_expect_stdout_1 "${test_expect_stdout_common}")
  36. set(test_expect_stdout_2 "${test_expect_stdout_common}")
  37. string(APPEND test_expect_stdout_1 " *(\"[^\"]*|([^ ]|\\ )*)[\\/]dummy_autogen[\\/]include")
  38. if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
  39. string(APPEND test_expect_stdout_1 "_Debug")
  40. endif()
  41. string(APPEND test_expect_stdout_2 " *(\"[^\"]*|([^ ]|\\ )*)[\\/]QtCore")
  42. set(test_expect_stdout "${test_expect_stdout_1}.*${test_expect_stdout_2}")
  43. block()
  44. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0151-new-build)
  45. run_cmake_with_options(CMP0151-new ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTO${autogen_type}=ON -DCMAKE_POLICY_DEFAULT_CMP0151=NEW)
  46. set(RunCMake_TEST_NO_CLEAN 1)
  47. set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}")
  48. run_cmake_command(CMP0151-new-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
  49. endblock()
  50. block()
  51. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenUseSystemIncludeOn-build)
  52. run_cmake_with_options(AutogenUseSystemIncludeOn ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTO${autogen_type}=ON -DCMAKE_POLICY_DEFAULT_CMP0151=NEW)
  53. set(RunCMake_TEST_NO_CLEAN 1)
  54. set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}")
  55. run_cmake_command(AutogenUseSystemIncludeOn-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
  56. endblock()
  57. endif()
  58. if(CMAKE_INCLUDE_FLAG_CXX)
  59. if(RunCMake_GENERATOR MATCHES "Visual Studio")
  60. string(REGEX REPLACE "^-" "/" test_expect_stdout "${CMAKE_INCLUDE_FLAG_CXX}")
  61. else()
  62. set(test_expect_stdout "-*${CMAKE_INCLUDE_FLAG_CXX}")
  63. endif()
  64. string(APPEND test_expect_stdout " *(\"[^\"]*|([^ ]|\\ )*)[\\/]dummy_autogen[\\/]include")
  65. if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
  66. string(APPEND test_expect_stdout "_Debug")
  67. endif()
  68. block()
  69. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/CMP0151-old-build)
  70. run_cmake_with_options(CMP0151-old ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTO${autogen_type}=ON -DCMAKE_POLICY_DEFAULT_CMP0151=OLD)
  71. set(RunCMake_TEST_NO_CLEAN 1)
  72. set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}")
  73. run_cmake_command(CMP0151-old-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
  74. endblock()
  75. block()
  76. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenUseSystemIncludeOff-build)
  77. run_cmake_with_options(AutogenUseSystemIncludeOff ${RunCMake_TEST_OPTIONS} -DCMAKE_AUTO${autogen_type}=ON -DCMAKE_POLICY_DEFAULT_CMP0151=NEW)
  78. set(RunCMake_TEST_NO_CLEAN 1)
  79. set(RunCMake_TEST_EXPECT_stdout "${test_expect_stdout}")
  80. run_cmake_command(AutogenUseSystemIncludeOff-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
  81. endblock()
  82. endif()
  83. endblock()
  84. endforeach()
  85. if(CMAKE_INCLUDE_FLAG_CXX)
  86. if(RunCMake_GENERATOR MATCHES "Make|Ninja")
  87. block()
  88. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AutogenSkipLinting-build)
  89. list(APPEND RunCMake_TEST_OPTIONS
  90. "-DPSEUDO_CPPCHECK=${PSEUDO_CPPCHECK}"
  91. "-DPSEUDO_CPPLINT=${PSEUDO_CPPLINT}"
  92. "-DPSEUDO_IWYU=${PSEUDO_IWYU}"
  93. "-DPSEUDO_TIDY=${PSEUDO_TIDY}")
  94. run_cmake(AutogenSkipLinting)
  95. set(RunCMake_TEST_NO_CLEAN 1)
  96. run_cmake_command(AutogenSkipLinting-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
  97. endblock()
  98. endif()
  99. endif()
  100. if(RunCMake_GENERATOR_IS_MULTI_CONFIG AND NOT RunCMake_GENERATOR MATCHES "Xcode")
  101. block()
  102. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocGeneratedFile-build)
  103. run_cmake(MocGeneratedFile)
  104. set(RunCMake_TEST_NO_CLEAN 1)
  105. run_cmake_command(MocGeneratedFile-build ${CMAKE_COMMAND} --build . --config Debug --verbose)
  106. endblock()
  107. if(RunCMake_GENERATOR MATCHES "Ninja Multi-Config")
  108. block()
  109. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/MocGeneratedFile-cross-config-build)
  110. list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_CROSS_CONFIGS=all)
  111. set(RunCMake_TEST_VARIANT_DESCRIPTION "-CMAKE_CROSS_CONFIGS-all")
  112. run_cmake(MocGeneratedFile)
  113. set(RunCMake_TEST_NO_CLEAN 1)
  114. set(RunCMake_TEST_VARIANT_DESCRIPTION "-Release")
  115. run_cmake_command(MocGeneratedFile-cross-config-build ${CMAKE_COMMAND} --build . --config Release --target libgen:Debug)
  116. set(RunCMake_TEST_VARIANT_DESCRIPTION "-Debug")
  117. run_cmake_command(MocGeneratedFile-cross-config-build ${CMAKE_COMMAND} --build . --config Debug --target libgen:Release)
  118. unset(RunCMake_TEST_VARIANT_DESCRIPTION)
  119. endblock()
  120. endif()
  121. endif()
  122. block()
  123. foreach(LIB_LINK_COUNT RANGE 1 4)
  124. set(RunCMake_TEST_VARIANT_DESCRIPTION "-link-count-${LIB_LINK_COUNT}")
  125. set(RunCMake_TEST_BINARY_DIR
  126. "${RunCMake_BINARY_DIR}/AutogenDuplicateDependency-build-${LIB_LINK_COUNT}")
  127. run_cmake_with_options(AutogenDuplicateDependency ${RunCMake_TEST_OPTIONS} -DLIB_LINK_COUNT=${LIB_LINK_COUNT})
  128. set(RunCMake_TEST_NO_CLEAN 1)
  129. set(RunCMake_TEST_EXPECT_stdout "fancy_generated.txt")
  130. run_cmake_command("AutogenDuplicateDependency-build"
  131. ${CMAKE_COMMAND} --build . --target App_autogen --verbose)
  132. unset(RunCMake_TEST_VARIANT_DESCRIPTION)
  133. unset(RunCMake_TEST_EXPECT_stdout)
  134. unset(RunCMake_TEST_NO_CLEAN)
  135. endforeach()
  136. endblock()
  137. endif ()