ranges_env.cmake 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # Copyright Gonzalo Brito Gadeschi 2015
  2. # Distributed under the Boost Software License, Version 1.0.
  3. # (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
  4. #
  5. # Detects the C++ compiler, system, build-type, etc.
  6. include(CheckCXXCompilerFlag)
  7. if("x${CMAKE_CXX_COMPILER_ID}" MATCHES "x.*Clang")
  8. if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
  9. set (RANGES_CXX_COMPILER_CLANGCL TRUE)
  10. if (RANGES_VERBOSE_BUILD)
  11. message(STATUS "[range-v3]: compiler is clang-cl.")
  12. endif()
  13. else()
  14. set (RANGES_CXX_COMPILER_CLANG TRUE)
  15. if (RANGES_VERBOSE_BUILD)
  16. message(STATUS "[range-v3]: compiler is clang.")
  17. endif()
  18. endif()
  19. elseif(CMAKE_COMPILER_IS_GNUCXX)
  20. set (RANGES_CXX_COMPILER_GCC TRUE)
  21. if (RANGES_VERBOSE_BUILD)
  22. message(STATUS "[range-v3]: compiler is gcc.")
  23. endif()
  24. elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC")
  25. set (RANGES_CXX_COMPILER_MSVC TRUE)
  26. if (RANGES_VERBOSE_BUILD)
  27. message(STATUS "[range-v3]: compiler is msvc.")
  28. endif()
  29. else()
  30. message(WARNING "[range-v3 warning]: unknown compiler ${CMAKE_CXX_COMPILER_ID} !")
  31. endif()
  32. if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
  33. set (RANGES_ENV_MACOSX TRUE)
  34. if (RANGES_VERBOSE_BUILD)
  35. message(STATUS "[range-v3]: system is MacOSX.")
  36. endif()
  37. elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
  38. set (RANGES_ENV_LINUX TRUE)
  39. if (RANGES_VERBOSE_BUILD)
  40. message(STATUS "[range-v3]: system is Linux.")
  41. endif()
  42. elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
  43. set (RANGES_ENV_WINDOWS TRUE)
  44. if (RANGES_VERBOSE_BUILD)
  45. message(STATUS "[range-v3]: system is Windows.")
  46. endif()
  47. elseif(CMAKE_SYSTEM_NAME MATCHES "OpenBSD")
  48. set (RANGES_ENV_OPENBSD TRUE)
  49. if (RANGES_VERBOSE_BUILD)
  50. message(STATUS "[range-v3]: system is OpenBSD.")
  51. endif()
  52. else()
  53. message(WARNING "[range-v3 warning]: unknown system ${CMAKE_SYSTEM_NAME} !")
  54. endif()
  55. if(RANGES_CXX_STD MATCHES "^[0-9]+$")
  56. if(RANGES_CXX_COMPILER_MSVC AND RANGES_CXX_STD LESS 17)
  57. # MSVC is currently supported only in 17+ mode
  58. set(RANGES_CXX_STD 17)
  59. elseif(RANGES_CXX_STD LESS 14)
  60. set(RANGES_CXX_STD 14)
  61. endif()
  62. endif()
  63. # Build type
  64. set(RANGES_DEBUG_BUILD FALSE)
  65. set(RANGES_RELEASE_BUILD FALSE)
  66. if (CMAKE_BUILD_TYPE STREQUAL "Debug")
  67. set(RANGES_DEBUG_BUILD TRUE)
  68. if (RANGES_VERBOSE_BUILD)
  69. message(STATUS "[range-v3]: build type is debug.")
  70. endif()
  71. elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
  72. set(RANGES_RELEASE_BUILD TRUE)
  73. if (RANGES_VERBOSE_BUILD)
  74. message(STATUS "[range-v3]: build type is release.")
  75. endif()
  76. else()
  77. message(WARNING "[range-v3 warning]: unknown build type, defaults to release!")
  78. set(CMAKE_BUILD_TYPE "Release")
  79. set(RANGES_RELEASE_BUILD TRUE)
  80. endif()
  81. if(RANGE_V3_DOCS)
  82. find_package(Doxygen)
  83. endif()
  84. find_package(Git)