Auto-enable nanopb PB_NO_ERRMSG whenever DEBUG_MUTE is set (#10990)

DEBUG_MUTE (set for all of stm32) already compiles every LOG_* call
out entirely at the preprocessor stage, but nanopb's own error-message
strings are a separate mechanism it doesn't touch - PB_RETURN_ERROR
still embeds descriptive text in .rodata regardless of whether
anything ever logs it.

Rather than hardcoding -DPB_NO_ERRMSG=1 next to every place DEBUG_MUTE
is set, derive it in bin/platformio-custom.py via the SCons build
environment, mirroring the existing meshtastic-device-ui/APP_VERSION
CPPDEFINES pattern already in that file. This reaches both the main
project env and the Nanopb library builder specifically, since nanopb
is a separate LibraryBuilder whose own CPPDEFINES aren't otherwise
touched by a plain env.Append() on the app env. The CPPDEFINES
membership check normalizes both bare (-DDEBUG_MUTE) and value-bearing
(-DDEBUG_MUTE=1) forms, since SCons represents the latter as a tuple.

DEBUG_MUTE currently only appears in variants/stm32/stm32.ini and
variants/stm32/milesight_gs301/platformio.ini, so today this only
affects stm32wl builds - but it will apply automatically to any future
platform that sets DEBUG_MUTE too, without that platform's .ini
needing to know about the pairing. Saves 1,248 bytes flash on wio-e5,
no RAM change, no feature loss beyond terser protobuf decode/encode
error text.


Assisted-by: Claude Sonnet 5 <noreply@anthropic.com>

Signed-off-by: Andrew Yong <me@ndoo.sg>
This commit is contained in:
Andrew Yong
2026-07-16 08:56:46 -05:00
committed by GitHub
co-authored by GitHub
parent 36bfb86937
commit 53a6b5e01f
+12
View File
@@ -340,6 +340,18 @@ for lb in env.GetLibBuilders():
lb.env.Append(CPPDEFINES=[("APP_VERSION", verObj["long"])])
break
# DEBUG_MUTE already compiles every LOG_* call out entirely; nanopb's own error-message
# strings are a separate mechanism it doesn't touch, so mirror the same intent into nanopb.
debug_mute_defined = any(
d == "DEBUG_MUTE" or (isinstance(d, tuple) and d[0] == "DEBUG_MUTE") for d in env.get("CPPDEFINES", [])
)
if debug_mute_defined:
projenv.Append(CPPDEFINES=[("PB_NO_ERRMSG", 1)])
for lb in env.GetLibBuilders():
if lb.name == "Nanopb":
lb.env.Append(CPPDEFINES=[("PB_NO_ERRMSG", 1)])
break
# Get the display resolution from macros
def get_display_resolution(build_flags):
# Check "DISPLAY_SIZE" to determine the screen resolution