From df0373c4fab3e716214c869158f13d7d9198e355 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sun, 31 Jul 2016 20:49:59 +0300 Subject: [PATCH] Sync flags parser with PlatformIO 3.0 branch // Resolve #738 --- platformio/builder/tools/platformio.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index c9758fa1..a10f7cf1 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -115,6 +115,8 @@ def BuildProgram(env): def ProcessFlags(env, flags): if not flags: return + if isinstance(flags, list): + flags = " ".join(flags) parsed_flags = env.ParseFlags(str(flags)) for flag in parsed_flags.pop("CPPDEFINES"): if not isinstance(flag, list): @@ -148,14 +150,16 @@ def ProcessFlags(env, flags): def ProcessUnFlags(env, flags): if not flags: return - parsed_flags = env.ParseFlags(flags) + if isinstance(flags, list): + flags = " ".join(flags) + parsed_flags = env.ParseFlags(str(flags)) all_flags = [] for items in parsed_flags.values(): all_flags.extend(items) all_flags = set(all_flags) for key in parsed_flags: - cur_flags = set(env.get(key, [])) + cur_flags = set(env.Flatten(env.get(key, []))) for item in cur_flags & all_flags: while item in env[key]: env[key].remove(item)