Commit Graph

10605 Commits

Author SHA1 Message Date
Raul Tambre
14163d7d6b CUDA: Throw error for Clang on Windows
Supporting compiling on Windows is more complicated than initially expected, so
it won't make it into CMake 3.18.
Add a helpful error for users.
2020-06-16 14:06:43 -04:00
Brad King
7fa5ea130b Merge topic 'cuda_clang_toolkit_path' into release-3.18
ec59fb6c31 CUDA: Determine CUDA toolkit location for NVCC
0a056246a1 CUDA: Pass toolkit path to Clang
9c43972127 FindCUDAToolkit: Avoid unnecessary temporary variable computing binary dir
9eebb5b8b2 FindCUDAToolkit: Remove unnecessary checks around searches
8f01fe7bf1 FindCUDAToolkit: Use list(SORT) to sort in natural order
8c144fe9ad FindCUDAToolkit: Compute CUDAToolkit_INCLUDE_DIR instead of searching
403f8d31e3 FindCUDAToolkit: Add CUDAToolkit_LIBRARY_ROOT
6636693134 FindCUDAToolkit: Re-unify with Internal/CUDAToolkit

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4828
2020-06-15 09:25:29 -04:00
Brad King
a3881d6313 Merge topic 'cuda_architectures_disable' into release-3.18
877a92e968 CUDA: Add support for disabling CUDA_ARCHITECTURES

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4886
2020-06-15 09:24:37 -04:00
Raul Tambre
877a92e968 CUDA: Add support for disabling CUDA_ARCHITECTURES
The ability to disable adding architectures completely for packaging purposes
and cases requiring passing the architectures flags explicitly has been
requested.
Support a false value for CUDA_ARCHITECTURES and CMAKE_CUDA_ARCHITECTURES
for this purpose.

Implements #20821.
2020-06-15 09:13:32 -04:00
Raul Tambre
b365385d66 Clang: Record Clang 6.0+ as fully supporting C++17 2020-06-13 11:29:55 +03:00
Raul Tambre
5d26efe38f Clang: Add final C++20 flag for Clang 11.0+
-std=c++20 superseded -std=c++2a in upstream Clang commit
24ad121582454e625bdad125c90d9ac0dae948c8.
2020-06-13 11:29:51 +03:00
Raul Tambre
ec59fb6c31 CUDA: Determine CUDA toolkit location for NVCC
Similar to how we already do for Clang. Avoids a lot of redundant work in
FindCUDAToolkit.
2020-06-12 23:13:57 +03:00
Raul Tambre
0a056246a1 CUDA: Pass toolkit path to Clang
Clang isn't very good at finding the installed CUDA toolkit.
The upstream recommendation is that we should pass the toolkit explicitly.

Additionally:
* Avoids Clang having to search for the toolkit on every invocation.
* Allows the user to use a toolkit from a non-standard location by simply
  setting CUDAToolkit_ROOT. The same way as with FindCUDAToolkit.

Clang wants the directory containing the device library and version.txt as the
toolkit path.
We thus pass the newly introduced CUDAToolkit_LIBRARY_ROOT as the toolkit path.

We save CUDAToolkit_ROOT_DIR and CUDAToolkit_LIBRARY_ROOT on Clang to have them
available in try_compile() and avoid unnecessary re-searching or a possibly
different installation being found in FindCUDAToolkit.
This however means that the selected toolkit can't be changed after the initial
language enablement.

We now determine CUDA compiler ID before doing actual detection, as we don't
want to spend time finding the CUDA toolkit for NVIDIA.

Implements #20754.
2020-06-12 21:50:05 +03:00
Raul Tambre
9c43972127 FindCUDAToolkit: Avoid unnecessary temporary variable computing binary dir 2020-06-12 21:49:15 +03:00
Raul Tambre
9eebb5b8b2 FindCUDAToolkit: Remove unnecessary checks around searches
find_*() don't search if the result variable is already set.
Remove the if()s around such cases.
2020-06-12 21:49:15 +03:00
Raul Tambre
8f01fe7bf1 FindCUDAToolkit: Use list(SORT) to sort in natural order
We had a custom loop to sort in the natural order. Since CMake 3.18 this is
supported natively by CMake and simplifies the code significantly.
2020-06-12 21:49:15 +03:00
Raul Tambre
8c144fe9ad FindCUDAToolkit: Compute CUDAToolkit_INCLUDE_DIR instead of searching
We can avoid searching for this since CUDAToolkit_TARGET_DIR always contains
the include/ directory. But add a warning just in case.

Also apply this in CMakeDetermineCUDACompiler for Clang code.
2020-06-12 21:49:15 +03:00
Raul Tambre
403f8d31e3 FindCUDAToolkit: Add CUDAToolkit_LIBRARY_ROOT
On scattered installations version.txt and nvvm are located at this location.
This may be useful to users and will allow us in the future to parse
version.txt instead of invoking nvcc to figure out the CUDA toolkit version.

We also add it to CMakeDetermineCUDACompiler in preparation for future use by
Clang code.
2020-06-12 21:49:15 +03:00
Raul Tambre
6636693134 FindCUDAToolkit: Re-unify with Internal/CUDAToolkit
A portion of FindCUDAToolkit was previously split in commit dc2eae1f
(FindCUDAToolkit: Factor out discovery code into a separate file, 2020-04-22)
out into Internal/CUDAToolkit to allow re-use of the code in
CMakeDetermineCUDACompiler for Clang support.

This has turned out to be a bad solution due to Clang requiring quite a bit of
special handling and special handling for NVCC leaking out from
Internal/CUDAToolkit into the Clang code using it.

Thus it seems better to re-unify this code and duplicate the parts of the code
necessary for Clang where it's required. This will help us get logic correct
for both NVCC and CUDA handling. We can still unify the common parts in the
future once the code has matured.
2020-06-12 21:49:15 +03:00
Brad King
01fb8d7993 Merge topic 'nvcc_supports_cuda17' into release-3.18
95700be52d CUDA: Teach CMake that NVCC 11 supports cuda_std_17

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4872
2020-06-11 07:45:29 -04:00
Ron Klein
c1de3d1b34 FindProtobuf: Fix typo in documentation
typo: "filess" ==> "files"
2020-06-10 15:01:37 -04:00
Robert Maynard
95700be52d CUDA: Teach CMake that NVCC 11 supports cuda_std_17 2020-06-10 13:27:51 -04:00
Brad King
577c86e59d Merge topic 'cpack-ifw-3.2' into release-3.18
b79aad8069 CPack/IFW: Add Qt installer framework version 3.2

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4859
2020-06-09 09:23:08 -04:00
Brad King
5bb24ed550 Merge topic 'FindOpenSSL-3.0' into release-3.18
796b447373 FindOpenSSL: Fix OpenSSL 3.0.0 version extraction

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4860
2020-06-09 08:53:05 -04:00
Billy Brumley
796b447373 FindOpenSSL: Fix OpenSSL 3.0.0 version extraction
Fix the regex syntax added by commit 61d746e592 (FindOpenSSL: Detect
OpenSSL 3.0.0, 2020-05-27, v3.17.3~1^2).  Add missing escapes.
Test with `openssl-3.0.0-alpha3`.

While at it, also unset a temporary variable after use.
2020-06-08 08:24:57 -04:00
Frederik Gladhorn
b79aad8069 CPack/IFW: Add Qt installer framework version 3.2
Qt 5.15 comes with IFW 3.2
2020-06-08 08:11:39 -04:00
Frederik Gladhorn
f859e6f812 CPack/IFW: Fix documentation typo: REQUARED 2020-06-08 08:08:58 -04:00
Brad King
45ecea430b Merge topic 'cuda_cudart_status' into release-3.18
7e2f86461a FindCUDAToolkit: Fix cudart not found status message

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4861
2020-06-08 07:57:52 -04:00
Raul Tambre
7e2f86461a FindCUDAToolkit: Fix cudart not found status message
This ended up after the searching after commit dc2eae1 (FindCUDAToolkit: Factor
out discovery code into a separate file, 2020-04-22).
Move it back to where it was and should be.
2020-06-08 07:56:31 -04:00
Brad King
6f8a31849c Merge topic 'cuda_clang_simulate' into release-3.18
0f88b7a592 CUDA: Fix Clang depfile flags when simulating MSVC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4863
2020-06-08 07:55:51 -04:00
Raul Tambre
0f88b7a592 CUDA: Fix Clang depfile flags when simulating MSVC
__compiler_clang() doesn't call __compiler_gnu() if we're emulating MSVC. Thus
CMAKE_DEPFILE_FLAGS_CUDA remains unset and compiling doesn't work, due to NVCC
dependency injection workaround in CMakeCUDAInformation.cmake, which triggers
for Ninja if they're not set.
Always set the depfile flags to fix this. Most other compiler modules seem to
do the same.
2020-06-08 07:54:51 -04:00
Brad King
8325683420 Merge topic 'cuda_user_architectures_specifiers' into release-3.18
4eaf1ef425 CUDA: Fix checking working architectures with specifiers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4856
2020-06-08 07:53:26 -04:00
Raul Tambre
4eaf1ef425 CUDA: Fix checking working architectures with specifiers
We don't distinguish real/virtual architectures during compiler detection.
If the user passes -DCMAKE_CUDA_ARCHITECTURES="70-virtual" we'll test with only
the real architecture.
If it works "architectures" will end up as "70". We check equality using
strings, so this fails and we incorrectly throw an error.
Fix this by comparing against CMAKE_CUDA_ARCHITECTURES with the specifiers
stripped.

We need to deduplicate tested_architectures for the same reason in case the
user specified something like "70-real;70-virtual".
2020-06-05 15:04:23 +03:00
Osama Moharam
ef816610be ARMClang: allow fallback to -march and correct setting of --cpu flags
allows cmake to fall back to CMAKE_SYSTEM_ARCH in case CMAKE_SYSTEM_PROCESSOR is not in armclang -mcpu=list
additionally checks if CMAKE_SYSTEM_PROCESSOR belongs to armlink --cpu=list

Fixes: #19962
2020-06-03 16:58:31 +02:00
Brad King
007109b20f Merge topic 'armclang-armlink'
73fb6ac82b ARMClang: Add support for armlink

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4811
2020-06-03 06:10:14 -04:00
Osama Moharam
73fb6ac82b ARMClang: Add support for armlink
sets CMAKE_LIBRARY_PATH_FLAG to '--userlibpath=' when using armlink.

Fixes: #20761
2020-06-02 11:32:32 -04:00
Brad King
e76c11aa7c Merge branch 'backport-3.17-pch-no-Fortran' into pch-no-Fortran 2020-06-02 08:24:11 -04:00
Brad King
10c88c4337 PCH: Do not enable GNU or Intel PCH settings for Fortran
The PCH settings are shared by C and CXX languages but do not make sense
for Fortran.  In particular, `CMAKE_PCH_EXTENSION` should not be set
because it can overwrite the value set for C/C++ languages, which may
have a different compiler vendor than the Fortran compiler.

Fixes: #20752
2020-06-02 08:23:40 -04:00
Brad King
75a34b1214 Merge topic 'UseSWIG-note-dep-strategy'
1f543b23a8 UseSWIG: note dependency behavior for Make generators

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4834
2020-06-02 08:00:07 -04:00
Brad King
a0c4c27443 Merge topic 'macos-sdk-libraries'
444dbd40de Darwin: honour `CMAKE_OSX_SYSROOT` more faithfully

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4779
2020-06-02 07:57:07 -04:00
Kyle Edwards
97fa63c09b ASM: Fix preprocessor definition flags for GNU 'as' tool
Fixes: #20780
2020-06-01 14:43:37 -04:00
Ben Boeckel
1f543b23a8 UseSWIG: note dependency behavior for Make generators
See: #20067
2020-06-01 10:09:56 -04:00
Brad King
6f5f87966b Merge topic 'fc-ep-git-update-strategy'
8aa4d51ec5 ExternalProject: Add missing release note for git update strategy
1236590507 FetchContent: Pass through CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY if set
e71c2807ba ExternalProject: Remote checkout needs to include the remote name

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4818
2020-06-01 07:49:14 -04:00
Saleem Abdulrasool
444dbd40de Darwin: honour CMAKE_OSX_SYSROOT more faithfully
The libraries in the SDK should be given precedence over the system
libraries.  Check for the default library search path (in default order)
of `/usr/lib` and `/usr/local/lib` and use these as system prefix paths
for libraries when performing the link step against a specified SDK.
2020-05-30 20:32:38 -07:00
Craig Scott
1236590507 FetchContent: Pass through CMAKE_EP_GIT_REMOTE_UPDATE_STRATEGY if set
This was missed when the initial support was added in
commit 0aea435aa1 (ExternalProject: Provide choice of
git update strategies, 2020-02-12)
2020-05-29 12:10:32 -04:00
Craig Scott
e71c2807ba ExternalProject: Remote checkout needs to include the remote name
Commit 0aea435aa1 (ExternalProject: Provide choice of
git update strategies, 2020-02-12) added the git update
strategies, but the CHECKOUT strategy was not handling
remote refs correctly. The local ref would be checked out
instead and no warning or error would have been emitted.
The test that should have caught this was also malformed
and did not actually move the local master branch as intended.
2020-05-29 12:10:32 -04:00
Raul Tambre
650c1029a0 CUDA: Detect non-working user-specified architectures on NVCC
Extend the improved error message added for Clang by commit 19cc5bc296
(CUDA: Throw error if user-specified architectures don't work,
2020-05-26) to cover NVCC as well.

Also fix the error incorrectly being thrown if the user-specified list
differed in order to the architectures parsed from the compiler output.

Implements: #20757
2020-05-29 11:55:47 -04:00
Brad King
b8fe888c12 Merge topic 'FindSubversion-xcode-removed'
2c0db404d1 FindSubversion: Do not accept macOS stub without Xcode implementation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4813
2020-05-29 07:11:58 -04:00
Brad King
2c0db404d1 FindSubversion: Do not accept macOS stub without Xcode implementation
Xcode no longer provides a `svn` implementation, but the `/usr/bin/svn`
stub may still exist.
2020-05-28 11:37:47 -04:00
Brad King
54eeccbfb6 Merge topic 'openssl-3.0.0' into release-3.17
61d746e592 FindOpenSSL: Detect OpenSSL 3.0.0

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4805
2020-05-28 06:51:52 -04:00
Brad King
40748ec1d9 Merge topic 'openssl-3.0.0'
61d746e592 FindOpenSSL: Detect OpenSSL 3.0.0

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4805
2020-05-28 06:51:52 -04:00
Brad King
a1af643291 Merge topic 'fix-cpack-deb-generating-empty-paragraph'
6ba842163c CPack-deb: don't add a line with a dot to pkg desc

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4806
2020-05-28 06:50:40 -04:00
Jonathan Verner
6ba842163c CPack-deb: don't add a line with a dot to pkg desc
Currently, if the package description ends with a newline
(typically if it is read from a file) cpack -deb adds a single line
with a dot at the end which leads to a violation of the
`extended-description-contains-empty-paragraph` debian policy.

This commit fixes the above behaviour.

Fixes: #20763
2020-05-27 14:44:28 -04:00
Brad King
6b208d873e Merge topic 'cuda_user_architectures'
19cc5bc296 CUDA: Throw error if user-specified architectures don't work

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4800
2020-05-27 14:30:32 -04:00
Vitezslav Cizek
61d746e592 FindOpenSSL: Detect OpenSSL 3.0.0
The OpenSSL versioning is changing with the upcoming 3.0.0 release.
https://www.openssl.org/blog/blog/2018/11/28/version/
Since 3.0.0, the patch letters are being dropped. The new format is:
MAJOR.MINOR.PATCH

The OPENSSL_VERSION variable can now be directly derived from the new
OPENSSL_VERSION_STR macro.
https://www.openssl.org/docs/manmaster/man3/OPENSSL_VERSION_NUMBER.html
2020-05-27 09:08:10 -04:00