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>`_
(`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)
~~~~~~~~~~~~~~~~~~

View File

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

View File

@ -195,18 +195,27 @@ def get_build_flags(data):
return flags
def _mbed_whole_archive_hook(flags):
if (not isinstance(flags, list) or
def _mbed_whole_archive_hook(libs):
if (not isinstance(libs, list) or
env.get("BOARD_OPTIONS", {}).get("platform") != "ststm32"):
return flags
return libs
for pos, flag in enumerate(flags[:]):
if isinstance(flag, basestring):
continue
flags.insert(pos, "-Wl,-whole-archive")
flags.insert(pos + 2, "-Wl,-no-whole-archive")
_dynlibs = []
_stlibs = []
for l in libs:
if isinstance(l, basestring):
_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")