[core] Add esphome.build_flags option for IDF + PlatformIO (#16629)

This commit is contained in:
Jonathan Swoboda
2026-05-25 10:03:38 -04:00
committed by GitHub
parent e0167e9bdf
commit e7ab78366d
4 changed files with 15 additions and 1 deletions

View File

@@ -199,6 +199,7 @@ CONF_BROKER = "broker"
CONF_BSSID = "bssid"
CONF_BUFFER_DURATION = "buffer_duration"
CONF_BUFFER_SIZE = "buffer_size"
CONF_BUILD_FLAGS = "build_flags"
CONF_BUILD_PATH = "build_path"
CONF_BUS_VOLTAGE = "bus_voltage"
CONF_BUSY_PIN = "busy_pin"

View File

@@ -13,6 +13,7 @@ from esphome.const import (
CONF_AREA,
CONF_AREA_ID,
CONF_AREAS,
CONF_BUILD_FLAGS,
CONF_BUILD_PATH,
CONF_COMMENT,
CONF_COMPILE_PROCESS_LIMIT,
@@ -288,6 +289,7 @@ CONFIG_SCHEMA = cv.All(
cv.string_strict: cv.Any([cv.string], cv.string),
}
),
cv.Optional(CONF_BUILD_FLAGS, default=[]): cv.ensure_list(cv.string_strict),
cv.Optional(CONF_ENVIRONMENT_VARIABLES, default={}): cv.Schema(
{
cv.string_strict: cv.string,
@@ -510,6 +512,12 @@ async def _add_platformio_options(pio_options):
cg.add_platformio_option(key, val)
@coroutine_with_priority(CoroPriority.FINAL)
async def _add_build_flags(flags: list[str]) -> None:
for flag in flags:
cg.add_build_flag(flag)
@coroutine_with_priority(CoroPriority.FINAL)
async def _add_environment_variables(env_vars: dict[str, str]) -> None:
# Set environment variables for the build process
@@ -705,6 +713,9 @@ async def to_code(config: ConfigType) -> None:
if config[CONF_PLATFORMIO_OPTIONS]:
CORE.add_job(_add_platformio_options, config[CONF_PLATFORMIO_OPTIONS])
if config[CONF_BUILD_FLAGS]:
CORE.add_job(_add_build_flags, config[CONF_BUILD_FLAGS])
if config[CONF_ENVIRONMENT_VARIABLES]:
CORE.add_job(_add_environment_variables, config[CONF_ENVIRONMENT_VARIABLES])

View File

@@ -562,7 +562,7 @@ def lint_constants_usage():
# Maximum allowed CONF_ constants in esphome/const.py.
# This file is frozen — new constants go in esphome/components/const/__init__.py.
# Decrease this number when constants are moved out of const.py.
CONST_PY_MAX_CONF = 1012
CONST_PY_MAX_CONF = 1013
@lint_content_check(include=["esphome/const.py"])

View File

@@ -2,6 +2,8 @@ esphome:
debug_scheduler: true
platformio_options:
board_build.flash_mode: dio
build_flags:
- "-DESPHOME_TEST_BUILD_FLAG"
environment_variables:
TEST_ENV_VAR: "test_value"
BUILD_NUMBER: "12345"