; PlatformIO Project Configuration File
;
;   Build options: build flags, source filter, extra scripting
;   Upload options: custom port, speed and extra flags
;   Library options: dependencies, extra library storages
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/en/stable/projectconf.html


; *** Tasmota build variant selection
[build_envs]
default_envs =
; *** Uncomment by deleting ";" in the line(s) below to select version(s)
;                tasmota
;                tasmota-ircustom
;                tasmota-minimal
;                tasmota-lite
;                tasmota-knx
;                tasmota-sensors
;                tasmota-display
;                tasmota-zbbridge
;                tasmota-ir
;                tasmota-AF
;                tasmota-BG
;                tasmota-BR
;                tasmota-CN
;                tasmota-CZ
;                tasmota-DE
;                tasmota-ES
;                tasmota-FR
;                tasmota-GR
;                tasmota-HE
;                tasmota-HU
;                tasmota-IT
;                tasmota-KO
;                tasmota-NL
;                tasmota-PL
;                tasmota-PT
;                tasmota-RO
;                tasmota-RU
;                tasmota-SE
;                tasmota-SK
;                tasmota-TR
;                tasmota-TW
;                tasmota-UK
;                tasmota-VN
;
; *** Selection for Tasmota ESP32 is done in platformio_tasmota32.ini
;
; *** alternatively can be done in: platformio_override.ini
; *** See example: platformio_override_sample.ini
; *********************************************************************

[platformio]
description                 = Provide ESP8266 / ESP32 based devices with Web, MQTT and OTA firmware
src_dir                     = tasmota
lib_dir                     = lib/default
build_cache_dir             = .cache
extra_configs               = platformio_tasmota32.ini
                              platformio_tasmota_env.ini
                              platformio_tasmota_env32.ini
                              platformio_override.ini
default_envs                = ${build_envs.default_envs}

[common]
framework                   = arduino
board                       = esp01_1m
board_build.filesystem      = littlefs
custom_unpack_dir           = unpacked_littlefs
board_build.flash_mode      = dout
board_build.ldscript        = eagle.flash.1m.ld

platform                    = ${core.platform}
platform_packages           = ${core.platform_packages}
build_unflags               = ${core.build_unflags}
build_flags                 = ${core.build_flags}

board_build.f_cpu           = 80000000L
board_build.f_flash         = 40000000L
monitor_speed               = 74880
monitor_port                = COM5
upload_speed                = 115200
; *** Upload Serial reset method for Wemos and NodeMCU
upload_resetmethod          = nodemcu
upload_port                 = COM5
extra_scripts               = ${scripts_defaults.extra_scripts}
lib_ldf_mode                = chain+
shared_libdeps_dir          = lib
lib_extra_dirs              =
                              lib/lib_basic
                              lib/lib_i2c
                              lib/lib_display
                              lib/lib_ssl
                              lib/lib_audio
                              lib/lib_rf
                              lib/lib_div

[scripts_defaults]
extra_scripts               = pio-tools/strip-floats.py
                              pio-tools/name-firmware.py
                              pio-tools/gzip-firmware.py
                              pio-tools/override_copy.py
                              pio-tools/download_fs.py

[esp_defaults]
; *** remove undesired all warnings
build_unflags               = -Wall
;                              -mtarget-align
                              -Wdeprecated-declarations
build_flags                 = -DCORE_DEBUG_LEVEL=0
                              -Wl,-Map,firmware.map
                              -Wno-deprecated-declarations
;                              -mno-target-align
                              -mtarget-align
                              -free
                              -fipa-pta
                              -Wreturn-type
                              -D_IR_ENABLE_DEFAULT_=false
                              -DDECODE_HASH=true -DDECODE_NEC=true -DSEND_NEC=true
                              -DDECODE_RC5=true -DSEND_RC5=true -DDECODE_RC6=true -DSEND_RC6=true
; new mechanism to set the IRremoteESP8266 supported protocols: none except HASH, NEC, RC5, RC6
; *********************************************************************
; *** Use custom settings from file user_config_override.h
                              -DUSE_CONFIG_OVERRIDE
; *********************************************************************


[esp82xx_defaults]
build_flags                 = ${esp_defaults.build_flags}
                              -DNDEBUG
                              -DFP_IN_IROM
                              -DBEARSSL_SSL_BASIC
                              ; NONOSDK22x_190703 = 2.2.2-dev(38a443e)
                              -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703
                              -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH
                              ; VTABLES in Flash
                              -DVTABLES_IN_FLASH
                              ; remove the 4-bytes alignment for PSTR()
                              -DPSTR_ALIGN=1
                              ; restrict to minimal mime-types
                              -DMIMETYPE_MINIMAL
                              ; uncomment the following to enable TLS with 4096 RSA certificates
                              ;-DUSE_4K_RSA

[irremoteesp_full]
build_flags                 = -DUSE_IR_REMOTE_FULL
                              -U_IR_ENABLE_DEFAULT_
                              -DDECODE_PRONTO=false -DSEND_PRONTO=false


[core]
; *** Esp8266 Tasmota modified Arduino core based on core 2.7.4. Added Backport for PWM selection
platform                    = espressif8266 @ 2.6.2
platform_packages           = tasmota/framework-arduinoespressif8266 @ ~2.7.4
                              platformio/toolchain-xtensa @ 2.40802.200502
                              platformio/tool-esptool @ 1.413.0
                              platformio/tool-esptoolpy @ ~1.30000.0
build_unflags               = ${esp_defaults.build_unflags}
build_flags                 = ${esp82xx_defaults.build_flags}
; *** Use ONE of the two PWM variants. Tasmota default is Locked PWM
                              ;-DWAVEFORM_LOCKED_PHASE
                              -DWAVEFORM_LOCKED_PWM
