From 31a110c37ff7fb5a885b14fedd05719b874a4d37 Mon Sep 17 00:00:00 2001 From: Valerii Koval Date: Wed, 15 Jun 2016 20:55:45 +0300 Subject: [PATCH 1/8] Fix unnecessary uppercase for target includes --- platformio/builder/scripts/frameworks/mbed.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio/builder/scripts/frameworks/mbed.py b/platformio/builder/scripts/frameworks/mbed.py index 2b1bd2ad..08a9e873 100644 --- a/platformio/builder/scripts/frameworks/mbed.py +++ b/platformio/builder/scripts/frameworks/mbed.py @@ -163,7 +163,7 @@ def add_mbedlib(libname, libar): continue if "TARGET_" in root: - if all([p not in root.upper() for p in target_includes]): + if all([p not in root for p in target_includes]): continue var_dir = join("$BUILD_DIR", "FrameworkMbed%sInc%d" % From 4035b9ac6c824b0bf37e20c3458300c879177361 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 00:38:00 +0300 Subject: [PATCH 2/8] Better removing unnecessary flags using ``build_unflags`` option // Resolve #698 --- HISTORY.rst | 2 + platformio/__init__.py | 2 +- platformio/builder/scripts/basearm.py | 7 +-- platformio/builder/scripts/espressif.py | 6 +-- platformio/builder/scripts/frameworks/mbed.py | 7 ++- platformio/builder/scripts/ststm32.py | 5 --- platformio/builder/scripts/titiva.py | 7 --- platformio/builder/tools/platformio.py | 45 ++++++++++--------- 8 files changed, 37 insertions(+), 44 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 1bc72b89..f156f03b 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -7,6 +7,8 @@ PlatformIO 2.0 2.10.4 (2016-06-??) ~~~~~~~~~~~~~~~~~~~ +* Better removing unnecessary flags using ``build_unflags`` option + (`issue #698 `_) * Fixed issue with ``platformio init --ide`` command for Python 2.6 2.10.3 (2016-06-15) diff --git a/platformio/__init__.py b/platformio/__init__.py index 8746c80d..b2567541 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -14,7 +14,7 @@ import sys -VERSION = (2, 10, "4.dev0") +VERSION = (2, 10, "4.dev1") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/builder/scripts/basearm.py b/platformio/builder/scripts/basearm.py index 20892b18..a8dc9cc7 100644 --- a/platformio/builder/scripts/basearm.py +++ b/platformio/builder/scripts/basearm.py @@ -40,8 +40,7 @@ env.Replace( "-fdata-sections", "-Wall", "-mthumb", - "-mcpu=${BOARD_OPTIONS['build']['cpu']}", - "-nostdlib" + "-mcpu=${BOARD_OPTIONS['build']['cpu']}" ], CXXFLAGS=[ @@ -57,7 +56,9 @@ env.Replace( "-Os", "-Wl,--gc-sections,--relax", "-mthumb", - "-mcpu=${BOARD_OPTIONS['build']['cpu']}" + "-mcpu=${BOARD_OPTIONS['build']['cpu']}", + "-nostdlib", + "-nostartfiles" ], LIBS=["c", "gcc", "m"], diff --git a/platformio/builder/scripts/espressif.py b/platformio/builder/scripts/espressif.py index 7c167489..34058955 100644 --- a/platformio/builder/scripts/espressif.py +++ b/platformio/builder/scripts/espressif.py @@ -71,8 +71,7 @@ env.Replace( "-Wpointer-arith", "-Wno-implicit-function-declaration", "-Wl,-EL", - "-fno-inline-functions", - "-nostdlib" + "-fno-inline-functions" ], CCFLAGS=[ @@ -82,8 +81,7 @@ env.Replace( "-falign-functions=4", "-U__STRICT_ANSI__", "-ffunction-sections", - "-fdata-sections", - "-MMD" # output dependancy info + "-fdata-sections" ], CXXFLAGS=[ diff --git a/platformio/builder/scripts/frameworks/mbed.py b/platformio/builder/scripts/frameworks/mbed.py index 08a9e873..3c7dc2e0 100644 --- a/platformio/builder/scripts/frameworks/mbed.py +++ b/platformio/builder/scripts/frameworks/mbed.py @@ -264,13 +264,12 @@ env.Replace( ) # restore external build flags -env.ProcessFlags([ - env.get("BOARD_OPTIONS", {}).get("build", {}).get("extra_flags") -]) +env.ProcessFlags( + env.get("BOARD_OPTIONS", {}).get("build", {}).get("extra_flags")) # remove base flags env.ProcessUnFlags(env.get("BUILD_UNFLAGS")) # apply user flags -env.ProcessFlags([env.get("BUILD_FLAGS")]) +env.ProcessFlags(env.get("BUILD_FLAGS")) # Hook for K64F and K22F if board_type in ("frdm_k22f", "frdm_k64f"): diff --git a/platformio/builder/scripts/ststm32.py b/platformio/builder/scripts/ststm32.py index 8dbd70ef..3077f74d 100644 --- a/platformio/builder/scripts/ststm32.py +++ b/platformio/builder/scripts/ststm32.py @@ -66,11 +66,6 @@ env.Append( ], LIBS=["stdc++", "nosys"], - - LINKFLAGS=[ - "-nostartfiles", - "-nostdlib" - ] ) # diff --git a/platformio/builder/scripts/titiva.py b/platformio/builder/scripts/titiva.py index e705cd62..411eb0cb 100644 --- a/platformio/builder/scripts/titiva.py +++ b/platformio/builder/scripts/titiva.py @@ -31,13 +31,6 @@ env.Replace( UPLOADCMD='"$UPLOADER" $SOURCES' ) -env.Append( - LINKFLAGS=[ - "-nostartfiles", - "-nostdlib" - ] -) - # # Target: Build executable and linkable firmware # diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 01b50f57..41341b96 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -53,13 +53,12 @@ def BuildProgram(env): ) # process extra flags from board - env.ProcessFlags([ - env.get("BOARD_OPTIONS", {}).get("build", {}).get("extra_flags") - ]) + env.ProcessFlags( + env.get("BOARD_OPTIONS", {}).get("build", {}).get("extra_flags")) # remove base flags env.ProcessUnFlags(env.get("BUILD_UNFLAGS")) # apply user flags - env.ProcessFlags([env.get("BUILD_FLAGS")]) + env.ProcessFlags(env.get("BUILD_FLAGS")) if env.get("FRAMEWORK"): env.BuildFrameworks([ @@ -88,7 +87,7 @@ def BuildProgram(env): ) # Handle SRC_BUILD_FLAGS - env.ProcessFlags([env.get("SRC_BUILD_FLAGS", None)]) + env.ProcessFlags(env.get("SRC_BUILD_FLAGS")) env.Append( CPPPATH=["$PROJECTSRC_DIR"], @@ -117,18 +116,17 @@ def BuildProgram(env): def ProcessFlags(env, flags): - for f in flags: - if not f: + if not flags: + return + parsed_flags = env.ParseFlags(str(flags)) + for flag in parsed_flags.pop("CPPDEFINES"): + if not isinstance(flag, list): + env.Append(CPPDEFINES=flag) continue - parsed_flags = env.ParseFlags(str(f)) - for flag in parsed_flags.pop("CPPDEFINES"): - if not isinstance(flag, list): - env.Append(CPPDEFINES=flag) - continue - if '\"' in flag[1]: - flag[1] = flag[1].replace('\"', '\\\"') - env.Append(CPPDEFINES=[flag]) - env.Append(**parsed_flags) + if '\"' in flag[1]: + flag[1] = flag[1].replace('\"', '\\\"') + env.Append(CPPDEFINES=[flag]) + env.Append(**parsed_flags) # fix relative CPPPATH & LIBPATH for k in ("CPPPATH", "LIBPATH"): @@ -153,10 +151,17 @@ def ProcessFlags(env, flags): def ProcessUnFlags(env, flags): if not flags: return - for var, values in env.ParseFlags(flags).items(): - for v in values: - if v in env[var]: - env[var].remove(v) + parsed_flags = env.ParseFlags(flags) + all_flags = [] + for items in parsed_flags.values(): + all_flags.extend(items) + all_flags = set(all_flags) + + for key in parsed_flags.keys(): + cur_flags = set(env.get(key, [])) + common = cur_flags & all_flags + for item in common: + env[key].remove(item) def IsFileWithExt(env, file_, ext): # pylint: disable=W0613 From 8d94a62b9cc2f7f7fbfd2e68dc09de82638c4355 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 00:52:46 +0300 Subject: [PATCH 3/8] Revert back previous LINKFLAGS --- platformio/builder/scripts/basearm.py | 7 +++---- platformio/builder/scripts/espressif.py | 6 ++++-- platformio/builder/scripts/ststm32.py | 5 +++++ platformio/builder/scripts/titiva.py | 7 +++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/platformio/builder/scripts/basearm.py b/platformio/builder/scripts/basearm.py index a8dc9cc7..20892b18 100644 --- a/platformio/builder/scripts/basearm.py +++ b/platformio/builder/scripts/basearm.py @@ -40,7 +40,8 @@ env.Replace( "-fdata-sections", "-Wall", "-mthumb", - "-mcpu=${BOARD_OPTIONS['build']['cpu']}" + "-mcpu=${BOARD_OPTIONS['build']['cpu']}", + "-nostdlib" ], CXXFLAGS=[ @@ -56,9 +57,7 @@ env.Replace( "-Os", "-Wl,--gc-sections,--relax", "-mthumb", - "-mcpu=${BOARD_OPTIONS['build']['cpu']}", - "-nostdlib", - "-nostartfiles" + "-mcpu=${BOARD_OPTIONS['build']['cpu']}" ], LIBS=["c", "gcc", "m"], diff --git a/platformio/builder/scripts/espressif.py b/platformio/builder/scripts/espressif.py index 34058955..7c167489 100644 --- a/platformio/builder/scripts/espressif.py +++ b/platformio/builder/scripts/espressif.py @@ -71,7 +71,8 @@ env.Replace( "-Wpointer-arith", "-Wno-implicit-function-declaration", "-Wl,-EL", - "-fno-inline-functions" + "-fno-inline-functions", + "-nostdlib" ], CCFLAGS=[ @@ -81,7 +82,8 @@ env.Replace( "-falign-functions=4", "-U__STRICT_ANSI__", "-ffunction-sections", - "-fdata-sections" + "-fdata-sections", + "-MMD" # output dependancy info ], CXXFLAGS=[ diff --git a/platformio/builder/scripts/ststm32.py b/platformio/builder/scripts/ststm32.py index 3077f74d..8dbd70ef 100644 --- a/platformio/builder/scripts/ststm32.py +++ b/platformio/builder/scripts/ststm32.py @@ -66,6 +66,11 @@ env.Append( ], LIBS=["stdc++", "nosys"], + + LINKFLAGS=[ + "-nostartfiles", + "-nostdlib" + ] ) # diff --git a/platformio/builder/scripts/titiva.py b/platformio/builder/scripts/titiva.py index 411eb0cb..e705cd62 100644 --- a/platformio/builder/scripts/titiva.py +++ b/platformio/builder/scripts/titiva.py @@ -31,6 +31,13 @@ env.Replace( UPLOADCMD='"$UPLOADER" $SOURCES' ) +env.Append( + LINKFLAGS=[ + "-nostartfiles", + "-nostdlib" + ] +) + # # Target: Build executable and linkable firmware # From 2eca835ec765047d6fe21211491506f6ce736c33 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 00:53:23 +0300 Subject: [PATCH 4/8] Disable dependancy info --- platformio/builder/scripts/espressif.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platformio/builder/scripts/espressif.py b/platformio/builder/scripts/espressif.py index 7c167489..d9cef77b 100644 --- a/platformio/builder/scripts/espressif.py +++ b/platformio/builder/scripts/espressif.py @@ -82,8 +82,7 @@ env.Replace( "-falign-functions=4", "-U__STRICT_ANSI__", "-ffunction-sections", - "-fdata-sections", - "-MMD" # output dependancy info + "-fdata-sections" ], CXXFLAGS=[ From 2b88ef134b47a136a064992baad4d9f6176b4ba4 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 00:56:04 +0300 Subject: [PATCH 5/8] Remove duplicated flags // Issue #698 --- platformio/__init__.py | 2 +- platformio/builder/tools/platformio.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/platformio/__init__.py b/platformio/__init__.py index b2567541..818bf941 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -14,7 +14,7 @@ import sys -VERSION = (2, 10, "4.dev1") +VERSION = (2, 10, "4.dev2") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 41341b96..22e7dc94 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -159,9 +159,9 @@ def ProcessUnFlags(env, flags): for key in parsed_flags.keys(): cur_flags = set(env.get(key, [])) - common = cur_flags & all_flags - for item in common: - env[key].remove(item) + for item in (cur_flags & all_flags): + while item in env[key]: + env[key].remove(item) def IsFileWithExt(env, file_, ext): # pylint: disable=W0613 From 53bd1df8e5c59e0dfb3d6ff0c8f01a2c872b30c6 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 01:15:15 +0300 Subject: [PATCH 6/8] Fix PyLint warning --- platformio/builder/tools/platformio.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 22e7dc94..1c7743fe 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -159,7 +159,7 @@ def ProcessUnFlags(env, flags): for key in parsed_flags.keys(): cur_flags = set(env.get(key, [])) - for item in (cur_flags & all_flags): + for item in cur_flags & all_flags: while item in env[key]: env[key].remove(item) From d219999892982325961f0ee275af5546f86e5547 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 13:26:04 +0300 Subject: [PATCH 7/8] Update name of the OpenEnergyMonitor board // Resolve #699 --- docs/frameworks/arduino.rst | 2 +- docs/platforms/atmelavr.rst | 2 +- docs/platforms/embedded_boards.rst | 2 +- platformio/boards/misc.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/frameworks/arduino.rst b/docs/frameworks/arduino.rst index f7a4877a..db5b6d92 100644 --- a/docs/frameworks/arduino.rst +++ b/docs/frameworks/arduino.rst @@ -1211,7 +1211,7 @@ OpenEnergyMonitor - RAM * - ``emonpi`` - - `emonPi `_ + - `OpenEnergyMonitor emonPi `_ - ATMEGA328P - 16 MHz - 32 Kb diff --git a/docs/platforms/atmelavr.rst b/docs/platforms/atmelavr.rst index 58185e7c..fb181900 100644 --- a/docs/platforms/atmelavr.rst +++ b/docs/platforms/atmelavr.rst @@ -826,7 +826,7 @@ OpenEnergyMonitor - RAM * - ``emonpi`` - - `emonPi `_ + - `OpenEnergyMonitor emonPi `_ - ATMEGA328P - 16 MHz - 32 Kb diff --git a/docs/platforms/embedded_boards.rst b/docs/platforms/embedded_boards.rst index 23721690..bd52ca0c 100644 --- a/docs/platforms/embedded_boards.rst +++ b/docs/platforms/embedded_boards.rst @@ -1576,7 +1576,7 @@ OpenEnergyMonitor - RAM * - ``emonpi`` - - `emonPi `_ + - `OpenEnergyMonitor emonPi `_ - ATMEGA328P - 16 MHz - 32 Kb diff --git a/platformio/boards/misc.json b/platformio/boards/misc.json index a8cc9e5a..114e8022 100644 --- a/platformio/boards/misc.json +++ b/platformio/boards/misc.json @@ -52,7 +52,7 @@ "variant": "standard" }, "frameworks": ["arduino"], - "name": "emonPi", + "name": "OpenEnergyMonitor emonPi", "platform": "atmelavr", "upload": { "maximum_ram_size": 2048, From 748437ef7a28a65662a21513b35b4c04cd9df43c Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 18 Jun 2016 23:37:58 +0300 Subject: [PATCH 8/8] Use env.Flatten to manipulate with CPPDEFINES --- platformio/builder/tools/piomisc.py | 12 ++++-------- platformio/builder/tools/platformio.py | 7 ++----- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/platformio/builder/tools/piomisc.py b/platformio/builder/tools/piomisc.py index 1fa62f93..a848ea0e 100644 --- a/platformio/builder/tools/piomisc.py +++ b/platformio/builder/tools/piomisc.py @@ -122,8 +122,8 @@ def ConvertInoToCpp(env): remove(file_) except: # pylint: disable=bare-except if isfile(file_): - print ("Warning: Could not remove temporary file '%s'. " - "Please remove it manually." % file_) + print("Warning: Could not remove temporary file '%s'. " + "Please remove it manually." % file_) ino_nodes = (env.Glob(join("$PROJECTSRC_DIR", "*.ino")) + env.Glob(join("$PROJECTSRC_DIR", "*.pde"))) @@ -202,9 +202,7 @@ def DumpIDEData(env): def get_defines(env_): defines = [] # global symbols - for item in env_.get("CPPDEFINES", []): - if isinstance(item, list): - item = "=".join(item) + for item in env.Flatten(env_.get("CPPDEFINES", [])): defines.append(env_.subst(item).replace('\\"', '"')) # special symbol for Atmel AVR MCU @@ -232,9 +230,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): - item = "=".join(item) + for item in env.Flatten(env_.get("CPPDEFINES", [])): item = item.replace('\\"', '"') if " " in item: _new_defines.append(item.replace(" ", "\\\\ ")) diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 1c7743fe..e1b599c8 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -36,12 +36,9 @@ SRC_DEFAULT_FILTER = " ".join([ def BuildProgram(env): def _append_pio_macros(): - if any(["PLATFORMIO=" in str(d) for d in env.get("CPPDEFINES", [])]): - return - env.Append( + env.AppendUnique( CPPDEFINES=["PLATFORMIO={0:02d}{1:02d}{2:02d}".format( - *pioversion_to_intstr())], - ) + *pioversion_to_intstr())]) _append_pio_macros()