forked from platformio/platformio-core
Merge branch 'hotfix/v3.5.4' into develop
* hotfix/v3.5.4: Improve removing of default build flags using `build_unflags` option // Resolve #1712 Export ``LIBS``, ``LIBPATH``, and ``LINKFLAGS`` data from project dependent libraries to the global build environment Replace "env" pattern by "sysenv" in "platformio.ini" // Resolve #1705
This commit is contained in:
commit
e21ac05e71
5 files changed
+42
-12
No files matched your search
@@ -824,7 +824,7 @@ def GetLibBuilders(env): # pylint: disable=too-many-branches
|
||||
return items
|
||||
|
||||
|
||||
def BuildProjectLibraries(env):
|
||||
def ConfigureProjectLibBuilder(env):
|
||||
|
||||
def correct_found_libs(lib_builders):
|
||||
# build full dependency graph
|
||||
@@ -879,8 +879,7 @@ def BuildProjectLibraries(env):
|
||||
else:
|
||||
print "No dependencies"
|
||||
|
||||
libs = project.build()
|
||||
return dict(LIBS=libs, CPPPATH=project.env.get("CPPPATH"))
|
||||
return project
|
||||
|
||||
|
||||
def exists(_):
|
||||
@@ -889,5 +888,5 @@ def exists(_):
|
||||
|
||||
def generate(env):
|
||||
env.AddMethod(GetLibBuilders)
|
||||
env.AddMethod(BuildProjectLibraries)
|
||||
env.AddMethod(ConfigureProjectLibBuilder)
|
||||
return env
|
||||
@@ -42,9 +42,16 @@ def scons_patched_match_splitext(path, suffixes=None):
|
||||
|
||||
|
||||
def _build_project_deps(env):
|
||||
deps = env.BuildProjectLibraries()
|
||||
# prepend dependent libs before built-in
|
||||
env.Prepend(LIBS=deps['LIBS'])
|
||||
project_lib_builder = env.ConfigureProjectLibBuilder()
|
||||
|
||||
# append project libs to the beginning of list
|
||||
env.Prepend(LIBS=project_lib_builder.build())
|
||||
# append extra linker related options from libs
|
||||
env.AppendUnique(
|
||||
**{
|
||||
key: project_lib_builder.env.get(key)
|
||||
for key in ("LIBS", "LIBPATH", "LINKFLAGS")
|
||||
})
|
||||
|
||||
if "__test" in COMMAND_LINE_TARGETS:
|
||||
env.ProcessTest()
|
||||
@@ -57,7 +64,7 @@ def _build_project_deps(env):
|
||||
env.get("SRC_FILTER"))
|
||||
|
||||
# CPPPATH from dependencies
|
||||
projenv.PrependUnique(CPPPATH=deps['CPPPATH'])
|
||||
projenv.PrependUnique(CPPPATH=project_lib_builder.env.get("CPPPATH"))
|
||||
# extra build flags from `platformio.ini`
|
||||
projenv.ProcessFlags(env.get("SRC_BUILD_FLAGS"))
|
||||
|
||||
@@ -184,7 +191,18 @@ def ProcessFlags(env, flags): # pylint: disable=too-many-branches
|
||||
def ProcessUnFlags(env, flags):
|
||||
if not flags:
|
||||
return
|
||||
for key, unflags in env.ParseFlagsExtended(flags).items():
|
||||
parsed = env.ParseFlagsExtended(flags)
|
||||
|
||||
# get all flags and copy them to each "*FLAGS" variable
|
||||
all_flags = []
|
||||
for key, unflags in parsed.items():
|
||||
if key.endswith("FLAGS"):
|
||||
all_flags.extend(unflags)
|
||||
for key, unflags in parsed.items():
|
||||
if key.endswith("FLAGS"):
|
||||
parsed[key].extend(all_flags)
|
||||
|
||||
for key, unflags in parsed.items():
|
||||
for unflag in unflags:
|
||||
for current in env.get(key, []):
|
||||
conditions = [
|
||||
|
||||
Reference in new issue
Block a user