PATH:
usr
/
share
/
cmake
/
Modules
/
Compiler
# 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 and compilers; use include guard if (__COMPILER_CMAKE_COMMON_COMPILER_MACROS) return() endif () set(__COMPILER_CMAKE_COMMON_COMPILER_MACROS 1) # Check that a compiler's language standard is properly detected # Parameters: # lang - Language to check # stdver1 - Minimum version to set a given default for # std1 - Default to use for compiler ver >= stdver1 # stdverN - Minimum version to set a given default for # stdN - Default to use for compiler ver >= stdverN # # The order of stdverN stdN pairs passed as arguments is expected to be in # monotonically increasing version order. # # Note: # This macro can be called with multiple version / std pairs to convey that # newer compiler versions may use a newer standard default. # # Example: # To specify that compiler version 6.1 and newer defaults to C++11 while # 4.8 <= ver < 6.1 default to C++98, you would call: # # __compiler_check_default_language_standard(CXX 4.8 98 6.1 11) # macro(__compiler_check_default_language_standard lang stdver1 std1) set(__std_ver_pairs "${stdver1};${std1};${ARGN}") string(REGEX REPLACE " *; *" " " __std_ver_pairs "${__std_ver_pairs}") string(REGEX MATCHALL "[^ ]+ [^ ]+" __std_ver_pairs "${__std_ver_pairs}") # If the compiler version is below the threshold of even having CMake # support for language standards, then don't bother. if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL "${stdver1}") if (NOT CMAKE_${lang}_COMPILER_FORCED) if (NOT CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT OR NOT DEFINED CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT) message(FATAL_ERROR "CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT and CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT should be set for ${CMAKE_${lang}_COMPILER_ID} (${CMAKE_${lang}_COMPILER}) version ${CMAKE_${lang}_COMPILER_VERSION}") endif () set(CMAKE_${lang}_STANDARD_DEFAULT ${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}) set(CMAKE_${lang}_EXTENSIONS_DEFAULT ${CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT}) else () list(REVERSE __std_ver_pairs) foreach (__std_ver_pair IN LISTS __std_ver_pairs) string(REGEX MATCH "([^ ]+) (.+)" __std_ver_pair "${__std_ver_pair}") set(__stdver ${CMAKE_MATCH_1}) set(__std ${CMAKE_MATCH_2}) # Compiler id was forced so just guess the defaults. if (CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL __stdver) if(NOT DEFINED CMAKE_${lang}_EXTENSIONS_DEFAULT) # Currently known compilers default to enabling extensions. set(CMAKE_${lang}_EXTENSIONS_DEFAULT ON) endif() if(NOT DEFINED CMAKE_${lang}_STANDARD_DEFAULT) set(CMAKE_${lang}_STANDARD_DEFAULT ${__std}) endif() endif () unset(__std) unset(__stdver) endforeach () endif () endif () unset(__std_ver_pairs) endmacro() # Define to allow compile features to be automatically determined macro(cmake_record_c_compile_features) set(_result 0) if(_result EQUAL 0 AND DEFINED CMAKE_C23_STANDARD_COMPILE_OPTION) _has_compiler_features_c(23) endif() if(_result EQUAL 0 AND DEFINED CMAKE_C17_STANDARD_COMPILE_OPTION) _has_compiler_features_c(17) endif() if(_result EQUAL 0 AND DEFINED CMAKE_C11_STANDARD_COMPILE_OPTION) if(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_c(11) else() _record_compiler_features_c(11) endif() unset(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT) endif() if(_result EQUAL 0 AND DEFINED CMAKE_C99_STANDARD_COMPILE_OPTION) if(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_c(99) else() _record_compiler_features_c(99) endif() unset(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT) endif() if(_result EQUAL 0 AND DEFINED CMAKE_C90_STANDARD_COMPILE_OPTION) if(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_c(90) else() _record_compiler_features_c(90) endif() unset(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT) endif() endmacro() # Define to allow compile features to be automatically determined macro(cmake_record_cxx_compile_features) set(_result 0) if(_result EQUAL 0 AND DEFINED CMAKE_CXX23_STANDARD_COMPILE_OPTION) _has_compiler_features_cxx(23) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CXX20_STANDARD_COMPILE_OPTION) _has_compiler_features_cxx(20) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CXX17_STANDARD_COMPILE_OPTION) _has_compiler_features_cxx(17) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CXX14_STANDARD_COMPILE_OPTION) if(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_cxx(14) else() _record_compiler_features_cxx(14) endif() unset(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CXX11_STANDARD_COMPILE_OPTION) if(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_cxx(11) else() _record_compiler_features_cxx(11) endif() unset(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CXX98_STANDARD_COMPILE_OPTION) if(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_cxx(98) else() _record_compiler_features_cxx(98) endif() unset(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT) endif() endmacro() macro(cmake_record_cuda_compile_features) set(_result 0) if(_result EQUAL 0 AND DEFINED CMAKE_CUDA23_STANDARD_COMPILE_OPTION) _has_compiler_features_cuda(23) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CUDA20_STANDARD_COMPILE_OPTION) _has_compiler_features_cuda(20) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CUDA17_STANDARD_COMPILE_OPTION) _has_compiler_features_cuda(17) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CUDA14_STANDARD_COMPILE_OPTION) if(CMAKE_CUDA14_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_cuda(14) else() _record_compiler_features_cuda(14) endif() unset(CMAKE_CUDA14_STANDARD__HAS_FULL_SUPPORT) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CUDA11_STANDARD_COMPILE_OPTION) if(CMAKE_CUDA11_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_cuda(11) else() _record_compiler_features_cuda(11) endif() unset(CMAKE_CUDA11_STANDARD__HAS_FULL_SUPPORT) endif() if(_result EQUAL 0 AND DEFINED CMAKE_CUDA03_STANDARD_COMPILE_OPTION) if(CMAKE_CUDA03_STANDARD__HAS_FULL_SUPPORT) _has_compiler_features_cuda(03) else() _record_compiler_features_cuda(03) endif() unset(CMAKE_CUDA03_STANDARD__HAS_FULL_SUPPORT) endif() endmacro() macro(cmake_record_hip_compile_features) set(_result 0) if(_result EQUAL 0 AND DEFINED CMAKE_HIP23_STANDARD_COMPILE_OPTION) _has_compiler_features_hip(23) endif() if(_result EQUAL 0 AND DEFINED CMAKE_HIP20_STANDARD_COMPILE_OPTION) _has_compiler_features_hip(20) endif() if(_result EQUAL 0 AND DEFINED CMAKE_HIP17_STANDARD_COMPILE_OPTION) _has_compiler_features_hip(17) endif() _has_compiler_features_hip(14) _has_compiler_features_hip(11) _has_compiler_features_hip(98) endmacro()
[+]
..
[+]
XL-Fortran
[-] Compaq-CXX-DetermineCompiler.cmake
[edit]
[-] ADSP-DetermineCompiler.cmake
[edit]
[-] GNU-OBJCXX.cmake
[edit]
[-] ARMCC-ASM.cmake
[edit]
[-] GNU.cmake
[edit]
[-] ARMCC-C.cmake
[edit]
[-] HP-ASM.cmake
[edit]
[-] ARMCC-CXX.cmake
[edit]
[-] Cray-C.cmake
[edit]
[-] Intel-Fortran.cmake
[edit]
[-] ARMCC-DetermineCompiler.cmake
[edit]
[-] Intel-ISPC.cmake
[edit]
[-] ARMCC.cmake
[edit]
[-] HP-C-DetermineCompiler.cmake
[edit]
[-] ARMClang-ASM.cmake
[edit]
[-] Cray-CXX.cmake
[edit]
[-] MSVC-C.cmake
[edit]
[-] ARMClang-C-FeatureTests.cmake
[edit]
[-] HP-C.cmake
[edit]
[-] ARMClang-C.cmake
[edit]
[-] Cray-Fortran.cmake
[edit]
[-] NVHPC.cmake
[edit]
[-] ARMClang-CXX-FeatureTests.cmake
[edit]
[-] HP-CXX.cmake
[edit]
[-] ARMClang-CXX.cmake
[edit]
[-] Cray-DetermineCompiler.cmake
[edit]
[-] ARMClang-DetermineCompiler.cmake
[edit]
[-] HP-Fortran.cmake
[edit]
[-] ARMClang.cmake
[edit]
[-] GNU-C-FeatureTests.cmake
[edit]
[-] Absoft-Fortran.cmake
[edit]
[-] GNU-C.cmake
[edit]
[-] PGI-C.cmake
[edit]
[-] AppleClang-ASM.cmake
[edit]
[-] Cray.cmake
[edit]
[-] IntelLLVM-ASM.cmake
[edit]
[-] AppleClang-C-FeatureTests.cmake
[edit]
[-] IAR-ASM.cmake
[edit]
[-] AppleClang-C.cmake
[edit]
[-] CrayPrgEnv-C.cmake
[edit]
[-] PGI.cmake
[edit]
[-] AppleClang-CXX-FeatureTests.cmake
[edit]
[-] GNU-CXX-DetermineCompiler.cmake
[edit]
[-] AppleClang-CXX.cmake
[edit]
[-] CrayPrgEnv-CXX.cmake
[edit]
[-] QCC-C.cmake
[edit]
[-] AppleClang-DetermineCompiler.cmake
[edit]
[-] GNU-CXX-FeatureTests.cmake
[edit]
[-] AppleClang-OBJC.cmake
[edit]
[-] GNU-CXX.cmake
[edit]
[-] AppleClang-OBJCXX.cmake
[edit]
[-] CrayPrgEnv-Fortran.cmake
[edit]
[-] Borland-DetermineCompiler.cmake
[edit]
[-] CrayPrgEnv.cmake
[edit]
[-] QCC.cmake
[edit]
[-] Bruce-C-DetermineCompiler.cmake
[edit]
[-] IAR-C.cmake
[edit]
[-] Bruce-C.cmake
[edit]
[-] IAR-CXX.cmake
[edit]
[-] CCur-Fortran.cmake
[edit]
[-] GHS-C.cmake
[edit]
[-] IntelLLVM-C.cmake
[edit]
[-] CMakeCommonCompilerMacros.cmake
[edit]
[-] IAR-DetermineCompiler.cmake
[edit]
[-] Clang-ASM.cmake
[edit]
[-] GNU-FindBinUtils.cmake
[edit]
[-] Clang-C-FeatureTests.cmake
[edit]
[-] Clang-C.cmake
[edit]
[-] IAR.cmake
[edit]
[-] Clang-CUDA.cmake
[edit]
[-] GHS-CXX.cmake
[edit]
[-] SCO-C.cmake
[edit]
[-] Clang-CXX-FeatureTests.cmake
[edit]
[-] GHS-DetermineCompiler.cmake
[edit]
[-] Clang-CXX-TestableFeatures.cmake
[edit]
[-] Intel-ASM.cmake
[edit]
[-] Clang-CXX.cmake
[edit]
[-] GHS.cmake
[edit]
[-] IntelLLVM-CXX.cmake
[edit]
[-] Clang-DetermineCompiler.cmake
[edit]
[-] Compaq-C-DetermineCompiler.cmake
[edit]
[-] Clang-DetermineCompilerInternal.cmake
[edit]
[-] GNU-Fortran.cmake
[edit]
[-] Clang-FindBinUtils.cmake
[edit]
[-] Intel-C-FeatureTests.cmake
[edit]
[-] Clang-OBJC.cmake
[edit]
[-] Intel-C.cmake
[edit]
[-] Clang-OBJCXX.cmake
[edit]
[-] IntelLLVM.cmake
[edit]
[-] Clang.cmake
[edit]
[-] GNU-ASM.cmake
[edit]
[-] SCO.cmake
[edit]
[-] Comeau-CXX-DetermineCompiler.cmake
[edit]
[-] Embarcadero-DetermineCompiler.cmake
[edit]
[-] GNU-OBJC.cmake
[edit]
[-] Flang-FindBinUtils.cmake
[edit]
[-] Intel-CXX-FeatureTests.cmake
[edit]
[-] Flang-Fortran.cmake
[edit]
[-] GNU-C-DetermineCompiler.cmake
[edit]
[-] Fujitsu-DetermineCompiler.cmake
[edit]
[-] Intel-CXX.cmake
[edit]
[-] G95-Fortran.cmake
[edit]
[-] MSVC-ASM.cmake
[edit]
[-] Intel.cmake
[edit]
[-] HP-CXX-DetermineCompiler.cmake
[edit]
[-] IBMCPP-C-DetermineVersionInternal.cmake
[edit]
[-] IBMCPP-CXX-DetermineVersionInternal.cmake
[edit]
[-] Intel-DetermineCompiler.cmake
[edit]
[-] TinyCC-C-DetermineCompiler.cmake
[edit]
[-] IntelLLVM-DetermineCompiler.cmake
[edit]
[-] XL-Fortran.cmake
[edit]
[-] OpenWatcom-CXX.cmake
[edit]
[-] VisualAge-CXX-DetermineCompiler.cmake
[edit]
[-] OpenWatcom-DetermineCompiler.cmake
[edit]
[-] OpenWatcom.cmake
[edit]
[-] FujitsuClang-C.cmake
[edit]
[-] PGI-CXX.cmake
[edit]
[-] XL.cmake
[edit]
[-] PGI-DetermineCompiler.cmake
[edit]
[-] PGI-Fortran.cmake
[edit]
[-] FujitsuClang.cmake
[edit]
[-] PathScale-C.cmake
[edit]
[-] PathScale-CXX.cmake
[edit]
[-] VisualAge-CXX.cmake
[edit]
[-] PathScale-DetermineCompiler.cmake
[edit]
[-] XLClang-C-DetermineCompiler.cmake
[edit]
[-] PathScale-Fortran.cmake
[edit]
[-] IBMClang-CXX.cmake
[edit]
[-] PathScale.cmake
[edit]
[-] QCC-ASM.cmake
[edit]
[-] XLClang-C.cmake
[edit]
[-] QCC-C-FeatureTests.cmake
[edit]
[-] XLClang-CXX-DetermineCompiler.cmake
[edit]
[-] QCC-CXX-FeatureTests.cmake
[edit]
[-] IntelLLVM-FindBinUtils.cmake
[edit]
[-] QCC-CXX.cmake
[edit]
[-] SCO-CXX.cmake
[edit]
[-] XLClang-CXX.cmake
[edit]
[-] SCO-DetermineCompiler.cmake
[edit]
[-] VisualAge-Fortran.cmake
[edit]
[-] SDCC-C-DetermineCompiler.cmake
[edit]
[-] LCC-C-FeatureTests.cmake
[edit]
[-] SunPro-ASM.cmake
[edit]
[-] Watcom-DetermineCompiler.cmake
[edit]
[-] SunPro-C-DetermineCompiler.cmake
[edit]
[-] XLClang.cmake
[edit]
[-] SunPro-C-FeatureTests.cmake
[edit]
[-] SunPro-C.cmake
[edit]
[-] XL-ASM.cmake
[edit]
[-] SunPro-CXX-DetermineCompiler.cmake
[edit]
[-] XL-C-DetermineCompiler.cmake
[edit]
[-] SunPro-CXX-FeatureTests.cmake
[edit]
[-] LCC-CXX-FeatureTests.cmake
[edit]
[-] SunPro-CXX.cmake
[edit]
[-] zOS-C-DetermineCompiler.cmake
[edit]
[-] SunPro-Fortran.cmake
[edit]
[-] SunPro.cmake
[edit]
[-] LCC-FindBinUtils.cmake
[edit]
[-] Tasking-ASM.cmake
[edit]
[-] TI-C.cmake
[edit]
[-] TI-CXX.cmake
[edit]
[-] zOS-CXX-DetermineCompiler.cmake
[edit]
[-] TI-DetermineCompiler.cmake
[edit]
[-] MSVC.cmake
[edit]
[-] TI.cmake
[edit]
[-] ADSP.cmake
[edit]
[-] FujitsuClang-DetermineCompiler.cmake
[edit]
[-] IBMClang-C-DetermineCompiler.cmake
[edit]
[-] LCC-C-DetermineCompiler.cmake
[edit]
[-] Tasking-CXX.cmake
[edit]
[-] Tasking-FindBinUtils.cmake
[edit]
[-] XL-C.cmake
[edit]
[-] IntelLLVM-Fortran.cmake
[edit]
[-] XL-CXX-DetermineCompiler.cmake
[edit]
[-] MSVC-C-FeatureTests.cmake
[edit]
[-] XL-CXX.cmake
[edit]
[-] MSVC-CXX-FeatureTests.cmake
[edit]
[-] ADSP-C.cmake
[edit]
[-] MSVC-CXX.cmake
[edit]
[-] TinyCC-C.cmake
[edit]
[-] MSVC-DetermineCompiler.cmake
[edit]
[-] ADSP-CXX.cmake
[edit]
[-] NAG-Fortran.cmake
[edit]
[-] Clang-HIP.cmake
[edit]
[-] NVHPC-C.cmake
[edit]
[-] Fujitsu-C.cmake
[edit]
[-] NVHPC-CXX.cmake
[edit]
[-] VisualAge-C-DetermineCompiler.cmake
[edit]
[-] NVHPC-DetermineCompiler.cmake
[edit]
[-] Fujitsu-CXX.cmake
[edit]
[-] NVHPC-Fortran.cmake
[edit]
[-] FujitsuClang-CXX.cmake
[edit]
[-] NVIDIA-CUDA.cmake
[edit]
[-] VisualAge-C.cmake
[edit]
[-] NVIDIA-DetermineCompiler.cmake
[edit]
[-] Fujitsu-Fortran.cmake
[edit]
[-] OpenWatcom-C.cmake
[edit]
[-] Fujitsu.cmake
[edit]
[-] IBMClang-C.cmake
[edit]
[-] IBMClang-ASM.cmake
[edit]
[-] IBMClang.cmake
[edit]
[-] LLVMFlang-Fortran.cmake
[edit]
[-] LCC-C.cmake
[edit]
[-] LCC.cmake
[edit]
[-] LCC-CXX.cmake
[edit]
[-] TI-ASM.cmake
[edit]
[-] LCC-Fortran.cmake
[edit]
[-] Tasking-C.cmake
[edit]
[-] FujitsuClang-FindBinUtils.cmake
[edit]
[-] IBMClang-CXX-DetermineCompiler.cmake
[edit]
[-] LCC-CXX-DetermineCompiler.cmake
[edit]
[-] Tasking-DetermineCompiler.cmake
[edit]
[-] Tasking.cmake
[edit]