RunCMakeTest.cmake 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. include(RunCMake)
  2. macro(run_cmake_target test subtest target)
  3. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${test}-build)
  4. set(RunCMake_TEST_NO_CLEAN 1)
  5. run_cmake_command(${test}-${subtest} ${CMAKE_COMMAND} --build . --target ${target} ${ARGN})
  6. unset(RunCMake_TEST_BINARY_DIR)
  7. unset(RunCMake_TEST_NO_CLEAN)
  8. endmacro()
  9. run_cmake(bad_SHELL_usage)
  10. if(RunCMake_GENERATOR MATCHES "(Ninja|Makefile)")
  11. run_cmake(LINKER_expansion)
  12. run_cmake_target(LINKER_expansion LINKER linker)
  13. run_cmake_target(LINKER_expansion LINKER_SHELL linker_shell)
  14. run_cmake_target(LINKER_expansion LINKER_CONSUMER linker_consumer)
  15. endif()
  16. # Some environments are excluded because they are not able to honor verbose mode
  17. if (RunCMake_GENERATOR MATCHES "Makefiles|Ninja|Xcode|Visual Studio"
  18. AND NOT CMAKE_C_COMPILER_ID STREQUAL "Intel")
  19. set(RunCMake_TEST_OUTPUT_MERGE TRUE)
  20. foreach(policy IN ITEMS OLD NEW)
  21. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LINKER_expansion2-CMP0181-${policy}-build)
  22. run_cmake_with_options(LINKER_expansion2 -DCMP0181=${policy})
  23. run_cmake_target(LINKER_expansion2-CMP0181-${policy} EXE_LINKER_FLAGS exe_linker_flags --verbose)
  24. run_cmake_target(LINKER_expansion2-CMP0181-${policy} SHARED_LINKER_FLAGS shared_linker_flags --verbose)
  25. run_cmake_target(LINKER_expansion2-CMP0181-${policy} MODULE_LINKER_FLAGS module_linker_flags --verbose)
  26. if (NOT (RunCMake_GENERATOR MATCHES "Visual Studio" OR CMAKE_C_COMPILER_ID MATCHES "Borland|Embarcadero"))
  27. # Visual Studio generator and Borland, Embarcadero compilers do not use these variables
  28. set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/LINKER_expansion3-CMP0181-${policy}-build)
  29. run_cmake_with_options(LINKER_expansion3 -DCMP0181=${policy})
  30. run_cmake_target(LINKER_expansion3-CMP0181-${policy} C_EXE_CREATE_LINK_FLAGS c_exe_create_link_flags --verbose)
  31. if (NOT (CMAKE_C_COMPILER_ID STREQUAL "MSVC" OR CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"))
  32. # MSVC compiler does not use these variables
  33. run_cmake_target(LINKER_expansion3-CMP0181-${policy} C_SHARED_CREATE_LINK_FLAGS c_shared_create_link_flags --verbose)
  34. run_cmake_target(LINKER_expansion3-CMP0181-${policy} C_MODULE_CREATE_LINK_FLAGS c_module_create_link_flags --verbose)
  35. endif()
  36. endif()
  37. endforeach()
  38. endif()