forked from platformio/platformio-core
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:
|
if "UPLOAD_SPEED" not in env:
|
||||||
env.Replace(
|
env.Replace(
|
||||||
UPLOAD_SPEED="${BOARD_OPTIONS['upload'].get('speed', None)}")
|
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:
|
if "IGNORE_LIBS" in env:
|
||||||
env['IGNORE_LIBS'] = [l.strip() for l in env['IGNORE_LIBS'].split(",")]
|
env['IGNORE_LIBS'] = [l.strip() for l in env['IGNORE_LIBS'].split(",")]
|
||||||
|
@ -154,8 +154,10 @@ merge_ld_scripts(ldscript_path)
|
|||||||
generate_nvic_files()
|
generate_nvic_files()
|
||||||
|
|
||||||
# override ldscript by opencm3
|
# override ldscript by opencm3
|
||||||
assert "-T" in env['LINKFLAGS']
|
assert "LDSCRIPT_PATH" in env
|
||||||
env['LINKFLAGS'][env['LINKFLAGS'].index("-T") + 1] = ldscript_path
|
env.Replace(
|
||||||
|
LDSCRIPT_PATH=ldscript_path
|
||||||
|
)
|
||||||
|
|
||||||
libs = []
|
libs = []
|
||||||
env.VariantDir(
|
env.VariantDir(
|
||||||
|
@ -15,20 +15,13 @@ from platformio.util import get_serialports
|
|||||||
|
|
||||||
|
|
||||||
def ProcessGeneral(env):
|
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", {}):
|
if "extra_flags" in env.get("BOARD_OPTIONS", {}).get("build", {}):
|
||||||
env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}"))
|
env.MergeFlags(env.subst("${BOARD_OPTIONS['build']['extra_flags']}"))
|
||||||
|
|
||||||
if "BUILD_FLAGS" in env:
|
if "BUILD_FLAGS" in env:
|
||||||
env.MergeFlags(env['BUILD_FLAGS'])
|
env.MergeFlags(env['BUILD_FLAGS'])
|
||||||
|
|
||||||
|
corelibs = []
|
||||||
if "FRAMEWORK" in env:
|
if "FRAMEWORK" in env:
|
||||||
if env['FRAMEWORK'] in ("arduino", "energia"):
|
if env['FRAMEWORK'] in ("arduino", "energia"):
|
||||||
env.ConvertInoToCpp()
|
env.ConvertInoToCpp()
|
||||||
@ -49,20 +42,27 @@ def BuildFirmware(env, corelibs):
|
|||||||
|
|
||||||
# build dependent libs
|
# build dependent libs
|
||||||
deplibs = firmenv.BuildDependentLibraries(join("$PROJECT_DIR", "src"))
|
deplibs = firmenv.BuildDependentLibraries(join("$PROJECT_DIR", "src"))
|
||||||
if deplibs:
|
|
||||||
firmenv.Prepend(
|
# append specified LD_SCRIPT
|
||||||
_LIBFLAGS="-Wl,--start-group "
|
if "LDSCRIPT_PATH" in firmenv:
|
||||||
)
|
|
||||||
firmenv.Append(
|
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"))
|
firmenv.MergeFlags(getenv("PIOSRCBUILD_FLAGS", "$SRCBUILD_FLAGS"))
|
||||||
|
|
||||||
return firmenv.Program(
|
return firmenv.Program(
|
||||||
join("$BUILD_DIR", "firmware"),
|
join("$BUILD_DIR", "firmware"),
|
||||||
[firmenv.GlobCXXFiles(vdir) for vdir in vdirs],
|
[firmenv.GlobCXXFiles(vdir) for vdir in vdirs],
|
||||||
LIBS=deplibs + corelibs,
|
LIBS=corelibs + deplibs,
|
||||||
LIBPATH="$BUILD_DIR",
|
LIBPATH="$BUILD_DIR",
|
||||||
PROGSUFFIX=".elf"
|
PROGSUFFIX=".elf"
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user