From cb9e72a879932a9c4333e109a6f4496c8d38cce7 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Wed, 27 Jan 2021 20:57:53 +0200 Subject: [PATCH] Dump build flags using SCons.Subst.SUBST_CMD --- platformio/builder/tools/pioide.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/platformio/builder/tools/pioide.py b/platformio/builder/tools/pioide.py index 88bee2ba..16b5c229 100644 --- a/platformio/builder/tools/pioide.py +++ b/platformio/builder/tools/pioide.py @@ -17,7 +17,8 @@ from __future__ import absolute_import import os from glob import glob -from SCons.Defaults import processDefines # pylint: disable=import-error +import SCons.Defaults # pylint: disable=import-error +import SCons.Subst # pylint: disable=import-error from platformio.compat import glob_escape from platformio.package.manager.core import get_core_package_dir @@ -95,7 +96,7 @@ def _get_gcc_defines(env): def _dump_defines(env): defines = [] # global symbols - for item in processDefines(env.get("CPPDEFINES", [])): + for item in SCons.Defaults.processDefines(env.get("CPPDEFINES", [])): item = item.strip() if item: defines.append(env.subst(item).replace("\\", "")) @@ -144,8 +145,9 @@ def _get_svd_path(env): return None -def _escape_build_flag(flags): - return [flag if " " not in flag else '"%s"' % flag for flag in flags] +def _subst_cmd(env, cmd): + args = env.subst_list(cmd, SCons.Subst.SUBST_CMD)[0] + return " ".join([SCons.Subst.quote_spaces(arg) for arg in args]) def DumpIDEData(env, globalenv): @@ -153,7 +155,7 @@ def DumpIDEData(env, globalenv): data = { "env_name": env["PIOENV"], - "libsource_dirs": [env.subst(l) for l in env.GetLibSourceDirs()], + "libsource_dirs": [env.subst(item) for item in env.GetLibSourceDirs()], "defines": _dump_defines(env), "includes": _dump_includes(env), "cc_path": where_is_program(env.subst("$CC"), env.subst("${ENV['PATH']}")), @@ -175,7 +177,7 @@ def DumpIDEData(env, globalenv): env_ = env.Clone() # https://github.com/platformio/platformio-atom-ide/issues/34 _new_defines = [] - for item in processDefines(env_.get("CPPDEFINES", [])): + for item in SCons.Defaults.processDefines(env_.get("CPPDEFINES", [])): item = item.replace('\\"', '"') if " " in item: _new_defines.append(item.replace(" ", "\\\\ ")) @@ -184,15 +186,11 @@ def DumpIDEData(env, globalenv): env_.Replace(CPPDEFINES=_new_defines) # export C/C++ build flags - env_["__escape_build_flag"] = _escape_build_flag - CFLAGSCOM = ( - "${__escape_build_flag(CFLAGS)} ${__escape_build_flag(CCFLAGS)} $CPPFLAGS" - ) - CXXFLAGSCOM = ( - "${__escape_build_flag(CXXFLAGS)} ${__escape_build_flag(CCFLAGS)} $CPPFLAGS" - ) data.update( - {"cc_flags": env_.subst(CFLAGSCOM), "cxx_flags": env_.subst(CXXFLAGSCOM)} + { + "cc_flags": _subst_cmd(env_, "$CFLAGS $CCFLAGS $CPPFLAGS"), + "cxx_flags": _subst_cmd(env_, "$CXXFLAGS $CCFLAGS $CPPFLAGS"), + } ) return data