ec892a572b cmOutputConverter: Make shell escaping methods cm::string_view based
8573e20c43 cmOutputConverter: Let GetFortranFormat accept a cm::string_view
4911762358 cmOutputConverter: Return bool instead of int in utility functions
a929255dec cmOutputConverter: Let cmOutputConverterIsShellOperator accept cm::string_view
1b30b28c04 cmOutputConverter: Let cmOutputConverterIsShellOperator accept cm::string_view
6675f785be cmOutputConverter: Let EscapeForCMake accept a cm::string_view
09977c1816 cmSystemTool: Let TrimWhitespace accept a cm::string_view
2f19e53705 cmSystemTool: Let HelpFileName accept a cm::string_view
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3615
Revert the change from commit 7b354baad5 (CMakeVersion: Set
CMake_VERSION_RC to 0 even in non-rc versions, 2019-07-25) and instead
define a `0` value in `CMake_VERSION_RC` to mean `-rc0`. This
distinguishes release branch versions prior to the first release
candidate from the first release candidate itself. It also makes room
for a dedicated "CMake $major.$minor.0-rc1" release commit for `-rc1` as
we have for later release candidates and final releases.
e91bfe440c cmMakefile: Let AddDefinition accept a value as cm::string_view
f2ba968ef2 cmMakefile: Simplify and rename AddDefinitionBool
9b5cc42531 cmDefinitions: Remove const char* based Set method
e268840c0a cmDefinitions: Add Unset and cm::string_view based Set methods
451fd329a8 cmDefinitions: Cleanups
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3577
4ff0bb054b cmSystemTools: Make IsInternallyOn, IsON and IsOff cm::string_view based
65d3ea2c7f cmAlgorithms: Make cmHasLiteral{Prefix,Suffix} cm::string_view based
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3598
The logic that uses this value already ignores any "false" value, so `0`
is just as good as not being set at all. Using `0` for this role makes
the version components look more symmetric and reduces the number of
edits needed when creating releases.
Since commit a13a5c948e (Replace use of CollapseCombinedPath with
CollapseFullPath, 2019-03-19, v3.15.0-rc1~361^2~1), one code path now
calls `CollapseFullPath` with a base path that may be relative.
Backport KWSys commit c6f8e24a3 (SystemTools: Fix CollapseFullPath with
relative base path, 2019-07-24) to handle such base paths.
This case occurs when a build tree is placed in a directory inside a
source tree such that CMake is willing to generate a relative path from
the build tree to the source tree. Add a test covering this case.
Fixes: #19507
This changes `cmMakefile::AddDefinition` to take a `cm::string_view` as value
argument instead of a `const char *`.
Benefits are:
- `std::string` can be passed to `cmMakefile::AddDefinition` directly without
the `c_str()` plus string length recomputation fallback.
- Lengths of literals passed to `cmMakefile::AddDefinition` can be computed at
compile time.
In various sources uses of `cmMakefile::AddDefinition` are adapted to avoid
`std::string::c_str` calls and the `std::string` is passed directly.
Uses of `cmMakefile::AddDefinition`, where a `nullptr` `const char*` might
be passed to `cmMakefile::AddDefinition` are extended with `nullptr` checks.
This simplifies the `cmMakefile::AddDefinition` method with bool value
overload to call the string based `cmMakefile::AddDefinition` method
with either an "ON" or "OFF" string.
Also the method is renamed to `cmMakefile::AddDefinitionBool`
- Removes `cmDefinitions::Set` method overload that takes a `const char*`
value argument.
- Updates calls to `cmDefinitions::Set` to use the `cm::string_view` based
version instead.
- The `cmDefinitions::Def` struct is simplified by removing an unused
constructor and the `std_string` type definition. The std::string value
becomes a member variable instead of being derived from.
- The `cmDefinitions::Unset` method is added that unsets a definition.
It has the same functionality as calling `cmDefinitions::Set` with a
`nullptr` value argument,
- The `cmDefinitions::Set` method gets an overloaded version that takes a
`cm::string_view` as value argument.
- The originl `cmDefinitions::Set` method with `const char*` argument is
refactored to either call the `cm::string_view` based `cmDefinitions::Set`
overload or `cmDefinitions::Unset`, depending on whether the value
`const char*` is a nullptr (`Unset`) or not (`Set`).
When building the output-map-file.json, do not convert the path to a
Ninja path, which will make it relative. If `cmake` is invoked with the
`-B` option the files will be written relative to the directory where
CMake was invoked rather than relative to the build tree. This path
need not be a relative path since it is used internally by CMake to
determine where to write the output map file. This allows the use of
`-B` option in CMake in projects with Swift targets.
For each usage requirement (such as `INTERFACE_COMPILE_DEFINITIONS` or
`INTERFACE_INCLUDE_DIRECTORIES`), the value of the generator expression
`$<TARGET_PROPERTY:target,prop>` includes the values of the same
property from the transitive closure of link libraries of the target.
In cases that a target's transitive closure of dependencies does not
depend on the target being linked (the "head" target), we can memoize
whether or not a usage requirement property exists at all for that
target. When a usage requirement does not exist for a target, we
can skip evaluating it for every consuming target.
Fixes: #18964, #18965
In commit fec441ec17 (Teach CROSSCOMPILING_EMULATOR to support
arguments, 2019-05-30, v3.15.0-rc1~6^2) the new member
`cmCustomCommandGenerator::EmulatorsWithArguments` was not initialized
to the proper size. Fix this and add a test case covering the crash
that could occur with multiple commands where an emulator appears only
in a later command.
Fixes: #19500
Co-Author: Brad King <brad.king@kitware.com>