diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 9b227c42..04a19eba 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -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( diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 61f91981..da82de85 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -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, "-" % 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: