When using the productbuild generator this lets you specify the value of
the `--component-plist` parameter when it runs pkgbuild for a component.
Fixes: #16638
In commit v3.4.0-rc1~333^2 (Merge branch 'upstream-kwsys' into
update-kwsys, 2015-07-15) we brought in upstream KWSys commit 86a24794
(SystemTools: Fix GetActualCaseForPath drive letter case handling,
2015-07-09). This caused our path processing to convert drive letters
to upper-case and exposed an existing bug in our implementation of
CMP0017.
Policy CMP0017 is responsible for ensuring that modules included from a
builtin module only load other builtin modules and cannot be overridden
by a file in `CMAKE_MODULE_PATH`. If there is a case difference in the
drive letter (or other path components) then the path to the including
module may not match our builtin module directory in a simple string
comparison. This means builtin modules may not be recognized as such,
and they may not reliably include their builtin dependencies. For
example, if a project provides a `Platform/Windows` module in
`CMAKE_MODULE_PATH` it can break inclusion of our builtin
`Platform/Windows` module, leading to strange behavior.
Fix this by comparing the path to the including module to our builtin
module directory using a function that is aware of case-insensitivity of
paths on Windows.
Fixes: #16648, #16622
We compute the location of `CMAKE_ROOT` and other resources relative to
the location of our own executable. On some platforms this path is
computed in a way that depends on the case of the path used to invoke
the executable. Convert the result to the actual case preserved by the
filesystem on disk in order to make it consistent regardless of how the
executable is launched.
This approach generalizes the fix made by commit v3.8.0-rc1~71^2
(cmSystemTools: use the actual case for root detection, 2017-01-18).
Issue: #16648
1ba91291 Add policy CMP0068 separate install_name and RPATH settings on macOS
f7b9bf41 Apple: Add BUILD_WITH_INSTALL_NAME_DIR target property
4bff2d14 Apple: Refactor support for using INSTALL_NAME_DIR.
624fb9d7 Help: Format BUILD_WITH_INSTALL_RPATH documentation
f10b2f72 ctest_update: Capture failure of svn to load revisions and local mods
ef399f9b ctest_update: Refactor internal APIs to support more failure cases
Thread failure of VC tool commands through more APIs so that we can
detect when they fail. Defer updating of the individual VC tool usage
the future and just return true from them for now.
Since commit v3.7.0-rc1~132^2 (CTestSVN: Fix segfault when
CTEST_UPDATE_VERSION_ONLY is enabled, 2016-09-12) we do not properly
extract svn log or externals. After updating we erase the information
that was loaded before updating and can no longer log the changes
between revisions to extract authors.
Fix this by only loading the repository information once, whether needed
by `NoteOldRevision`, `NoteNewRevision`, or both.
Fixes: #12630, #16646
Store unknown flags directly in a flag map entry for `AdditionalOptions`
instead of having a separate member for them. This avoids duplicating
the output generation logic for the entry.
Refactoring in commit 7fb14775 (cmDisallowedCommand: extract policy
checking from cmCommand, 2016-12-26) introduced a wrapper for
disallowed commands that forwards to their original commands.
This broke the `export_library_dependencies` command that uses
a final pass. Forward the final pass too to fix it.
We parse `CMAKE_GENERATOR_TOOLSET` values of the forms:
* `toolset`
* `toolset,host=x64`
* `host=x64`
Generalize the parsing to support the forms:
* `toolset`
* `toolset[,key=value]*`
* `key=value[,key=value]*`
Disallow duplicate keys. Require all but the first field to
be of `key=value` form.
BUILD_WITH_INSTALL_RPATH, SKIP_BUILD_RPATH, CMAKE_SKIP_RPATH and
CMAKE_SKIP_INSTALL_RPATH no longer any effect on the install name
of a target on macOS.
Fixes: #16589
Make the VS generator consistent with the Ninja and Makefile generators
that place the libraries listed in this variable after other libraries
on the link command line. These system libraries never depend on the
project libraries.
Parse the value as a command line string just as the MS CRT would.
This makes the VS generator behavior consistent with how the string
is used by the Ninja and Makefile generators.
e0f39312 cmCommands: add commands directly to cmState
72dcbbe5 split Default commands into Scripting and Project
7fb14775 cmDisallowedCommand: extract policy checking from cmCommand
615e2a17 cmCommand: Don't prefix error message with command name
45b49099 cmCommand: make noncopyable
5396bc92 cmCommand: remove member Helper
Since commit v3.8.0-rc1~232^2 (execute_process: Add ENCODING option for
Windows child process output, 2016-11-23) we decode child process output
using the console's active codepage by default. This differs from
previous versions of CMake and is therefore incompatible. Changing this
default will require a policy, so for now revert the default behavior
back to performing no decoding.
Reported-by: Nils Gladitz <nilsgladitz@gmail.com>