mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Improve defines processing
This commit is contained in:
@ -23,6 +23,7 @@ from os.path import basename, isdir, isfile, join, relpath
|
||||
from tempfile import mkstemp
|
||||
|
||||
from SCons.Action import Action
|
||||
from SCons.Defaults import processDefines
|
||||
from SCons.Script import ARGUMENTS
|
||||
|
||||
from platformio import util
|
||||
@ -227,10 +228,8 @@ def DumpIDEData(env):
|
||||
def get_defines(env_):
|
||||
defines = []
|
||||
# global symbols
|
||||
for item in env_.get("CPPDEFINES", []):
|
||||
if isinstance(item, list) or isinstance(item, tuple):
|
||||
item = "=".join(item)
|
||||
defines.append(env_.subst(item).replace('\\"', '"'))
|
||||
for item in processDefines(env_.get("CPPDEFINES", [])):
|
||||
defines.append(env_.subst(item).replace('\\', ''))
|
||||
|
||||
# special symbol for Atmel AVR MCU
|
||||
if env['PIOPLATFORM'] == "atmelavr":
|
||||
@ -256,9 +255,7 @@ def DumpIDEData(env):
|
||||
|
||||
# https://github.com/platformio/platformio-atom-ide/issues/34
|
||||
_new_defines = []
|
||||
for item in env_.get("CPPDEFINES", []):
|
||||
if isinstance(item, list) or isinstance(item, tuple):
|
||||
item = "=".join(item)
|
||||
for item in processDefines(env_.get("CPPDEFINES", [])):
|
||||
item = item.replace('\\"', '"')
|
||||
if " " in item:
|
||||
_new_defines.append(item.replace(" ", "\\\\ "))
|
||||
|
@ -23,7 +23,7 @@ from os.path import basename, dirname, isdir, join, realpath
|
||||
from SCons.Action import Action
|
||||
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild,
|
||||
DefaultEnvironment, SConscript)
|
||||
from SCons.Util import case_sensitive_suffixes
|
||||
from SCons.Util import case_sensitive_suffixes, is_Sequence
|
||||
|
||||
from platformio.util import pioversion_to_intstr
|
||||
|
||||
@ -111,12 +111,17 @@ def ProcessFlags(env, flags):
|
||||
flags = " ".join(flags)
|
||||
parsed_flags = env.ParseFlags(str(flags))
|
||||
for flag in parsed_flags.pop("CPPDEFINES"):
|
||||
if not isinstance(flag, list):
|
||||
if not is_Sequence(flag):
|
||||
env.Append(CPPDEFINES=flag)
|
||||
continue
|
||||
if '\"' in flag[1]:
|
||||
flag[1] = flag[1].replace('\"', '\\\"')
|
||||
env.Append(CPPDEFINES=[flag])
|
||||
_key, _value = flag[:2]
|
||||
if '\"' in _value:
|
||||
_value = _value.replace('\"', '\\\"')
|
||||
elif _value.isdigit():
|
||||
_value = int(_value)
|
||||
elif _value.replace(".", "", 1).isdigit():
|
||||
_value = float(_value)
|
||||
env.Append(CPPDEFINES=(_key, _value))
|
||||
env.Append(**parsed_flags)
|
||||
|
||||
# fix relative CPPPATH & LIBPATH
|
||||
|
Reference in New Issue
Block a user