* refactor(on-release): improve platform.txt path replacements
Use regexs to replace all occurrences of `{runtime.platform.path}` with
the correct `{runtime.tools.*.path}`, regardless of directory separator,
and remove dependency on specific text around each path.
Note that the order has been changed to ensure that the longest paths
are replaced first, to avoid replacing parts of other paths.
* fix(platform): Windows backslash cleanups
Ensure Windows paths properly use a backslash as folder separator.
* feat(platform)!: use new Arduino Debug API
Implement sketch debugging according to the official Arduino
Platform Debug Specification [1].
The biggest improvement is that now `launch.json` can be fully
customized by the core (including the type of each entry),
so there is no need to copy files in the sketch folder.
In particular, `debug_custom.json` is not used anymore.
[1] https://arduino.github.io/arduino-cli/latest/platform-specification/#sketch-debugging-configuration
BREAKING CHANGE: This commit requires Arduino IDE 2.3.0 or later to use
the debugging features. Older versions will no longer be able to start
a debug session successfully.
* feat(debug): pass objdump path to resolve globals
Cortex-debug requires objdump to be in the same folder as gdb, or needs
the full path to the executable in the `launch.json` file. This is now
possible with the new debugging API.
* feat(debug): conditionally enable debug button on Nano ESP32
If the `debug.executable` variable is null or unset, the Debug button
appears grayed out. The new IDE also takes current parameters into
account, allowing to conditionally enable the Debug button only when
some conditions are met.
* on_release: allow single board packages
---------
Co-authored-by: Martino Facchin <m.facchin@arduino.cc>
* [pin_remap 1/3] platform: define ARDUINO_CORE_BUILD when building core files
* [pin_remap 2/3] core,libs: add pin remap hooks
* platform: remove previous build options if file is missing
"touch" would create the file if not present, but not delete its
contents if a previous run left the file in the build dir.
* platform: make debug_custom.json file customizable by board
* platform: fix default debug prefix
"debug.toolchain.prefix" must end with a dash, since only the tool name is
appended to this string.
The reason this is not a major issue is that the "debug_custom.json" file
(copied in the sketch directory when debugging is enabled) forces its own
prefix. And to make things more interesting, the "toolchainPrefix" entry
in that file should _not_ end with a dash.
* [pin_remap 3/3]: add Arduino Nano ESP32 board
* fix: periman: include it by default, add include guard
* fix: io_pin_remap: adjust for new perimap APIs
* fix: libraries: manually handled pin remapping files
Previously all libraries invoked either high-level APIs (transparently
remapped, like the user sketch) or low-level ESP-IDF calls (where the
remap to GPIO numbers had to be added manually).
Since 3.x, some of these are mixed (for example, periman* APIs are
remapped, while soc* are not). This must be handled by disabling the
automatic API remapping and making sure all calls use GPIO numbers.
* feat: show remapped pins in chip debug reports
---------
Co-authored-by: Jan Procházka <90197375+P-R-O-C-H-Y@users.noreply.github.com>
Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>