Some of the things are set in Platform/NVIDIA-CUDA and since we aren't setting
them to different values there's no point in overriding them.
Also fixed an unset() copy-paste error.
Since commit fb2afef620 (CUDA: Support nvcc symlinking to ccache,
2021-01-07) and commit 3cef91a321 (CUDA: Always extract CUDA Toolkit
root from nvcc verbose output, 2021-02-03) we always run the command
`nvcc -v __cmake_determine_cuda` to look for the toolkit root in its
stderr. On Windows, that command may print to stdout instead, so
capture that as well.
This can be confusing if there are autotools and CMake-built GDAL builds
within the same environment as the autotools variant will always be
preferred.
In pure C/CXX projects, when doing an optional search for C/CXX
MPI APIs, I keep getting a reason appended of the form:
```
-- Could NOT find MPI_C (missing: MPI_C_LIB_NAMES MPI_C_HEADER_DIR MPI_C_WORKS)
-- Could NOT find MPI_CXX (missing: MPI_CXX_LIB_NAMES MPI_CXX_HEADER_DIR MPI_CXX_WORKS)
-- Could NOT find MPI (missing: MPI_C_FOUND MPI_CXX_FOUND)
Reason given by package: MPI component 'Fortran' was requested, but language Fortran is not enabled.
```
The reason makes no sense since I did not request Fortran and thus
confuses the reader. It is now only added if the component was truly
requested.
`clang-cl` supports the `-imsvc` flag to tell the compiler an include
directory is intended for system paths. `icx` does not accept this
flag, even on MSVC platforms, so do not tell CMake that it exists.
Fixes: #21801
Signed-off-by: william.r.dieter <william.r.dieter@intel.com>
In commit bb61c2d024 (Clang: use -imsvc for system include dirs when
running on Windows, 2020-09-16, v3.19.0-rc1~162^2) we added `-imsvc`
for all Clang compilers targeting the MSVC ABI. However, the option
only exists for the MSVC-like front-end. The GNU-like front-ends
use `-isystem`.
Fixes: #21789
Fixes#21750, #21763
Given that NVCC can be provided by multiple different sources (NVIDIA HPC SDK, CUDA Toolkit, distro)
each of which has a different layout, we need to extract the CUDA toolkit root from the compiler
itself, allowing us to support numerious different scattered toolkit layouts.
The NVIDIA HPC SDK specifically ships two copies of nvcc one in
`compilers/bin/` and one in `cuda/bin`. Thus when using
`compilers/bin/nvcc` the Toolkit root logic fails.
This module has been discouraged since commit 1e20be319f (STYLE: add
documentation for MACRO_ADD_FILE_DEPENDENCIES(), 2009-07-14,
v2.8.0~433). It has been listed in the `cmake-modules(7)` manual
as deprecated since commit df780bcc01 (Help: Move deprecated modules to
appropriate section., 2018-11-12, v3.14.0-rc1~374^2). Add the explicit
deprecation mark in its documentation.
Xcode 12 doesn't allow nested builds within the same build directory.
That means we can no longer do an install by building the install target
when IOS_INSTALL_COMBINED is true. We can, however, still do an install
by running the cmake_install.cmake script or executing cmake --install,
since there is no outer build and therefore the associated SDK can be
built as a sub-build.
The non-build methods previously didn't work when
IOS_INSTALL_COMBINED was true because the generated install script
and the CMakeIOSInstallCombined script both made certain assumptions
that relied on being part of a build. Those assumptions are now
removed. A side-effect of this work is that cpack now also works from the
command line when IOS_INSTALL_COMBINED is true.
Relates: #21282Fixes: #20023