From c036bde86cbd28e75a6fae5707930b74a16bc744 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Fri, 29 Jan 2016 17:55:48 +0200 Subject: [PATCH] Reverted ``-Wl,-whole-archive`` hook for ST STM32 and mbed --- HISTORY.rst | 1 + platformio/builder/scripts/frameworks/mbed.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/HISTORY.rst b/HISTORY.rst index 421ee665..50e008aa 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -8,6 +8,7 @@ PlatformIO 2.0 ~~~~~~~~~~~~~~~~~~ * Exclude only ``test`` and ``tests`` folders from build process +* Reverted ``-Wl,-whole-archive`` hook for ST STM32 and mbed 2.8.1 (2016-01-29) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/builder/scripts/frameworks/mbed.py b/platformio/builder/scripts/frameworks/mbed.py index 76903afd..84465d4a 100644 --- a/platformio/builder/scripts/frameworks/mbed.py +++ b/platformio/builder/scripts/frameworks/mbed.py @@ -195,6 +195,20 @@ def get_build_flags(data): return flags +def _mbed_whole_archive_hook(flags): + if (not isinstance(flags, list) or + env.get("BOARD_OPTIONS", {}).get("platform") != "ststm32"): + return flags + + 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") + + return flags + + board_type = env.subst("$BOARD") variant = MBED_VARIANTS[ board_type] if board_type in MBED_VARIANTS else board_type.upper() @@ -205,6 +219,8 @@ build_flags = get_build_flags(eixdata) variant_dir = join("$PLATFORMFW_DIR", "variant", variant) env.Replace( + _mbed_whole_archive_hook=_mbed_whole_archive_hook, + _LIBFLAGS="${_mbed_whole_archive_hook(%s)}" % env.get("_LIBFLAGS")[2:-1], CPPFLAGS=build_flags.get("CPPFLAGS", []), CFLAGS=build_flags.get("CFLAGS", []), CXXFLAGS=build_flags.get("CXXFLAGS", []),