; This PlatformIO project is for development purposes *only*: clang-tidy derives its compilation ; database from here, and IDEs like CLion and VSCode also use it. This does not actually create a ; usable binary. ; It's *not* used during runtime. [platformio] default_envs = esp8266-arduino, esp32-arduino, esp32-idf, bk72xx-arduino, ln882h-arduino ; Ideally, we want src_dir to be the root directory of the repository, to mimic the runtime build ; environment as best as possible. Unfortunately, the ESP-IDF toolchain really doesn't like this ; being the root directory. Instead, set esphome/ as the source directory, all our sources are in ; there anyway. Set the root directory as the include_dir, so that the esphome/ directory is on the ; include path. src_dir = esphome include_dir = . ; This are just the build flags as set by the runtime. [flags:runtime] build_flags = -Wno-unused-but-set-variable -Wno-sign-compare ; This are just the build flags for clang-tidy. [flags:clangtidy] build_flags = -Wall -Wextra -Wunreachable-code -Wfor-loop-analysis -Wshadow-field -Wshadow-field-in-constructor -Wshadow-uncaptured-local ; This are common settings for all environments. [common] lib_deps = esphome/noise-c@0.1.10 ; api improv/Improv@1.2.4 ; improv_serial / esp32_improv bblanchon/ArduinoJson@7.4.2 ; json wjtje/qr-code-generator-library@1.7.0 ; qr_code functionpointer/arduino-MLX90393@1.0.2 ; mlx90393 pavlodn/HaierProtocol@0.9.31 ; haier kikuchan98/pngle@1.1.0 ; online_image https://github.com/esphome/TinyGPSPlus.git#v1.1.0 ; gps ; Using the repository directly, otherwise ESP-IDF can't use the library https://github.com/bitbank2/JPEGDEC.git#ca1e0f2 ; online_image ; This is using the repository until a new release is published to PlatformIO https://github.com/Sensirion/arduino-gas-index-algorithm.git#3.2.1 ; Sensirion Gas Index Algorithm Arduino Library lvgl/lvgl@8.4.0 ; lvgl build_flags = -DESPHOME_LOG_LEVEL=ESPHOME_LOG_LEVEL_VERY_VERBOSE -std=gnu++20 build_unflags = -std=gnu++11 -std=gnu++14 -std=gnu++17 -std=gnu++23 -std=gnu++2a -std=gnu++2b -std=gnu++2c src_filter = +<./> +<../tests/dummy_main.cpp> +<../.temp/all-include.cpp> lib_ldf_mode = off lib_compat_mode = strict ; This are common settings for all Arduino-framework based environments. [common:arduino] extends = common lib_deps = ${common.lib_deps} SPI ; spi (Arduino built-in) Wire ; i2c (Arduino built-int) heman/AsyncMqttClient-esphome@1.0.0 ; mqtt ESP32Async/ESPAsyncWebServer@3.7.8 ; web_server_base fastled/FastLED@3.9.16 ; fastled_base freekode/TM1651@1.0.1 ; tm1651 glmnet/Dsmr@0.7 ; dsmr rweather/Crypto@0.4.0 ; dsmr dudanov/MideaUART@1.1.9 ; midea tonia/HeatpumpIR@1.0.35 ; heatpumpir build_flags = ${common.build_flags} -DUSE_ARDUINO build_unflags = ${common.build_unflags} ; This are common settings for all IDF-framework based environments. [common:idf] extends = common build_flags = ${common.build_flags} -DUSE_ESP_IDF build_unflags = ${common.build_unflags} ; This are common settings for the ESP8266 using Arduino. [common:esp8266-arduino] extends = common:arduino platform = platformio/espressif8266@4.2.1 platform_packages = platformio/framework-arduinoespressif8266@~3.30102.0 framework = arduino lib_deps = ${common:arduino.lib_deps} ESP8266WiFi ; wifi (Arduino built-in) Update ; ota (Arduino built-in) ESP32Async/ESPAsyncTCP@2.0.0 ; async_tcp makuna/NeoPixelBus@2.7.3 ; neopixelbus ESP8266HTTPClient ; http_request (Arduino built-in) ESP8266mDNS ; mdns (Arduino built-in) DNSServer ; captive_portal (Arduino built-in) droscy/esp_wireguard@0.4.2 ; wireguard build_flags = ${common:arduino.build_flags} -Wno-nonnull-compare -DUSE_ESP8266 -DUSE_ESP8266_FRAMEWORK_ARDUINO build_unflags = ${common.build_unflags} extra_scripts = post:esphome/components/esp8266/post_build.py.script ; This are common settings for the ESP32 (all variants) using Arduino. [common:esp32-arduino] extends = common:arduino platform = https://github.com/pioarduino/platform-espressif32/releases/download/54.03.21/platform-espressif32.zip platform_packages = pioarduino/framework-arduinoespressif32@https://github.com/espressif/arduino-esp32/releases/download/3.2.1/esp32-3.2.1.zip framework = arduino lib_deps = ; order matters with lib-deps; some of the libs in common:arduino.lib_deps ; don't declare built-in libraries as dependencies, so they have to be declared first FS ; web_server_base (Arduino built-in) Networking ; wifi,web_server_base,ethernet (Arduino built-in) WiFi ; wifi,web_server_base,ethernet (Arduino built-in) Update ; ota,web_server_base (Arduino built-in) ${common:arduino.lib_deps} ESP32Async/AsyncTCP@3.4.5 ; async_tcp NetworkClientSecure ; http_request,nextion (Arduino built-in) HTTPClient ; http_request,nextion (Arduino built-in) ESPmDNS ; mdns (Arduino built-in) ESP32 Async UDP ; captive_portal (Arduino built-in) DNSServer ; captive_portal (Arduino built-in) makuna/NeoPixelBus@2.8.0 ; neopixelbus esphome/ESP32-audioI2S@2.3.0 ; i2s_audio droscy/esp_wireguard@0.4.2 ; wireguard esphome/esp-audio-libs@1.1.4 ; audio build_flags = ${common:arduino.build_flags} -DUSE_ESP32 -DUSE_ESP32_FRAMEWORK_ARDUINO -DAUDIO_NO_SD_FS ; i2s_audio build_unflags = ${common.build_unflags} extra_scripts = post:esphome/components/esp32/post_build.py.script ; This are common settings for the ESP32 (all variants) using IDF. [common:esp32-idf] extends = common:idf platform = https://github.com/pioarduino/platform-espressif32/releases/download/54.03.21/platform-espressif32.zip platform_packages = pioarduino/framework-espidf@https://github.com/pioarduino/esp-idf/releases/download/v5.4.2/esp-idf-v5.4.2.zip framework = espidf lib_deps = ${common:idf.lib_deps} droscy/esp_wireguard@0.4.2 ; wireguard kahrendt/ESPMicroSpeechFeatures@1.1.0 ; micro_wake_word esphome/esp-audio-libs@1.1.4 ; audio build_flags = ${common:idf.build_flags} -Wno-nonnull-compare -DUSE_ESP32 -DUSE_ESP32_FRAMEWORK_ESP_IDF build_unflags = ${common.build_unflags} extra_scripts = post:esphome/components/esp32/post_build.py.script ; These are common settings for the RP2040 using Arduino. [common:rp2040-arduino] extends = common:arduino board_build.filesystem_size = 0.5m platform = https://github.com/maxgerhardt/platform-raspberrypi.git#v1.2.0-gcc12 platform_packages = ; earlephilhower/framework-arduinopico@~1.20602.0 ; Cannot use the platformio package until old releases stop getting deleted earlephilhower/framework-arduinopico@https://github.com/earlephilhower/arduino-pico/releases/download/3.9.4/rp2040-3.9.4.zip framework = arduino lib_deps = ${common:arduino.lib_deps} build_flags = ${common:arduino.build_flags} -DUSE_RP2040 -DUSE_RP2040_FRAMEWORK_ARDUINO build_unflags = ${common.build_unflags} ; This are common settings for the LibreTiny (all variants) using Arduino. [common:libretiny-arduino] extends = common:arduino platform = libretiny@1.9.1 framework = arduino lib_compat_mode = soft lib_deps = droscy/esp_wireguard@0.4.2 ; wireguard build_flags = ${common:arduino.build_flags} -DUSE_LIBRETINY build_unflags = ${common.build_unflags} build_src_flags = -include Arduino.h ; This is the common settings for the nRF52 using Zephyr. [common:nrf52-zephyr] extends = common platform = https://github.com/tomaszduda23/platform-nordicnrf52/archive/refs/tags/v10.3.0-1.zip framework = zephyr platform_packages = platformio/framework-zephyr @ https://github.com/tomaszduda23/framework-sdk-nrf/archive/refs/tags/v2.6.1-4.zip platformio/toolchain-gccarmnoneeabi@https://github.com/tomaszduda23/toolchain-sdk-ng/archive/refs/tags/v0.16.1-1.zip build_flags = ${common.build_flags} -DUSE_ZEPHYR -DUSE_NRF52 lib_deps = bblanchon/ArduinoJson@7.4.2 ; json wjtje/qr-code-generator-library@1.7.0 ; qr_code pavlodn/HaierProtocol@0.9.31 ; haier functionpointer/arduino-MLX90393@1.0.2 ; mlx90393 https://github.com/esphome/TinyGPSPlus.git#v1.1.0 ; gps https://github.com/Sensirion/arduino-gas-index-algorithm.git#3.2.1 ; Sensirion Gas Index Algorithm Arduino Library lvgl/lvgl@8.4.0 ; lvgl ; All the actual environments are defined below. ;;;;;;;; ESP8266 ;;;;;;;; [env:esp8266-arduino] extends = common:esp8266-arduino board = nodemcuv2 build_flags = ${common:esp8266-arduino.build_flags} ${flags:runtime.build_flags} build_unflags = ${common.build_unflags} [env:esp8266-arduino-tidy] extends = common:esp8266-arduino board = nodemcuv2 build_flags = ${common:esp8266-arduino.build_flags} ${flags:clangtidy.build_flags} build_unflags = ${common.build_unflags} ;;;;;;;; ESP32 ;;;;;;;; [env:esp32-arduino] extends = common:esp32-arduino board = esp32dev board_build.partitions = huge_app.csv build_flags = ${common:esp32-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32 build_unflags = ${common.build_unflags} [env:esp32-arduino-tidy] extends = common:esp32-arduino board = esp32dev build_flags = ${common:esp32-arduino.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32 build_unflags = ${common.build_unflags} [env:esp32-idf] extends = common:esp32-idf board = esp32dev board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32-idf build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32 build_unflags = ${common.build_unflags} [env:esp32-idf-tidy] extends = common:esp32-idf board = esp32dev board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32-idf-tidy build_flags = ${common:esp32-idf.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32 build_unflags = ${common.build_unflags} ;;;;;;;; ESP32-C3 ;;;;;;;; [env:esp32c3-arduino] extends = common:esp32-arduino board = esp32-c3-devkitm-1 build_flags = ${common:esp32-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32C3 build_unflags = ${common.build_unflags} [env:esp32c3-arduino-tidy] extends = common:esp32-arduino board = esp32-c3-devkitm-1 build_flags = ${common:esp32-arduino.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32C3 build_unflags = ${common.build_unflags} [env:esp32c3-idf] extends = common:esp32-idf board = esp32-c3-devkitm-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32c3-idf build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32C3 build_unflags = ${common.build_unflags} [env:esp32c3-idf-tidy] extends = common:esp32-idf board = esp32-c3-devkitm-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32c3-idf-tidy build_flags = ${common:esp32-idf.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32C3 build_unflags = ${common.build_unflags} ;;;;;;;; ESP32-C6 ;;;;;;;; [env:esp32c6-idf] extends = common:esp32-idf board = esp32-c6-devkitc-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32c6-idf build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32C6 ;;;;;;;; ESP32-S2 ;;;;;;;; [env:esp32s2-arduino] extends = common:esp32-arduino board = esp32-s2-kaluga-1 build_flags = ${common:esp32-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32S2 build_unflags = ${common.build_unflags} [env:esp32s2-arduino-tidy] extends = common:esp32-arduino board = esp32-s2-kaluga-1 build_flags = ${common:esp32-arduino.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32S2 build_unflags = ${common.build_unflags} [env:esp32s2-idf] extends = common:esp32-idf board = esp32-s2-kaluga-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32s2-idf build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32S2 build_unflags = ${common.build_unflags} [env:esp32s2-idf-tidy] extends = common:esp32-idf board = esp32-s2-kaluga-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32s2-idf-tidy build_flags = ${common:esp32-idf.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32S2 build_unflags = ${common.build_unflags} ;;;;;;;; ESP32-S3 ;;;;;;;; [env:esp32s3-arduino] extends = common:esp32-arduino board = esp32-s3-devkitc-1 build_flags = ${common:esp32-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32S3 build_unflags = ${common.build_unflags} [env:esp32s3-arduino-tidy] extends = common:esp32-arduino board = esp32-s3-devkitc-1 build_flags = ${common:esp32-arduino.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32S3 build_unflags = ${common.build_unflags} [env:esp32s3-idf] extends = common:esp32-idf board = esp32-s3-devkitc-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32s3-idf build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32S3 build_unflags = ${common.build_unflags} [env:esp32s3-idf-tidy] extends = common:esp32-idf board = esp32-s3-devkitc-1 board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32s3-idf-tidy build_flags = ${common:esp32-idf.build_flags} ${flags:clangtidy.build_flags} -DUSE_ESP32_VARIANT_ESP32S3 build_unflags = ${common.build_unflags} ;;;;;;;; ESP32-P4 ;;;;;;;; [env:esp32p4-idf] extends = common:esp32-idf board = esp32-p4-evboard board_build.esp-idf.sdkconfig_path = .temp/sdkconfig-esp32p4-idf build_flags = ${common:esp32-idf.build_flags} ${flags:runtime.build_flags} -DUSE_ESP32_VARIANT_ESP32P4 ;;;;;;;; RP2040 ;;;;;;;; [env:rp2040-pico-arduino] extends = common:rp2040-arduino board = rpipico build_flags = ${common:rp2040-arduino.build_flags} ${flags:runtime.build_flags} build_unflags = ${common.build_unflags} ;;;;;;;; LibreTiny ;;;;;;;; [env:bk72xx-arduino] extends = common:libretiny-arduino board = generic-bk7231n-qfn32-tuya build_flags = ${common:libretiny-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_BK72XX -DUSE_LIBRETINY_VARIANT_BK7231N build_unflags = ${common.build_unflags} [env:ln882h-arduino] extends = common:libretiny-arduino board = generic-ln882hki build_flags = ${common:libretiny-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_LN882X -DUSE_LIBRETINY_VARIANT_LN882H build_unflags = ${common.build_unflags} [env:rtl87xxb-arduino] extends = common:libretiny-arduino board = generic-rtl8710bn-2mb-788k build_flags = ${common:libretiny-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_RTL87XX -DUSE_LIBRETINY_VARIANT_RTL8710B build_unflags = ${common.build_unflags} [env:rtl87xxc-arduino] extends = common:libretiny-arduino board = generic-rtl8720cf-2mb-992k build_flags = ${common:libretiny-arduino.build_flags} ${flags:runtime.build_flags} -DUSE_RTL87XX -DUSE_LIBRETINY_VARIANT_RTL8720C build_unflags = ${common.build_unflags} ;;;;;;;; Host ;;;;;;;; [env:host] extends = common platform = platformio/native lib_deps = esphome/noise-c@0.1.10 ; used by api build_flags = ${common.build_flags} -DUSE_HOST -std=c++20 build_unflags = ${common.build_unflags} ;;;;;;;; nRF52 ;;;;;;;; [env:nrf52] extends = common:nrf52-zephyr board = adafruit_feather_nrf52840 build_flags = ${common:nrf52-zephyr.build_flags} ${flags:runtime.build_flags} build_unflags = ${common.build_unflags} [env:nrf52-tidy] extends = common:nrf52-zephyr board = adafruit_feather_nrf52840 build_flags = ${common:nrf52-zephyr.build_flags} ${flags:clangtidy.build_flags} build_unflags = ${common.build_unflags}