From 51983b0e661cb5d79f9e4b5555d09eec86c2c67d Mon Sep 17 00:00:00 2001 From: liquidraver <504870+liquidraver@users.noreply.github.com> Date: Wed, 20 May 2026 21:08:10 +0200 Subject: [PATCH] expand CMakeLists.txt change --- .gitignore | 1 + zephcore/CMakeLists.txt | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/.gitignore b/.gitignore index 6d8ec90..894d8f6 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,4 @@ RX_BUSY_LATCH_PLAN.md zephcore/SX126X_LBT_RX_DEBUG_HANDOFF.md PSRAM_HANDOFF.md BLE_AUDIT_INDEX.md +POWER_AUDIT_HANDOFF.md diff --git a/zephcore/CMakeLists.txt b/zephcore/CMakeLists.txt index 85c5661..ecd68a0 100644 --- a/zephcore/CMakeLists.txt +++ b/zephcore/CMakeLists.txt @@ -186,6 +186,28 @@ endif() # Custom board root: boards/// discovered via BOARD_ROOT list(APPEND BOARD_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) +# ========== Auto-Pairing Helper ========== +# For each .conf file, check if a same-named .overlay exists in the same directory. +# If it does, auto-include it in EXTRA_DTC_OVERLAY_FILE. This enables variants to +# pack both Kconfig and device tree changes together (e.g., no_display.conf + no_display.overlay). +# +# Usage: zephcore_auto_pair_overlay("path/to/config.conf") +# +function(zephcore_auto_pair_overlay CONF_FILE) + if(NOT CONF_FILE OR NOT EXISTS "${CONF_FILE}") + return() + endif() + string(REPLACE ".conf" ".overlay" OVERLAY_FILE "${CONF_FILE}") + if(EXISTS "${OVERLAY_FILE}") + if(EXTRA_DTC_OVERLAY_FILE) + set(EXTRA_DTC_OVERLAY_FILE "${EXTRA_DTC_OVERLAY_FILE};${OVERLAY_FILE}" PARENT_SCOPE) + else() + set(EXTRA_DTC_OVERLAY_FILE "${OVERLAY_FILE}" PARENT_SCOPE) + endif() + message(STATUS " [auto-pair] ${CONF_FILE} → ${OVERLAY_FILE}") + endif() +endfunction() + # ========== Board Configuration Hierarchy ========== # prj.conf → zephcore_common.conf → _common.conf → /board.conf @@ -267,15 +289,19 @@ if(NOT ZEPHCORE_BOARD_CONF AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOAR endif() # Build the EXTRA_CONF_FILE list (append to any user-provided extras) +# Auto-pair each .conf with a same-named .overlay if it exists. set(ZEPHCORE_CONF_FILES "") if(EXISTS ${ZEPHCORE_COMMON_CONF}) list(APPEND ZEPHCORE_CONF_FILES ${ZEPHCORE_COMMON_CONF}) + zephcore_auto_pair_overlay("${ZEPHCORE_COMMON_CONF}") endif() if(ZEPHCORE_PLATFORM_CONF AND EXISTS ${ZEPHCORE_PLATFORM_CONF}) list(APPEND ZEPHCORE_CONF_FILES ${ZEPHCORE_PLATFORM_CONF}) + zephcore_auto_pair_overlay("${ZEPHCORE_PLATFORM_CONF}") endif() if(ZEPHCORE_BOARD_CONF AND EXISTS ${ZEPHCORE_BOARD_CONF}) list(APPEND ZEPHCORE_CONF_FILES ${ZEPHCORE_BOARD_CONF}) + zephcore_auto_pair_overlay("${ZEPHCORE_BOARD_CONF}") endif() # Include logging tuning only for debug builds (when prod.conf is NOT active). @@ -286,6 +312,7 @@ if(EXTRA_CONF_FILE MATCHES "prod\\.conf") else() if(EXISTS ${ZEPHCORE_LOGGING_CONF}) list(APPEND ZEPHCORE_CONF_FILES ${ZEPHCORE_LOGGING_CONF}) + zephcore_auto_pair_overlay("${ZEPHCORE_LOGGING_CONF}") endif() endif() @@ -297,6 +324,7 @@ if(ZEPHCORE_PLATFORM_CONF MATCHES "esp32_common" AND EXTRA_CONF_FILE MATCHES "re set(ZEPHCORE_WIFI_OTA_CONF "${CMAKE_CURRENT_SOURCE_DIR}/boards/common/wifi_ota.conf") if(EXISTS ${ZEPHCORE_WIFI_OTA_CONF}) list(APPEND ZEPHCORE_CONF_FILES ${ZEPHCORE_WIFI_OTA_CONF}) + zephcore_auto_pair_overlay("${ZEPHCORE_WIFI_OTA_CONF}") message(STATUS " WiFi OTA: auto-enabled (ESP32 repeater)") endif() endif() @@ -312,6 +340,14 @@ if(ZEPHCORE_CONF_FILES) endif() endif() +# Auto-pair user-supplied EXTRA_CONF_FILE entries with same-named .overlay files. +# This allows repeater.conf + repeater.overlay, prod.conf + prod.overlay, etc. +if(EXTRA_CONF_FILE) + foreach(_conf IN LISTS EXTRA_CONF_FILE) + zephcore_auto_pair_overlay("${_conf}") + endforeach() +endif() + # ========== DTC Overlay Hierarchy ========== # Search for board.overlay in possible locations (same as board.conf) set(ZEPHCORE_BOARD_OVERLAY "")