Crafter.Build/implementations
Repository files (latest commit first)
Filename Latest commit message Latest commit date
catbot 1d0d8e1e28 feat(incremental): rebuild when an #included header changes
The staleness check compared an artifact against its own source and its
module imports. Headers were in neither set: the scanner reads `import`
lines, and a .cppm or .cpp keeps its mtime when a header it includes is
edited — so the build reported nothing to do and left objects compiled
against the previous contents. Same silent mixed-layout binary as issue
27, reached through #include instead of import.

Ask the compiler what it actually opened. Every C++ and C compile now
passes -MD -MF <artifact>.d, and Check reads that depfile back through
NewestPrerequisite, comparing every prerequisite's mtime against the
artifact. A missing depfile (an object from a crafter-build that wrote
none) or a prerequisite that no longer exists reads as "rebuild": neither
is evidence of freshness.

The parser unescapes make syntax rather than splitting on whitespace,
since clang wraps depfiles onto continuation lines and escapes spaces in
filenames.
2026-07-31 11:11:38 +00:00
..
Crafter.Build-Asset.cpp linting 2026-07-23 01:24:42 +02:00
Crafter.Build-Clang.cpp feat(incremental): rebuild when an #included header changes 2026-07-31 11:11:38 +00:00
Crafter.Build-External.cpp feat(lint): const-local and constexpr-constant rules 2026-07-31 00:50:48 +02:00
Crafter.Build-Implementation.cpp feat(incremental): rebuild when an #included header changes 2026-07-31 11:11:38 +00:00
Crafter.Build-Interface.cpp feat(incremental): rebuild when an #included header changes 2026-07-31 11:11:38 +00:00
Crafter.Build-Lint.cpp fix(lint): constexpr-constant asks clang's evaluator, not the initialiser tokens 2026-07-31 02:05:37 +02:00
Crafter.Build-Platform.cpp feat(incremental): rebuild when an #included header changes 2026-07-31 11:11:38 +00:00
Crafter.Build-Progress.cpp linting 2026-07-23 01:24:42 +02:00
Crafter.Build-Shader.cpp fix(lint): constexpr-constant asks clang's evaluator, not the initialiser tokens 2026-07-31 02:05:37 +02:00
Crafter.Build-Test.cpp fix: key the host PCM cache on source content, add clean, hash project args 2026-07-30 17:43:09 +00:00
main.cpp linting 2026-07-23 01:24:42 +02:00