Files
OpenMQTT-Gateway/platformio.ini
T
0bbc00cfa0 [SYS] esp32_platform: update to 55.03.39 (#2329)
* esp32_platform: update to 55.03.39

## Summary

- Add support for Python 3.14
- Improve ESP32 platform and framework compatibility.
- Update board support and toolchain integrations.
- Fix stability and hardware-specific issues across supported ESP32 targets.
- Release notes:
    - [55.03.39](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.39)
    - [55.03.38](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.38)
    - [55.03.37](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.37)
    - [55.03.36](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.36)
    - [55.03.35](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.35)
    - [55.03.34](https://github.com/pioarduino/platform-espressif32/releases/tag/55.03.34)

* update build to use python 3.14 with platformio 6.1.19

* Update esp32-arduino-lib-builder to v1.5

* [CI] Fix call8 link overflow on large Xtensa builds (IDF 5.5.4)

The 55.03.39 / IDF 5.5.4 bump enlarges the precompiled libs enough that
large Xtensa images (esp32 / esp32s3) overflow the call8 reach and fail to
link with "dangerous relocation: call8: call target out of range".
-mlongcalls (which makes calls linker-relaxable) is injected by
esp32-arduino-libs into the framework compile but NOT into lib_deps
(NimBLE-Arduino, ArduinoJson) or project sources.

Add a project pre: extra_script (scripts/add_mlongcalls.py) that applies
-mlongcalls to CCFLAGS/ASFLAGS, gated on the Xtensa MCUs (RISC-V c3 has no
call8 and rejects the flag). Wired into [env]; the four esp32dev-*pilight*
envs that set their own extra_scripts list it explicitly too, since
PlatformIO replaces rather than merges extra_scripts.

Also bump esp32-arduino-libs 0.1.5 -> 0.1.6, which restores the
framework-side -mdisable-hardware-atomics / -fno-builtin-* flags that 0.1.5
dropped under IDF 5.5.4 (separate from the lib_deps call8 issue).

Verified clean (0 call8): esp32dev-all-test, esp32dev-ble, theengs-bridge,
theengs-plug, esp32dev-pilight (+cc1101); esp32c3 unaffected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Florian <florian@theengs.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 09:38:12 -05:00

231 lines
9.3 KiB
INI

; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[platformio]
src_dir = main
include_dir = main
extra_configs =
environments.ini
tests/*_env.ini
*_env.ini
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ENVIRONMENT CHOICE ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Uncomment the env line corresponding to your board and modules required, ;
;you can also adapt the modules by removing the corresponding lines in the env detail ;
; if you go to the build flag section of your env you will see that some User_config.h ;
; parameters can be overwritten here, for example the gateway name. ;
; If you want to avoid the lost of your environments at each update you can put them ;
; into a separate file called prod_env.ini, it will be automatically read by pio ;
; an example (prod_env.ini.example) is available into the same folder as this file. ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;default_envs = rfbridge
;default_envs = rfbridge-direct
;default_envs = esp32dev-all-test
;default_envs = esp32dev-rf
;default_envs = esp32dev-pilight
;default_envs = esp32dev-pilight-cc1101
;default_envs = esp32dev-somfy-cc1101
;default_envs = esp32dev-pilight-somfy-cc1101
;default_envs = esp32dev-weatherstation
;default_envs = esp32dev-gf-sun-inverter
;default_envs = esp32dev-ir
;default_envs = esp32dev-ble
;default_envs = esp32dev-ble-mqtt-undecoded
;default_envs = esp32dev-ble-aws
;default_envs = esp32feather-ble
;default_envs = esp32-lolin32lite-ble
;default_envs = esp32-olimex-gtw-ble-eth
;default_envs = esp32-olimex-gtw-ble-poe
;default_envs = esp32-olimex-gtw-ble-poe-iso
;default_envs = esp32-wt32-eth01-ble-eth
;default_envs = esp32-olimex-gtw-ble-wifi
;default_envs = esp32-m5stick-ble
;default_envs = esp32-m5stack-ble
;default_envs = esp32-m5tough-ble
;default_envs = esp32-m5stick-c-ble
;default_envs = esp32-m5stick-cp-ble
;default_envs = esp32-m5atom-matrix
;default_envs = esp32-m5atom-lite
;default_envs = esp32s3-atomS3U
;default_envs = esp32doitv1-aithinker-r01-sx1278
;default_envs = esp32dev-rtl_433
;default_envs = esp32dev-rtl_433-fsk
;default_envs = heltec-rtl_433
;default_envs = heltec-rtl_433-fsk
;default_envs = heltec-ble
;default_envs = lilygo-rtl_433
;default_envs = lilygo-rtl_433-fsk
;default_envs = lilygo-ble
;default_envs = esp32dev-multi_receiver
;default_envs = esp32dev-multi_receiver-pilight
;default_envs = tinypico-ble
;default_envs = ttgo-lora32-v1
;default_envs = ttgo-lora32-v21
;default_envs = ttgo-t-beam
;default_envs = heltec-wifi-lora-32
;default_envs = shelly-plus1
;default_envs = nodemcuv2-all-test
;default_envs = nodemcuv2-fastled-test
;default_envs = nodemcuv2-2g
;default_envs = nodemcuv2-ir
;default_envs = nodemcuv2-serial
;default_envs = avatto-bakeey-ir
;default_envs = nodemcuv2-rf
;default_envs = nodemcuv2-rf-cc1101
;default_envs = nodemcuv2-somfy-cc1101
;default_envs = manual-wifi-test
;default_envs = rf-wifi-gateway
;default_envs = nodemcuv2-rf2
;default_envs = nodemcuv2-rf2-cc1101
;default_envs = nodemcuv2-pilight
;default_envs = nodemcuv2-weatherstation
;default_envs = sonoff-basic
;default_envs = sonoff-basic-rfr3
;default_envs = atmega-all-test
;default_envs = uno-rf
;default_envs = uno-fastled
;default_envs = esp32dev-ble-datatest
;default_envs = esp32s3-dev-c1-ble
;default_envs = esp32c3-dev-m1-ble
;default_envs = airm2m_core_esp32c3
;default_envs = esp32c3-dev-c2-ble
;default_envs = lolin_c3_mini
;default_envs = thingpulse-espgateway
;default_envs = theengs-bridge
;default_envs = esp32dev-ble-idf
;default_envs = esp32s3-m5stack-stamps3
;default_envs = esp32c3-m5stamp
;default_envs = esp32c3u-m5stamp
;default_envs = lilygo-t3-s3-rtl_433
;default_envs = lilygo-t3-s3-rtl_433-fsk
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ENVIRONMENTS PARAMETERS ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Libraries and parameters shared accross environements ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[libraries]
arduinojson = ArduinoJson@6.18.5
arduinolog = https://github.com/1technophile/Arduino-Log/archive/6d1f14a.zip
picomqtt = PicoMQTT@1.1.1
rc-switch = https://github.com/1technophile/rc-switch/archive/98537e9.zip
newremoteswitch = https://github.com/1technophile/NewRemoteSwitch/archive/8eb980e.zip
ble = https://github.com/h2zero/NimBLE-Arduino/archive/2.3.2.zip
irremoteesp = https://github.com/theengs/IRremoteESP8266/archive/arduinov3.zip
lora = https://github.com/sandeepmistry/arduino-LoRa/archive/f4a1d27.zip
esppilight = https://github.com/theengs/ESPiLight/archive/b9dd7a1.zip
rfWeatherStation = WeatherStationDataRx@0.3.1
rfm69 = https://github.com/LowPowerLab/RFM69/archive/2e915ea.zip
rfm69spi = https://github.com/lowpowerlab/spiflash/archive/9c0c2b9.zip
rfm69_low-power = Low-Power@1.6
dht = DHT sensor library@1.3.2
unifiedsensor = Adafruit Unified Sensor@1.1.4
tsl2561 = Adafruit TSL2561@1.0.3
bme280 = SparkFun BME280@2.0.4
bmp180 = https://github.com/xelarep/SFE_BMP180/archive/efac46b.zip
htu21 = SparkFun HTU21D Humidity and Temperature Sensor Breakout@1.1.3
ahtx0 = Adafruit AHTX0
ina226 = https://github.com/jarzebski/Arduino-INA226/archive/968a684.zip
a6lib = https://github.com/h2zero/A6lib/archive/fe873c9.zip
wifimanager32 = https://github.com/h2zero/WiFiManager/archive/1ac24f4.zip
wifimanager8266 = https://github.com/tzapu/WiFiManager/archive/2.0.5-beta.zip
ethernet = Ethernet
esp8266_mdns = esp8266_mdns
wire = Wire
fastled = fastled/FastLED@3.9.15
adafruit_neopixel = adafruit/Adafruit NeoPixel@^1.11.0
onewire = https://github.com/h2zero/OneWire/archive/GPIO-fix.zip
dallastemperature = DallasTemperature
m5stickc = M5StickC@0.2.5
m5stickcp = https://github.com/m5stack/M5StickC-Plus/archive/0.1.1.zip
m5stack = M5Stack@0.4.6
m5tough = https://github.com/m5stack/M5Tough/archive/ccf49e1.zip
smartrc-cc1101-driver-lib = https://github.com/LSatan/SmartRC-CC1101-Driver-Lib/archive/v2.5.7.zip
stl = https://github.com/mike-matera/ArduinoSTL/archive/7411816.zip
shtc3 = https://github.com/sparkfun/SparkFun_SHTC3_Arduino_Library/archive/671ef7e.zip
somfy_remote=Somfy_Remote_Lib@0.3.0
rtl_433_ESP = https://github.com/NorthernMan54/rtl_433_ESP/archive/v0.5.1.zip
emodbus = miq19/eModbus@1.0.0
gfSunInverter = https://github.com/BlackSmith/GFSunInverter/archive/v1.0.1.zip
decoder = https://github.com/theengs/decoder/archive/development.zip
ssd1306 = https://github.com/ThingPulse/esp8266-oled-ssd1306/archive/f96fd6a.zip
lm75 = jeremycole/I2C Temperature Sensors derived from the LM75@^1.0.3
rn8209 = https://github.com/theengs/RN8209C-SDK/archive/arduino.zip
[env]
framework = arduino
lib_deps =
${libraries.picomqtt}
${libraries.arduinojson}
${libraries.arduinolog}
build_flags =
'-DWM_DEBUG_LEVEL=1' ;WiFi Manager log level, valid values are: DEBUG_ERROR = 0, DEBUG_NOTIFY = 1, DEBUG_VERBOSE = 2, DEBUG_DEV = 3, DEBUG_MAX = 4
-w ; supress all warnings
; -E ; generate precompiled source file (.pio/build/*/src/main.ino.cpp.o), use for precompilator debuging only (prevent compilation to succeed)
; '-DLOG_LEVEL=LOG_LEVEL_TRACE' ; Enable trace level logging
monitor_speed = 115200
extra_scripts = pre:scripts/add_mlongcalls.py
[com]
esp8266_platform = espressif8266@4.2.1
esp32_platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.39/platform-espressif32.zip
esp32_platform_packages = framework-arduinoespressif32-libs @ https://github.com/theengs/esp32-arduino-lib-builder/releases/download/0.1.6/esp32-arduino-libs.tar.gz
esp32_solo_platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.02.00/platform-espressif32.zip
atmelavr_platform = atmelavr@3.3.0
[com-esp] ; Used by all ESP8266/ESP8285 based builds
lib_deps =
${env.lib_deps}
build_flags =
${env.build_flags}
'-DENV_NAME="$PIOENV"'
'-DZmqttDiscovery="HADiscovery"'
'-DMQTTsetMQTT'
'-DMQTT_HTTPS_FW_UPDATE'
;'-DCORE_DEBUG_LEVEL=4'
[com-esp32] ; Used by all ESP32 based builds
lib_deps =
${env.lib_deps}
${libraries.wifimanager32}
build_flags =
${env.build_flags}
'-DENV_NAME="$PIOENV"'
'-DZmqttDiscovery="HADiscovery"'
'-DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL_DISABLED'
'-DCONFIG_BT_NIMBLE_ROLE_BROADCASTER_DISABLED'
'-DCONFIG_NIMBLE_CPP_ADDR_FMT_UPPERCASE'
'-DMQTTsetMQTT'
'-DMQTT_HTTPS_FW_UPDATE'
;'-DCORE_DEBUG_LEVEL=4'
'-DZwebUI="WebUI"' ; enable WebUI as a default for all ESP32 builds ( the module only enables for ESP32 based builds )
'-DARDUINO_LOOP_STACK_SIZE=9600' ; The firmware upgrade options needs a large amount of free stack, ~9600
[com-arduino]
lib_deps =
${env.lib_deps}
${libraries.ethernet}
build_flags =
${env.build_flags}
'-DZmqttDiscovery="HADiscovery"'
[com-arduino-low-memory]
lib_deps =
${env.lib_deps}
${libraries.ethernet}
build_flags =
${env.build_flags}
'-DsimpleReceiving=false'