Since commit 2ce59be784 (WriteCompilerDetectionHeader: Add policy to
remove module, 2020-12-04, v3.20.0-rc1~350^2), the WCDH module is
deprecated. Update the `cmake-compile-features(7)` manual section that
previously recommended WCDH to make such detection the project's
responsibility instead. Move the old content of the section over to the
WCDH module to preserve it.
21c6e4566c Help: Document special cases for if(IS_ABSOLUTE)
6b0fe6c283 Help: Behavior of file(TO_NATIVE_PATH) depends on the host platform
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6016
The meaning of "absolute path" was previously assumed knowledge,
but a number of special cases were left unspecified. The way some of
these are handled differs to the way that cmake_path(IS_ABSOLUTE)
works, so document those special cases so that the differing behavior
between these two commands is clearly defined.
Since CMake 3.19, we no longer support macOS SDKs older than 10.5,
which corresponds to Xcode 3. Supporting older Xcode versions for
device platforms is also not realistic. We therefore expect the -rpath
linker option should always be supported now.
When targeting iOS, tvOS or watchOS, the previous disabling of -rpath
support meant that the install_name_dir of shared libraries and
frameworks was unable to use @rpath. This resulted in embedding
absolute paths for their install_name. When they were embedded in an
app bundle, this would cause the app to fail at runtime. By enabling the
-rpath linker option, the default install_name_dir is now @rpath for these platforms, which results in binaries that do work at runtime.
Fixes: #20036
When using `add_library` to create an `IMPORTED` library target, there
are a few target properties that are essential to correctly tell CMake
about the library file. We already cover `IMPORTED_LOCATION` and
`IMPORTED_IMPLIB`. Add `IMPORTED_SONAME` and `IMPORTED_NO_SONAME`,
which are important in certain cases.
Fixes: #22016
60aab21f3a Help: Clarify permission-related command options
0327077b3c Cleanup: Fix misspelt name of local C++ variable
82f732a84a Tests: Check host platform instead of target for running stat
7b335e40a5 Tests: Remove redundant files for configure_file() tests
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5945
The previous docs did not make clear that at most only one of the three
permissions-related options can be given for configure_file() or
file(GENERATE) and that USE_SOURCE_PERMISSIONS is already the
default behavior for these commands.
Use consistent wording to refer to the input and output files for
configure_file().
Add missing "versionadded" directives on some of these keywords.
Use the consistent wording and keyword ordering between the
configure_file(), file(GENERATE) and file(COPY) commands.
Since commit b5326fea7c (FindIntl: Add imported target, 2020-10-06,
v3.20.0-rc1~687^2) we use `check_symbol_exists` to check whether the
`intl` library is built in to the C library. On some platforms the
tested symbols are provided as macros so the check passes without
linking any symbol. Instead, check whether a sample source file both
compiles and links.
Fixes: #21979
0fb7c85188 VS: Accept and translate '-T version=' values with three components
b3b9e17c84 VS: Fix '-T version=14.28' under VS 16.9
d44cd09a06 cmGlobalVisualStudioVersionedGenerator: Clarify local variable name
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5903
The VS 16.8 and VS 16.9 toolset versions differ only in their third
component. The `vcvarsall` option `-vcvars_ver=` accepts a three
component version, so accept this format for VS toolset selection too.
Issue: #21922
CMake accepts the toolset version that is default in the current VS
version by matching the name later VS versions will use for the SxS
props files. It predicts the future name based on the first two
components of the current VS version's default toolset. However, this
heuristic breaks naming the VS 16.8 toolset version 14.28 under VS 16.9
because the latter's default toolset version is 14.28.29910, which did
not increment the second version component (unprecedented in VS).
Fix this by always using the requested version's SxS props file when it
exists, even if it matches the first two components of the current VS
version's default toolset. Also add a special case for the name VS
16.10 will use for VS 16.9's default toolset, so that it can be used
with VS 16.9 too.
Fixes: #21922
Refactoring of the ExternalProject and FetchContent modules moved
the commands into CMake scripts. This broke custom commands that
used shell redirection or special build tool variables of the form
$(MakeVar). Undo the sequence of commits that performed this
refactoring and follow-up fixes associated with it.
The following commits are reverted by this change:
fa44987386 (ExternalProject: Refactor pre-configure steps to support
no-target uses, 2021-02-05)
620b83aba0 (FetchContent: Invoke steps directly and avoid a separate
sub-build, 2021-01-29)
9ed24c400c (FetchContent: Restore patch command support,
2021-02-18)
450eb8f40b (ExternalProject: Fix misuse of IS_NEWER_THAN in
timestamp checks, 2021-02-21)
963ff39ea6 (FetchContent: Don't update timestamps if files don't
change, 2021-02-18)
Fixes: #21892
f608fc639c Android: Do not use gold for ndk >= r22
62263ec926 Tests: Update RunCMake.Android for NDK r22
4a123f1f03 Help: Document CMAKE_ANDROID_NDK_VERSION variable
ff66276f47 Android: Detect NDK version number
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5862
8312a2424e ctest: Add support for '--prefix=<prefix>' form of the argument
0ffca26438 cmake: Add support for '--build --prefix=<prefix>' form of the argument
3c4679c1d8 cmake: Document '--preset <preset>' form of the argument
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5849
f2b277346e Help: Note that CMP0116 is recorded at the time of CC creation
0168c75b61 Tests: Test Qt autogen target with CMP0116 set to WARN
35f585a4b7 Tests: Test per-CC behavior of CMP0116
fe81eb5680 Ninja: Use CMP0116 status recorded at time of custom command's creation
e65bfd6926 cmCustomCommand: Record value of CMP0116 at time of creation
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5848
Revert commit f8f0649df1 (Help: Document JSON comment support in
cmake-presets(7), 2021-02-18). The support for comments was a mistake
when the feature was implemented in 3.19, and is being removed.
d8fcc13693 Help: Add build and test preset to examples in cmake-presets(7)
131a7b0476 Help: Clarify preset name conflict rules in cmake-presets(7)
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5823
The docs added by commit 7c65480a60 (CPackDeb: dpkg-shlibdeps now
supports searching for private shared libs, 2021-01-19,
v3.20.0-rc1~115^2) specify the `-d` option, but the implementation
actually uses the `-l` option.
Issue: #21838