diff options
author | Brad King <brad.king@kitware.com> | 2023-09-25 20:00:22 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2023-09-25 20:11:18 (GMT) |
commit | b3e92775ab5defa49783b5ff46627c3d3662ab2b (patch) | |
tree | 99c8fe9512f897863ac63820529cedca8b20fb0b /Modules | |
parent | e43918b4caf8de881cb24a0a7494e086202cff34 (diff) | |
download | CMake-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.cmake | 10 | ||||
-rw-r--r-- | Modules/CheckLanguage.cmake | 4 |
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() |