RunCMakeTest.cmake 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. include(RunCMake)
  2. run_cmake(ParseImplicitLinkInfo)
  3. # Detect information from the toolchain:
  4. # - CMAKE_SYSTEM_NAME
  5. # - CMAKE_C_COMPILER
  6. # - CMAKE_C_COMPILER_ID
  7. # - CMAKE_C_COMPILER_VERSION
  8. # - CMAKE_C_COMPILER_LINKER
  9. # - CMAKE_C_COMPILER_LINKER_ID
  10. # - CMAKE_C_COMPILER_LINKER_VERSION
  11. # - CMAKE_C_IMPLICIT_LINK_LIBRARIES
  12. # - CMAKE_C_IMPLICIT_LINK_DIRECTORIES
  13. run_cmake(Inspect)
  14. set(info "${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
  15. include("${info}")
  16. if(CMAKE_HOST_UNIX)
  17. run_cmake_script(DetermineLinkerId)
  18. endif()
  19. if(CMAKE_C_IMPLICIT_LINK_LIBRARIES MATCHES ";")
  20. run_cmake_with_options(ExcludeLibs "-Dinfo=${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
  21. endif()
  22. if(CMAKE_C_IMPLICIT_LINK_DIRECTORIES MATCHES ";")
  23. run_cmake_with_options(ExcludeDirs "-Dinfo=${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
  24. endif()
  25. if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin|Windows|AIX|SunOS)$|BSD"
  26. AND NOT CMAKE_C_COMPILER_ID MATCHES "^(Borland|Embarcadero|OpenWatcom|OrangeC|Watcom)$"
  27. AND NOT (CMAKE_C_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$" AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
  28. AND NOT CMAKE_C_COMPILER_LINKER MATCHES "Microsoft Visual Studio 9\\.0/VC/bin"
  29. )
  30. if(NOT CMAKE_C_COMPILER_LINKER OR NOT CMAKE_C_COMPILER_LINKER_ID OR NOT CMAKE_C_COMPILER_LINKER_VERSION)
  31. message(SEND_ERROR "C compiler's linker not identified:\n"
  32. " CMAKE_C_COMPILER='${CMAKE_C_COMPILER}'\n"
  33. " CMAKE_C_COMPILER_ID='${CMAKE_C_COMPILER_ID}'\n"
  34. " CMAKE_C_COMPILER_VERSION='${CMAKE_C_COMPILER_VERSION}'\n"
  35. " CMAKE_C_COMPILER_LINKER='${CMAKE_C_COMPILER_LINKER}'\n"
  36. " CMAKE_C_COMPILER_LINKER_ID='${CMAKE_C_COMPILER_LINKER_ID}'\n"
  37. " CMAKE_C_COMPILER_LINKER_VERSION='${CMAKE_C_COMPILER_LINKER_VERSION}'\n"
  38. )
  39. endif()
  40. endif()
  41. if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES Clang)
  42. run_cmake_with_options(CheckCompilerLinkerId "-DCMAKE_C_FLAGS=-fdiagnostics-color=always")
  43. endif()