Fix multiple definition errors for ST STM32 development platform and mbed framework // Resolve #571

This commit is contained in:
Ivan Kravets
2016-03-11 16:01:24 +02:00
parent 034f431ab1
commit 757df8c8ab
3 changed files with 22 additions and 10 deletions

View File

@ -9,6 +9,9 @@ PlatformIO 2.0
* Launched `PlatformIO Community Forums <http://community.platformio.org>`_ * Launched `PlatformIO Community Forums <http://community.platformio.org>`_
(`issue #530 <https://github.com/platformio/platformio/issues/530>`_) (`issue #530 <https://github.com/platformio/platformio/issues/530>`_)
* Fixed multiple definition errors for ST STM32 development platform and mbed
framework
(`issue #571 <https://github.com/platformio/platformio/issues/571>`_)
2.8.5 (2016-03-07) 2.8.5 (2016-03-07)
~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~

View File

@ -14,7 +14,7 @@
import sys import sys
VERSION = (2, 8, 5) VERSION = (2, 8, "6.dev0")
__version__ = ".".join([str(s) for s in VERSION]) __version__ = ".".join([str(s) for s in VERSION])
__title__ = "platformio" __title__ = "platformio"

View File

@ -195,18 +195,27 @@ def get_build_flags(data):
return flags return flags
def _mbed_whole_archive_hook(flags): def _mbed_whole_archive_hook(libs):
if (not isinstance(flags, list) or if (not isinstance(libs, list) or
env.get("BOARD_OPTIONS", {}).get("platform") != "ststm32"): env.get("BOARD_OPTIONS", {}).get("platform") != "ststm32"):
return flags return libs
for pos, flag in enumerate(flags[:]): _dynlibs = []
if isinstance(flag, basestring): _stlibs = []
continue for l in libs:
flags.insert(pos, "-Wl,-whole-archive") if isinstance(l, basestring):
flags.insert(pos + 2, "-Wl,-no-whole-archive") _stlibs.append(l)
else:
_dynlibs.append(l)
return flags libs = []
if _dynlibs:
libs.append("-Wl,-whole-archive")
libs.extend(_dynlibs)
libs.append("-Wl,-no-whole-archive")
libs.extend(_stlibs)
return libs
board_type = env.subst("$BOARD") board_type = env.subst("$BOARD")