Merge topic 'hip-nvidia'

fd982eec10 HIP: Add tests for special NVIDIA values of CMAKE_HIP_ARCHITECTURES
8c8b3f1bfa HIP: Fix support for -DCMAKE_HIP_ARCHITECTURES=native with NVCC
b3e92775ab HIP: Add CMAKE_HIP_HOST_COMPILER when compiler is NVCC
e43918b4ca HIP: Fix linking mixed-lang binary with CXX compiler and Makefile generators
4794505122 HIP: Do not require hip-lang package for NVIDIA platform
09d759dc7f HIP: Simplify exclusion of AMD device runtime with NVIDIA GPUs
2a60663670 HIP: Simplify CMAKE_GENERATOR references for determining compiler
8124950f6c CUDA: Generalize CMAKE_{CUDA => <LANG>}_HOST_COMPILER variable docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8836
This commit is contained in:
Brad King
2023-09-26 13:40:18 +00:00
committed by Kitware Robot
16 changed files with 233 additions and 100 deletions

View File

@@ -3,34 +3,6 @@ CMAKE_CUDA_HOST_COMPILER
.. versionadded:: 3.10
When :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is
``NVIDIA``, ``CMAKE_CUDA_HOST_COMPILER`` selects the compiler executable to use
when compiling host code for ``CUDA`` language files.
This maps to the ``nvcc -ccbin`` option.
The ``CMAKE_CUDA_HOST_COMPILER`` variable may be set explicitly before CUDA is
first enabled by a :command:`project` or :command:`enable_language` command.
This can be done via ``-DCMAKE_CUDA_HOST_COMPILER=...`` on the command line
or in a :ref:`toolchain file <Cross Compiling Toolchain>`. Or, one may set
the :envvar:`CUDAHOSTCXX` environment variable to provide a default value.
Once the CUDA language is enabled, the ``CMAKE_CUDA_HOST_COMPILER`` variable
is read-only and changes to it are undefined behavior.
.. note::
Since ``CMAKE_CUDA_HOST_COMPILER`` is meaningful only when the
:variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``,
it does not make sense to set ``CMAKE_CUDA_HOST_COMPILER`` without also
setting ``CMAKE_CUDA_COMPILER`` to NVCC.
.. note::
Projects should not try to set ``CMAKE_CUDA_HOST_COMPILER`` to match
:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` themselves.
It is the end-user's responsibility, not the project's, to ensure that
the C++ and CUDA compilers target the same ABI.
.. note::
Ignored when using :ref:`Visual Studio Generators`.
This is the original CUDA-specific name for the more general
:variable:`CMAKE_<LANG>_HOST_COMPILER` variable. See the latter
for details.

View File

@@ -0,0 +1,44 @@
CMAKE_<LANG>_HOST_COMPILER
--------------------------
.. versionadded:: 3.10
``CMAKE_CUDA_HOST_COMPILER``
.. versionadded:: 3.28
``CMAKE_HIP_HOST_COMPILER``
This variable is available when ``<LANG>`` is ``CUDA`` or ``HIP``.
When :variable:`CMAKE_<LANG>_COMPILER_ID` is
``NVIDIA``, ``CMAKE_<LANG>_HOST_COMPILER`` selects the compiler executable
to use when compiling host code for ``CUDA`` or ``HIP`` language files.
This maps to the ``nvcc -ccbin`` option.
The ``CMAKE_<LANG>_HOST_COMPILER`` variable may be set explicitly before CUDA
or HIP is first enabled by a :command:`project` or :command:`enable_language`
command.
This can be done via ``-DCMAKE_<LANG>_HOST_COMPILER=...`` on the command line
or in a :ref:`toolchain file <Cross Compiling Toolchain>`. Or, one may set
the :envvar:`CUDAHOSTCXX` or :envvar:`HIPHOSTCXX` environment variable to
provide a default value.
Once the CUDA or HIP language is enabled, the ``CMAKE_<LANG>_HOST_COMPILER``
variable is read-only and changes to it are undefined behavior.
.. note::
Since ``CMAKE_<LANG>_HOST_COMPILER`` is meaningful only when the
:variable:`CMAKE_<LANG>_COMPILER_ID` is ``NVIDIA``,
it does not make sense to set ``CMAKE_<LANG>_HOST_COMPILER`` without also
setting ``CMAKE_<LANG>_COMPILER`` to NVCC.
.. note::
Projects should not try to set ``CMAKE_<LANG>_HOST_COMPILER`` to match
:variable:`CMAKE_CXX_COMPILER <CMAKE_<LANG>_COMPILER>` themselves.
It is the end-user's responsibility, not the project's, to ensure that
NVCC targets the same ABI as the C++ compiler.
.. note::
Ignored when using :ref:`Visual Studio Generators`.