mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-30 10:07: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 tempfile import mkstemp
|
||||||
|
|
||||||
from SCons.Action import Action
|
from SCons.Action import Action
|
||||||
|
from SCons.Defaults import processDefines
|
||||||
from SCons.Script import ARGUMENTS
|
from SCons.Script import ARGUMENTS
|
||||||
|
|
||||||
from platformio import util
|
from platformio import util
|
||||||
@ -227,10 +228,8 @@ def DumpIDEData(env):
|
|||||||
def get_defines(env_):
|
def get_defines(env_):
|
||||||
defines = []
|
defines = []
|
||||||
# global symbols
|
# global symbols
|
||||||
for item in env_.get("CPPDEFINES", []):
|
for item in processDefines(env_.get("CPPDEFINES", [])):
|
||||||
if isinstance(item, list) or isinstance(item, tuple):
|
defines.append(env_.subst(item).replace('\\', ''))
|
||||||
item = "=".join(item)
|
|
||||||
defines.append(env_.subst(item).replace('\\"', '"'))
|
|
||||||
|
|
||||||
# special symbol for Atmel AVR MCU
|
# special symbol for Atmel AVR MCU
|
||||||
if env['PIOPLATFORM'] == "atmelavr":
|
if env['PIOPLATFORM'] == "atmelavr":
|
||||||
@ -256,9 +255,7 @@ def DumpIDEData(env):
|
|||||||
|
|
||||||
# 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 env_.get("CPPDEFINES", []):
|
for item in processDefines(env_.get("CPPDEFINES", [])):
|
||||||
if isinstance(item, list) or isinstance(item, tuple):
|
|
||||||
item = "=".join(item)
|
|
||||||
item = item.replace('\\"', '"')
|
item = item.replace('\\"', '"')
|
||||||
if " " in item:
|
if " " in item:
|
||||||
_new_defines.append(item.replace(" ", "\\\\ "))
|
_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.Action import Action
|
||||||
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild,
|
from SCons.Script import (COMMAND_LINE_TARGETS, AlwaysBuild,
|
||||||
DefaultEnvironment, SConscript)
|
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
|
from platformio.util import pioversion_to_intstr
|
||||||
|
|
||||||
@ -111,12 +111,17 @@ def ProcessFlags(env, flags):
|
|||||||
flags = " ".join(flags)
|
flags = " ".join(flags)
|
||||||
parsed_flags = env.ParseFlags(str(flags))
|
parsed_flags = env.ParseFlags(str(flags))
|
||||||
for flag in parsed_flags.pop("CPPDEFINES"):
|
for flag in parsed_flags.pop("CPPDEFINES"):
|
||||||
if not isinstance(flag, list):
|
if not is_Sequence(flag):
|
||||||
env.Append(CPPDEFINES=flag)
|
env.Append(CPPDEFINES=flag)
|
||||||
continue
|
continue
|
||||||
if '\"' in flag[1]:
|
_key, _value = flag[:2]
|
||||||
flag[1] = flag[1].replace('\"', '\\\"')
|
if '\"' in _value:
|
||||||
env.Append(CPPDEFINES=[flag])
|
_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)
|
env.Append(**parsed_flags)
|
||||||
|
|
||||||
# fix relative CPPPATH & LIBPATH
|
# fix relative CPPPATH & LIBPATH
|
||||||
|
Reference in New Issue
Block a user