Commit Graph

9296 Commits

Author SHA1 Message Date
Martin Duffy 76a08cd253 COMPILE_WARNING_AS_ERROR: Add options to treat warnings as errors
Add `COMPILE_WARNING_AS_ERROR` target property and supporting
`CMAKE_COMPILE_WARNING_AS_ERROR` variable.

`COMPILE_WARNING_AS_ERROR` is initialized by
`CMAKE_COMPILE_WARNING_AS_ERROR`. It is a boolean variable. If it is
true, it expands to a different flag depending on the compiler such that
any warnings at compile will be treated as errors.

Supports compiler ids that I could find a relevant flag for.
2022-05-06 12:14:37 -04:00
Brad King 9a7d8394b1 Merge topic 'header-sets-no-framework'
f779f8c0ad FILE_SET: Forbid adding header sets to Apple FRAMEWORK libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kyle Edwards <kyle.edwards@kitware.com>
Merge-request: !7149
2022-04-07 10:54:30 -04:00
Kyle Edwards f779f8c0ad FILE_SET: Forbid adding header sets to Apple FRAMEWORK libraries
The feature needs a specialized implementation to place headers
in the right place inside frameworks.  To avoid silently doing
the wrong thing, make this case an error for the 3.23 series.

Issue: #23386
2022-04-07 09:26:58 -04:00
Brad King c8f912fa59 Merge topic 'FindJNI-targets'
00c4f488f2 FindJNI: support Android NDK
171d45c039 FindJNI: added components and imported targets
35e92ec619 FindJNI: improved description

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !7069
2022-04-07 09:11:56 -04:00
Brad King 2b4081660c Merge topic 'FindMatlab-no-implicit-link'
178cf34bdc FindMatlab: Add NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES option to matlab_add_mex

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7139
2022-04-06 12:03:04 -04:00
Silvio 178cf34bdc FindMatlab: Add NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES option to matlab_add_mex 2022-04-05 08:27:09 -04:00
Brad King eea53ea0a9 Merge topic 'xcode-xcconfig'
53ca6edd8a xcode: add support for xcconfig files
183b6bbf51 Tests: Ignore all classes in Xcode internal objc warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7119
2022-04-05 08:24:28 -04:00
Sergiu Deitsch 171d45c039 FindJNI: added components and imported targets 2022-04-04 19:46:32 +02:00
Brad King 1dbd4e9a41 Merge topic 'export-out-of-dir-TARGET_NAME'
6d34cc3cb8 export: Fix TARGET_NAME lookup for out-of-dir linking

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7136
2022-04-04 09:32:52 -04:00
Gregor Jasny 53ca6edd8a xcode: add support for xcconfig files
Fixes: #18420
2022-04-03 22:39:34 +02:00
Gregor Jasny 183b6bbf51 Tests: Ignore all classes in Xcode internal objc warnings
Xcode on Apple Silicon warns not only about AMSupportURL classes
but also many more.
2022-04-03 22:39:17 +02:00
Brad King 20cd951c9f VS: Add compiler flag table entry for -FI followed by separate argument
The MSVC `/FI` flag accepts an attached value or a following argument.
Previously our flag tables only had entries for the former.  Add
the latter.

Fixes: #23382
2022-04-01 16:37:08 -04:00
Brad King 6d34cc3cb8 export: Fix TARGET_NAME lookup for out-of-dir linking
Improve the logic added by commit f0e67da061 (target_link_libraries: Fix
out-of-dir linking of a list of targets, 2020-01-14, v3.17.0-rc1~149^2)
to, while exporting targets, look up referenced target names in the
correct directory.
2022-04-01 13:59:51 -04:00
Brad King 7ae3c6740b Merge topic 'string-JSON-error-modes'
93dce4b4bf string(JSON): fix error message on invalid mode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7130
2022-03-31 08:52:04 -04:00
Brad King ad3c50e0b4 Merge topic 'GNUInstallDirs-revert-multiarch-prefixes'
624ec3692f GNUInstallDirs: Revert "Apply Debian multiarch LIBDIR to more prefixes"

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7127
2022-03-31 08:50:25 -04:00
Brad King 99fc8f152c Merge topic 'GNUInstallDirs-revert-multiarch-prefixes' into release-3.23
624ec3692f GNUInstallDirs: Revert "Apply Debian multiarch LIBDIR to more prefixes"

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7127
2022-03-31 08:50:24 -04:00
Brad King 8ef1fffa45 Merge topic 'ninja_compile_database_understand_new_cuda_lang_variables'
f7c6b9833c CUDA: Ninja generator generates valid compile database

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7129
2022-03-31 08:47:25 -04:00
Carlo Teubner 93dce4b4bf string(JSON): fix error message on invalid mode
The `GET_ARRAY` and `MEMBERS` modes were removed during development and
review of commit 8eab76eb84 (string(JSON): Adds JSON parsing support to
the string command, 2020-08-24, v3.19.0-rc1~159^2), but were
accidentally left in an error message.
2022-03-30 15:54:11 -04:00
Robert Maynard f7c6b9833c CUDA: Ninja generator generates valid compile database
The ninja generator has been updated to poperly write the compile
database when the CUDA language has been enabled.

Fixes #23368
2022-03-30 15:16:43 -04:00
Brad King 624ec3692f GNUInstallDirs: Revert "Apply Debian multiarch LIBDIR to more prefixes"
Revert commit dd9584b352 (GNUInstallDirs: Apply Debian multiarch LIBDIR
to more prefixes, 2021-11-19, v3.23.0-rc1~323^2).  There are separate
problems with activating multiarch `LIBDIR` for each prefix it added:

* Prefix `/` is often used to stage an installation with `DESTDIR`
  for inclusion in a tarball package or similar.

* Prefix `/usr/local` is the default `CMAKE_INSTALL_PREFIX`, causing
  the multiarch `LIBDIR` to be cached after the first configuration,
  even if the prefix changes later.

Revert the change for now, except for the documentation update.
Further discussion will be needed to select a way to enable
multiarch `LIBDIR` for `/` and `/usr/local`.

Fixes: #23365
Issue: #19698
2022-03-30 11:51:01 -04:00
Brad King a7b325e203 Merge topic 'verify-header-sets'
c798744f81 FILE_SET: Add VERIFY_HEADER_SETS target property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7085
2022-03-30 09:10:25 -04:00
Brad King 3d11097ccf Merge topic 'preserve-compiler-arg1'
211a9deac1 Preserve CMAKE_${lang}_COMPILER_ARG1 from existing CMakeCache.txt
b4de4217ae Tests: Simplify RunCMake.CompilerArgs no-clean cases

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7122
2022-03-30 09:03:16 -04:00
Brad King 70ee9a313a Merge topic 'framework-consumption-during-compilation'
45ac71d8bc Ensure targets which are frameworks can be used freely

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: alcroito <alexandru.croitor@qt.io>
Merge-request: !7121
2022-03-30 09:02:15 -04:00
Kyle Edwards c798744f81 FILE_SET: Add VERIFY_HEADER_SETS target property
Fixes: #23338
2022-03-29 13:58:27 -04:00
Brad King 1ccaaaf203 Merge topic 'set-env-var-first-run'
05e510bf0b CMP0132: Don't set compiler environment variables on first run
774a9eb210 Tests: Reorder CMP0129 test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7108
2022-03-29 10:41:56 -04:00
Klein, Thorsten (BSH) 211a9deac1 Preserve CMAKE_${lang}_COMPILER_ARG1 from existing CMakeCache.txt
`CMAKE_<LANG>_COMPILER` may be a list if it was defined by a toolchain
file.  In this case we move the args to `CMAKE_<LANG>_COMPILER_ARG1`.
If `CMAKE_<LANG>_COMPILER` is not a list, then it might have been cached
by a previous run that split the `CC` or `CXX` environment variable into
`CMAKE_<LANG>_COMPILER` and `CMAKE_<LANG>_COMPILER_ARG1`.  In this
latter case, avoid clobbering `CMAKE_<LANG>_COMPILER_ARG1`.

Fixes: #23358
2022-03-29 10:36:28 -04:00
Brad King b4de4217ae Tests: Simplify RunCMake.CompilerArgs no-clean cases
Also distinguish between the toolchain and env cases in the output.
2022-03-29 10:29:25 -04:00
Craig Scott 05e510bf0b CMP0132: Don't set compiler environment variables on first run
When running CMake for the first time in a build tree, for some
generators CMake would set compiler environment variables
like CC, CXX, etc. when the corresponding language is enabled.
That behavior was never documented and can result in different
behavior between the first and subsequent runs. Add a policy
to no longer set those environment variables.

Fixes: #21378
2022-03-29 09:42:59 -04:00
Brad King ce4acba7fb Merge topic 'fix-23191'
fd46db1745 Trace: process else and elseif commands correctly

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Acked-by: Kyle Edwards <kyle.edwards@kitware.com>
Merge-request: !7118
2022-03-29 09:39:56 -04:00
Marc Chevrier 45ac71d8bc Ensure targets which are frameworks can be used freely
Ensure flag -F/path/to/framework is specified during compilation step
of consumers of the framework.

Fixes: #23336
2022-03-29 13:57:11 +02:00
Brad King e3f2601a9d Merge topic 'variable-link-feature-supported'
1777883f8b genex-LINK_(LIBRARY|GROUP) features: update variables behavior

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7113
2022-03-28 11:03:36 -04:00
Craig Scott 774a9eb210 Tests: Reorder CMP0129 test
Move the CMP0129 tests up to be with the other policy tests.
2022-03-26 14:27:57 +11:00
Braulio Valdivielso Martinez fd46db1745 Trace: process else and elseif commands correctly
There have been two bugs reported about the `else` and `elseif`
commands in the context of the tracing functionality and the json-v1
format (#23191 #22315). In essence, the reported traces referred to
the layer of the stacktrace immediately on top of the expected ones.

This MR fixes both issues. My solution adds a new parameter to the
`PrintCommandTrace` function, `commandMissingFromStack`, that callers
can specify if the command they want to report a trace for is not a
regular part of the stack maintained in `cmMakefile`. This is only the
case for `else` and `elseif`. The other bug is fixed by having the
caller pass a `cmListFileBacktrace`, which helps in getting the right
lines, file names... for the reported command.

Fixes: #23191 #22315
2022-03-25 12:24:38 -04:00
Silvio 9bd659ae25 Tests: Add Matlab label to Matlab-related tests 2022-03-25 10:57:07 -04:00
Brad King 25b9fb0b1a Merge topic 'link-interface-direct'
cf312a2e54 LINK_LIBRARIES: Add support for LINK_ONLY genex
41a6b4a53b INTERFACE_LINK_LIBRARIES_DIRECT: Honor link dependencies through LINK_ONLY
73337cb383 LINK_LIBRARIES: Evaluate separately for linking and usage requirements

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7107
2022-03-25 09:12:39 -04:00
Brad King 96420a4afd Merge topic 'cmake-fresh'
9f1471739d cmake: Add --fresh option to clear the cache and start from scratch

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !7099
2022-03-25 09:09:56 -04:00
Marc Chevrier 1777883f8b genex-LINK_(LIBRARY|GROUP) features: update variables behavior
Variable CMAKE_LINK_(LIBRARY|GROUP)_USING_<FEATURE>_SUPPORTED is evaluated
only if CMAKE_<LANG>_LINK_(LIBRARY|GROUP)_USING_<FEATURE>_SUPPORTED is not defined.

This new behavior enable to activate a feature globally on a platform and to disable
it for some compilers and languages.
2022-03-25 12:29:28 +01:00
Brad King cf312a2e54 LINK_LIBRARIES: Add support for LINK_ONLY genex
Previously we always used content guarded by `$<LINK_ONLY:...>`
in `LINK_LIBRARIES`, even when evaluating for non-linking usage
requirements.  Add a policy to honor `LINK_ONLY` in `LINK_LIBRARIES`
the same way we already do in `INTERFACE_LINK_LIBRARIES`.
2022-03-24 08:23:55 -04:00
Kasper Laudrup 0b7fd783f8 cmake -E tar: Add --touch option
Similar to GNU tar add a --touch option to the tar extract command to
skip extracting the timestamps from the files in the archive
effectively touching them as if they were just created.

Issue: #22746
2022-03-23 14:41:34 +01:00
Kasper Laudrup f692cba34b Tests: Add test for 'cmake -E tar --mtime' option
Add a test for ensuring the `--mtime` option works as expected.
2022-03-23 14:41:34 +01:00
Brad King 00563063c0 Merge topic 'initialize-property-name'
26caa97057 define_property(): Change constraints of INITIALIZE_FROM_VARIABLE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7103
2022-03-23 09:32:11 -04:00
Kyle Edwards 26caa97057 define_property(): Change constraints of INITIALIZE_FROM_VARIABLE
Remove the requirement that the variable name have a prefix while
keeping the suffix requirement. Require that the property name
contains an underscore. Update docs and tests accordingly.

Fixes: #23340
2022-03-23 16:39:32 +11:00
Brad King 41a6b4a53b INTERFACE_LINK_LIBRARIES_DIRECT: Honor link dependencies through LINK_ONLY
In commit f3ad061858 (Add usage requirements to update direct link
dependencies, 2022-01-12, v3.23.0-rc1~44^2), we evaluated the transitive
closure of `INTERFACE_LINK_LIBRARIES` as a non-linking usage requirement.
That left out `INTERFACE_LINK_LIBRARIES_DIRECT` link dependencies that
appear behind private dependencies of a static library, guarded by the
`$<LINK_ONLY:...>` generator expression.  At the time, that decision was
intentional, in order to prevent arbitrary usage requirements from
leaking out of `PRIVATE` dependencies.

Since then, we've revised evaluation of `LINK_LIBRARIES` to distinguish
between collecting link dependencies and other usage requirements.  Use
that information when following `INTERFACE_LINK_LIBRARIES` to collect
the matching kind of requirements from `INTERFACE_LINK_LIBRARIES_DIRECT`.

Fixes: #22496
2022-03-22 11:57:48 -04:00
Brad King 9f1471739d cmake: Add --fresh option to clear the cache and start from scratch
Simplify the workflow to re-run CMake from scratch as if a build tree
were never before processed, regardless of whether it has been.

Fixes: #23119
2022-03-22 09:27:47 -04:00
Marc Chevrier d658332782 Genex-LINK_GROUP: Add support feature RESCAN on BSD systems 2022-03-22 11:36:10 +01:00
Brad King 7e642a6fa0 Merge topic 'ghs_predefined_targets'
399e73b89a GHS: release note
829e946c69 GHS: Update tests for updated binary layout
93c1acd8ff GHS: List predefined targets before user targets in GUI
bdb213819c GHS: Do not include WindowsPaths
b3e9c72901 GHS: use INSTALL target
a645287784 GHS: update build command
724b5491ef GHS: Rearrange project files in binary directory
edff0f6a1d GHS: Use Custom Target for ALL_BUILD
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7079
2022-03-21 14:36:42 -04:00
Brad King a4b04e62fc Merge topic 'LINK_LIBRARY-WHOLE_ARCHIVE'
dabe56de58 genex-LINK_LIBRARY: Add feature WHOLE_ARCHIVE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: huangqinjin <huangqinjin@gmail.com>
Merge-request: !7064
2022-03-21 14:35:59 -04:00
Brad King 687a91967f Revert INTERFACE_LINK_LIBRARIES_DIRECT feature for 3.23 branch
Revert commit f3ad061858 (Add usage requirements to update direct link
dependencies, 2022-01-12, v3.23.0-rc1~44^2) and the property storage
updates in its predecessor commit 193a999cd5 (cmTarget: Add
INTERFACE_LINK_LIBRARIES_DIRECT{,_EXCLUDE} backtrace storage,
2022-01-06, v3.23.0-rc1~44^2~1) from the 3.23 release branch.

After initial experience using the feature in practice, additional
design considerations have been raised for discussion in the original
issue.  To avoid rushing this for the 3.23 series, we've decided to
revert the feature for now so it can be revised for a future release.

Issue: #22496
2022-03-21 13:17:32 -04:00
Brad King 5dbd068827 Merge topic 'cmake-P-args'
36056ff5a3 cmake: Improve acceptance of arbitrary arguments in -P script mode

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7083
2022-03-18 07:20:24 -04:00
Brad King 32e40f7f53 Merge topic 'always_prefer_last_source_dir'
b44ad7992a cmake: Always prefer the last source directory provided

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7084
2022-03-18 07:16:24 -04:00