summaryrefslogtreecommitdiff
path: root/Modules
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'cuda_generic_arch_all'Brad King2022-02-024-78/+150
|\ | | | | | | | | | | | | | | 8f64df0a7c CUDA: Generic all and all-major support Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Alex <leha-bot@yandex.ru> Merge-request: !6816
| * CUDA: Generic all and all-major supportRaul Tambre2022-02-014-78/+150
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 14d8a276 (CUDA: Support nvcc 11.5 new -arch=all|all-major flags, 2021-08-17) added all and all-major options to CUDA_ARCHITECTURES. These are fairly generic and likely to see real-world use by distributors. Thus it's desirable to support these also for Clang and older NVCC versions. The supported architectures are dependent on the toolkit version. We determine the toolkit version prior to compiler detection. For NVCC we get the version from the vendor identification output, but for Clang we need to invoke NVCC separately. The architecture information is mostly based on the Wikipedia list with the earliest supported version being CUDA 7.0. This could be documented and expanded in the future to allow projects to query CUDA toolkit version and architecture information. For Clang we additionally constrain based on its support. Additionally the architecture mismatch detection logic is fixed, improved and updated for generic support: * Commit 01428c55 (CUDA: Fail fast if CMAKE_CUDA_ARCHITECTURES doesn't work during detection, 2020-08-29) enabled CMAKE_CUDA_COMPILER_ID_REQUIRE_SUCCESS if CMAKE_CUDA_ARCHITECTURES is specified. This results in CMakeDetermineCompilerID.cmake printing the compiler error and our code for presenting the mismatch in a user-friendly way being useless. The custom logic seems preferable so go back to not enabling it. * Commit 14d8a276 (CUDA: Support nvcc 11.5 new -arch=all|all-major flags, 2021-08-17) tried to support CMP0054 but forgot to add x to the interpolated result. Thus the conditions would always evaluate to false. This is fixed as a byproduct of removing NVIDIA specific checks, improving the error message and replacing architectures_mode with a simpler architectures_explicit. Visual Studio support omits testing the flags during detection due to complexities in determining the toolkit version when using it. A long-term proper implementation would be #23161. Implements #22860.
* | Merge topic 'ep-redownload-on-SOURCE_DIR-change'Brad King2022-02-022-63/+63
|\ \ | | | | | | | | | | | | | | | | | | d3477eba06 ExternalProject: Rerun download on SOURCE_DIR change Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6926
| * | ExternalProject: Rerun download on SOURCE_DIR changeCraig Scott2022-02-012-63/+63
| | | | | | | | | Fixes: #21748
* | | Merge topic 'FindHDF5-imported-per-config'Brad King2022-02-011-4/+42
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | db9d911db0 FindHDF5: Set config-specific locations for imported targets d28e5263fe FindHDF5: Drop IMPORTED_IMPLIB property from imported UNKNOWN libraries Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6931
| * | | FindHDF5: Set config-specific locations for imported targetsBrad King2022-01-311-2/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the imported target locations added by commit a8e0a6b3e4 (FindHDF5: Port changes from VTK, 2020-06-10, v3.19.0-rc1~312^2~1) to use config-specific locations. Issue: #21637
| * | | FindHDF5: Drop IMPORTED_IMPLIB property from imported UNKNOWN librariesBrad King2022-01-311-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The imported targets added by commit a8e0a6b3e4 (FindHDF5: Port changes from VTK, 2020-06-10, v3.19.0-rc1~312^2~1) to use config-specific locations set the `IMPORTED_IMPLIB` target property. That property has no meaning for an imported library with type `UNKNOWN`. Drop it to avoid confusion.
* | | | Merge topic 'feature/findruby-3x'Brad King2022-02-011-7/+28
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6b6bc7791d FindRuby: evict non-matching binaries and keep scanning. 42d99a248e FindRuby: add support for versions up to 3.1. Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !6925
| * | | | FindRuby: evict non-matching binaries and keep scanning.Mihai Moldovan2022-01-311-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The possible executable names list always starts with a plain "ruby" binary, which is scanned for first. If that does exist (which satisfies find_program), but doesn't match the requested version, the executable will be dismissed by _RUBY_VALIDATE_INTERPRETER (which is sane), but searching also stops. Fix that by keeping the search going, removing items from the list as we go, until find_program returns a path that _RUBY_VALIDATE_INTERPRETER is happy with or the list is empty.
| * | | | FindRuby: add support for versions up to 3.1.Mihai Moldovan2022-01-311-6/+16
| | |/ / | |/| |
* | | | Merge topic 'cpack_nsis_no_description'Brad King2022-02-011-2/+1
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | | | | | | | | | b56e0f4689 CPack/NSIS: Fix description not displayed for components Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6920
| * | | CPack/NSIS: Fix description not displayed for componentsJohnny Jazeix2022-01-291-2/+1
| |/ / | | | | | | | | | Fixes: #23151
* | | Merge topic 'iar_cmp0057'Brad King2022-01-311-3/+6
|\ \ \ | |/ / |/| | | | | | | | | | | | | | cc4da8d13a IAR/CXX: Fix compatibility with CMP0057 OLD Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6921
| * | IAR/CXX: Fix compatibility with CMP0057 OLDRaul Tambre2022-01-291-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit a9073db7 (IAR: update language specification detection, 2021-09-23) added usage of the if() IN_LIST operation and forgot to account for it not being available in CMP0057 OLD mode. Push and temporarily enable the policy. Also avoid the unnecessary temporary variable for the list. Fixes #23147.
| * | Merge topic 'FindThreads-libc-pthread-flag' into release-3.22Brad King2022-01-271-8/+11
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | 5efb6fb516 FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libc Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6906
| | * | FindThreads: Honor THREADS_PREFER_PTHREAD_FLAG when pthread is found in libcMattias Ellert2022-01-261-8/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `-pthread` flag tells the compiler/linker to link to additional libraries needed for thread support (e.g. libatomic on riscv64). The flag therefore should be used if requested using `THREADS_PREFER_PTHREAD_FLAG` also when the pthread functions are found in libc.
* | | | Merge topic 'FindOpenSSL-wince'Brad King2022-01-291-1/+5
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b5a21b0d84 FindOpenSSL: Fix ws2 reference on WinCE Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6914
| * | | | FindOpenSSL: Fix ws2 reference on WinCEleha-bot2022-01-281-1/+5
| | | | | | | | | | | | | | | | | | | | Fixes: #23070
* | | | | IBMClang: Do not use -fvisibility on AIXBrad King2022-01-282-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use of `-fvisibility=hidden` fails: unsupported option '-fvisibility=hidden' for target 'powerpc-ibm-aix7.2.0.0' Apply the change from commit 4feba34d02 (GNU: Do not use -fvisibility on AIX or HP-UX, 2016-09-03, v3.7.0-rc1~173^2~2) to IBMClang also. Issue: #23157
* | | | | Merge topic 'ibmclang-compiler'Brad King2022-01-2811-1/+190
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8c1731546c Help: Add release note for IBM Open XL C/C++ compiler support 24da80b70a Utilities: Suppress warnings in third-party code with IBMClang 6da99e671c IBMClang: Add support for IBM Open XL C/C++ Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6785
| * | | | | IBMClang: Add support for IBM Open XL C/C++Aaron Liu2022-01-2711-1/+190
| | | | | | | | | | | | | | | | | | | | | | | | Fixes: #22929
* | | | | | CUDA: Fix issuing error if default architecture detection failsRaul Tambre2022-01-271-32/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We require CUDA_ARCHITECTURES to be set for targets (see CMP0104). If not set anything after compiler detection such as ABI detection will fail to generate. This means we need to error if CMAKE_CUDA_ARCHITECTURES is not set to a valid value as a result of compiler detection. Currently we fail to issue the error if compiler detection failed and the ID is unset. In such a case we won't define detected_architecture making the code responsible for the error unreachable. Simplify the detection of architectures used during compiler detection by always detecting all of them, which enables us to simply the check in the "default to compiler" path if CMAKE_CUDA_ARCHITECTURES is empty. As a result we need to move the error checking and CMAKE_CUDA_ARCHITECTURES=OFF handling fully into the default path thus simplifying the code and unifying the code paths for NVCC and CUDA. This also happens to fix: 1. CMAKE_CUDA_ARCHITECTURES=OFF on Clang. 2. A theoretical issue of a compiler defaulting to multiple architectures. I've additionally added printing of the compiler output along the error to better reveal possible underlying compiler/system configuration issues. Fixes #23010.
* | | | | | CUDA: Error on empty/invalid CMAKE_CUDA_ARCHITECTURES set by userRaul Tambre2022-01-271-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If empty we otherwise treat it the same as unset in most places, but still end up failing eventually with a confusing "Failed to find a working CUDA architecture". This also detects some other basic invalid ones (e.g. "al").
* | | | | | CUDA: Actually use reverse architecture deprecation order for ClangRaul Tambre2022-01-271-1/+1
| |/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | The code now matches what the comment describes. This mistake seems to have been present since the initial introduction in commit 5df21adf (CUDA: Add support for Clang compiler, 2020-05-07).
* | | | | FindCUDA: Make version extraction robust to empty outputDavid Berard2022-01-261-2/+2
| | | | | | | | | | | | | | | | | | | | I found that `NVCC_OUT` was sometimes empty when I was building.
* | | | | Merge topic 'FindMPI-static-first'Brad King2022-01-261-1/+1
|\ \ \ \ \ | | |/ / / | |/| | | | | | | | | | | | | | | | | | | | | | | 036d0cbbde FindMPI: Place static first in mpi test source Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6900
| * | | | FindMPI: Place static first in mpi test sourceBrad King2022-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move the `static` added by commit 8cce0ad32f (FindMPI: Fix missing static warning in the mpi test source, 2021-06-30, v3.22.0-rc1~502^2) to the beginning of the line. Fixes: #23141
* | | | | Merge topic 'FindXercesC-NAMES_PER_DIR'Brad King2022-01-261-0/+2
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 47cbc08594 FindXercesC: Use NAMES_PER_DIR Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6898
| * | | | | FindXercesC: Use NAMES_PER_DIRjpfeuffer2022-01-251-0/+2
| | |_|_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | This was missing for us for Xerces. Issue: #20882
* | | | | Merge topic 'FindCUDAToolkit-doc'Brad King2022-01-251-3/+1
|\ \ \ \ \ | |_|_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | | 5067b6b6ee FindCUDAToolkit: Remove duplicated targets in docs Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6892
| * | | | FindCUDAToolkit: Remove duplicated targets in docsGuo2022-01-241-3/+1
| | | | | | | | | | | | | | | | | | | | Also remove an unfinished sentence.
* | | | | Merge topic 'cmp0128_cuda'Brad King2022-01-242-2/+2
|\ \ \ \ \ | |_|/ / / |/| | / / | | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | ee1396e29e CMP0128: Add flag in OLD mode even when standard matches the default b2c25de8e0 CMP0128: Avoid test code duplication 3a089cd256 CMP0128: Prefix test names with mode e13dd52535 XL: Detect default extensions mode for legacy compiler Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6890
| * | | XL: Detect default extensions mode for legacy compilerRaul Tambre2022-01-232-2/+2
| | | | | | | | | | | | | | | | | | | | The legacy non-Clang variant seems to support a GNU-like extensions mode, which is the default. Enable detection for it.
* | | | ExternalProject: Move inline scripts to separate filesCraig Scott2022-01-226-222/+337
| | | | | | | | | | | | | | | | | | | | | | | | This makes the scripts easier to work on, since the separate files don't require the extra level of escaping that the inlined code did. This also means the scripts can be rendered with appropriate syntax highlighting in IDEs, etc.
* | | | ExternalProject: Ensure _ep_set_directories records cmake pathsCraig Scott2022-01-221-0/+5
| | | |
* | | | ExternalProject: Move existing step scripts to separate subdirectoryCraig Scott2022-01-225-8/+8
| |/ / |/| | | | | | | | | | | This is in preparation for moving more inline content to separate scripts as well. Having them in a separate subdirectory is consistent with other modules and will make them easier to find and work with.
* | | Merge topic 'CheckPIESUpported-supports-SYSROOT'Brad King2022-01-204-11/+40
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 219dde4ea8 CheckPIESupported: now uses any SYSROOT settings 4fa105d34e Check{Compiler,Linker}Flag: Add possibility to retrieve check outputs Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !6877
| * | | CheckPIESupported: now uses any SYSROOT settingsMarc Chevrier2022-01-191-10/+16
| | | | | | | | | | | | | | | | Fixes: 23053
| * | | Check{Compiler,Linker}Flag: Add possibility to retrieve check outputsMarc Chevrier2022-01-193-1/+24
| | | |
* | | | Merge topic 'FortranCInterface-gcc-12-lto'Brad King2022-01-201-0/+13
|\ \ \ \ | | |/ / | |/| | | | | | | | | | | | | | | | | | 6a0ce19ce1 FortranCInterface: Fix compatibility with GCC gfortran 12 LTO Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6879
| * | | FortranCInterface: Fix compatibility with GCC gfortran 12 LTOBjörn Esser2022-01-191-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since version 12.0 the GCC Fortran compiler has implemented "WG5/N1942", which causes, if link-time opmization is enabled, obfuscation of hard-coded string values in the compiler objects and its resulting ELF-binaries. This causes the CMake-internal detection of the mangling scheme for the naming of subroutines to fail. Thus we must ensure to have any link-time optimization features to be disabled on the executable file we perform the detection on. The static libraries, however, must be build with LTO and non-LTO objects, as that will ensure the verify step will operate on IPO objects, if building those is requested by the system compiler flags. Fixes: #23123 Signed-off-by: Björn Esser <besser82@fedoraproject.org>
* | | | CPack/DMG: Add explicit option to use CPACK_RESOURCE_FILE_LICENSE for SLABrad King2022-01-181-0/+5
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since macOS 12.0, the ``hdiutil udifrez`` and ``hdiutil udifderez`` commands to embed and extract resources in a disk image are deprecated. The CPack DragNDrop Generator uses these to attach the SLA specified by the `CPACK_RESOURCE_FILE_LICENSE` option. Since that option is shared by multiple CPack generators, we cannot deprecate it. Instead, add an explicit option to control the behavior. This will give projects a way to package on future macOS versions that remove the commands. In order to provide a long-term transition away from attaching SLAs to disk images, update `cpack` to default this behavior to OFF. To retain compatibility for CMake projects, teach the CPack module to default the option to ON. Later a policy can be added to change the default. Issue: #22978
* | | Merge topic 'cuda_host_env'Brad King2022-01-181-9/+9
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 70f5d9eb49 CUDA: Fix CMAKE_CUDA_COMPILER_ARG1 cache description ad6cd1074b Help: Correct CUDAHOSTCXX and CUDAARCHS as having higher precedence Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6872
| * | | CUDA: Fix CMAKE_CUDA_COMPILER_ARG1 cache descriptionRaul Tambre2022-01-151-9/+9
| | | | | | | | | | | | | | | | Also corrected the misleading indentation.
* | | | Merge topic 'CheckLinkerFlag-update-implementation'Brad King2022-01-184-111/+116
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 9d1b9a4aa1 CheckLinkerFlag: rely now on internal implementation 660e0d80ae internal/CheckCompilerFlag: rely on common configuration Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6860
| * | | | CheckLinkerFlag: rely now on internal implementationMarc Chevrier2022-01-142-47/+37
| | | | | | | | | | | | | | | | | | | | | | | | | This internal implementation share the configuration with CheckCompilerFlag.
| * | | | internal/CheckCompilerFlag: rely on common configurationMarc Chevrier2022-01-142-64/+79
| | | | | | | | | | | | | | | | | | | | | | | | | Extract configuration step from the CheckCompilerFlag command to enable to share it with future CheckLinkerFlag implementation
* | | | | Merge topic 'IntelLLVM-windows-link-with-driver'Brad King2022-01-181-0/+13
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | 79921fb00c IntelLLVM: Set linker to compiler driver for Windows Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6866
| * | | | IntelLLVM: Set linker to compiler driver for WindowsWilliam R. Dieter2022-01-141-0/+13
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For IntelLLVM, linking with the compiler driver is preferred over using the linker directly. This is especially true when doing offload to a target accelerator, which can produce object files that the regular linker will not handle properly. Windows-IntelLLVM relies on Windows-MSVC.cmake for many definitions. This commit does not change that, but does override the MSVC defaults for linking executables, shared libraries, and static libraries so that CMake will use the compiler driver instead of the linker. Signed-off-by: William R. Dieter <william.r.dieter@intel.com>
* | | | Merge topic 'cudatoolkit_find_cufft_static_nocallback'Brad King2022-01-131-0/+4
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a4126d1c01 CUDAToolkit: Add CUDA::cufft_static_nocallback target Acked-by: Kitware Robot <kwrobot@kitware.com> Reviewed-by: Raul Tambre <raul@tambre.ee> Merge-request: !6856