I did some more investigation.
I looked in config-default.h and picked out a bunch of different USE_* configuration switches. I put these all into my custom anduril.h and then switched them all on and off individually to see which ones contribute the most to the build size. There are the results of the ones I tried, largest first:
| Feature flag | Contribution to build size (Bytes) | Notes |
|---|---|---|
| USE_SUNSET_TIMER | 494 | |
| USE_CANDLE_MODE | 476 | |
| USE_TACTICAL_MODE | 298 | |
| USE_MOMENTARY_MODE | 244 | Can only be deactivated if Tactical Mode also deactivated |
| USE_MANUAL_MEMORY | 200 | |
| USE_SIMPLE_UI | 198 | |
| USE_LIGHTNING_MODE | 168 | |
| USE_BEACON_MODE | 128 | |
| USE_SOS_MODE | 112 | |
| USE_BIKE_FLASHER_MODE | 112 | |
| USE_2C_STYLE_CONFIG | 66 | |
| USE_MANUAL_MEMORY_TIMER | 50 | |
| USE_PARTY_STROBE_MODE | 42 | |
| USE_CHANNEL_PER_STROBE | 38 | |
| USE_TACTICAL_STROBE_MODE | 26 | |
| USE_RAMP_SPEED_CONFIG | 22 | |
| USE_RAMP_AFTER_MOON_CONFIG | 20 | |
| USE_POLICE_STROBE_MODE | 0 | No effect as testing only with single channel AUX configuration |
In my case, with none of these deactivated the build was 1132 bytes too big for a 1+7+FET driver with a single AUX channel. So based on that, and my own preferences, I chose to deactivate the following:
//#undef USE_SIMPLE_UI
#undef USE_SUNSET_TIMER
//#undef USE_BEACON_MODE
//#undef USE_SOS_MODE
//#undef USE_BIKE_FLASHER_MODE
#undef USE_PARTY_STROBE_MODE
#undef USE_TACTICAL_STROBE_MODE
#undef USE_POLICE_STROBE_MODE
//#undef USE_LIGHTNING_MODE
//#undef USE_CANDLE_MODE
#undef USE_CHANNEL_PER_STROBE
#undef USE_MOMENTARY_MODE
#undef USE_TACTICAL_MODE
//#undef USE_MANUAL_MEMORY
//#undef USE_MANUAL_MEMORY_TIMER
//#undef USE_RAMP_SPEED_CONFIG
//#undef USE_RAMP_AFTER_MOON_CONFIG
//#undef USE_2C_STYLE_CONFIG
This way, I could keep Simple UI.