# 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 # # ldscripts, lwip patching, updated postmortem flags and git support # Copyright (C) 2019-2020 by Maxim Prokhorov # Run this script every time building an env AFTER platform-specific code is loaded from espurna_utils import ( check_printsize, remove_float_support, ldscripts_inject_libpath, libalgobsec_inject_patcher, lwip_inject_patcher, app_inject_revision, dummy_ets_printf, app_inject_flags, copy_release, ) Import("env", "projenv") import os CI = any([os.environ.get("TRAVIS"), os.environ.get("CI")]) # 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.c.o", dummy_ets_printf ) env.AddPostAction( "$BUILD_DIR/FrameworkArduino/core_esp8266_postmortem.cpp.o", dummy_ets_printf ) # place bsec's libalgobsec.a sections in the flash to avoid "section ‘.text' will not fit in region 'iram1_0_seg'" error libalgobsec_inject_patcher(env) # patch lwip1 sources conditionally: # https://github.com/xoseperez/espurna/issues/1610 lwip_inject_patcher(env) # when using git, add -DAPP_REVISION=(git-commit-hash) app_inject_revision(projenv) # handle OTA board and flags here, since projenv is not available in pre-scripts app_inject_flags(projenv) # handle `-t release` when CI does a tagged build env.AlwaysBuild(env.Alias("release", "${BUILD_DIR}/${PROGNAME}.bin", copy_release))