diff options
-rw-r--r-- | Help/envvar/CUDAHOSTCXX.rst | 6 | ||||
-rw-r--r-- | Help/manual/cmake-variables.7.rst | 1 | ||||
-rw-r--r-- | Help/variable/CMAKE_CUDA_HOST_COMPILER.rst | 34 | ||||
-rw-r--r-- | Help/variable/CMAKE_LANG_HOST_COMPILER.rst | 41 | ||||
-rw-r--r-- | Modules/CheckLanguage.cmake | 10 |
5 files changed, 54 insertions, 38 deletions
diff --git a/Help/envvar/CUDAHOSTCXX.rst b/Help/envvar/CUDAHOSTCXX.rst index 74f5d48..4e78afa 100644 --- a/Help/envvar/CUDAHOSTCXX.rst +++ b/Help/envvar/CUDAHOSTCXX.rst @@ -8,8 +8,10 @@ CUDAHOSTCXX Preferred executable for compiling host code when compiling ``CUDA`` language files. Will only be used by CMake on the first configuration to determine ``CUDA`` host compiler, after which the value for ``CUDAHOSTCXX`` is -stored in the cache as :variable:`CMAKE_CUDA_HOST_COMPILER`. This environment -variable is preferred over :variable:`CMAKE_CUDA_HOST_COMPILER`. +stored in the cache as +:variable:`CMAKE_CUDA_HOST_COMPILER <CMAKE_<LANG>_HOST_COMPILER>`. +This environment variable is preferred over +:variable:`CMAKE_CUDA_HOST_COMPILER <CMAKE_<LANG>_HOST_COMPILER>`. This environment variable is primarily meant for use with projects that enable ``CUDA`` as a first-class language. diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst index 536046a..d9df773 100644 --- a/Help/manual/cmake-variables.7.rst +++ b/Help/manual/cmake-variables.7.rst @@ -628,6 +628,7 @@ Variables for Languages /variable/CMAKE_LANG_FLAGS_RELEASE_INIT /variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO /variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT + /variable/CMAKE_LANG_HOST_COMPILER /variable/CMAKE_LANG_IGNORE_EXTENSIONS /variable/CMAKE_LANG_IMPLICIT_INCLUDE_DIRECTORIES /variable/CMAKE_LANG_IMPLICIT_LINK_DIRECTORIES diff --git a/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst b/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst index 6e2d756..498e2e5 100644 --- a/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst +++ b/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst @@ -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. diff --git a/Help/variable/CMAKE_LANG_HOST_COMPILER.rst b/Help/variable/CMAKE_LANG_HOST_COMPILER.rst new file mode 100644 index 0000000..2759784 --- /dev/null +++ b/Help/variable/CMAKE_LANG_HOST_COMPILER.rst @@ -0,0 +1,41 @@ +CMAKE_<LANG>_HOST_COMPILER +-------------------------- + +.. versionadded:: 3.10 + ``CMAKE_CUDA_HOST_COMPILER`` + +This variable is available when ``<LANG>`` is ``CUDA``. + +When :variable:`CMAKE_<LANG>_COMPILER_ID` is +``NVIDIA``, ``CMAKE_<LANG>_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_<LANG>_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_<LANG>_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_<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`. diff --git a/Modules/CheckLanguage.cmake b/Modules/CheckLanguage.cmake index 04e721c..1ad362f 100644 --- a/Modules/CheckLanguage.cmake +++ b/Modules/CheckLanguage.cmake @@ -25,7 +25,7 @@ or :command:`project` commands: If this variable is already set, either explicitly or cached by a previous call, the check is skipped. - :variable:`CMAKE_CUDA_HOST_COMPILER` + :variable:`CMAKE_<LANG>_HOST_COMPILER` This variable is set when ``<lang>`` is ``CUDA``. If the check detects an explicit host compiler that is required for @@ -34,12 +34,12 @@ or :command:`project` commands: this variable will be cleared. If this variable is already set, its value is preserved only if - :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` is also set. + :variable:`CMAKE_<LANG>_COMPILER` is also set. Otherwise, the check runs and overwrites - :variable:`CMAKE_CUDA_HOST_COMPILER` with a new result. - Note that :variable:`CMAKE_CUDA_HOST_COMPILER` documents it should + :variable:`CMAKE_<LANG>_HOST_COMPILER` with a new result. + Note that :variable:`CMAKE_<LANG>_HOST_COMPILER` documents it should not be set without also setting - :variable:`CMAKE_CUDA_COMPILER <CMAKE_<LANG>_COMPILER>` to a NVCC compiler. + :variable:`CMAKE_<LANG>_COMPILER` to a NVCC compiler. For example: |