perf: Enable Link Time Optimization (LTO)

Add `build_unflags = -fno-lto` to remove ESP-IDF's default LTO-off flag,
and add `-flto` to build_flags.

| Metric        | Without LTO          | With LTO             | Delta        | % Change |
|---------------|----------------------|----------------------|--------------|----------|
| firmware.bin  | 6,371,440 B          | 6,241,072 B          | -130,368 B   | -2.0%    |
| firmware.elf  | 39,599,948 B         | 22,893,308 B         | -16,706,640 B| -42.2%   |
| Flash used    | 6,218,928 B (94.9%)  | 6,117,722 B (93.3%)  | -101,206 B   | -1.6%    |
| RAM used      | 106,508 B (32.5%)    | 105,964 B (32.3%)    | -544 B       | -0.5%    |
This commit is contained in:
Jesse Vincent 2026-02-02 15:50:42 -08:00
parent f67c544e16
commit c4a2086244

View File

@ -18,7 +18,9 @@ board_upload.flash_size = 16MB
board_upload.maximum_size = 16777216 board_upload.maximum_size = 16777216
board_upload.offset_address = 0x10000 board_upload.offset_address = 0x10000
build_unflags = -fno-lto
build_flags = build_flags =
-flto
-DARDUINO_USB_MODE=1 -DARDUINO_USB_MODE=1
-DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_CDC_ON_BOOT=1
-DMINIZ_NO_ZLIB_COMPATIBLE_NAMES=1 -DMINIZ_NO_ZLIB_COMPATIBLE_NAMES=1