CMakeLists.txt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. cmake_minimum_required(VERSION 2.8)
  2. project(CheckCXXCompilerFlag)
  3. message(STATUS "CTEST_FULL_OUTPUT (Avoid ctest truncation of output)")
  4. set(CMAKE_VERBOSE_MAKEFILE 1)
  5. macro(TEST_FAIL value msg)
  6. if (${value})
  7. message (SEND_ERROR "Test fail:" ${msg} ${Out} )
  8. endif ()
  9. endmacro()
  10. macro(TEST_PASS value msg)
  11. if (NOT ${value})
  12. message (SEND_ERROR "Test fail:" ${msg} ${Out} )
  13. endif ()
  14. endmacro()
  15. if(CMAKE_COMPILER_IS_GNUCXX)
  16. exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info)
  17. string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
  18. # gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
  19. # patch level, handle this here:
  20. if(NOT _gcc_version)
  21. string (REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0" _gcc_version "${_gcc_version_info}")
  22. endif()
  23. endif()
  24. if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
  25. exec_program(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE _clang_version_info)
  26. string (REGEX REPLACE ".*version ([0-9]\\.[0-9]).*" "\\1" _clang_version "${_clang_version_info}")
  27. endif()
  28. if(CMAKE_CXX_COMPILER_ID MATCHES Intel)
  29. exec_program(${CMAKE_CXX_COMPILER} ARGS -V OUTPUT_VARIABLE _intel_version_info)
  30. string (REGEX REPLACE ".*Version ([0-9]+(\\.[0-9]+)+).*" "\\1" _intel_version "${_intel_version_info}")
  31. endif()
  32. message("Platform:\n WIN32: ${WIN32}\n UNIX: ${UNIX}\n APPLE: ${APPLE}\n MINGW: ${MINGW}\n CYGWIN: ${CYGWIN}\n"
  33. " MSVC: ${MSVC}\n MSVC60: ${MSVC60}\n MSVC70: ${MSVC70}\n MSVC71: ${MSVC71}\n MSVC80: ${MSVC80}\n MSVC90: ${MSVC90}\n MSVC10: ${MSVC10}\n"
  34. " GCC: ${_gcc_version}\n"
  35. " Clang: ${_clang_version}\n"
  36. " Intel: ${_intel_version}\n"
  37. )
  38. include(CheckCXXCompilerFlag)
  39. check_cxx_compiler_flag(-fvisibility=hidden HAS_HIDDEN_VISIBILITY)
  40. message("HAS_HIDDEN_VISIBILITY: ${HAS_HIDDEN_VISIBILITY}\n\nCOMPILE OUTPUT:\n${OUTPUT}")
  41. if(CMAKE_COMPILER_IS_GNUCXX)
  42. if(NOT WIN32)
  43. # test_pass(HAS_HIDDEN_VISIBILITY "GCC should support hidden visibility, but does not.")
  44. endif()
  45. else()
  46. message("Unhandled Platform")
  47. endif()
  48. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
  49. check_cxx_compiler_flag("-x c++" HAVE_X_CXX)
  50. if(NOT HAVE_X_CXX)
  51. message(FATAL_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed")
  52. endif()
  53. endif()