GenerateExportHeader: improve compiler identification
Use CMAKE_<LANG>_COMPILER_VERSION instead of calling the compiler. This macro predates those useful variables. This also fixes the issue that g++ version detection was not working if C language was not enabled.
This commit is contained in:
parent
4412fc0890
commit
c28e276948
|
@ -154,35 +154,16 @@ endmacro()
|
|||
|
||||
macro(_test_compiler_hidden_visibility)
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX)
|
||||
exec_program(${CMAKE_C_COMPILER} ARGS --version
|
||||
OUTPUT_VARIABLE _gcc_version_info)
|
||||
string(REGEX MATCH "[345]\\.[0-9]\\.[0-9]"
|
||||
_gcc_version "${_gcc_version_info}")
|
||||
# gcc on mac just reports: "gcc (GCC) 3.3 20030304 ..." without the
|
||||
# patch level, handle this here:
|
||||
if(NOT _gcc_version)
|
||||
string(REGEX REPLACE ".*\\(GCC\\).* ([34]\\.[0-9]) .*" "\\1.0"
|
||||
_gcc_version "${_gcc_version_info}")
|
||||
endif()
|
||||
|
||||
if("${_gcc_version}" VERSION_LESS "4.2")
|
||||
if(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.2")
|
||||
set(GCC_TOO_OLD TRUE)
|
||||
message(WARNING "GCC version older than 4.2")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES Intel)
|
||||
exec_program(${CMAKE_CXX_COMPILER} ARGS -V
|
||||
OUTPUT_VARIABLE _intel_version_info)
|
||||
string(REGEX REPLACE ".*Version ([0-9]+(\\.[0-9]+)+).*" "\\1"
|
||||
_intel_version "${_intel_version_info}")
|
||||
|
||||
if(${_intel_version} VERSION_LESS "12.0")
|
||||
elseif(CMAKE_COMPILER_IS_GNUC AND CMAKE_C_COMPILER_VERSION VERSION_LESS "4.2")
|
||||
set(GCC_TOO_OLD TRUE)
|
||||
message(WARNING "GCC version older than 4.2")
|
||||
elseif(CMAKE_CXX_COMPILER_ID MATCHES Intel AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0")
|
||||
set(_INTEL_TOO_OLD TRUE)
|
||||
message(WARNING "Intel compiler older than 12.0")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# Exclude XL here because it misinterprets -fvisibility=hidden even though
|
||||
|
|
Loading…
Reference in New Issue