mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 19:00:54 -06:00
CrayClang: Add support for this compiler
Add `CrayClang` compiler ID for newer Cray compilers. Fixes: #25102
This commit is contained in:
committed by
Brad King
parent
122ec98dcf
commit
80838316a8
5
Help/release/dev/CrayClang-compiler.rst
Normal file
5
Help/release/dev/CrayClang-compiler.rst
Normal file
@@ -0,0 +1,5 @@
|
||||
CrayClang-compiler
|
||||
------------------
|
||||
|
||||
* Cray Clang-based compilers are now supported with
|
||||
:variable:`compiler id <CMAKE_<LANG>_COMPILER_ID>` ``CrayClang``.
|
||||
@@ -18,6 +18,7 @@ Value Name
|
||||
``CCur`` Concurrent Fortran
|
||||
``Clang`` `LLVM Clang`_
|
||||
``Cray`` Cray Compiler
|
||||
``CrayClang`` Cray Clang-based Compiler
|
||||
``Embarcadero``, ``Borland`` `Embarcadero`_
|
||||
``Flang`` `Classic Flang Fortran Compiler`_
|
||||
``LLVMFlang`` `LLVM Flang Fortran Compiler`_
|
||||
|
||||
@@ -65,6 +65,7 @@ function(compiler_id_detection outvar lang)
|
||||
VisualAge
|
||||
NVHPC
|
||||
PGI
|
||||
CrayClang
|
||||
Cray
|
||||
TI
|
||||
FujitsuClang
|
||||
|
||||
30
Modules/Compiler/CrayClang-C.cmake
Normal file
30
Modules/Compiler/CrayClang-C.cmake
Normal file
@@ -0,0 +1,30 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
include(Compiler/CrayClang)
|
||||
__compiler_cray_clang(C)
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
||||
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -DNDEBUG")
|
||||
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION -std=c90)
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION -std=gnu90)
|
||||
set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C99_STANDARD_COMPILE_OPTION -std=c99)
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION -std=gnu99)
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION -std=c11)
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION -std=gnu11)
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION -std=c17)
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION -std=gnu17)
|
||||
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION -std=c2x)
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION -std=gnu2x)
|
||||
|
||||
__compiler_check_default_language_standard(C 15.0.0 17)
|
||||
35
Modules/Compiler/CrayClang-CXX.cmake
Normal file
35
Modules/Compiler/CrayClang-CXX.cmake
Normal file
@@ -0,0 +1,35 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
include(Compiler/CrayClang)
|
||||
__compiler_cray_clang(CXX)
|
||||
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
|
||||
string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -DNDEBUG")
|
||||
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -DNDEBUG")
|
||||
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -std=c++98)
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -std=gnu++98)
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -std=c++11)
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -std=gnu++11)
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION -std=c++14)
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -std=gnu++14)
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION -std=c++17)
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION -std=gnu++17)
|
||||
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION -std=c++20)
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION -std=gnu++20)
|
||||
|
||||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION -std=c++2b)
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION -std=gnu++2b)
|
||||
|
||||
__compiler_check_default_language_standard(CXX 15.0.0 14)
|
||||
8
Modules/Compiler/CrayClang-DetermineCompiler.cmake
Normal file
8
Modules/Compiler/CrayClang-DetermineCompiler.cmake
Normal file
@@ -0,0 +1,8 @@
|
||||
set(_compiler_id_pp_test "defined(__clang__) && defined(__cray__)")
|
||||
|
||||
set(_compiler_id_version_compute "
|
||||
# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__cray_major__)
|
||||
# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__cray_minor__)
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__cray_patchlevel__)
|
||||
# define @PREFIX@COMPILER_VERSION_INTERNAL_STR __clang_version__
|
||||
")
|
||||
17
Modules/Compiler/CrayClang.cmake
Normal file
17
Modules/Compiler/CrayClang.cmake
Normal file
@@ -0,0 +1,17 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
# This module is shared by multiple languages; use include blocker.
|
||||
if(__COMPILER_CRAYCLANG)
|
||||
return()
|
||||
endif()
|
||||
set(__COMPILER_CRAYCLANG 1)
|
||||
|
||||
include(Compiler/Clang)
|
||||
|
||||
macro (__compiler_cray_clang lang)
|
||||
set(__crayclang_ver "${CMAKE_${lang}_COMPILER_VERSION}")
|
||||
set("CMAKE_${lang}_COMPILER_VERSION" "${CMAKE_${lang}_COMPILER_VERSION_INTERNAL}")
|
||||
__compiler_clang(${lang})
|
||||
set("CMAKE_${lang}_COMPILER_VERSION" "${__crayclang_ver}")
|
||||
endmacro ()
|
||||
@@ -11,11 +11,11 @@ add_executable(target_compile_options
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
|
||||
)
|
||||
target_compile_options(target_compile_options
|
||||
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,IBMClang,Clang,GNU,LCC>:-DMY_PRIVATE_DEFINE>
|
||||
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,IBMClang,CrayClang,Clang,GNU,LCC>:-DMY_PRIVATE_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC>:-DMY_PUBLIC_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC,Clang,AppleClang,IBMClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC>:-DMY_INTERFACE_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,IBMClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
|
||||
)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
@@ -51,7 +51,7 @@ if(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
endif()
|
||||
|
||||
target_compile_options(consumer
|
||||
PRIVATE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,IBMClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
|
||||
PRIVATE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,CrayClang,IBMClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
|
||||
)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
|
||||
@@ -55,7 +55,7 @@ endmacro()
|
||||
# detailed features tables, not just meta-features
|
||||
|
||||
if (CMAKE_C_COMPILE_FEATURES)
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "^(LCC|Cray|PGI|NVHPC|XL|XLClang|IBMClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "^(LCC|Cray|CrayClang|PGI|NVHPC|XL|XLClang|IBMClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
set(C_expected_features ${CMAKE_C_COMPILE_FEATURES})
|
||||
list(FILTER C_expected_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
||||
endif()
|
||||
@@ -98,7 +98,7 @@ if (C_expected_features)
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILE_FEATURES)
|
||||
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "^(LCC|Cray|PGI|NVHPC|XL|XLClang|IBMClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "^(LCC|Cray|CrayClang|PGI|NVHPC|XL|XLClang|IBMClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
set(CXX_expected_features ${CMAKE_CXX_COMPILE_FEATURES})
|
||||
list(FILTER CXX_expected_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
||||
endif()
|
||||
|
||||
@@ -846,7 +846,7 @@ def gen_check_targets(c, g, inSource):
|
||||
e["compileGroups"] = apple_exe_framework["compileGroups"]
|
||||
e["link"] = apple_exe_framework["link"]
|
||||
|
||||
if cxx_compiler_id in ['Clang', 'AppleClang', 'LCC', 'GNU', 'Intel', 'IntelLLVM', 'MSVC', 'Embarcadero', 'IBMClang'] and g["name"] != "Xcode":
|
||||
if cxx_compiler_id in ['Clang', 'AppleClang', 'LCC', 'GNU', 'Intel', 'IntelLLVM', 'MSVC', 'Embarcadero', 'CrayClang', 'IBMClang'] and g["name"] != "Xcode":
|
||||
for e in expected:
|
||||
if e["name"] == "cxx_exe":
|
||||
if matches(g["name"], "^(Visual Studio |Ninja Multi-Config)"):
|
||||
|
||||
Reference in New Issue
Block a user