Files
espurna/code/scripts/pio_main.py
Maxim Prokhorov 6f122f5ecb pio: debug info in distributed builds and build-and-copy fixes
store objcopy of these extra symbols and .map from the linker
distribution will have an extra debug .zip file that could be used with
the exception decoder

also fixes relative paths in the build-and-copy
(although, yet again loses the pio target in the gui)
2022-08-30 01:33:55 +03:00

64 lines
2.3 KiB
Python

# coding=utf-8
# pylint: dummy-variables-rgx='(_+[a-zA-Z0-9]*?$)|dummy|env|projenv'
#
# Original extra_scripts.py
# Copyright (C) 2016-2019 by Xose Pérez <xose dot perez at gmail dot com>
#
# ldscripts, lwip patching, updated postmortem flags and git support
# Copyright (C) 2019-2020 by Maxim Prokhorov <prokhorov dot max at outlook dot com>
# Run this script every time building an env AFTER platform-specific code is loaded
import os
from espurna_utils import (
app_add_target_build_and_copy,
app_inject_flags,
app_inject_version,
check_printsize,
dummy_ets_printf,
ldscripts_inject_libpath,
remove_float_support,
)
from SCons.Script import Import
Import("env", "projenv")
env = globals()["env"]
projenv = globals()["projenv"]
CI = "true" == os.environ.get("CI")
# See what happens in-between linking .cpp.o + .a into the resulting .elf
env.Append(ESPURNA_BUILD_FIRMWARE_MAP="${BUILD_DIR}/${PROGNAME}.map")
env.Append(LINKFLAGS='-Wl,-Map -Wl,$ESPURNA_BUILD_FIRMWARE_MAP -Wl,--cref')
env.SideEffect(env["ESPURNA_BUILD_FIRMWARE_MAP"], "${BUILD_DIR}/${PROGNAME}.elf")
# Always show warnings for project code
projenv.ProcessUnFlags("-w")
# XXX: note that this will also break %d format with floats and print raw memory contents as int
# Cores after 2.3.0 can disable %f in the printf / scanf to reduce .bin size
remove_float_support(env)
ldscripts_inject_libpath(env)
# two-step update hint when using 1MB boards
if not CI:
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", check_printsize)
# disable postmortem printing to the uart. another one is in eboot, but this is what causes the most harm
if "DISABLE_POSTMORTEM_STACKDUMP" in env["CPPFLAGS"]:
env.AddPostAction(
"$BUILD_DIR/FrameworkArduino/core_esp8266_postmortem.cpp.o", dummy_ets_printf
)
# override static version flag from the espurna/config/version.h
# either completely, or change the version / revision / suffix part separately
app_inject_version(projenv)
# handle ESPURNA_BOARD and ESPURNA_FLAGS here, since projenv is not available in pre-scripts
# TODO: prefer PLATFORMIO_BUILD_SRC_FLAGS instead? both of these only allow -D...
app_inject_flags(projenv)
# handle when CI does a tagged build or user explicitly asked to store the firmware.bin
app_add_target_build_and_copy(projenv)