11774 Commits

Author SHA1 Message Date
Brad King
bc0d6e61fd Merge topic 'hip-no-hipcc' into release-3.21
cb93f72624 HIP: Simplify detection of HIP runtime CMake package
a71f0fc9c7 HIP: Remove ROMClang compiler id and use Clang directly
b125e9809a HIP: Detect ROCm path earlier
735f41fc2d HIP: Use 'rocm_agent_enumerator' to determine CMAKE_HIP_ARCHITECTURES

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Raul Tambre <raul@tambre.ee>
Acked-by: Axel Huebl <axel.huebl@plasma.ninja>
Merge-request: !6533
2021-09-20 12:38:43 -04:00
Brad King
1127b591ec Merge topic 'android-PATH' into release-3.21
94f3776774 Android: Restore searching PATH for executables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6528
2021-09-17 09:33:44 -04:00
Brad King
cb93f72624 HIP: Simplify detection of HIP runtime CMake package
It only makes sense to use the CMake package from the same ROCm
installation that the compiler uses.  Ask the HIP compiler to report the
location of the ROCm installation.  Verify up front that it contains the
expected CMake package file.
2021-09-16 15:33:53 -04:00
Brad King
a71f0fc9c7 HIP: Remove ROMClang compiler id and use Clang directly
Since commit bd844387df (ROCMClang: Add the ROCm toolkit derived clang
compiler to CMake, 2020-08-28, v3.21.0-rc1~66^2~6) and commit ff0d2858e1
(HIP: Extract clang compiler details from hipcc, 2020-10-21,
v3.21.0-rc1~66^2~5), the separate `ROCMClang` compiler id for `hipcc`
has caused a few problems:

* The compiler id changed from behavior of CMake 3.20 and below,
  breaking projects that already built with `hipcc` treated as `Clang`.

* The implementation of `target_compile_features` was incomplete for
  the `ROCMClang` identity.

* Only `hipcc` was identified as `ROCMClang`, so after it is unwrapped
  to the underlying `clang++`, future runs of new CMake versions on
  an existing build tree would not repeat this.

* Clang should be usable as a HIP compiler without the `hipcc` wrapper.

Remove the `ROMClang` compiler identity, and revise HIP language support
to work directly with a Clang compiler.

Reject direct `hipcc` usage as a HIP compiler.  For now it cannot be
supported because it interferes with flags CMake needs to pass to Clang.

Fixes: #22536, #22460, #22593
2021-09-16 15:33:47 -04:00
Brad King
b125e9809a HIP: Detect ROCm path earlier
Fail early if it is not found.

Use the detected location as a hint to find `rocm_agent_enumerator`.

Also remove the leading `_` prefix in case we want to document this
publicly later.
2021-09-16 14:45:07 -04:00
Zack Galbreath
735f41fc2d HIP: Use 'rocm_agent_enumerator' to determine CMAKE_HIP_ARCHITECTURES 2021-09-16 14:41:30 -04:00
hhb
94f3776774 Android: Restore searching PATH for executables
Since commit a7f41a7ee4 (Android: Fix find_* search order within NDK for
unified toolchains, 2020-10-13, v3.20.0-rc1~610^2), we turn off
`CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH`.  This breaks `find_program`
searching `PATH` for host executables.  Fortunately, the setting turns
out not to be necessary, perhaps since commit cbc51a8be3 (Android:
restructure android search paths, 2020-11-06, v3.20.0-rc1~509^2).
Without it, none of NDK tests fail, so remove it to restore pre-3.20
behavior.

Fixes: #22634
2021-09-16 08:45:33 -04:00
Jean-Marc Hengen
f77ffbc0e3 IAR: Restore support for projects not enabling policy CMP0057
Since commit 5b9bfe738c (IAR: Moved search logic to BinUtils.,
2021-07-19, v3.21.1~14^2), we use the `IN_LIST` operator in the
`CMakeFindBinUtils` module.  Set policy `CMP0057` to ensure it is
available regardless of the project's policy settings.

Fixes: #22640
2021-09-16 08:30:51 -04:00
Marc Chevrier
45e4ba11cd Merge topic 'FindPyhton-homebew-on-Mac-M1' into release-3.21
2636ad5045 FindPython: Ensure homebrew on Mac M1 is used

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6499
2021-09-07 05:18:54 -04:00
Brad King
31a5b256b9 Merge topic 'vs2022' into release-3.21
38c8f2c4e3 IRSL: Add discovery of VS 2022 v143 toolset redistributables
f01ea7e391 MSVC: Fix MSVC_TOOLSET_VERSION for VS 2022 v143 toolset

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6497
2021-09-03 10:18:49 -04:00
Marc Chevrier
2636ad5045 FindPython: Ensure homebrew on Mac M1 is used
Fixes: #22581
2021-09-03 14:59:52 +02:00
Brad King
38c8f2c4e3 IRSL: Add discovery of VS 2022 v143 toolset redistributables
Fixes: #22586
2021-09-02 13:47:46 -04:00
Brad King
f01ea7e391 MSVC: Fix MSVC_TOOLSET_VERSION for VS 2022 v143 toolset
This was forgotten in commit 0c7f918fb1 (VS: Update Visual Studio 17
2022 generator for Preview 2, 2021-07-14, v3.21.1~29^2) when the toolset
was first renumbered to `v143`.

Fixes: #22585
2021-09-02 13:47:42 -04:00
Brad King
1ad0c5ae53 FindBoost: Add support for Boost 1.77
Update the list of known versions.

Run the command

    cmake -DBOOST_DIR=/path/to/boost_1_77_0 \
      -P Utilities/Scripts/BoostScanDeps.cmake

to extract dependencies from the 1.77.0 source tree.  The dependencies
differ from those of 1.76: the `contract`, `thread`, and `wave`
components no longer depend on `date_time`.  The `math` component no
longer depends on `atomic`.

Fixes: #22588
2021-09-02 12:43:43 -04:00
Brad King
eae5533ab3 Merge topic 'GNUInstallDirs-variable-named-0' into release-3.21
49a5dbcaff GNUInstallDirs: avoid unwanted variable dereference

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6474
2021-08-25 09:12:22 -04:00
Brad King
fd64b84d15 Merge branch 'GNUInstallDirs-variable-named-0' into release-3.20
Merge-request: !6474
2021-08-24 10:02:58 -04:00
Ben Boeckel
49a5dbcaff GNUInstallDirs: avoid unwanted variable dereference
In some situations, it seems that the variable `0` is defined. In the
case found, it was set to `1`. This makes the detection of the missing
third argument bogus and unnecessarily triggers a warning.

This oversight was introduced in 229b5ee994 (GNUInstallDirs: Add dir
argument to GNUInstallDirs_get_absolute_install_dir, 2020-10-31) prior
to CMake 3.20's release cycle.
2021-08-22 12:42:48 -04:00
Ben Boeckel
2b2a6a7170 FindMPI: do not detect -framework as a compile flag
MPICH 3.4.2 now reports `-framework OpenCL` as one of its compilation
flag. The compile flag extraction is seeing it as a generic `-f` flag
and misses its argument. This ends up with a compile option of
`-framework` which eats the next flag (and may be very important).

It does not seem that passing `-framework` as a link flag is necessary
at this time, so that is being actively ignored for now.

Fixes: #22555
2021-08-19 13:09:39 -04:00
Brad King
30dd9b33a0 Merge topic 'FindPkgConfig-restore-legacy-behavior' into release-3.21
17e4934dbf FindPkgConfig: Restore legacy behavior when CMP0126 is set to NEW

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6461
2021-08-19 10:27:23 -04:00
Brad King
daeb4f0f50 Merge topic 'binutils-clang-fallback-ld' into release-3.21
788b7afff2 FindBinUtils: Fall back to ld for Clang without lld

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6457
2021-08-19 10:26:17 -04:00
Brad King
a7daf30070 Merge topic 'CheckLanguage-CMP0126' into release-3.21
89ed11ae6f CheckLanguage: Avoid CMP0126 warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6462
2021-08-19 10:25:15 -04:00
Brad King
89ed11ae6f CheckLanguage: Avoid CMP0126 warning
The macro's implementation converts a normal variable into a cache
variable intentionally, so both are set.  Explicitly set CMP0126 to NEW
to avoid a warning in trace mode.  This won't affect the module behavior
because the code path does not activate if a normal variable is already
defined anyway.

Fixes: #22548
2021-08-18 15:25:49 -04:00
Marc Chevrier
17e4934dbf FindPkgConfig: Restore legacy behavior when CMP0126 is set to NEW
Module behavior must be independent from `CMP0126` policy.

Fixes: #22526
2021-08-18 14:51:50 -04:00
Thomas Bernard
788b7afff2 FindBinUtils: Fall back to ld for Clang without lld
If `lld` is not available, Clang can still use `ld`.

Fixes: #22500
2021-08-18 14:31:21 -04:00
WangBin
164643fc39 Android: Fix NDK toolchain dir on arm64 mac 2021-08-18 14:09:33 -04:00
Brad King
81aef41569 Merge topic 'binutils-no-cmake-paths' into release-3.21
fc1f733cc7 BinUtils: Avoid searching CMAKE_PREFIX_PATH

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6434
2021-08-10 09:22:52 -04:00
Cristian Adam
fc1f733cc7 BinUtils: Avoid searching CMAKE_PREFIX_PATH
Our `find_program` calls specify `HINTS` to look in the toolchain's
directory first, and then in `PATH`.  `CMAKE_PREFIX_PATH` may be
specified by the user to help find packages for project dependencies,
but this should not override the binutils.

Fixes: #22512
2021-08-09 09:59:29 -04:00
Brad King
b5c4b70290 Merge topic 'nvhpc_support_new_c_and_c++_standards' into release-3.21
9ac426e460 NVHPC-C: Add support for C17
f5dbc27c27 NVHPC-CXX: Add support for C++20

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !6430
2021-08-09 09:36:58 -04:00
Brad King
ea8fc62194 Merge topic 'macos-10.4' into release-3.21
1af23c4de2 macOS: Restore support for Mac OS X 10.4 (Tiger)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6426
2021-08-06 10:48:20 -04:00
Robert Maynard
9ac426e460 NVHPC-C: Add support for C17 2021-08-05 16:19:23 -04:00
Robert Maynard
f5dbc27c27 NVHPC-CXX: Add support for C++20 2021-08-05 16:19:12 -04:00
Evan Miller
1af23c4de2 macOS: Restore support for Mac OS X 10.4 (Tiger)
Since commit 4aed96e230 (Apple: Set CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG
on non-macOS too, 2021-04-06, v3.20.1~5^2) we always enable support for
linking with `-rpath`.  The intention of the change was to enable using
the flag on iOS, tvOS and watchOS by avoiding a Darwin-specific version
check.  However, removing the check broke support for OS X 10.4 because
the flag is not supported on that version.

Restore a form of the check that disables the flag on OS X < 10.5 while
still allowing it for the other Apple platforms.  Since no one is doing
iOS/tvOS/etc development on 10.4, this change should have no unintended
side effects.

Fixes: #22490
2021-08-02 16:12:14 -04:00
Artur Samarin
3cdf23985f CPackRPM: avoid a spurious ; in the %pre and other sections with scripts
This was accidentally added by commit 34c8a23044 (CPackRPM: add
scriplets tags only if scripts exist, 2021-04-01, v3.21.0-rc1~387^2).

Fixes: #22501
2021-08-02 15:04:22 -04:00
Robert Maynard
7ce718376c NVHPC: Support 21.07 change to '-MD' where it behaves like gcc 2021-07-29 10:43:54 -04:00
Jessica Hamilton
a1261ce917 Platform/Haiku: Remove the include-once behavior
The behavior was added by commit 7ebc1cb2ff (Haiku: Several fixes to
platform module, 2013-10-05, v3.0.0-rc1~541^2~3), but was not explained
in its commit message.  No other platform modules do this.

The include-once behavior results in incorrect variables set in some
larger projects, e.g. .NET Core, particularly when cross-compiling,
`CMAKE_DL_LIBS` being one of these.  Remove it.
2021-07-29 08:42:46 -04:00
Yauheni Khnykin
0b5301a778 FindXCTest: Fix output directory for test bundle with Xcode 12.5
The fix from commit eafe740ead (FindXCTest: Fix output directory for
test bundle with new build system, 2021-02-09, v3.19.5~5^2) is not
necessary with Xcode 12.5, which seems to have changed/fixed the
behaviour again.

Fixes: #22462
2021-07-26 13:31:10 -04:00
Brad King
c8f13bcb41 Merge topic 'gnu_c23' into release-3.21
d61bc4241d GNU: Correct C23 flags

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6376
2021-07-23 09:40:35 -04:00
Brad King
41e9953143 Merge topic 'iar-binutils' into release-3.21
5b9bfe738c IAR: Moved search logic to BinUtils.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6372
2021-07-23 09:27:28 -04:00
Jean-Marc Hengen
5b9bfe738c IAR: Moved search logic to BinUtils.
The search logic for the IAR linker, librarian and related tools is
moved from `Modules/Compiler/IAR-FindBinUtils.cmake` to
`Modules/CMakeFindBinUtils.cmake` by introducing an new elseif block
for the IAR toolchain.

The search logic was refactored to omit repeating itself.

Fixes: #22425
2021-07-23 14:34:26 +02:00
Raul Tambre
d61bc4241d GNU: Correct C23 flags
Non-final forms aren't supported yet, unlike C++23.
Seems I might've gotten confused due to that when I added these.

Fixes #22453.
2021-07-21 20:25:02 +03:00
Brad King
d777ca12f6 CMakeDependentOption: Revert "Allow parentheses in the depends string"
Revert commit 0665d9092e (CMakeDependentOption: Allow parentheses in the
depends string, 2021-06-13, v3.21.0-rc1~32^2).  It broke existing use
cases with parentheses in regular expressions.  Also add a test for this.

Fixes: #22447
2021-07-20 12:18:53 -04:00
Brad King
31ecd37180 Merge topic 'iar-exe-suffix' into release-3.21
09bc0785ee Help: Document CMAKE_EXECUTABLE_SUFFIX_<LANG> explicitly
05a3bafe65 Compiler/IAR: Avoid clobbering CMAKE_EXECUTABLE_SUFFIX

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6357
2021-07-20 11:56:01 -04:00
Lorenzo Cappelletti
05a3bafe65 Compiler/IAR: Avoid clobbering CMAKE_EXECUTABLE_SUFFIX
Use `CMAKE_EXECUTABLE_SUFFIX_<LANG>` instead.

Fixes: #22426
2021-07-20 11:51:19 -04:00
Lorenzo Cappelletti
1c66012f8e Compiler/IAR: search for both IAR's binaries * and *.exe
IAR is available for both Linux and Windows OSes.  Moreover,
binaries `*.exe` could be called from a Linux box, or vice versa.
See also commit 01a4eec446 (IAR: Changes required for Linux,
2019-04-25, v3.15.0-rc1~185^2).

Fixes: #22312
2021-07-20 11:50:09 -04:00
Brad King
f75610d492 CMakeDetermineCompilerId: Fix CMAKE_EXECUTABLE_FORMAT in CMP0126 NEW behavior
Setting `CMAKE_EXECUTABLE_FORMAT` as a normal variable is unnecessary
because setting it as a cache entry already makes the value visible to
the calling scope.

Fixes: #22433
2021-07-19 15:28:14 -04:00
Brad King
095f49ec36 Merge topic 'enable_language-CMP0126' into release-3.21
3ddd7f3576 enable_language: Fix test for working compiler with CMP0126 NEW behavior

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6355
2021-07-19 12:50:57 -04:00
Brad King
7adfd890fb VS: Add CSharp VS 2022 compiler version and flag table v143
While the flag tables for C and C++ were generated from MSBuild `.xml`
files, the CSharp flag tables were written by hand.  Copy the `v142`
flag table to use for the `v143` toolset.
2021-07-15 13:12:07 -04:00
Brad King
b8d6a21e48 VS: Recognize CSharp VS 2019 compiler version v142 2021-07-15 13:11:41 -04:00
Brad King
3ddd7f3576 enable_language: Fix test for working compiler with CMP0126 NEW behavior
Update the logic that converts a `try_compile` result from a cache
entry to a normal variable to tolerate an existing normal variable
under CMP0126 NEW behavior.  Otherwise the `try_compile` result
is ignored because CMake uses the false value of the normal variable,
and CMake incorrectly reports that the compiler does not work.

This went unnoticed for some languages (e.g. C and CXX) because the
check for a working compiler is skipped if ABI detection works.
It does affect other languages (e.g. CSharp).

Fixes: #22423
2021-07-15 13:06:18 -04:00
Lingkai Dong
509ef50a06 ARMClang: Fix regression in check for working compiler
Given the compiler to use, `CMakeFindBinUtils.cmake` automatically
determines a number of tools including linker (CMAKE_LINKER) and archiver
(CMAKE_AR) and stores them in a generated file `CMakeCCompiler.cmake` as
non-CACHE entries. The compiler-specific ARMClang.cmake then tries to
override CMAKE_LINKER and CMAKE_AR as CACHE entries.

Following the introduction of CMP0126, which is set to NEW in the test
for a working compiler, setting a CACHE entry does not replace a normal
entry of the same name anymore, resulting in a failed test due to wrong
linker and archiver.

To fix this, set CMAKE_LINKER and CMAKE_AR for ARMClang directly in
`CMakeFindBinUtils.cmake` as is done for other compilers.  Check
for them in `ARMClang.cmake` to safeguard cases when a project explicitly
includes `ARMClang.cmake` prior to compiler determination (which some
projects do to work around other problems in older CMake versions).
2021-07-14 09:45:09 -04:00