2019-01-17 06:22:38 +08:00
# Check if the host compiler is new enough.
# These versions are updated based on the following policy:
2019-01-22 07:53:52 +08:00
# llvm.org/docs/DeveloperPolicy.html#toolchain
2016-03-03 00:42:56 +08:00
2016-03-09 02:56:00 +08:00
include ( CheckCXXSourceCompiles )
2019-01-17 06:22:38 +08:00
set ( GCC_MIN 4.8 )
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
set ( GCC_SOFT_ERROR 5.1 )
2019-01-17 06:22:38 +08:00
set ( CLANG_MIN 3.1 )
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
set ( CLANG_SOFT_ERROR 3.5 )
2019-01-17 06:22:38 +08:00
set ( APPLECLANG_MIN 3.1 )
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
set ( APPLECLANG_SOFT_ERROR 6.0 )
set ( MSVC_MIN 19.00.24213.1 )
set ( MSVC_SOFT_ERROR 19.1 )
# Map the above GCC versions to dates: https://gcc.gnu.org/develop.html#timeline
set ( GCC_MIN_DATE 20130322 )
set ( GCC_SOFT_ERROR_DATE 20150422 )
2016-03-03 00:42:56 +08:00
2019-01-17 06:22:38 +08:00
if ( DEFINED LLVM_COMPILER_CHECKED )
return ( )
endif ( )
set ( LLVM_COMPILER_CHECKED ON )
if ( LLVM_FORCE_USE_OLD_TOOLCHAIN )
return ( )
endif ( )
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
function ( check_compiler_version NAME NICE_NAME MINIMUM_VERSION SOFT_ERROR_VERSION )
2019-01-17 06:22:38 +08:00
if ( NOT CMAKE_CXX_COMPILER_ID STREQUAL NAME )
return ( )
endif ( )
if ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS MINIMUM_VERSION )
message ( FATAL_ERROR "Host ${NICE_NAME} version must be at least ${MINIMUM_VERSION}, your version is ${CMAKE_CXX_COMPILER_VERSION}." )
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
elseif ( CMAKE_CXX_COMPILER_VERSION VERSION_LESS SOFT_ERROR_VERSION )
if ( LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN )
message ( WARNING "Host ${NICE_NAME} version should be at least ${SOFT_ERROR_VERSION} because LLVM will soon use new C++ features which your toolchain version doesn't support. Your version is ${CMAKE_CXX_COMPILER_VERSION}. Ignoring because you've set LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported." )
else ( )
message ( FATAL_ERROR "Host ${NICE_NAME} version should be at least ${SOFT_ERROR_VERSION} because LLVM will soon use new C++ features which your toolchain version doesn't support. Your version is ${CMAKE_CXX_COMPILER_VERSION}. You can temporarily opt out using LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported." )
endif ( )
2019-01-17 06:22:38 +08:00
endif ( )
endfunction ( check_compiler_version )
2016-03-03 00:42:56 +08:00
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
check_compiler_version ( "GNU" "GCC" ${ GCC_MIN } ${ GCC_SOFT_ERROR } )
check_compiler_version ( "Clang" "Clang" ${ CLANG_MIN } ${ CLANG_SOFT_ERROR } )
check_compiler_version ( "AppleClang" "Apple Clang" ${ APPLECLANG_MIN } ${ APPLECLANG_SOFT_ERROR } )
check_compiler_version ( "MSVC" "Visual Studio" ${ MSVC_MIN } ${ MSVC_SOFT_ERROR } )
2019-01-17 06:22:38 +08:00
if ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
if ( CMAKE_CXX_SIMULATE_ID MATCHES "MSVC" )
if ( CMAKE_CXX_SIMULATE_VERSION VERSION_LESS MSVC_MIN )
message ( FATAL_ERROR "Host Clang must have at least -fms-compatibility-version=${MSVC_MIN}, your version is ${CMAKE_CXX_COMPILER_VERSION}." )
endif ( )
set ( CLANG_CL 1 )
elseif ( NOT LLVM_ENABLE_LIBCXX )
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
# Test that we aren't using too old of a version of libstdc++.
2019-01-17 06:22:38 +08:00
set ( OLD_CMAKE_REQUIRED_FLAGS ${ CMAKE_REQUIRED_FLAGS } )
set ( OLD_CMAKE_REQUIRED_LIBRARIES ${ CMAKE_REQUIRED_LIBRARIES } )
set ( CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -std=c++0x" )
check_cxx_source_compiles ( "
Bump minimum toolchain version
Summary:
The RFC on moving past C++11 got good traction:
http://lists.llvm.org/pipermail/llvm-dev/2019-January/129452.html
This patch therefore bumps the toolchain versions according to our policy:
llvm.org/docs/DeveloperPolicy.html#toolchain
Subscribers: mgorny, jkorous, dexonsmith, llvm-commits, mehdi_amini, jyknight, rsmith, chandlerc, smeenai, hans, reames, lattner, lhames, erichkeane
Differential Revision: https://reviews.llvm.org/D57264
llvm-svn: 353374
2019-02-07 13:20:00 +08:00
#include <iosfwd>
#if defined(__GLIBCXX__)
#if __GLIBCXX__ < ${GCC_MIN_DATE}
#error Unsupported libstdc++ version
#endif
#endif
i n t main ( ) { r e t u r n 0 ; }
"
L L V M _ L I B S T D C X X _ M I N )
if ( NOT LLVM_LIBSTDCXX_MIN )
message ( FATAL_ERROR "libstdc++ version must be at least ${GCC_MIN}." )
endif ( )
check_cxx_source_compiles ( "
#include <iosfwd>
#if defined(__GLIBCXX__)
#if __GLIBCXX__ < ${GCC_SOFT_ERROR_DATE}
#error Unsupported libstdc++ version
#endif
#endif
i n t main ( ) { r e t u r n 0 ; }
"
L L V M _ L I B S T D C X X _ S O F T _ E R R O R )
if ( NOT LLVM_LIBSTDCXX_SOFT_ERROR )
if ( LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN )
message ( WARNING "libstdc++ version should be at least ${GCC_SOFT_ERROR} because LLVM will soon use new C++ features which your toolchain version doesn't support. Ignoring because you've set LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported." )
else ( )
message ( FATAL_ERROR "libstdc++ version should be at least ${GCC_SOFT_ERROR} because LLVM will soon use new C++ features which your toolchain version doesn't support. You can temporarily opt out using LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported." )
endif ( )
2016-03-03 00:42:56 +08:00
endif ( )
2019-01-17 06:22:38 +08:00
set ( CMAKE_REQUIRED_FLAGS ${ OLD_CMAKE_REQUIRED_FLAGS } )
set ( CMAKE_REQUIRED_LIBRARIES ${ OLD_CMAKE_REQUIRED_LIBRARIES } )
2016-03-03 00:42:56 +08:00
endif ( )
endif ( )