RunCMakeTest.cmake 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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_DIRECTORIES
  12. run_cmake(Inspect)
  13. set(info "${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
  14. include("${info}")
  15. if(CMAKE_HOST_UNIX)
  16. run_cmake_script(DetermineLinkerId)
  17. endif()
  18. if(CMAKE_C_IMPLICIT_LINK_DIRECTORIES MATCHES ";")
  19. run_cmake_with_options(ExcludeDirs "-Dinfo=${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
  20. endif()
  21. if(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Darwin|Windows|AIX|SunOS)$|BSD"
  22. AND NOT CMAKE_C_COMPILER_ID MATCHES "^(Borland|Embarcadero|OpenWatcom|OrangeC|Watcom)$"
  23. AND NOT (CMAKE_C_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$" AND CMAKE_SYSTEM_NAME STREQUAL "Windows")
  24. AND NOT CMAKE_C_COMPILER_LINKER MATCHES "Visual Studio 9\\.0"
  25. AND NOT RunCMake_GENERATOR MATCHES "Visual Studio 9 "
  26. )
  27. if(NOT CMAKE_C_COMPILER_LINKER OR NOT CMAKE_C_COMPILER_LINKER_ID OR NOT CMAKE_C_COMPILER_LINKER_VERSION)
  28. message(SEND_ERROR "C compiler's linker not identified:\n"
  29. " CMAKE_C_COMPILER='${CMAKE_C_COMPILER}'\n"
  30. " CMAKE_C_COMPILER_ID='${CMAKE_C_COMPILER_ID}'\n"
  31. " CMAKE_C_COMPILER_VERSION='${CMAKE_C_COMPILER_VERSION}'\n"
  32. " CMAKE_C_COMPILER_LINKER='${CMAKE_C_COMPILER_LINKER}'\n"
  33. " CMAKE_C_COMPILER_LINKER_ID='${CMAKE_C_COMPILER_LINKER_ID}'\n"
  34. " CMAKE_C_COMPILER_LINKER_VERSION='${CMAKE_C_COMPILER_LINKER_VERSION}'\n"
  35. )
  36. endif()
  37. endif()