fix(espidf): include non-utility subdirs for libs without src/ layout

The _should_include filter inside _merge_arduino_libs_to_component
rejected every subdirectory of a library except 'utility/' when the
library lacked a src/ layout. That blocked legitimate header dirs like
Adafruit_GFX_Library/Fonts/, breaking compiles that use any GxEPD2
example with a custom font (#include <Fonts/FreeMonoBold12pt7b.h>).

The earlier filter at the top of the function already excludes
docs/examples/tests/etc. via excluded_dirs, so anything that survives
that check is presumed to be buildable source. Letting all remaining
subdirs through restores Fonts/, gfxfont/, and similar conventional
auxiliary header directories that Adafruit-style libs rely on.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
David Montero 2026-05-04 15:41:53 +02:00
parent 71e90f9b90
commit 156d89c61d
1 changed files with 5 additions and 1 deletions

View File

@ -473,7 +473,11 @@ class ESPIDFCompiler:
return False
if has_src_layout:
return parts[0] == 'src' or len(parts) == 1
return len(parts) == 1 or parts[0].lower() == 'utility'
# Non-src-layout libs (Adafruit_GFX, etc.) keep auxiliary
# headers in subdirs like Fonts/ or gfxfont/. Anything not
# already excluded (docs/examples/tests handled above) is
# presumed to be buildable source.
return True
for f in lib_root.rglob('*'):
if not f.is_file():