From 88f0b51312e0a4e3d74c8bf8bee52139705d3d8c Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 14 Feb 2015 22:14:49 +0200 Subject: [PATCH] Enable linker "cyclic dependencies" for all platforms --- platformio/builder/scripts/atmelavr.py | 3 +-- platformio/builder/tools/platformio.py | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/platformio/builder/scripts/atmelavr.py b/platformio/builder/scripts/atmelavr.py index ed090862..aa3218d8 100644 --- a/platformio/builder/scripts/atmelavr.py +++ b/platformio/builder/scripts/atmelavr.py @@ -55,8 +55,7 @@ env.Replace( LINKFLAGS=[ "-Os", "-mmcu=$BOARD_MCU", - "-Wl,--gc-sections", - "-Wl,--start-group" + "-Wl,--gc-sections" ], SIZEPRINTCMD='"$SIZETOOL" --mcu=$BOARD_MCU -C -d $SOURCES', diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 09aba659..15896e6a 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -43,21 +43,29 @@ def ProcessGeneral(env): def BuildFirmware(env, corelibs): - src = env.Clone() - vdirs = src.VariantDirRecursive( + firmenv = env.Clone() + vdirs = firmenv.VariantDirRecursive( join("$BUILD_DIR", "src"), join("$PROJECT_DIR", "src")) # build dependent libs - deplibs = src.BuildDependentLibraries(join("$PROJECT_DIR", "src")) + deplibs = firmenv.BuildDependentLibraries(join("$PROJECT_DIR", "src")) + if deplibs: + firmenv.Prepend( + _LIBFLAGS="-Wl,--start-group " + ) + firmenv.Append( + _LIBFLAGS=" -Wl,--end-group " + ) - src.MergeFlags(getenv("PIOSRCBUILD_FLAGS", "$SRCBUILD_FLAGS")) + firmenv.MergeFlags(getenv("PIOSRCBUILD_FLAGS", "$SRCBUILD_FLAGS")) - return src.Program( + return firmenv.Program( join("$BUILD_DIR", "firmware"), - [src.GlobCXXFiles(vdir) for vdir in vdirs], + [firmenv.GlobCXXFiles(vdir) for vdir in vdirs], LIBS=deplibs + corelibs, LIBPATH="$BUILD_DIR", - PROGSUFFIX=".elf") + PROGSUFFIX=".elf" + ) def GlobCXXFiles(env, path):