summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-09-25 20:00:22 (GMT)
committerBrad King <brad.king@kitware.com>2023-09-25 20:11:18 (GMT)
commitb3e92775ab5defa49783b5ff46627c3d3662ab2b (patch)
tree99c8fe9512f897863ac63820529cedca8b20fb0b /Modules
parente43918b4caf8de881cb24a0a7494e086202cff34 (diff)
downloadCMake-b3e92775ab5defa49783b5ff46627c3d3662ab2b.zip
CMake-b3e92775ab5defa49783b5ff46627c3d3662ab2b.tar.gz
CMake-b3e92775ab5defa49783b5ff46627c3d3662ab2b.tar.bz2
HIP: Add CMAKE_HIP_HOST_COMPILER when compiler is NVCC
Also add `HIPHOSTCXX` environment variable.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeDetermineHIPCompiler.cmake10
-rw-r--r--Modules/CheckLanguage.cmake4
2 files changed, 12 insertions, 2 deletions
diff --git a/Modules/CMakeDetermineHIPCompiler.cmake b/Modules/CMakeDetermineHIPCompiler.cmake
index bc85dbb..e667099 100644
--- a/Modules/CMakeDetermineHIPCompiler.cmake
+++ b/Modules/CMakeDetermineHIPCompiler.cmake
@@ -107,6 +107,13 @@ if(NOT CMAKE_HIP_COMPILER_ID_RUN)
# If the user set CMAKE_HIP_ARCHITECTURES, validate its value.
include(Internal/CMakeCUDAArchitecturesValidate)
cmake_cuda_architectures_validate(HIP)
+
+ if(NOT CMAKE_HIP_HOST_COMPILER AND NOT $ENV{HIPHOSTCXX} STREQUAL "")
+ get_filename_component(CMAKE_HIP_HOST_COMPILER $ENV{HIPHOSTCXX} PROGRAM)
+ if(NOT EXISTS "${CMAKE_HIP_HOST_COMPILER}")
+ message(FATAL_ERROR "Could not find compiler set in environment variable HIPHOSTCXX:\n$ENV{HIPHOSTCXX}.\n${CMAKE_HIP_HOST_COMPILER}")
+ endif()
+ endif()
endif()
if(CMAKE_HIP_COMPILER_ID STREQUAL "Clang")
@@ -114,6 +121,9 @@ if(NOT CMAKE_HIP_COMPILER_ID_RUN)
elseif(CMAKE_HIP_COMPILER_ID STREQUAL "NVIDIA")
# Tell nvcc to treat .hip files as CUDA sources.
list(APPEND CMAKE_HIP_COMPILER_ID_TEST_FLAGS_FIRST "-x cu -v")
+ if(CMAKE_HIP_HOST_COMPILER)
+ string(APPEND CMAKE_HIP_COMPILER_ID_TEST_FLAGS_FIRST " -ccbin=\"${CMAKE_HIP_HOST_COMPILER}\"")
+ endif()
endif()
# We perform compiler identification for a second time to extract implicit linking info.
diff --git a/Modules/CheckLanguage.cmake b/Modules/CheckLanguage.cmake
index 1ad362f..94948b9 100644
--- a/Modules/CheckLanguage.cmake
+++ b/Modules/CheckLanguage.cmake
@@ -26,7 +26,7 @@ or :command:`project` commands:
a previous call, the check is skipped.
:variable:`CMAKE_<LANG>_HOST_COMPILER`
- This variable is set when ``<lang>`` is ``CUDA``.
+ This variable is set when ``<lang>`` is ``CUDA`` or ``HIP``.
If the check detects an explicit host compiler that is required for
compilation, this variable will be set to that compiler.
@@ -65,7 +65,7 @@ macro(check_language lang)
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})
set(extra_compiler_variables)
- if(${lang} STREQUAL CUDA AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
+ if("${lang}" MATCHES "^(CUDA|HIP)$" AND NOT CMAKE_GENERATOR MATCHES "Visual Studio")
set(extra_compiler_variables "set(CMAKE_CUDA_HOST_COMPILER \\\"\${CMAKE_CUDA_HOST_COMPILER}\\\")")
endif()