|
@@ -347,8 +347,17 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
|
|
|
else()
|
|
|
set(_archid "")
|
|
|
endif()
|
|
|
+ if(CMAKE_${lang}_HOST_COMPILER_ID)
|
|
|
+ set(_hostcc " with host compiler ${CMAKE_${lang}_HOST_COMPILER_ID}")
|
|
|
+ if(CMAKE_${lang}_HOST_COMPILER_VERSION)
|
|
|
+ string(APPEND _hostcc " ${CMAKE_${lang}_HOST_COMPILER_VERSION}")
|
|
|
+ endif()
|
|
|
+ else()
|
|
|
+ set(_hostcc "")
|
|
|
+ endif()
|
|
|
message(STATUS "The ${lang} compiler identification is "
|
|
|
- "${CMAKE_${lang}_COMPILER_ID}${_archid}${_version}${_variant}")
|
|
|
+ "${CMAKE_${lang}_COMPILER_ID}${_archid}${_version}${_variant}${_hostcc}")
|
|
|
+ unset(_hostcc)
|
|
|
unset(_archid)
|
|
|
unset(_version)
|
|
|
unset(_variant)
|
|
@@ -373,6 +382,8 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
|
|
|
set(CMAKE_${lang}_COMPILER_WRAPPER "${CMAKE_${lang}_COMPILER_WRAPPER}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_SIMULATE_ID "${CMAKE_${lang}_SIMULATE_ID}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_SIMULATE_VERSION "${CMAKE_${lang}_SIMULATE_VERSION}" PARENT_SCOPE)
|
|
|
+ set(CMAKE_${lang}_HOST_COMPILER_ID "${CMAKE_${lang}_HOST_COMPILER_ID}" PARENT_SCOPE)
|
|
|
+ set(CMAKE_${lang}_HOST_COMPILER_VERSION "${CMAKE_${lang}_HOST_COMPILER_VERSION}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT "${CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_COMPILER_PRODUCED_OUTPUT "${COMPILER_${lang}_PRODUCED_OUTPUT}" PARENT_SCOPE)
|
|
@@ -395,6 +406,22 @@ function(CMAKE_DETERMINE_COMPILER_ID_WRITE lang src)
|
|
|
PLATFORM_DEFAULT_COMPILER
|
|
|
)
|
|
|
|
|
|
+ if(lang MATCHES "^(CUDA|HIP)$")
|
|
|
+ compiler_id_detection(CMAKE_${lang}_HOST_COMPILER_ID_CONTENT CXX
|
|
|
+ PREFIX HOST_
|
|
|
+ ID_STRING
|
|
|
+ VERSION_STRINGS
|
|
|
+ )
|
|
|
+ string(APPEND CMAKE_${lang}_COMPILER_ID_CONTENT
|
|
|
+ "\n"
|
|
|
+ "\n"
|
|
|
+ "/* Detect host compiler used by NVCC. */\n"
|
|
|
+ "#ifdef __NVCC__\n"
|
|
|
+ "${CMAKE_${lang}_HOST_COMPILER_ID_CONTENT}\n"
|
|
|
+ "#endif /* __NVCC__ */\n"
|
|
|
+ )
|
|
|
+ endif()
|
|
|
+
|
|
|
unset(src_in CACHE)
|
|
|
string(CONFIGURE "${ID_CONTENT_IN}" ID_CONTENT_OUT @ONLY)
|
|
|
file(WRITE ${CMAKE_${lang}_COMPILER_ID_DIR}/${src} "${ID_CONTENT_OUT}")
|
|
@@ -941,6 +968,8 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
|
|
|
set(ARCHITECTURE_ID)
|
|
|
set(SIMULATE_ID)
|
|
|
set(SIMULATE_VERSION)
|
|
|
+ set(HOST_COMPILER_ID)
|
|
|
+ set(HOST_COMPILER_VERSION)
|
|
|
set(CMAKE_${lang}_COMPILER_ID_STRING_REGEX ".?I.?N.?F.?O.?:.?[A-Za-z0-9_]+\\[[^]]*\\]")
|
|
|
foreach(encoding "" "ENCODING;UTF-16LE" "ENCODING;UTF-16BE")
|
|
|
cmake_policy(PUSH)
|
|
@@ -1027,6 +1056,13 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
|
|
|
if("${info}" MATCHES "INFO:qnxnto\\[\\]")
|
|
|
set(COMPILER_QNXNTO 1)
|
|
|
endif()
|
|
|
+ if("${info}" MATCHES "INFO:host_compiler\\[([^]\"]*)\\]")
|
|
|
+ set(HOST_COMPILER_ID "${CMAKE_MATCH_1}")
|
|
|
+ endif()
|
|
|
+ if("${info}" MATCHES "INFO:host_compiler_version\\[([^]\"]*)\\]")
|
|
|
+ string(REGEX REPLACE "^0+([0-9]+)" "\\1" HOST_COMPILER_VERSION "${CMAKE_MATCH_1}")
|
|
|
+ string(REGEX REPLACE "\\.0+([0-9])" ".\\1" HOST_COMPILER_VERSION "${HOST_COMPILER_VERSION}")
|
|
|
+ endif()
|
|
|
if("${info}" MATCHES "INFO:standard_default\\[([^]\"]*)\\]")
|
|
|
set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_MATCH_1}")
|
|
|
endif()
|
|
@@ -1088,6 +1124,8 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
|
|
|
set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL "${COMPILER_VERSION_INTERNAL}")
|
|
|
set(CMAKE_${lang}_SIMULATE_ID "${SIMULATE_ID}")
|
|
|
set(CMAKE_${lang}_SIMULATE_VERSION "${SIMULATE_VERSION}")
|
|
|
+ set(CMAKE_${lang}_HOST_COMPILER_ID "${HOST_COMPILER_ID}")
|
|
|
+ set(CMAKE_${lang}_HOST_COMPILER_VERSION "${HOST_COMPILER_VERSION}")
|
|
|
endif()
|
|
|
|
|
|
# Check the compiler identification string.
|
|
@@ -1095,7 +1133,12 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
|
|
|
# The compiler identification was found.
|
|
|
string(APPEND _CMAKE_${lang}_COMPILER_ID_LOG
|
|
|
"The ${lang} compiler identification is ${CMAKE_${lang}_COMPILER_ID}, found in:\n"
|
|
|
- " ${file}\n\n")
|
|
|
+ " ${file}\n")
|
|
|
+ if(CMAKE_${lang}_HOST_COMPILER_ID)
|
|
|
+ string(APPEND _CMAKE_${lang}_COMPILER_ID_LOG
|
|
|
+ "The host compiler identification is ${CMAKE_${lang}_HOST_COMPILER_ID}\n")
|
|
|
+ endif()
|
|
|
+ string(APPEND _CMAKE_${lang}_COMPILER_ID_LOG "\n")
|
|
|
else()
|
|
|
# The compiler identification could not be found.
|
|
|
string(APPEND _CMAKE_${lang}_COMPILER_ID_LOG
|
|
@@ -1144,6 +1187,8 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file)
|
|
|
set(COMPILER_QNXNTO "${COMPILER_QNXNTO}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT "${CMAKE_${lang}_STANDARD_COMPUTED_DEFAULT}" PARENT_SCOPE)
|
|
|
set(CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT "${CMAKE_${lang}_EXTENSIONS_COMPUTED_DEFAULT}" PARENT_SCOPE)
|
|
|
+ set(CMAKE_${lang}_HOST_COMPILER_ID "${CMAKE_${lang}_HOST_COMPILER_ID}" PARENT_SCOPE)
|
|
|
+ set(CMAKE_${lang}_HOST_COMPILER_VERSION "${CMAKE_${lang}_HOST_COMPILER_VERSION}" PARENT_SCOPE)
|
|
|
endfunction()
|
|
|
|
|
|
#-----------------------------------------------------------------------------
|