1# Copyright 2017-2019 Peter Dimov 2# Distributed under the Boost Software License, Version 1.0. 3# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) 4 5string(REGEX MATCHALL "[0-9]+" _BOOST_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION}) 6 7list(GET _BOOST_COMPILER_VERSION 0 _BOOST_COMPILER_VERSION_MAJOR) 8list(GET _BOOST_COMPILER_VERSION 1 _BOOST_COMPILER_VERSION_MINOR) 9 10if(BORLAND) 11 12 # Borland is unversioned 13 14 set(BOOST_DETECTED_TOOLSET "bcb") 15 16 set(_BOOST_COMPILER_VERSION_MAJOR) 17 set(_BOOST_COMPILER_VERSION_MINOR) 18 19elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") 20 21 set(BOOST_DETECTED_TOOLSET "clang-darwin") 22 23elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") 24 25 if(MSVC) 26 set(BOOST_DETECTED_TOOLSET "clangw") 27 else() 28 set(BOOST_DETECTED_TOOLSET "clang") 29 endif() 30 31 if(_BOOST_COMPILER_VERSION_MAJOR GREATER 3) 32 set(_BOOST_COMPILER_VERSION_MINOR) 33 endif() 34 35elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel") 36 37 if(WIN32) 38 39 # Intel-Win is unversioned 40 41 set(BOOST_DETECTED_TOOLSET "iw") 42 43 set(_BOOST_COMPILER_VERSION_MAJOR) 44 set(_BOOST_COMPILER_VERSION_MINOR) 45 46 else() 47 48 set(BOOST_DETECTED_TOOLSET "il") 49 50 endif() 51 52elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MIPSpro") 53 54 set(BOOST_DETECTED_TOOLSET "mp") 55 56elseif(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") 57 58 set(BOOST_DETECTED_TOOLSET "sun") 59 60elseif(CMAKE_CXX_COMPILER_ID STREQUAL "IBM XL") 61 62 set(BOOST_DETECTED_TOOLSET "xlc") 63 64elseif(MINGW) 65 66 set(BOOST_DETECTED_TOOLSET "mgw") 67 68 if(_BOOST_COMPILER_VERSION_MAJOR GREATER 4) 69 set(_BOOST_COMPILER_VERSION_MINOR) 70 endif() 71 72elseif(CMAKE_COMPILER_IS_GNUCXX) 73 74 if(APPLE) 75 set(BOOST_DETECTED_TOOLSET "xgcc") 76 else() 77 set(BOOST_DETECTED_TOOLSET "gcc") 78 endif() 79 80 if(_BOOST_COMPILER_VERSION_MAJOR GREATER 4) 81 set(_BOOST_COMPILER_VERSION_MINOR) 82 endif() 83 84elseif(MSVC) 85 86 if((MSVC_VERSION GREATER 1919) AND (MSVC_VERSION LESS 1930)) 87 88 set(BOOST_DETECTED_TOOLSET "vc142") 89 90 elseif((MSVC_VERSION GREATER 1909) AND (MSVC_VERSION LESS 1920)) 91 92 set(BOOST_DETECTED_TOOLSET "vc141") 93 94 elseif(MSVC_VERSION EQUAL 1900) 95 96 set(BOOST_DETECTED_TOOLSET "vc140") 97 98 elseif(MSVC_VERSION EQUAL 1800) 99 100 set(BOOST_DETECTED_TOOLSET "vc120") 101 102 elseif(MSVC_VERSION EQUAL 1700) 103 104 set(BOOST_DETECTED_TOOLSET "vc110") 105 106 elseif(MSVC_VERSION EQUAL 1600) 107 108 set(BOOST_DETECTED_TOOLSET "vc100") 109 110 elseif(MSVC_VERSION EQUAL 1500) 111 112 set(BOOST_DETECTED_TOOLSET "vc90") 113 114 elseif(MSVC_VERSION EQUAL 1400) 115 116 set(BOOST_DETECTED_TOOLSET "vc80") 117 118 elseif(MSVC_VERSION EQUAL 1310) 119 120 set(BOOST_DETECTED_TOOLSET "vc71") 121 122 elseif(MSVC_VERSION EQUAL 1300) 123 124 set(BOOST_DETECTED_TOOLSET "vc7") 125 126 elseif(MSVC_VERSION EQUAL 1200) 127 128 set(BOOST_DETECTED_TOOLSET "vc6") 129 130 endif() 131 132 set(_BOOST_COMPILER_VERSION_MAJOR) 133 set(_BOOST_COMPILER_VERSION_MINOR) 134 135endif() 136 137# Add version 138 139if(BOOST_DETECTED_TOOLSET) 140 set(BOOST_DETECTED_TOOLSET ${BOOST_DETECTED_TOOLSET}${_BOOST_COMPILER_VERSION_MAJOR}${_BOOST_COMPILER_VERSION_MINOR}) 141endif() 142 143unset(_BOOST_COMPILER_VERSION) 144unset(_BOOST_COMPILER_VERSION_MAJOR) 145unset(_BOOST_COMPILER_VERSION_MINOR) 146 147if("${BOOST_DETECTED_TOOLSET}" STREQUAL "") 148 149 # Unknown toolset 150 message(STATUS "Boost toolset is unknown (compiler ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION})") 151 152elseif(Boost_DEBUG) 153 154 message(STATUS "Boost toolset is ${BOOST_DETECTED_TOOLSET} (${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION})") 155 156endif() 157