Commit Graph

8890 Commits

Author SHA1 Message Date
Raul Tambre e47dfce75d CMP0128: Enable/disable extensions if standard same as default
This was intended to be part of the initial MR (!6177), but accidentally went
missing when debugging nightly failures on less common systems. Noticed during
!6711 review as the comment about this behaviour didn't match the code.

Documentation for CMP0128 is updated to remove a false case and note the two
cases related to this.

Fixes #22224.
2021-11-11 21:55:04 +02:00
Brad King 95f44e00cd Ninja Multi-Config: Fix custom command target dependencies in cross-configs
Generator expressions in a non-cross custom command's `COMMAND`
arguments are evaluated in the command config.  Target-level
dependencies implied by `TARGET_FILE` must therefore be cross
dependencies.  This is important to generate proper target-level
dependencies on the cross-config build statements for the target to
which the custom command is attached.

Fixes: #22855
2021-11-04 13:41:16 -04:00
Brad King 28d63320f1 Merge topic 'nvhpc-isystem' into release-3.22
92624714c4 NVHPC: Support SYSTEM include directories

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6691
2021-11-03 10:37:54 -04:00
Robert Maynard 92624714c4 NVHPC: Support SYSTEM include directories
Fixed #22834
2021-11-02 14:33:18 -04:00
Ben Boeckel 9c4d6404eb Tests/Environment: also test modifying ambient values 2021-10-29 10:54:02 -04:00
Ben Boeckel 7d52d48a32 cmCTestRunTest: get the default value from the environment
This only works due to some assumptions about how the `ENVIRONMENT`
property is processed. Comments have been added to notify anyone
modifying the behavior about where to look.

Fixes: #22819
2021-10-29 10:54:02 -04:00
Brad King 7b19f55003 Merge topic 'builtin-help-versionadded' into release-3.22
054754359a cmRST: support `versionadded` and `versionchanged` directives

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6667
2021-10-28 09:09:23 -04:00
Ben Boeckel 054754359a cmRST: support versionadded and versionchanged directives
This makes `versionadded` and `versionchanged` directives show up in
`cmake --help-*` output instead of disappearing (and potentially making
empty sections).

Fixes: #22808
2021-10-27 09:15:00 -04:00
Ben Boeckel 69f95cf1d9 cmCTestRunTest: fix modifying non-existent envvars
When appending or modifying to a variable that has not been modified
before, the iterator was not valid, but it was used to insert into the
map again. Instead, just use indexing into the map since we know it will
exist by the end of the function anyways.

Fixes: #22796
2021-10-26 12:51:44 -04:00
Brad King 44a86d0b38 cmake_host_system_information: Add undocumented VS_MSBUILD_COMMAND key
When using the Visual Studio generator for VS 10 or above,
offer this key to get the location of the MSBuild command
before the first `project()` or `enable_language()` command
has finished running.

This will be needed only by one of our own modules, so leave it
undocumented for now.
2021-10-20 13:00:25 -04:00
Seth R Johnson fc92d6640b cmFileCommand: improve error message
Print full list of unresolved dependencies and a phrase that indicates
what about the file is unresolved.
2021-10-12 11:40:45 -04:00
Brad King b7c91c74eb Merge topic 'revert-debian-libexec'
6658e260d4 GNUInstallDirs: Fix misinterpretation of Debian Policy on LIBEXECDIR

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6607
2021-10-08 09:45:12 -04:00
Timo Röhling 6658e260d4 GNUInstallDirs: Fix misinterpretation of Debian Policy on LIBEXECDIR
Revert commit 798c1c3192 (GNUInstallDirs: Comply with Debian Policy on
LIBEXECDIR, 2020-10-08, v3.19.0-rc1~11^2).

The Debian Policy builds upon FHS 3.0 and permits installing to
`/usr/libexec`. While Policy does grant an additional exception for
applications to use a single subdirectory of `/usr/lib/<triplet>`, this
is not meant to replace `/usr/libexec` as valid target.

Fixes: #22731
2021-10-07 14:29:18 -04:00
Brad King 6e037a04e7 Merge topic 'FindJasper-imported-target'
6e8754c625 FindJasper: Add IMPORTED target
bdbce845cd FindJasper: Add JASPER_INCLUDE_DIRS result variable
7f8413c309 FindJasper: Modernize documentation layout
524205a7a5 FindJasper: Modernize code layout

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4633
2021-10-07 09:22:11 -04:00
Brad King 9dcf924093 Tests: Skip RunCMake.file INSTALL-FOLLOW_SYMLINK_CHAIN case on Cygwin
This case was added by commit e3ff7ced63 (file(INSTALL): Add
FOLLOW_SYMLINK_CHAIN argument, 2019-05-16, v3.15.0-rc1~103^2).
Skip it on Cygwin because it fails due to `foo/../` pairs being
flattened away in symlinks.
2021-10-06 16:38:05 -04:00
Hiroshi Miura 6e8754c625 FindJasper: Add IMPORTED target
Fixes: #20601
Signed-off-by: Hiroshi Miura <miurahr@linux.com>
2021-10-06 11:28:09 -04:00
Brad King 973ccc52af Merge topic 'ci-xcode-13.0'
429522e89c gitlab-ci: update macOS jobs to use Xcode 13.0
75901f0472 Tests: Fix RunCMake.XcodeProject XcodeIOSInstallCombined cases for Xcode 13.0

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6578
2021-10-06 10:25:31 -04:00
Brad King 434f757233 Merge topic 'xcode13-schema'
0e86fea0be Tests: Specify destination for Xcode scheme

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6582
2021-10-06 10:24:16 -04:00
Brad King ca2bc33626 Merge topic 'find-blas-lapack-sizeof-integer'
64038fd5bc Help: Add release notes for Find{BLAS,LAPACK} BLA_SIZEOF_INTEGER option
972489ae4e Find{BLAS,LAPACK}: Provide testing of BLA_SIZEOF_INTEGER
95219365ff Find{BLAS,LAPACK}: Make possible testing of ILP64 model
2cd94f3e57 Find{BLAS,LAPACK}: Specify integer type in tests
9b69307b56 Find{BLAS,LAPACK}: De-duplicate and generalize test creation logic
91fd645d46 FindLAPACK: Stop processing if LAPACK library does not have 64-bit integer API
b8a3cea51f FindBLAS: Stop processing if BLAS library does not have 64-bit integer API
d2f5c7856f FindLAPACK: Search 32/64-bit integer API via BLA_SIZEOF_INTEGER if possible
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6407
2021-10-06 10:17:46 -04:00
Craig Scott 9a88f5df3e Merge topic 'fetchcontent-CMAKE-vars-passthrough'
1851aa49be FetchContent: Pass through networking-related CMAKE_... variables
96937438b7 Help: Clean up how TLS and NETRC variables are discussed
2a82bd85b6 Help: Add documentation for CMAKE_TLS_CAINFO

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6589
2021-10-06 07:07:32 -04:00
Igor S. Gerasimov 972489ae4e Find{BLAS,LAPACK}: Provide testing of BLA_SIZEOF_INTEGER 2021-10-05 23:41:36 +09:00
Igor S. Gerasimov 95219365ff Find{BLAS,LAPACK}: Make possible testing of ILP64 model 2021-10-05 23:41:36 +09:00
Igor S. Gerasimov 2cd94f3e57 Find{BLAS,LAPACK}: Specify integer type in tests 2021-10-05 23:41:36 +09:00
Brad King 9b69307b56 Find{BLAS,LAPACK}: De-duplicate and generalize test creation logic
Interpret `CMake_TEST_FindBLAS` and `CMake_TEST_FindLAPACK` as a
sequence of option assignments intermixed with vendor names.
2021-10-05 23:41:36 +09:00
Brad King 75901f0472 Tests: Fix RunCMake.XcodeProject XcodeIOSInstallCombined cases for Xcode 13.0
The output of `otool -vf` now contains additional content that happens
to be matched by our architectures regex.  Make the regex more strict.
2021-10-05 09:13:23 -04:00
Craig Scott 1851aa49be FetchContent: Pass through networking-related CMAKE_... variables
CMAKE_TLS_VERIFY, CMAKE_TLS_CAINFO, CMAKE_NETRC and
CMAKE_NETRC_FILE are now passed through to the underlying
ExternalProject sub-build. Previously, they were silently ignored.

Fixes: #22144
2021-10-05 23:41:34 +11:00
Craig Scott a31447417f Merge topic 'qt6-tests'
a742088472 Tests: Add support for testing Qt6

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6587
2021-10-05 08:27:02 -04:00
Gregor Jasny 0e86fea0be Tests: Specify destination for Xcode scheme
The `Using the first of multiple matching destinations` warning
vanishes if we explicitly specify a destination.

Fixes: #22704
2021-10-05 07:38:48 -04:00
Brad King c55a41c9b2 Merge topic 'default_extensions'
4a0485be7f cmStandardLevelResolver: Avoid unnecessary flags, fix unset level logic
29e2b85171 Tests: Simplify RunCMake.CompileFeatures introspection
fc3a1cbdd8 CompilerID: Compiler extensions default detection
2adfd95d79 CompilerID: Rename language_dialect to language_standard
00055d7779 Help: Document CMAKE_<LANG>_STANDARD_DEFAULT
a65bee4cfc Help: Document HIP standard/extensions properties and variables
a40ff1bb5a Help: Make language standard/extensions variable pages less wordy
3feff8379b Help: Generic language standard and extension variables documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6177
2021-10-04 12:43:24 -04:00
Craig Scott a742088472 Tests: Add support for testing Qt6
The minimum CMake version for Qt6 is 3.16, so all the calls to
cmake_minimum_required() are updated here to enforce that
minimum. This will avoid any CMake version-related warnings
from Qt.

Avoid hard-coding Qt5 where the tests could now be using
Qt5 or Qt6.

Fixes: #22188
2021-10-04 22:10:57 +11:00
Raul Tambre 4a0485be7f cmStandardLevelResolver: Avoid unnecessary flags, fix unset level logic
The changes are part of CMP0128.

When the standard level is unset:
* Flags are added if extension mode doesn't match the compiler's default.
  Previously logic only worked if LANG_EXTENSIONS was ON. Fixes #22224.
* The full flag is used. Previously CMAKE_LANG_EXTENSION_COMPILE_OPTION was
  used. This was only supported for IAR.

Otherwise:
* Avoid adding flags if not necessary per the detected compiler defaults.
* Fixed check for when the requested standard is older. It now matches the
  nearby comments.

I reworded the fallback comment as its logic was a bit difficult to wrap my
head around.
2021-09-29 22:28:40 +03:00
Brad King 5bd94332c7 Merge topic 'clang-warnings'
37859e3244 Source: Fix clang -Wimplicit-fallthrough warnings
907d098838 Source: Fix clang -Wextra-semi warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6561
2021-09-29 09:57:47 -04:00
Raul Tambre 29e2b85171 Tests: Simplify RunCMake.CompileFeatures introspection 2021-09-28 21:24:53 +03:00
Sean McBride 907d098838 Source: Fix clang -Wextra-semi warnings 2021-09-28 09:59:24 -04:00
Brad King a21d5455c0 Merge topic 'autogen-dep-on-imported-implib-only-target'
895fa3433f cmQtAutoGenInitializer: support IMPLIB-only imported targets
354c1f5628 Tests/RunCMake/Autogen: test CMP0111 behavior

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !6558
2021-09-27 13:48:57 -04:00
Ben Boeckel 354c1f5628 Tests/RunCMake/Autogen: test CMP0111 behavior
On Windows, imported shared libraries which only have an
`IMPORTED_IMPLIB` set fail if they are depended upon by a target using
automoc. Add a test for the behavior of depending upon all imported
target types from an automoc-using target.
2021-09-24 11:29:54 -04:00
Brad King b0b689d566 Merge topic 'cat_empty_file'
0b4a56e64b cmake: -E cat stops when an empty file is encountered

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6539
2021-09-21 11:05:06 -04:00
Brad King 5fa9a65b1e Merge topic 'tests-cpack-deb-non-linux'
b07812c6de Tests: fix RunCMake.CPack_DEB.EXTRA on Debian non-Linux OSes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6540
2021-09-21 11:04:13 -04:00
Brad King 4aeaf72fd6 Merge topic 'clang-manifest'
b73857561f Clang: embed windows manifests with GNU interface

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6534
2021-09-21 11:02:23 -04:00
Brad King 36966f63ca Merge topic 'hip-no-hipcc'
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:44 -04:00
Pino Toscano b07812c6de Tests: fix RunCMake.CPack_DEB.EXTRA on Debian non-Linux OSes
The generated path with the packages uses $CPACK_TOPLEVEL_TAG, which
by default is $CPACK_SYSTEM_NAME, thus the OS name.

To make the expected stderr match also non-Linux OSes, accept any
non-slash characters in place of "Linux", so it works also on other
Debian OSes (e.g. Debian/Hurd).
2021-09-18 21:49:46 +02:00
Johnny Jazeix 0b4a56e64b cmake: -E cat stops when an empty file is encountered
Fixes: #22652
2021-09-18 18:54:53 +02:00
Brad King 6ea883d652 Tests: Avoid output when running symlink check
Since commit 58d10cf6f1 (Alternative symlink-creating mode for
file(INSTALL ...), 2021-08-02) we test creating a symlink during
configuration to decide whether to activate some tests.  Capture
the process output during the check to avoid leaking the error
message on failure.
2021-09-17 09:28:57 -04:00
Thomas Bernard b73857561f Clang: embed windows manifests with GNU interface
Solves: #22611
2021-09-17 00:35:32 +02:00
Craig Scott 0d2719d311 Merge topic 'xcode-embed-libraries'
6ef7bfbb64 Xcode: add support for embedding dynamic libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6490
2021-09-16 17:46:09 -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 1b91aaecd8 Merge topic 'vs2022'
b6ac10394b VS: Update Visual Studio 17 2022 generator for Preview 4
f200f4d5a7 VS: Fix managed C++ project generation for VS 2022

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6524
2021-09-16 08:16:54 -04:00
Brad King f200f4d5a7 VS: Fix managed C++ project generation for VS 2022
VS 2022 expects managed `.vcxproj` files to have a `ManagedAssembly`
element.

Fixes: #22583
2021-09-15 13:19:37 -04:00
Cristian Adam 3b9e04accb PCH: MSVC: Restrict OBJECT library INTERFACE_LINK_LIBRARIES usage
The pch object file could cause problems when the reused pch is passed
through an OBJECT library, which would use INTERFACE_LINK_LIBRARIES to
link the pch object file.

Fixes: #22630
2021-09-15 10:39:46 -04:00
Brad King 69c0a5daf9 Merge topic 'pch-xcode-multiple-languages'
bbcdac4e5d PCH: Fix all-language precompile header support in Xcode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6435
2021-09-14 09:48:00 -04:00