; 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
src_dir = .
include_dir =

[runtime]
; This are the flags as set by the runtime.
build_flags =
    -Wno-unused-variable
    -Wno-unused-but-set-variable
    -Wno-sign-compare

[clangtidy]
; This are the flags for clang-tidy.
build_flags =
    -Wall
    -Wunreachable-code
    -Wfor-loop-analysis
    -Wshadow-field
    -Wshadow-field-in-constructor

[common]
lib_deps =
    AsyncMqttClient-esphome@0.8.4
    ArduinoJson-esphomelib@5.13.3
    esphome/ESPAsyncWebServer-esphome@1.3.0
    FastLED@3.3.2
    NeoPixelBus-esphome@2.6.2
    1655@1.0.2  ; TinyGPSPlus (has name conflict)
    6865@1.0.0  ; TM1651 Battery Display
    6306@1.0.3  ; HM3301
    glmnet/Dsmr@0.3        ; used by dsmr
    rweather/Crypto@0.2.0  ; used by dsmr

build_flags =
    -DESPHOME_LOG_LEVEL=ESPHOME_LOG_LEVEL_VERY_VERBOSE
src_filter =
    +<esphome>
    +<tests/dummy_main.cpp>
    +<.temp/all-include.cpp>

[common:esp8266]
; use Arduino framework v2.4.2 for clang-tidy (latest 2.5.2 breaks static code analysis, see #760)
platform = platformio/espressif8266@1.8.0
framework = arduino
board = nodemcuv2
lib_deps =
    ${common.lib_deps}
    ESP8266WiFi
    ESPAsyncTCP-esphome@1.2.3
    Update
build_flags = ${common.build_flags}
src_filter = ${common.src_filter}

[common:esp32]
platform = platformio/espressif32@3.2.0
framework = arduino
board = nodemcu-32s
lib_deps =
    ${common.lib_deps}
    esphome/AsyncTCP-esphome@1.2.2
    Update
build_flags =
    ${common.build_flags}
    -DUSE_ETHERNET
src_filter =
    ${common.src_filter}
    -<esphome/components/esp8266_pwm>

[env:esp8266]
extends = common:esp8266
build_flags = ${common:esp8266.build_flags} ${runtime.build_flags}

[env:esp8266-tidy]
extends = common:esp8266
build_flags = ${common:esp8266.build_flags} ${clangtidy.build_flags}

[env:esp32]
extends = common:esp32
build_flags = ${common:esp32.build_flags} ${runtime.build_flags}

[env:esp32-tidy]
extends = common:esp32
build_flags = ${common:esp32.build_flags} ${clangtidy.build_flags}