summaryrefslogtreecommitdiffstats
path: root/Source/cmLinkItemGraphVisitor.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Source: Avoid comparing pointers to nullptrVitaly Stakhovsky2024-08-271-3/+3
|
* cmGeneratorTarget: Clarify enum for specifying purpose of usage requirementsBrad King2024-05-031-2/+2
| | | | | | | | Since commit 1e49880472 (cmGeneratorTarget: Avoid boolean trap in usage requirement lookup, 2021-12-08, v3.23.0-rc1~245^2) we have clarified the distinction between compile-only and link-only usage requirements. Rename the `LinkInterfaceFor` enum to `UseTo` to clarify that its role is to specify the purpose of usage requirements.
* cmGeneratorTarget: Clarify name for evaluating compile-only usage requirementsBrad King2024-05-031-1/+1
|
* cmLinkItemGraphVisitor: Remove unnecessary syntaxRose2023-10-231-1/+1
|
* LINK_LIBRARIES: Evaluate separately for linking and usage requirementsBrad King2022-03-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | We evaluate `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` for two purposes: * Constructing the link line. * Collecting usage requirements. We evaluate `INTERFACE_LINK_LIBRARIES` separately for each purpose in order to support the `$<LINK_ONLY:...>` generator expression used to express private link dependencies of a static library. Previously we only evaluated `LINK_LIBRARIES` for linking, and used that result for collecting usage requirements too. Therefore `$<LINK_ONLY:...>` does not work in `LINK_LIBRARIES`. With the introduction of `INTERFACE_LINK_LIBRARIES_DIRECT`, evaluation of `LINK_LIBRARIES` now needs to distinguish these two cases in order to honor link dependencies encountered through `$<LINK_ONLY:...>` without also exposing other usage requirements through private dependencies of a static library. Revise internal infrastructure to distinguish the two cases when evaluating `LINK_LIBRARIES`. Make the information available in code paths for `INTERFACE_LINK_LIBRARIES_DIRECT` and `LINK_ONLY`. Defer actually using the information to later commits. Issue: #22496
* cmGeneratorTarget: Avoid boolean trap in usage requirement lookupBrad King2021-12-091-2/+2
| | | | | Replace `bool usage_requirements_only` arguments with a proper enumeration to clarify meaning at call sites.
* clang-tidy: fix `readability-qualified-auto` warningsBen Boeckel2021-01-271-2/+3
|
* cmMakefile: Refactor API to better handle empty config valuesRobert Maynard2020-07-031-1/+2
|
* Graphviz: add missing support for circular dependenciesCorentin Plouet2020-06-211-4/+0
| | | | | | | | | | This support was actually added by removing a superfluous check that was too eager in cmLinkItemGraphVisitor.cxx. Extended the existing Graphviz tests to include this particular case, and re-generated the expected output files. Fixes: #20720
* Ninja Multi-Config: Fix issue with framework dependencies and AutogenKyle Edwards2020-02-171-1/+1
| | | | Fixes: #20345
* Graphviz: added test suite, fixes, enhancementsCorentin Plouet2019-10-081-0/+142
* Added a fairly comprehensive test suite * Separated the graph traversal logic from the Graphviz generation code by introducing a new class, cmLinkItemsGraphVisitor{.h,cxx} * Made the graph traversal logic less ad-hoc by using existing methods in the GlobalGenerator; this fixed a few bugs * Added support for new target types: custom targets, object and unknown libraries * Improved support for ALIAS libraries by showing the alias(es) in the graph * Introduced new flags to control those new libraries (consistent with existing flags) * Updated the documentation * Removed useless setting to set graph type in dot file * Improved the node/edge shapes (nicer, more consistent) * Added a legend to the graph * Some refactoring and cleanup of the Graphviz generation code * Added test and fix for issue 19746