mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
Android: Require Clang 18 for -std=c++23
Update the Clang version checks added by * commiteacacc70fc(Clang: use -std=c++23 for Clang 17.0+, 2023-05-08, v3.27.0-rc1~115^2) * commit0183956d30(Clang: C++26 support, 2023-05-16, v3.27.0-rc1~85^2) to account for Android NDK r26's distribution of a Clang based on a development version of LLVM/Clang 17.0 that pre-dated addition of these flags. Follow the pattern from commit12e6796b62(Android: Do not pass non-existent Clang -std flags, 2018-04-02, v3.12.0-rc1~284^2), which fixed the same problem for `-std=c++17`. Fixes: #25281
This commit is contained in:
@@ -173,7 +173,12 @@ macro(__compiler_clang_cxx_standards lang)
|
||||
|
||||
unset(_clang_version_std17)
|
||||
|
||||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 17.0)
|
||||
set(_clang_version_std23 17.0)
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
|
||||
set(_clang_version_std23 18.0)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std23}")
|
||||
set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std=c++23")
|
||||
set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++23")
|
||||
set(CMAKE_${lang}26_STANDARD_COMPILE_OPTION "-std=c++26")
|
||||
@@ -183,6 +188,8 @@ macro(__compiler_clang_cxx_standards lang)
|
||||
set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++2b")
|
||||
endif()
|
||||
|
||||
unset(_clang_version_std23)
|
||||
|
||||
if("x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
# The MSVC standard library requires C++14, and MSVC itself has no
|
||||
# notion of operating in a mode not aware of at least that standard.
|
||||
|
||||
Reference in New Issue
Block a user