From 55408f6ccb9c90a7e0abaea548b688bd780639dc Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 13 Sep 2021 14:56:24 +0300 Subject: [PATCH] Fixed an issue when PlatformIO archives a library that does not contain C/C++ source files // Resolve #4019 --- platformio/builder/tools/piolib.py | 18 ++++++++++++++---- platformio/builder/tools/platformio.py | 8 +++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index 425cbc01..186485d2 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -461,12 +461,22 @@ class LibBuilderBase(object): for key in ("CPPPATH", "LIBPATH", "LIBS", "LINKFLAGS"): self.env.PrependUnique(**{key: lb.env.get(key)}) - if self.lib_archive: - libs.append( - self.env.BuildLibrary(self.build_dir, self.src_dir, self.src_filter) + do_not_archive = not self.lib_archive + if not do_not_archive: + 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) + return libs diff --git a/platformio/builder/tools/platformio.py b/platformio/builder/tools/platformio.py index 304c5bae..a9355c49 100644 --- a/platformio/builder/tools/platformio.py +++ b/platformio/builder/tools/platformio.py @@ -346,12 +346,10 @@ def BuildFrameworks(env, frameworks): 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")) - nodes = env.CollectBuildFiles(variant_dir, src_dir, src_filter) - if nodes: - return env.StaticLibrary(env.subst(variant_dir), nodes) - return env.BuildSources(variant_dir, src_dir, src_filter) + nodes = nodes or env.CollectBuildFiles(variant_dir, src_dir, src_filter) + return env.StaticLibrary(env.subst(variant_dir), nodes) def BuildSources(env, variant_dir, src_dir, src_filter=None):