parent
28e90f9576
commit
6da99e671c
@ -41,6 +41,7 @@ include:
|
||||
TinyCC = Tiny C Compiler (tinycc.org)
|
||||
XL, VisualAge, zOS = IBM XL (ibm.com)
|
||||
XLClang = IBM Clang-based XL (ibm.com)
|
||||
IBMClang = IBM LLVM-based Compiler (ibm.com)
|
||||
|
||||
This variable is not guaranteed to be defined for all compilers or
|
||||
languages.
|
||||
|
@ -59,6 +59,7 @@ function(compiler_id_detection outvar lang)
|
||||
HP
|
||||
Compaq
|
||||
zOS
|
||||
IBMClang
|
||||
XLClang
|
||||
XL
|
||||
VisualAge
|
||||
|
5
Modules/Compiler/IBMClang-ASM.cmake
Normal file
5
Modules/Compiler/IBMClang-ASM.cmake
Normal file
@ -0,0 +1,5 @@
|
||||
include(Compiler/IBMClang)
|
||||
|
||||
set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;S;asm)
|
||||
|
||||
__compiler_ibmclang(ASM)
|
8
Modules/Compiler/IBMClang-C-DetermineCompiler.cmake
Normal file
8
Modules/Compiler/IBMClang-C-DetermineCompiler.cmake
Normal file
@ -0,0 +1,8 @@
|
||||
set(_compiler_id_pp_test "defined(__open_xl__) && defined(__clang__)")
|
||||
|
||||
set(_compiler_id_version_compute "
|
||||
# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__open_xl_version__)
|
||||
# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__open_xl_release__)
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__open_xl_modification__)
|
||||
# define @PREFIX@COMPILER_VERSION_TWEAK @MACRO_DEC@(__open_xl_ptf_fix_level__)
|
||||
")
|
30
Modules/Compiler/IBMClang-C.cmake
Normal file
30
Modules/Compiler/IBMClang-C.cmake
Normal file
@ -0,0 +1,30 @@
|
||||
include(Compiler/IBMClang)
|
||||
__compiler_ibmclang(C)
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
||||
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
||||
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1.0)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
endif ()
|
||||
__compiler_check_default_language_standard(C 17.1.0 17)
|
8
Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake
Normal file
8
Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake
Normal file
@ -0,0 +1,8 @@
|
||||
set(_compiler_id_pp_test "defined(__open_xl__) && defined(__clang__)")
|
||||
|
||||
set(_compiler_id_version_compute "
|
||||
# define @PREFIX@COMPILER_VERSION_MAJOR @MACRO_DEC@(__open_xl_version__)
|
||||
# define @PREFIX@COMPILER_VERSION_MINOR @MACRO_DEC@(__open_xl_release__)
|
||||
# define @PREFIX@COMPILER_VERSION_PATCH @MACRO_DEC@(__open_xl_modification__)
|
||||
# define @PREFIX@COMPILER_VERSION_TWEAK @MACRO_DEC@(__open_xl_ptf_fix_level__)
|
||||
")
|
39
Modules/Compiler/IBMClang-CXX.cmake
Normal file
39
Modules/Compiler/IBMClang-CXX.cmake
Normal file
@ -0,0 +1,39 @@
|
||||
include(Compiler/IBMClang)
|
||||
__compiler_ibmclang(CXX)
|
||||
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
|
||||
set(CMAKE_CXX11_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_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1.0)
|
||||
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")
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 17.1.0 17)
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OBJECT
|
||||
"<CMAKE_CXX_COMPILER> -x c++ <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
|
79
Modules/Compiler/IBMClang.cmake
Normal file
79
Modules/Compiler/IBMClang.cmake
Normal file
@ -0,0 +1,79 @@
|
||||
# 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_IBMClang)
|
||||
return()
|
||||
endif()
|
||||
set(__COMPILER_IBMClang 1)
|
||||
|
||||
include(Compiler/CMakeCommonCompilerMacros)
|
||||
|
||||
set(__pch_header_C "c-header")
|
||||
set(__pch_header_CXX "c++-header")
|
||||
set(__pch_header_OBJC "objective-c-header")
|
||||
set(__pch_header_OBJCXX "objective-c++-header")
|
||||
|
||||
include(Compiler/GNU)
|
||||
|
||||
macro(__compiler_ibmclang lang)
|
||||
__compiler_gnu(${lang})
|
||||
|
||||
# Feature flags.
|
||||
set(CMAKE_${lang}_VERBOSE_FLAG "-v")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "-fPIC")
|
||||
set(CMAKE_${lang}_RESPONSE_FILE_FLAG "@")
|
||||
set(CMAKE_${lang}_RESPONSE_FILE_LINK_FLAG "@")
|
||||
|
||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_VISIBILITY "-fvisibility=")
|
||||
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_TARGET "--target=")
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN "--gcc-toolchain=")
|
||||
|
||||
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG "-Xlinker" " ")
|
||||
set(CMAKE_${lang}_LINKER_WRAPPER_FLAG_SEP)
|
||||
|
||||
if(CMAKE_${lang}_COMPILER_TARGET)
|
||||
list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "--target=${CMAKE_${lang}_COMPILER_TARGET}")
|
||||
endif()
|
||||
|
||||
set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
|
||||
set(_CMAKE_${lang}_IPO_MAY_BE_SUPPORTED_BY_COMPILER YES)
|
||||
|
||||
set(_CMAKE_LTO_THIN TRUE)
|
||||
|
||||
if(_CMAKE_LTO_THIN)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto=thin")
|
||||
else()
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_IPO "-flto")
|
||||
endif()
|
||||
|
||||
set(__ar "${CMAKE_${lang}_COMPILER_AR}")
|
||||
set(__ranlib "${CMAKE_${lang}_COMPILER_RANLIB}")
|
||||
|
||||
set(CMAKE_${lang}_ARCHIVE_CREATE_IPO
|
||||
"\"${__ar}\" cr <TARGET> <LINK_FLAGS> <OBJECTS>"
|
||||
)
|
||||
|
||||
set(CMAKE_${lang}_ARCHIVE_APPEND_IPO
|
||||
"\"${__ar}\" r <TARGET> <LINK_FLAGS> <OBJECTS>"
|
||||
)
|
||||
|
||||
set(CMAKE_${lang}_ARCHIVE_FINISH_IPO
|
||||
"\"${__ranlib}\" <TARGET>"
|
||||
)
|
||||
|
||||
list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp")
|
||||
|
||||
set(CMAKE_PCH_EXTENSION .pch)
|
||||
|
||||
set(CMAKE_PCH_PROLOGUE "#pragma clang system_header")
|
||||
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_INSTANTIATE_TEMPLATES_PCH -fpch-instantiate-templates)
|
||||
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_USE_PCH -Xclang -include-pch -Xclang <PCH_FILE> -Xclang -include -Xclang <PCH_HEADER>)
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang <PCH_HEADER> -x ${__pch_header_${lang}})
|
||||
endmacro()
|
@ -231,7 +231,7 @@ macro(_test_compiler_hidden_visibility)
|
||||
AND NOT _INTEL_TOO_OLD
|
||||
AND NOT WIN32
|
||||
AND NOT CYGWIN
|
||||
AND NOT CMAKE_CXX_COMPILER_ID MATCHES XL
|
||||
AND NOT CMAKE_CXX_COMPILER_ID MATCHES "^(IBMClang|XLClang|XL)$"
|
||||
AND NOT CMAKE_CXX_COMPILER_ID MATCHES "^(PGI|NVHPC)$"
|
||||
AND NOT CMAKE_CXX_COMPILER_ID MATCHES Watcom)
|
||||
if (CMAKE_CXX_COMPILER_LOADED)
|
||||
|
2
Modules/Platform/AIX-IBMClang-C.cmake
Normal file
2
Modules/Platform/AIX-IBMClang-C.cmake
Normal file
@ -0,0 +1,2 @@
|
||||
include(Platform/AIX-IBMClang)
|
||||
__aix_compiler_ibmclang(C)
|
2
Modules/Platform/AIX-IBMClang-CXX.cmake
Normal file
2
Modules/Platform/AIX-IBMClang-CXX.cmake
Normal file
@ -0,0 +1,2 @@
|
||||
include(Platform/AIX-IBMClang)
|
||||
__aix_compiler_ibmclang(CXX)
|
15
Modules/Platform/AIX-IBMClang.cmake
Normal file
15
Modules/Platform/AIX-IBMClang.cmake
Normal file
@ -0,0 +1,15 @@
|
||||
# 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(__AIX_COMPILER_IBMCLANG)
|
||||
return()
|
||||
endif()
|
||||
set(__AIX_COMPILER_IBMCLANG 1)
|
||||
|
||||
include(Platform/AIX-GNU)
|
||||
|
||||
macro(__aix_compiler_ibmclang lang)
|
||||
__aix_compiler_gnu(${lang})
|
||||
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,Clang,GNU,LCC>:-DMY_PRIVATE_DEFINE>
|
||||
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,IBMClang,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>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
|
||||
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,LCC,Clang,AppleClang,IBMClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC>:-DMY_INTERFACE_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
|
||||
INTERFACE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,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>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
|
||||
PRIVATE $<$<CXX_COMPILER_ID:GNU,LCC,Clang,AppleClang,IBMClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
|
||||
)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|LCC")
|
||||
|
@ -18,7 +18,7 @@ macro(run_test feature lang)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IBMClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
get_property(c_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES)
|
||||
list(FILTER c_features EXCLUDE REGEX "^c_std_[0-9][0-9]")
|
||||
foreach(feature ${c_features})
|
||||
@ -26,7 +26,7 @@ if(NOT CMAKE_C_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujits
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IBMClang|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES)
|
||||
list(FILTER cxx_features EXCLUDE REGEX "^cxx_std_[0-9][0-9]")
|
||||
foreach(feature ${cxx_features})
|
||||
|
@ -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|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if (NOT CMAKE_C_COMPILER_ID MATCHES "^(LCC|Cray|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|IntelLLVM|Fujitsu|FujitsuClang)$")
|
||||
if (NOT CMAKE_CXX_COMPILER_ID MATCHES "^(LCC|Cray|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()
|
||||
|
@ -330,7 +330,7 @@ add_RunCMake_test(TargetPropertyGeneratorExpressions)
|
||||
add_RunCMake_test(Languages)
|
||||
add_RunCMake_test(LinkItemValidation)
|
||||
add_RunCMake_test(LinkStatic)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|Fujitsu|FujitsuClang)$")
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IBMClang|Fujitsu|FujitsuClang)$")
|
||||
add_RunCMake_test(MetaCompileFeatures)
|
||||
endif()
|
||||
if(MSVC)
|
||||
|
@ -760,7 +760,7 @@ def gen_check_targets(c, g, inSource):
|
||||
read_codemodel_json_data("targets/c_headers_2.json"),
|
||||
]
|
||||
|
||||
if cxx_compiler_id in ['Clang', 'AppleClang', 'LCC', 'GNU', 'Intel', 'IntelLLVM', 'MSVC', 'Embarcadero'] and g["name"] != "Xcode":
|
||||
if cxx_compiler_id in ['Clang', 'AppleClang', 'LCC', 'GNU', 'Intel', 'IntelLLVM', 'MSVC', 'Embarcadero', 'IBMClang'] and g["name"] != "Xcode":
|
||||
for e in expected:
|
||||
if e["name"] == "cxx_exe":
|
||||
if matches(g["name"], "^(Visual Studio |Ninja Multi-Config)"):
|
||||
|
Loading…
Reference in New Issue
Block a user