181 lines
6.0 KiB
Python
181 lines
6.0 KiB
Python
|
"""This script updates the sdkconfigs based on the menuconfig results in a given
|
||
|
build."""
|
||
|
|
||
|
import pathlib
|
||
|
import click
|
||
|
|
||
|
OPT_SETTINGS = [
|
||
|
"CONFIG_ESP_ERR_TO_NAME_LOOKUP",
|
||
|
"CONFIG_ESP_CONSOLE_",
|
||
|
"CONFIG_CONSOLE_UART_",
|
||
|
"CONFIG_ESP_SYSTEM_PANIC_",
|
||
|
"COMPILER_OPTIMIZATION_",
|
||
|
"CONFIG_ESP32S3_DEBUG_OCDAWARE",
|
||
|
"CONFIG_FREERTOS_ASSERT_",
|
||
|
"CONFIG_FREERTOS_DEBUG_OCDAWARE",
|
||
|
"CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER",
|
||
|
"CONFIG_HAL_ASSERTION_",
|
||
|
"CONFIG_LWIP_ESP_LWIP_ASSERT",
|
||
|
"CONFIG_OPTIMIZATION_ASSERTION_LEVEL",
|
||
|
"CONFIG_OPTIMIZATION_ASSERTIONS_",
|
||
|
"CONFIG_HAL_DEFAULT_ASSERTION_LEVEL",
|
||
|
]
|
||
|
|
||
|
TARGET_SETTINGS = [
|
||
|
"CONFIG_IDF_TARGET",
|
||
|
"CONFIG_IDF_FIRMWARE_CHIP_ID",
|
||
|
"CONFIG_BOOTLOADER_OFFSET_IN_FLASH",
|
||
|
"CONFIG_ESP32_",
|
||
|
"CONFIG_ESP32C3_",
|
||
|
"CONFIG_ESP32S2_",
|
||
|
"CONFIG_ESP32S3_",
|
||
|
"CONFIG_ESP32H2_",
|
||
|
"CONFIG_ESP_SLEEP_POWER_DOWN_FLASH",
|
||
|
"CONFIG_ESP_SYSTEM_SINGLE_CORE_MODE",
|
||
|
"CONFIG_ESP_SYSTEM_MEMPROT_",
|
||
|
"CONFIG_ESP_MAIN_TASK_AFFINITY",
|
||
|
"CONFIG_ESP_WIFI_EXTERNAL_COEXIST_ENABLE",
|
||
|
"CONFIG_FREERTOS_UNICORE",
|
||
|
"CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER",
|
||
|
"CONFIG_FREERTOS_CORETIMER_0",
|
||
|
"CONFIG_FREERTOS_CORETIMER_1",
|
||
|
"CONFIG_FREERTOS_SYSTICK_USES_CCOUNT",
|
||
|
"CONFIG_FREERTOS_OPTIMIZED_SCHEDULER",
|
||
|
"CONFIG_MBEDTLS_HARDWARE_GCM",
|
||
|
"CONFIG_ESP_SYSTEM_PD_FLASH",
|
||
|
"CONFIG_EXTERNAL_COEX_ENABLE",
|
||
|
"CONFIG_SDK_TOOLPREFIX",
|
||
|
"CONFIG_TOOLPREFIX",
|
||
|
"ESP_SLEEP_GPIO_RESET_WORKAROUND",
|
||
|
]
|
||
|
|
||
|
BOARD_SETTINGS = [
|
||
|
"PSRAM clock and cs IO for ESP32S3",
|
||
|
"CONFIG_SPIRAM",
|
||
|
"CONFIG_DEFAULT_PSRAM_",
|
||
|
"_SPIRAM_SUPPORT",
|
||
|
"CONFIG_LWIP_LOCAL_HOSTNAME",
|
||
|
]
|
||
|
|
||
|
FLASH_SETTINGS = [
|
||
|
"CONFIG_ESPTOOLPY_FLASHSIZE",
|
||
|
"CONFIG_PARTITION_TABLE_CUSTOM_FILENAME",
|
||
|
"CONFIG_PARTITION_TABLE_FILENAME",
|
||
|
]
|
||
|
|
||
|
# boards/lilygo_ttgo_t8_s2_st7789/sdkconfig
|
||
|
# CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
|
||
|
|
||
|
# boards/morpheans_morphesp-240/sdkconfig
|
||
|
# CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
|
||
|
|
||
|
|
||
|
def matches_group(line, group):
|
||
|
for setting in group:
|
||
|
if setting in line:
|
||
|
return True
|
||
|
return False
|
||
|
|
||
|
|
||
|
def add_group(lines, last_group, current_group):
|
||
|
if last_group != current_group:
|
||
|
if last_group:
|
||
|
lines.append("# end of " + last_group)
|
||
|
lines.append("")
|
||
|
return None
|
||
|
if current_group:
|
||
|
lines.append("#")
|
||
|
lines.append("# " + current_group)
|
||
|
lines.append("#")
|
||
|
return current_group
|
||
|
return last_group
|
||
|
|
||
|
|
||
|
@click.command()
|
||
|
@click.option("--debug")
|
||
|
@click.option("--board")
|
||
|
@click.option(
|
||
|
"--update_all",
|
||
|
is_flag=True,
|
||
|
default=False,
|
||
|
help="Updates the sdkconfigs outside of the board directory.",
|
||
|
)
|
||
|
def update(debug, board, update_all):
|
||
|
"""Simple program that greets NAME for a total of COUNT times."""
|
||
|
|
||
|
board_make = pathlib.Path(f"boards/{board}/mpconfigboard.mk")
|
||
|
for line in board_make.read_text().split("\n"):
|
||
|
if line.startswith("IDF_TARGET"):
|
||
|
target = line.split("=")[1].strip()
|
||
|
elif line.startswith("CIRCUITPY_ESP_FLASH_SIZE"):
|
||
|
flash = line.split("=")[1].strip()
|
||
|
|
||
|
input_config = pathlib.Path(f"build-{board}/esp-idf/sdkconfig")
|
||
|
default_config = pathlib.Path("esp-idf-config/sdkconfig.defaults")
|
||
|
if debug:
|
||
|
opt_config = pathlib.Path("esp-idf-config/sdkconfig-debug.defaults")
|
||
|
else:
|
||
|
opt_config = pathlib.Path("esp-idf-config/sdkconfig-opt.defaults")
|
||
|
flash_config = pathlib.Path(f"esp-idf-config/sdkconfig-{flash}.defaults")
|
||
|
target_config = pathlib.Path(f"esp-idf-config/sdkconfig-{target}.defaults")
|
||
|
board_config = pathlib.Path(f"boards/{board}/sdkconfig")
|
||
|
|
||
|
defaults = default_config.read_text().split("\n")
|
||
|
defaults.extend(opt_config.read_text().split("\n"))
|
||
|
defaults.extend(flash_config.read_text().split("\n"))
|
||
|
defaults.extend(target_config.read_text().split("\n"))
|
||
|
|
||
|
board_settings = []
|
||
|
last_board_group = None
|
||
|
flash_settings = []
|
||
|
last_flash_group = None
|
||
|
opt_settings = []
|
||
|
last_opt_group = None
|
||
|
target_settings = []
|
||
|
last_target_group = None
|
||
|
default_settings = []
|
||
|
last_default_group = None
|
||
|
current_group = None
|
||
|
for line in input_config.read_text().split("\n"):
|
||
|
if line.startswith("# ") and "CONFIG_" not in line and len(line) > 3:
|
||
|
if line.startswith("# end of"):
|
||
|
current_group = None
|
||
|
else:
|
||
|
current_group = line[2:]
|
||
|
|
||
|
if (not update_all and line not in defaults) or (
|
||
|
update_all and matches_group(line, BOARD_SETTINGS)
|
||
|
):
|
||
|
last_board_group = add_group(board_settings, last_board_group, current_group)
|
||
|
board_settings.append(line)
|
||
|
elif update_all:
|
||
|
if matches_group(line, OPT_SETTINGS):
|
||
|
last_opt_group = add_group(opt_settings, last_opt_group, current_group)
|
||
|
opt_settings.append(line)
|
||
|
elif matches_group(line, FLASH_SETTINGS):
|
||
|
last_flash_group = add_group(flash_settings, last_flash_group, current_group)
|
||
|
flash_settings.append(line)
|
||
|
elif matches_group(line, TARGET_SETTINGS):
|
||
|
last_target_group = add_group(target_settings, last_target_group, current_group)
|
||
|
target_settings.append(line)
|
||
|
elif "CONFIG_" in line:
|
||
|
last_default_group = add_group(default_settings, last_default_group, current_group)
|
||
|
default_settings.append(line)
|
||
|
|
||
|
add_group(board_settings, last_board_group, current_group)
|
||
|
add_group(opt_settings, last_opt_group, current_group)
|
||
|
add_group(flash_settings, last_flash_group, current_group)
|
||
|
add_group(target_settings, last_target_group, current_group)
|
||
|
add_group(default_settings, last_default_group, current_group)
|
||
|
|
||
|
board_config.write_text("\n".join(board_settings))
|
||
|
if update_all:
|
||
|
flash_config.write_text("\n".join(flash_settings))
|
||
|
opt_config.write_text("\n".join(opt_settings))
|
||
|
default_config.write_text("\n".join(default_settings))
|
||
|
target_config.write_text("\n".join(target_settings))
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
update()
|