Fixed an issue when PlatformIO archives a library that does not contain C/C++ source files // Resolve #4019

This commit is contained in:
Ivan Kravets
2021-09-13 14:56:24 +03:00
parent dce5a39b10
commit 55408f6ccb
2 changed files with 17 additions and 9 deletions

View File

@@ -461,12 +461,22 @@ class LibBuilderBase(object):
for key in ("CPPPATH", "LIBPATH", "LIBS", "LINKFLAGS"): for key in ("CPPPATH", "LIBPATH", "LIBS", "LINKFLAGS"):
self.env.PrependUnique(**{key: lb.env.get(key)}) self.env.PrependUnique(**{key: lb.env.get(key)})
if self.lib_archive: do_not_archive = not self.lib_archive
libs.append( if not do_not_archive:
self.env.BuildLibrary(self.build_dir, self.src_dir, self.src_filter) nodes = self.env.CollectBuildFiles(
self.build_dir, self.src_dir, self.src_filter
) )
else: if nodes:
libs.append(
self.env.BuildLibrary(
self.build_dir, self.src_dir, self.src_filter, nodes
)
)
else:
do_not_archive = True
if do_not_archive:
self.env.BuildSources(self.build_dir, self.src_dir, self.src_filter) self.env.BuildSources(self.build_dir, self.src_dir, self.src_filter)
return libs return libs

View File

@@ -346,12 +346,10 @@ def BuildFrameworks(env, frameworks):
env.Exit(1) env.Exit(1)
def BuildLibrary(env, variant_dir, src_dir, src_filter=None): def BuildLibrary(env, variant_dir, src_dir, src_filter=None, nodes=None):
env.ProcessUnFlags(env.get("BUILD_UNFLAGS")) env.ProcessUnFlags(env.get("BUILD_UNFLAGS"))
nodes = env.CollectBuildFiles(variant_dir, src_dir, src_filter) nodes = nodes or env.CollectBuildFiles(variant_dir, src_dir, src_filter)
if nodes: return env.StaticLibrary(env.subst(variant_dir), nodes)
return env.StaticLibrary(env.subst(variant_dir), nodes)
return env.BuildSources(variant_dir, src_dir, src_filter)
def BuildSources(env, variant_dir, src_dir, src_filter=None): def BuildSources(env, variant_dir, src_dir, src_filter=None):