mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-29 17:47:14 +02:00
Create LDSCRIPT_PATH Scons env variable
This commit is contained in:
@ -89,6 +89,13 @@ if "BOARD" in env:
|
||||
if "UPLOAD_SPEED" not in env:
|
||||
env.Replace(
|
||||
UPLOAD_SPEED="${BOARD_OPTIONS['upload'].get('speed', None)}")
|
||||
if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}):
|
||||
env.Replace(
|
||||
LDSCRIPT_PATH=join(
|
||||
"$PIOHOME_DIR", "packages", "ldscripts",
|
||||
"${BOARD_OPTIONS['build']['ldscript']}"
|
||||
)
|
||||
)
|
||||
|
||||
if "IGNORE_LIBS" in env:
|
||||
env['IGNORE_LIBS'] = [l.strip() for l in env['IGNORE_LIBS'].split(",")]
|
||||
|
@ -154,8 +154,10 @@ merge_ld_scripts(ldscript_path)
|
||||
generate_nvic_files()
|
||||
|
||||
# override ldscript by opencm3
|
||||
assert "-T" in env['LINKFLAGS']
|
||||
env['LINKFLAGS'][env['LINKFLAGS'].index("-T") + 1] = ldscript_path
|
||||
assert "LDSCRIPT_PATH" in env
|
||||
env.Replace(
|
||||
LDSCRIPT_PATH=ldscript_path
|
||||
)
|
||||
|
||||
libs = []
|
||||
env.VariantDir(
|
||||
|
@ -15,20 +15,13 @@ from platformio.util import get_serialports
|
||||
|
||||
|
||||
def ProcessGeneral(env):
|
||||
corelibs = []
|
||||
# specific linker script
|
||||
if "ldscript" in env.get("BOARD_OPTIONS", {}).get("build", {}):
|
||||
env.Append(
|
||||
LINKFLAGS=["-T", join(
|
||||
"$PIOHOME_DIR", "packages", "ldscripts",
|
||||
"${BOARD_OPTIONS['build']['ldscript']}")]
|
||||
)
|
||||
if "extra_flags" in env.get("BOARD_OPTIONS", {}).get("build", {}):
|
||||
env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}"))
|
||||
|
||||
if "BUILD_FLAGS" in env:
|
||||
env.MergeFlags(env['BUILD_FLAGS'])
|
||||
|
||||
corelibs = []
|
||||
if "FRAMEWORK" in env:
|
||||
if env['FRAMEWORK'] in ("arduino", "energia"):
|
||||
env.ConvertInoToCpp()
|
||||
@ -49,20 +42,27 @@ def BuildFirmware(env, corelibs):
|
||||
|
||||
# build dependent libs
|
||||
deplibs = firmenv.BuildDependentLibraries(join("$PROJECT_DIR", "src"))
|
||||
if deplibs:
|
||||
firmenv.Prepend(
|
||||
_LIBFLAGS="-Wl,--start-group "
|
||||
)
|
||||
|
||||
# append specified LD_SCRIPT
|
||||
if "LDSCRIPT_PATH" in firmenv:
|
||||
firmenv.Append(
|
||||
_LIBFLAGS=" -Wl,--end-group "
|
||||
LINKFLAGS=["-T", "$LDSCRIPT_PATH"]
|
||||
)
|
||||
|
||||
# enable "cyclic reference" for linker
|
||||
firmenv.Prepend(
|
||||
_LIBFLAGS="-Wl,--start-group ",
|
||||
)
|
||||
firmenv.Append(
|
||||
_LIBFLAGS=" -Wl,--end-group"
|
||||
)
|
||||
|
||||
firmenv.MergeFlags(getenv("PIOSRCBUILD_FLAGS", "$SRCBUILD_FLAGS"))
|
||||
|
||||
return firmenv.Program(
|
||||
join("$BUILD_DIR", "firmware"),
|
||||
[firmenv.GlobCXXFiles(vdir) for vdir in vdirs],
|
||||
LIBS=deplibs + corelibs,
|
||||
LIBS=corelibs + deplibs,
|
||||
LIBPATH="$BUILD_DIR",
|
||||
PROGSUFFIX=".elf"
|
||||
)
|
||||
|
Reference in New Issue
Block a user