Fix case-sensitive filesystem build failures (Linux) for ESP32 LilyGo variants

The repo has apparently only ever been built on case-insensitive
filesystems (macOS/Windows): every #include in the codebase uses
intended PascalCase/CamelCase header names (e.g. "SettingsScreen.h",
"WiFiMQTT.h"), but 28 of the actual files on disk were saved with
inconsistent casing (e.g. "Settingsscreen.h", "wifimqtt.h"). On a
case-sensitive filesystem (Linux) this is a hard compile failure, not
a cosmetic mismatch -- confirmed by running `pio run -e meck_audio_ble`
on Gentoo Linux, which failed immediately on "target.h: No such file
or directory" and a cascade of similar errors as each fix exposed the
next one.

Root causes, two flavors of the same underlying bug:

1. Header filename casing (29 files renamed via `git mv` to preserve
   history): examples/companion_radio/ui-new/*, examples/simple_repeater/*,
   and two variant-local headers (PCF85063Clock.h, TCA8418Keyboard.h x2).
   Verified safe before renaming: every file has exactly one consistent
   intended casing across all the places that #include it (checked via
   a repo-wide scan comparing every #include against on-disk filenames,
   zero conflicts found), so each rename is a pure no-op for behavior.

2. PlatformIO config paths using the wrong case for variant directories
   that are actually lowercase on disk (variants/lilygo_tdeck_pro,
   variants/lilygo_t5s3_epaper_pro):
   - `-I variants/LilyGo_TDeck_Pro` / `-I variants/LilyGo_T5S3_EPaper_Pro`
     in build_flags (3 occurrences, including lilygo_tdeck_max's
     reference to TDeck Pro's shared headers) -- broke header resolution
     for target.h and friends.
   - `+<../variants/LilyGo_TDeck_Pro>` / `+<../variants/LilyGo_T5S3_EPaper_Pro>`
     in build_src_filter (2 occurrences) -- silently excluded the board-init
     .cpp files (TDeckBoard.cpp etc.) from compilation entirely, which
     didn't fail until the *link* stage ("undefined reference to
     radio_init()", `TDeckBoard::begin()`, etc.) since PlatformIO's glob
     just matched nothing rather than erroring.

Verified fix: `pio run -e meck_audio_ble` now compiles, links, and
produces a firmware image cleanly (RAM 53.1%, Flash 49.6%).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nic Boet
2026-06-23 14:39:20 -05:00
parent 8133ab5856
commit 7df116b4f1
32 changed files with 5 additions and 5 deletions
@@ -18,7 +18,7 @@ board_build.arduino.memory_type = qio_opi
board_upload.flash_size = 16MB
build_flags =
${esp32_base.build_flags}
-I variants/LilyGo_T5S3_EPaper_Pro
-I variants/lilygo_t5s3_epaper_pro
-D LilyGo_T5S3_EPaper_Pro
-D T5_S3_EPAPER_PRO_V2
-D BOARD_HAS_PSRAM=1
@@ -61,7 +61,7 @@ build_flags =
-D ARDUINO_LOOP_STACK_SIZE=32768
-D HAS_MECK_FONTS
build_src_filter = ${esp32_base.build_src_filter}
+<../variants/LilyGo_T5S3_EPaper_Pro>
+<../variants/lilygo_t5s3_epaper_pro>
lib_deps =
${esp32_base.lib_deps}
WebServer
+1 -1
View File
@@ -42,7 +42,7 @@ build_flags =
; Include MAX variant first (for variant.h, target.h, TDeckProMaxBoard.h)
; then V1.1 variant (for TDeckBoard.h, which TDeckProMaxBoard inherits from)
-I variants/lilygo_tdeck_max
-I variants/LilyGo_TDeck_Pro
-I variants/lilygo_tdeck_pro
; Both defines needed: LilyGo_TDeck_Pro for existing UI code guards,
; LilyGo_TDeck_Pro_Max for MAX-specific code paths
-D LilyGo_TDeck_Pro
+2 -2
View File
@@ -9,7 +9,7 @@ board_upload.flash_size = 16MB
build_flags =
${esp32_base.build_flags}
${sensor_base.build_flags}
-I variants/LilyGo_TDeck_Pro
-I variants/lilygo_tdeck_pro
-D LilyGo_TDeck_Pro
-D HAS_GPS=1
-D BOARD_HAS_PSRAM=1
@@ -89,7 +89,7 @@ build_flags =
-D ARDUINO_LOOP_STACK_SIZE=32768
-D HAS_MECK_FONTS
build_src_filter = ${esp32_base.build_src_filter}
+<../variants/LilyGo_TDeck_Pro>
+<../variants/lilygo_tdeck_pro>
+<helpers/sensors/*.cpp>
lib_deps =
${esp32_base.lib_deps}