forked from platformio/platformio-core
Use custom object suffix only for Arduino/Energia frameworks
This commit is contained in:
@ -19,7 +19,6 @@ from os import environ
|
|||||||
from os.path import expanduser, join
|
from os.path import expanduser, join
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
from SCons import Builder, Util
|
|
||||||
from SCons.Script import (ARGUMENTS, COMMAND_LINE_TARGETS, DEFAULT_TARGETS,
|
from SCons.Script import (ARGUMENTS, COMMAND_LINE_TARGETS, DEFAULT_TARGETS,
|
||||||
Action, AllowSubstExceptions, AlwaysBuild,
|
Action, AllowSubstExceptions, AlwaysBuild,
|
||||||
DefaultEnvironment, Variables)
|
DefaultEnvironment, Variables)
|
||||||
@ -28,19 +27,6 @@ from platformio import util
|
|||||||
|
|
||||||
AllowSubstExceptions(NameError)
|
AllowSubstExceptions(NameError)
|
||||||
|
|
||||||
|
|
||||||
def scons_patched_match_splitext(path, suffixes=None):
|
|
||||||
"""
|
|
||||||
Patch SCons Builder, append $OBJSUFFIX to the end of each target
|
|
||||||
"""
|
|
||||||
tokens = Util.splitext(path)
|
|
||||||
if suffixes and tokens[1] and tokens[1] in suffixes:
|
|
||||||
return (path, tokens[1])
|
|
||||||
return tokens
|
|
||||||
|
|
||||||
|
|
||||||
Builder.match_splitext = scons_patched_match_splitext
|
|
||||||
|
|
||||||
# allow common variables from INI file
|
# allow common variables from INI file
|
||||||
commonvars = Variables(None)
|
commonvars = Variables(None)
|
||||||
commonvars.AddVariables(
|
commonvars.AddVariables(
|
||||||
|
@ -20,10 +20,9 @@ from glob import glob
|
|||||||
from os import sep, walk
|
from os import sep, walk
|
||||||
from os.path import basename, dirname, isdir, join, realpath
|
from os.path import basename, dirname, isdir, join, realpath
|
||||||
|
|
||||||
from SCons.Action import Action
|
from SCons import Action, Builder, Util
|
||||||
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild,
|
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild,
|
||||||
DefaultEnvironment, SConscript)
|
DefaultEnvironment, SConscript)
|
||||||
from SCons.Util import case_sensitive_suffixes, is_Sequence
|
|
||||||
|
|
||||||
from platformio.util import glob_escape, pioversion_to_intstr
|
from platformio.util import glob_escape, pioversion_to_intstr
|
||||||
|
|
||||||
@ -33,6 +32,16 @@ SRC_BUILD_EXT = SRC_C_EXT + ["S", "spp", "SPP", "sx", "s", "asm", "ASM"]
|
|||||||
SRC_FILTER_DEFAULT = ["+<*>", "-<.git%s>" % sep, "-<svn%s>" % sep]
|
SRC_FILTER_DEFAULT = ["+<*>", "-<.git%s>" % sep, "-<svn%s>" % sep]
|
||||||
|
|
||||||
|
|
||||||
|
def scons_patched_match_splitext(path, suffixes=None):
|
||||||
|
"""
|
||||||
|
Patch SCons Builder, append $OBJSUFFIX to the end of each target
|
||||||
|
"""
|
||||||
|
tokens = Util.splitext(path)
|
||||||
|
if suffixes and tokens[1] and tokens[1] in suffixes:
|
||||||
|
return (path, tokens[1])
|
||||||
|
return tokens
|
||||||
|
|
||||||
|
|
||||||
def BuildProgram(env):
|
def BuildProgram(env):
|
||||||
|
|
||||||
def _append_pio_macros():
|
def _append_pio_macros():
|
||||||
@ -45,7 +54,7 @@ def BuildProgram(env):
|
|||||||
env.PrintConfiguration()
|
env.PrintConfiguration()
|
||||||
|
|
||||||
# fix ASM handling under non case-sensitive OS
|
# fix ASM handling under non case-sensitive OS
|
||||||
if not case_sensitive_suffixes(".s", ".S"):
|
if not Util.case_sensitive_suffixes(".s", ".S"):
|
||||||
env.Replace(AS="$CC", ASCOM="$ASPPCOM")
|
env.Replace(AS="$CC", ASCOM="$ASPPCOM")
|
||||||
|
|
||||||
if "__debug" in COMMAND_LINE_TARGETS:
|
if "__debug" in COMMAND_LINE_TARGETS:
|
||||||
@ -101,7 +110,8 @@ def BuildProgram(env):
|
|||||||
program = env.Program(
|
program = env.Program(
|
||||||
join("$BUILD_DIR", env.subst("$PROGNAME")), env['PIOBUILDFILES'])
|
join("$BUILD_DIR", env.subst("$PROGNAME")), env['PIOBUILDFILES'])
|
||||||
|
|
||||||
checksize_action = Action(env.CheckUploadSize, "Checking program size")
|
checksize_action = Action.Action(env.CheckUploadSize,
|
||||||
|
"Checking program size")
|
||||||
AlwaysBuild(env.Alias("checkprogsize", program, checksize_action))
|
AlwaysBuild(env.Alias("checkprogsize", program, checksize_action))
|
||||||
if set(["upload", "program"]) & set(COMMAND_LINE_TARGETS):
|
if set(["upload", "program"]) & set(COMMAND_LINE_TARGETS):
|
||||||
env.AddPostAction(program, checksize_action)
|
env.AddPostAction(program, checksize_action)
|
||||||
@ -116,7 +126,7 @@ def ProcessFlags(env, flags): # pylint: disable=too-many-branches
|
|||||||
flags = " ".join(flags)
|
flags = " ".join(flags)
|
||||||
parsed_flags = env.ParseFlags(str(flags))
|
parsed_flags = env.ParseFlags(str(flags))
|
||||||
for flag in parsed_flags.pop("CPPDEFINES"):
|
for flag in parsed_flags.pop("CPPDEFINES"):
|
||||||
if not is_Sequence(flag):
|
if not Util.is_Sequence(flag):
|
||||||
env.Append(CPPDEFINES=flag)
|
env.Append(CPPDEFINES=flag)
|
||||||
continue
|
continue
|
||||||
_key, _value = flag[:2]
|
_key, _value = flag[:2]
|
||||||
@ -258,6 +268,8 @@ def BuildFrameworks(env, frameworks):
|
|||||||
|
|
||||||
for f in frameworks:
|
for f in frameworks:
|
||||||
if f in ("arduino", "energia"):
|
if f in ("arduino", "energia"):
|
||||||
|
# Arduino IDE appends .o the end of filename
|
||||||
|
Builder.match_splitext = scons_patched_match_splitext
|
||||||
env.ConvertInoToCpp()
|
env.ConvertInoToCpp()
|
||||||
|
|
||||||
if f in board_frameworks:
|
if f in board_frameworks:
|
||||||
|
Reference in New Issue
Block a user