https://github.com/Kitware/CMake
Revision b665966933c8656d1dafde06b8f29fe7e4901738 authored by Ben Boeckel on 22 July 2023, 10:46:31 UTC, committed by Ben Boeckel on 22 July 2023, 11:12:43 UTC
In commit b6a5382217 (Ninja: depend on language module information files
directly, 2023-02-10), introduced via !8197, language-specific module
information files (`CMakeFiles/<target>.dir/<lang>Modules.json`) files
were added as real dependencies to the dyndep collation steps.
Previously, the behavior was to inform the collator of all possible
targets and search for the files manually ignoring those which did not
exist with ordering enforced by depending on the linker output of all
dependent targets. This behavior could lead to stale information being
used (e.g., if a target stops providing any targets) and also did not
reliably build everything needed on rebuilds. Afterwards, the internal
computation changed the dependency from all possible targets to an exact
set of "these targets might have modules" query, however one that did
not include `OBJECT` libraries since do not have `LinkEntry` items
internally (their objects are instead treated as source files).

As a stopgap measure, track `OBJECT` libraries in a separate list and
query them explicitly when gathering targets which may have interesting
information. Future work can add `LinkEntry` items to represent these
targets once all `LinkEntry` consumers have been audited to make sure
they are not surprised by any `OBJECT` library entries.

Fixes: #25112
1 parent a99b87a
Raw File
Tip revision: b665966933c8656d1dafde06b8f29fe7e4901738 authored by Ben Boeckel on 22 July 2023, 10:46:31 UTC
cmComputeLinkInformation: track OBJECT library dependencies
Tip revision: b665966
.clang-format
---
# This configuration requires clang-format version 15 exactly.
BasedOnStyle: Mozilla
AlignOperands: false
AllowShortFunctionsOnASingleLine: InlineOnly
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
  AfterClass:      true
  AfterEnum:       true
  AfterFunction:   true
  AfterStruct:     true
  AfterUnion:      true
BreakBeforeBraces: Custom
ColumnLimit: 79
IndentPPDirectives: AfterHash
SortUsingDeclarations: false
SpaceAfterTemplateKeyword: true
IncludeBlocks: Regroup
IncludeCategories:
  - Regex:           '^[<"]cmSTL\.hxx'
    Priority:        -2
  - Regex:           '^[<"]cmConfigure\.h'
    Priority:        -1
  - Regex:           '^<queue>'
    Priority:        1
  - Regex:           '^(<|")cm(ext)?/'
    Priority:        2
  - Regex:           '^(<|")windows\.h'
    Priority:        3
  - Regex:           '^<sys/'
    Priority:        5
  - Regex:           '^(<|")Qt?[A-Z]'
    Priority:        6
  - Regex:           '^<cmtp/'
    Priority:        7
  - Regex:           '^(<|")cmsys/'
    Priority:        8
  - Regex:           '^(<|")cm_'
    Priority:        9
  - Regex:           '^(<|")cm[A-Z][^.]+\.h'
    Priority:        10
  - Regex:           '^<[^.]+\.h'
    Priority:        4
  - Regex:           '^<'
    Priority:        1
  - Regex:           '.*'
    Priority:        11
...
back to top