forked from platformio/platformio-core
Allow to launch own extra script before firmware building/uploading processes // Resolve #239
This commit is contained in:
1 parent
8e95bfb464
commit
829d5781a5
6 files changed
+80
-31
No files matched your search
@@ -11,11 +11,13 @@ except ImportError:
|
||||
break
|
||||
from platformio import util
|
||||
|
||||
import json
|
||||
from os import getenv
|
||||
from os.path import isfile, join
|
||||
from time import time
|
||||
|
||||
from SCons.Script import (DefaultEnvironment, Exit, SConscript,
|
||||
SConscriptChdir, Variables)
|
||||
from SCons.Script import (COMMAND_LINE_TARGETS, DefaultEnvironment, Exit,
|
||||
SConscript, SConscriptChdir, Variables)
|
||||
|
||||
from platformio.exception import UnknownBoard
|
||||
|
||||
@@ -25,6 +27,7 @@ from platformio.exception import UnknownBoard
|
||||
commonvars = Variables(None)
|
||||
commonvars.AddVariables(
|
||||
("BUILD_SCRIPT",),
|
||||
("EXTRA_SCRIPT",),
|
||||
("PIOENV",),
|
||||
("PLATFORM",),
|
||||
|
||||
@@ -123,3 +126,14 @@ env.PrependENVPath(
|
||||
|
||||
SConscriptChdir(0)
|
||||
SConscript(env.subst("$BUILD_SCRIPT"))
|
||||
|
||||
if getenv("PLATFORMIO_EXTRA_SCRIPT", env.get("EXTRA_SCRIPT", None)):
|
||||
SConscript(getenv("PLATFORMIO_EXTRA_SCRIPT", env.get("EXTRA_SCRIPT")))
|
||||
|
||||
if "envdump" in COMMAND_LINE_TARGETS:
|
||||
print env.Dump()
|
||||
Exit()
|
||||
|
||||
if "idedata" in COMMAND_LINE_TARGETS:
|
||||
print json.dumps(env.DumpIDEData())
|
||||
Exit()
|
||||
@@ -2,14 +2,12 @@
|
||||
# See LICENSE for details.
|
||||
|
||||
import atexit
|
||||
import json
|
||||
import re
|
||||
from glob import glob
|
||||
from os import getenv, listdir, remove, sep, walk
|
||||
from os.path import basename, dirname, isdir, isfile, join, normpath
|
||||
|
||||
from SCons.Script import (COMMAND_LINE_TARGETS, DefaultEnvironment, Exit,
|
||||
SConscript, SConscriptChdir)
|
||||
from SCons.Script import DefaultEnvironment, Exit, SConscript
|
||||
from SCons.Util import case_sensitive_suffixes
|
||||
|
||||
from platformio.util import pioversion_to_intstr
|
||||
@@ -27,50 +25,41 @@ def BuildFirmware(env):
|
||||
env.ProcessFlags()
|
||||
env.BuildFramework()
|
||||
|
||||
firmenv = env.Clone()
|
||||
vdirs = firmenv.VariantDirRecursive(
|
||||
vdirs = env.VariantDirRecursive(
|
||||
join("$BUILD_DIR", "src"), "$PROJECTSRC_DIR", duplicate=False)
|
||||
|
||||
# build dependent libs
|
||||
deplibs = firmenv.BuildDependentLibraries("$PROJECTSRC_DIR")
|
||||
deplibs = env.BuildDependentLibraries("$PROJECTSRC_DIR")
|
||||
|
||||
# append specified LD_SCRIPT
|
||||
if ("LDSCRIPT_PATH" in firmenv and
|
||||
not any(["-Wl,-T" in f for f in firmenv['LINKFLAGS']])):
|
||||
firmenv.Append(
|
||||
if ("LDSCRIPT_PATH" in env and
|
||||
not any(["-Wl,-T" in f for f in env['LINKFLAGS']])):
|
||||
env.Append(
|
||||
LINKFLAGS=["-Wl,-T", "$LDSCRIPT_PATH"]
|
||||
)
|
||||
|
||||
# enable "cyclic reference" for linker
|
||||
firmenv.Prepend(
|
||||
env.Prepend(
|
||||
_LIBFLAGS="-Wl,--start-group "
|
||||
)
|
||||
firmenv.Append(
|
||||
env.Append(
|
||||
_LIBFLAGS=" -Wl,--end-group"
|
||||
)
|
||||
|
||||
# Handle SRCBUILD_FLAGS
|
||||
if getenv("PLATFORMIO_SRCBUILD_FLAGS", None):
|
||||
firmenv.MergeFlags(getenv("PLATFORMIO_SRCBUILD_FLAGS"))
|
||||
env.MergeFlags(getenv("PLATFORMIO_SRCBUILD_FLAGS"))
|
||||
if "SRCBUILD_FLAGS" in env:
|
||||
firmenv.MergeFlags(env['SRCBUILD_FLAGS'])
|
||||
env.MergeFlags(env['SRCBUILD_FLAGS'])
|
||||
|
||||
firmenv.Append(
|
||||
env.Append(
|
||||
CPPDEFINES=["PLATFORMIO={0:02d}{1:02d}{2:02d}".format(
|
||||
*pioversion_to_intstr())]
|
||||
)
|
||||
|
||||
if "envdump" in COMMAND_LINE_TARGETS:
|
||||
print env.Dump()
|
||||
Exit()
|
||||
|
||||
if "idedata" in COMMAND_LINE_TARGETS:
|
||||
print json.dumps(env.DumpIDEData())
|
||||
Exit()
|
||||
|
||||
return firmenv.Program(
|
||||
return env.Program(
|
||||
join("$BUILD_DIR", "firmware"),
|
||||
[firmenv.GlobCXXFiles(vdir) for vdir in vdirs],
|
||||
[env.GlobCXXFiles(vdir) for vdir in vdirs],
|
||||
LIBS=env.get("LIBS", []) + deplibs,
|
||||
LIBPATH=env.get("LIBPATH", []) + ["$BUILD_DIR"],
|
||||
PROGSUFFIX=".elf"
|
||||
@@ -136,7 +125,6 @@ def BuildFramework(env):
|
||||
for f in env['FRAMEWORK'].split(","):
|
||||
framework = f.strip().lower()
|
||||
if framework in env.get("BOARD_OPTIONS", {}).get("frameworks"):
|
||||
SConscriptChdir(0)
|
||||
SConscript(
|
||||
env.subst(join("$PIOBUILDER_DIR", "scripts", "frameworks",
|
||||
"%s.py" % framework))
|
||||
|
||||
Reference in new issue
Block a user