forked from platformio/platformio-core
Dump build flags using SCons.Subst.SUBST_CMD
This commit is contained in:
@ -17,7 +17,8 @@ from __future__ import absolute_import
|
|||||||
import os
|
import os
|
||||||
from glob import glob
|
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.compat import glob_escape
|
||||||
from platformio.package.manager.core import get_core_package_dir
|
from platformio.package.manager.core import get_core_package_dir
|
||||||
@ -95,7 +96,7 @@ def _get_gcc_defines(env):
|
|||||||
def _dump_defines(env):
|
def _dump_defines(env):
|
||||||
defines = []
|
defines = []
|
||||||
# global symbols
|
# global symbols
|
||||||
for item in processDefines(env.get("CPPDEFINES", [])):
|
for item in SCons.Defaults.processDefines(env.get("CPPDEFINES", [])):
|
||||||
item = item.strip()
|
item = item.strip()
|
||||||
if item:
|
if item:
|
||||||
defines.append(env.subst(item).replace("\\", ""))
|
defines.append(env.subst(item).replace("\\", ""))
|
||||||
@ -144,8 +145,9 @@ def _get_svd_path(env):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def _escape_build_flag(flags):
|
def _subst_cmd(env, cmd):
|
||||||
return [flag if " " not in flag else '"%s"' % flag for flag in flags]
|
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):
|
def DumpIDEData(env, globalenv):
|
||||||
@ -153,7 +155,7 @@ def DumpIDEData(env, globalenv):
|
|||||||
|
|
||||||
data = {
|
data = {
|
||||||
"env_name": env["PIOENV"],
|
"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),
|
"defines": _dump_defines(env),
|
||||||
"includes": _dump_includes(env),
|
"includes": _dump_includes(env),
|
||||||
"cc_path": where_is_program(env.subst("$CC"), env.subst("${ENV['PATH']}")),
|
"cc_path": where_is_program(env.subst("$CC"), env.subst("${ENV['PATH']}")),
|
||||||
@ -175,7 +177,7 @@ def DumpIDEData(env, globalenv):
|
|||||||
env_ = env.Clone()
|
env_ = env.Clone()
|
||||||
# https://github.com/platformio/platformio-atom-ide/issues/34
|
# https://github.com/platformio/platformio-atom-ide/issues/34
|
||||||
_new_defines = []
|
_new_defines = []
|
||||||
for item in processDefines(env_.get("CPPDEFINES", [])):
|
for item in SCons.Defaults.processDefines(env_.get("CPPDEFINES", [])):
|
||||||
item = item.replace('\\"', '"')
|
item = item.replace('\\"', '"')
|
||||||
if " " in item:
|
if " " in item:
|
||||||
_new_defines.append(item.replace(" ", "\\\\ "))
|
_new_defines.append(item.replace(" ", "\\\\ "))
|
||||||
@ -184,15 +186,11 @@ def DumpIDEData(env, globalenv):
|
|||||||
env_.Replace(CPPDEFINES=_new_defines)
|
env_.Replace(CPPDEFINES=_new_defines)
|
||||||
|
|
||||||
# export C/C++ build flags
|
# 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(
|
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
|
return data
|
||||||
|
Reference in New Issue
Block a user