Use custom object suffix only for Arduino/Energia frameworks

This commit is contained in:
Ivan Kravets
2018-03-07 23:35:03 +02:00
parent 8676f471f1
commit 105cd0fa71
2 changed files with 17 additions and 19 deletions

View File

@ -19,7 +19,6 @@ from os import environ
from os.path import expanduser, join
from time import time
from SCons import Builder, Util
from SCons.Script import (ARGUMENTS, COMMAND_LINE_TARGETS, DEFAULT_TARGETS,
Action, AllowSubstExceptions, AlwaysBuild,
DefaultEnvironment, Variables)
@ -28,19 +27,6 @@ from platformio import util
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
commonvars = Variables(None)
commonvars.AddVariables(

View File

@ -20,10 +20,9 @@ from glob import glob
from os import sep, walk
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,
DefaultEnvironment, SConscript)
from SCons.Util import case_sensitive_suffixes, is_Sequence
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]
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 _append_pio_macros():
@ -45,7 +54,7 @@ def BuildProgram(env):
env.PrintConfiguration()
# 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")
if "__debug" in COMMAND_LINE_TARGETS:
@ -101,7 +110,8 @@ def BuildProgram(env):
program = env.Program(
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))
if set(["upload", "program"]) & set(COMMAND_LINE_TARGETS):
env.AddPostAction(program, checksize_action)
@ -116,7 +126,7 @@ def ProcessFlags(env, flags): # pylint: disable=too-many-branches
flags = " ".join(flags)
parsed_flags = env.ParseFlags(str(flags))
for flag in parsed_flags.pop("CPPDEFINES"):
if not is_Sequence(flag):
if not Util.is_Sequence(flag):
env.Append(CPPDEFINES=flag)
continue
_key, _value = flag[:2]
@ -258,6 +268,8 @@ def BuildFrameworks(env, frameworks):
for f in frameworks:
if f in ("arduino", "energia"):
# Arduino IDE appends .o the end of filename
Builder.match_splitext = scons_patched_match_splitext
env.ConvertInoToCpp()
if f in board_frameworks: