* 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>
17 lines
899 B
Python
17 lines
899 B
Python
# Apply -mlongcalls to the whole build (project sources + lib_deps) on Xtensa
|
|
# ESP32 targets. The precompiled esp32-arduino-libs only inject -mlongcalls into
|
|
# the framework compile, not into lib_deps (NimBLE, ArduinoJson) or project
|
|
# sources. For large images (OMG is ~90% of a 2 MB partition on IDF 5.5.4 libs)
|
|
# the resulting fixed-range call8 relocations overflow and the link fails with
|
|
# "dangerous relocation: call8: call target out of range".
|
|
# RISC-V targets (esp32c*/h*/p4) have no call8 and reject -mlongcalls, so this is
|
|
# restricted to the Xtensa MCUs. Guarded so nothing is duplicated.
|
|
Import("env")
|
|
|
|
mcu = env.BoardConfig().get("build.mcu", "")
|
|
if mcu in ("esp32", "esp32s2", "esp32s3"):
|
|
if "-mlongcalls" not in env.get("CCFLAGS", []):
|
|
env.Append(CCFLAGS=["-mlongcalls"])
|
|
if "-mlongcalls" not in env.get("ASFLAGS", []):
|
|
env.Append(ASFLAGS=["-mlongcalls"])
|