Skip to content

[CMake] Use DEPFILE instead of IMPLICIT_DEPENDS for dictionaries - #23011

Open
guitargeek wants to merge 2 commits into
root-project:masterfrom
guitargeek:issue-21203
Open

[CMake] Use DEPFILE instead of IMPLICIT_DEPENDS for dictionaries#23011
guitargeek wants to merge 2 commits into
root-project:masterfrom
guitargeek:issue-21203

Conversation

@guitargeek

@guitargeek guitargeek commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Re-applying commit ae4d830 after revert in 94caecf.

This PR also contains a follow-up fix to make things work under CMP0116 OLD.

This version was confirmed to not result in spurious dictionary rebuilds on the alma8 Docker container.

Closes #21203.

DhanashreePetare and others added 2 commits August 4, 2026 16:06
Follows up on ae4d830, which switched ROOT_GENERATE_DICTIONARY()
from IMPLICIT_DEPENDS to a proper DEPFILE, but rebuilt every dictionary
on every incremental build with older Ninja (e.g. 1.8.2 on Alma 8):

```txt
  ninja: expected depfile '.../io/io/G__RIO.depfile' to mention
         'io/io/G__RIO.cxx', got 'G__RIO.cxx'
```

rootcling writes the depfile target as the plain dictionary name it is
given (`"G__RIO.cxx"`) relative to CMAKE_CURRENT_BINARY_DIR. ROOT pins
`CMP0116` to OLD globally (see 7392b02), and under OLD the Ninja
generator consumes the depfile verbatim and expects the target relative
to the top-level build directory (`"io/io/G__RIO.cxx"`). The mismatch
makes older Ninja treat the dictionary as perpetually out of date; newer
Ninja tolerates it, which is why the regression only showed up on some
platforms.

This commit suggests to enable CMP0116 NEW locally around the dictionary
`add_custom_command` so CMake transforms the depfile to whatever the
active generator needs.
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown

Test Results

    23 files      23 suites   3d 15h 32m 36s ⏱️
 3 856 tests  3 856 ✅ 0 💤 0 ❌
78 541 runs  78 541 ✅ 0 💤 0 ❌

Results for commit 3c63d03.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ROOT_GENERATE_DICTIONARY needs to be updated to use DEPFILE instead of IMPLICIT_DEPENDS with add_custom_command

1 participant