diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 5e880761ad..9c3cef67c4 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -281,6 +281,7 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src) elseif("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xGNU" OR "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xAppleClang" OR "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xFujitsuClang" + OR "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xIBMClang" OR "x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xTIClang") set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU") elseif("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xMSVC") diff --git a/Modules/Compiler/IBMClang-ASM.cmake b/Modules/Compiler/IBMClang-ASM.cmake index dffc085f05..b9f9f4677d 100644 --- a/Modules/Compiler/IBMClang-ASM.cmake +++ b/Modules/Compiler/IBMClang-ASM.cmake @@ -1,5 +1,11 @@ include(Compiler/IBMClang) +set(_ibmclang_version_asm "${CMAKE_ASM_COMPILER_VERSION}") +set(CMAKE_ASM_COMPILER_VERSION "${CMAKE_ASM_COMPILER_VERSION_INTERNAL}") +include(Compiler/Clang-ASM) +set(CMAKE_ASM_COMPILER_VERSION "${_ibmclang_version_asm}") +unset(_ibmclang_version_asm) + set(CMAKE_ASM_SOURCE_FILE_EXTENSIONS s;S;asm) __compiler_ibmclang(ASM) diff --git a/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake b/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake index 623c8af542..d25b1e22c1 100644 --- a/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake +++ b/Modules/Compiler/IBMClang-C-DetermineCompiler.cmake @@ -5,4 +5,5 @@ set(_compiler_id_version_compute " # 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__) +# define @PREFIX@COMPILER_VERSION_INTERNAL_STR __clang_version__ ") diff --git a/Modules/Compiler/IBMClang-C.cmake b/Modules/Compiler/IBMClang-C.cmake index fde6a3b42c..0039f1c698 100644 --- a/Modules/Compiler/IBMClang-C.cmake +++ b/Modules/Compiler/IBMClang-C.cmake @@ -1,4 +1,11 @@ include(Compiler/IBMClang) + +set(_ibmclang_version_c "${CMAKE_C_COMPILER_VERSION}") +set(CMAKE_C_COMPILER_VERSION "${CMAKE_C_COMPILER_VERSION_INTERNAL}") +include(Compiler/Clang-C) +set(CMAKE_C_COMPILER_VERSION "${_ibmclang_version_c}") +unset(_ibmclang_version_c) + __compiler_ibmclang(C) set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c) diff --git a/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake b/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake index 623c8af542..d25b1e22c1 100644 --- a/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake +++ b/Modules/Compiler/IBMClang-CXX-DetermineCompiler.cmake @@ -5,4 +5,5 @@ set(_compiler_id_version_compute " # 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__) +# define @PREFIX@COMPILER_VERSION_INTERNAL_STR __clang_version__ ") diff --git a/Modules/Compiler/IBMClang-CXX.cmake b/Modules/Compiler/IBMClang-CXX.cmake index ec97381bd7..071eec8ff0 100644 --- a/Modules/Compiler/IBMClang-CXX.cmake +++ b/Modules/Compiler/IBMClang-CXX.cmake @@ -1,43 +1,13 @@ include(Compiler/IBMClang) + +set(_ibmclang_version_cxx "${CMAKE_CXX_COMPILER_VERSION}") +set(CMAKE_CXX_COMPILER_VERSION "${CMAKE_CXX_COMPILER_VERSION_INTERNAL}") +include(Compiler/Clang-CXX) +set(CMAKE_CXX_COMPILER_VERSION "${_ibmclang_version_cxx}") +unset(_ibmclang_version_cxx) + __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") - -set(CMAKE_CXX_STANDARD_LATEST 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") - set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std=c++2b") - set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std=gnu++2b") - set(CMAKE_CXX_STANDARD_LATEST 23) -endif() - __compiler_check_default_language_standard(CXX 17.1.0 17) set(CMAKE_CXX_COMPILE_OBJECT diff --git a/Modules/Compiler/IBMClang-FindBinUtils.cmake b/Modules/Compiler/IBMClang-FindBinUtils.cmake new file mode 100644 index 0000000000..e721c8708e --- /dev/null +++ b/Modules/Compiler/IBMClang-FindBinUtils.cmake @@ -0,0 +1 @@ +include(Compiler/Clang-FindBinUtils) diff --git a/Modules/Compiler/IBMClang.cmake b/Modules/Compiler/IBMClang.cmake index a43f788273..5d8d19a8fa 100644 --- a/Modules/Compiler/IBMClang.cmake +++ b/Modules/Compiler/IBMClang.cmake @@ -1,25 +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(__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 to set ibm-clang unique config. This should be called after common +# clang config is included and include only what isn't common. macro(__compiler_ibmclang lang) - __compiler_gnu(${lang}) - # Feature flags. set(CMAKE_${lang}_VERBOSE_FLAG "-v") set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "-fPIC") @@ -27,58 +17,16 @@ macro(__compiler_ibmclang lang) 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 AND "${lang}" STREQUAL "CXX") 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) - # Thin LTO is not yet supported on AIX. if(NOT (CMAKE_SYSTEM_NAME STREQUAL "AIX")) set(_CMAKE_LTO_THIN TRUE) endif() - 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}\" qc " - ) - - set(CMAKE_${lang}_ARCHIVE_APPEND_IPO - "\"${__ar}\" q " - ) - - set(CMAKE_${lang}_ARCHIVE_FINISH_IPO - "\"${__ranlib}\" " - ) - if("${lang}" STREQUAL "CXX") list(APPEND CMAKE_${lang}_COMPILER_PREDEFINES_COMMAND "-dM" "-E" "-c" "${CMAKE_ROOT}/Modules/CMakeCXXCompilerABI.cpp") endif() - - 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 -Xclang -include -Xclang ) - set(CMAKE_${lang}_COMPILE_OPTIONS_CREATE_PCH -Xclang -emit-pch -Xclang -include -Xclang -x ${__pch_header_${lang}}) endmacro()