diff --git a/backend/app/services/espidf_compiler.py b/backend/app/services/espidf_compiler.py index a94830a2..fe104383 100644 --- a/backend/app/services/espidf_compiler.py +++ b/backend/app/services/espidf_compiler.py @@ -909,6 +909,12 @@ class ESPIDFCompiler: (r'iot_knob\.h', 'espressif/knob', '*'), (r'esp_lcd_touch_gt911\.h', 'espressif/esp_lcd_touch_gt911', '*'), (r'esp_codec_dev\.h', 'espressif/esp_codec_dev', '*'), + # LVGL and its BSP glue: every official board demo's UI is built on + # them, so without these a visitor cannot paste a single screen of + # esp-dev-kits code. The dependency is only declared when the source + # includes the header, so nothing else pays for the bigger build. + (r'lvgl\.h', 'lvgl/lvgl', '*'), + (r'esp_lvgl_port\.h', 'espressif/esp_lvgl_port', '*'), ) def _detect_managed_components(self, code: str) -> dict: diff --git a/test/backend/unit/test_espidf_pure_mode.py b/test/backend/unit/test_espidf_pure_mode.py index 43b5db52..a3c0e374 100644 --- a/test/backend/unit/test_espidf_pure_mode.py +++ b/test/backend/unit/test_espidf_pure_mode.py @@ -166,6 +166,8 @@ class ManagedComponentDetectionTests(unittest.TestCase): '#include "esp_lcd_st77916.h"': 'espressif/esp_lcd_st77916', '#include "esp_lcd_touch_cst816s.h"': 'espressif/esp_lcd_touch_cst816s', '#include "esp_lcd_ek79007.h"': 'espressif/esp_lcd_ek79007', + '#include "lvgl.h"': 'lvgl/lvgl', + '#include "esp_lvgl_port.h"': 'espressif/esp_lvgl_port', } for line, component in cases.items(): with self.subTest(line=line):