| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|\
| |
| |
| |
| |
| |
| | |
f71f7ce3f0 cmStringAlgorithms: Move string functions to the new cmStringAlgorithms.h
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3618
|
| |
| |
| |
| |
| | |
This adds the `cmStringAlgorithms.h` header and moves all string functions
from `cmAlgorithms.h` to `cmStringAlgorithms.h`.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
020478dbea cmMakefile: Keep function blockers in a stack
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3613
|
| | |
| | |
| | |
| | | |
Highlight the fact that we only ever operate on the top element.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
fe2c558ba6 CMakeVersion: Preserve Git information during 'git archive'
0505a66cbf CMakeVersion: Add generic '-git' suffix when no git info is available
f7bf08754b CMakeVersion: Provide Git information in non-exact release versions
ac48259333 CMakeVersion: Re-order logic to obviate addition of each component
311f232f7a CMakeVersion: De-duplicate variable initialization
2f608566b4 CMakeVersion: Factor git execution into helper macro
74ff80323c CMakeVersion: Use FindGit module to find Git
e1e7986c00 CMakeVersion: Consider Git even with just a `.git` file
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3622
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Use `export-subst` to get information about the Git commit used to
produce an archive.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Our exact release commits have a subject of the form `CMake <version>`.
Distinguish development on a release branch in commits after such a
version but before the next release by providing Git information.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
We now require at least CMake 3.1 to build, and that has the FindGit
module.
|
| | | | |
|
| | | | |
|
| | | | |
|
| |/ / |
|
| |/
|/| |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
|/ / |
|
| | |
|
|/ |
|
|\
| |
| |
| |
| |
| |
| | |
eb5ea5a505 CMakeVersion: Use '-rc0' version suffix on release branches prior to rc1
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3609
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
d6be117ca0 ExternalProject: Support not initializing any submodules
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3579
|
| | |
| | |
| | |
| | | |
Fixes #15592
|
|\ \ \
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | | |
bd2793b6e9 Help: Add documentation for INSTALL_REMOVE_ENVIROMENT_RPATH
f08dcbffec Property: Add INSTALL_REMOVE_ENVIROMENT_RPATH property
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3544
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
1d3841b600 Genex: Memoize usage requirement TARGET_PROPERTY existence
b5460f9931 cmLinkItem: Expose HadHeadSensitiveCondition in cmLinkInterfaceLibraries
ad2b3a32d1 Genex: Optimize build setting TARGET_PROPERTY evaluation
11fa818ecd Genex: Optimize usage requirement TARGET_PROPERTY recursion
0239bf8ac8 Genex: In TARGET_PROPERTY check for usage reqs in link libs earlier
7caebeb0e4 Genex: Re-order TARGET_PROPERTY logic to de-duplicate checks
b2785a0fbd Genex: Move TARGET_PROPERTY linked targets evaluation to end
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Cristian Adam <cristian.adam@gmail.com>
Merge-request: !3589
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Clients may be able to avoid repeating work if they know the transitive
link interface libraries do not depend on what is linking them.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For each build setting property (such as `COMPILE_DEFINITIONS` or
`INCLUDE_DIRECTORIES`), the value of `$<TARGET_PROPERTY:target,prop>`
includes the values of the corresponding `INTERFACE_*` usage requirement
property from the transitive closure of link libraries of the target.
Previously we computed this by constructing a generator expression
string like `$<TARGET_PROPERTY:lib,INTERFACE_COMPILE_DEFINITIONS>` and
recursively evaluating it with the generator expression engine. Avoid
the string construction and parsing by using the dedicated evaluation
method `cmGeneratorTarget::EvaluateInterfaceProperty`.
Issue: #18964, #18965
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In large projects the generation process spends a lot of time evaluating
usage requirements through transitive interface properties on targets.
This can be seen in a contrived example with deep dependencies:
set(prev "")
foreach(i RANGE 1 500)
add_library(a${i} a.c)
target_compile_definitions(a${i} PUBLIC A${i})
target_link_libraries(a${i} PUBLIC ${prev})
set(prev a${i})
endforeach()
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.
Previously we computed this by constructing a generator expression
string like `$<TARGET_PROPERTY:lib,INTERFACE_COMPILE_DEFINITIONS>` and
recursively evaluating it with the generator expression engine. Avoid
the string construction and parsing by creating and using a dedicated
evaluation method `cmGeneratorTarget::EvaluateInterfaceProperty` that
looks up the properties directly.
Issue: #18964, #18965
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Check for usage requirement properties early enough to avoid duplicate
checks in other conditions.
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|