From e78bf51f68dd57554b3c7d9b0ad7518fda552b58 Mon Sep 17 00:00:00 2001 From: Pierre Baudin <34721711+pvbaudin@users.noreply.github.com> Date: Thu, 16 Nov 2023 08:44:32 -0800 Subject: [PATCH] Issue #4762 compiledb include toolchains with user defined libs (#4763) Issue #4762 separated out the optional addition of toolchains to compiledb include paths and added a call to it in the library building step for user defined libraries, allowing the automatic inclusion of toolchains in private lib compiledb generation --- platformio/builder/tools/piobuild.py | 8 ++++++++ platformio/builder/tools/piolib.py | 2 ++ 2 files changed, 10 insertions(+) diff --git a/platformio/builder/tools/piobuild.py b/platformio/builder/tools/piobuild.py index 74725a0206..f3f583c509 100644 --- a/platformio/builder/tools/piobuild.py +++ b/platformio/builder/tools/piobuild.py @@ -126,6 +126,12 @@ def _append_pio_macros(): # remove specified flags env.ProcessUnFlags(env.get("BUILD_UNFLAGS")) + env.ProcessCompileDbToolchainOption() + + +def ProcessCompileDbToolchainOption( + env, +): # separated out to selectively add to lib build step if "compiledb" in COMMAND_LINE_TARGETS: # Resolve absolute path of toolchain for cmd in ("CC", "CXX", "AS"): @@ -138,6 +144,7 @@ def _append_pio_macros(): ) if env.get("COMPILATIONDB_INCLUDE_TOOLCHAIN"): + print("Warning! `COMPILATIONDB_INCLUDE_TOOLCHAIN` is scoping") for scope, includes in env.DumpIntegrationIncludes().items(): if scope in ("toolchain",): env.Append(CPPPATH=includes) @@ -376,6 +383,7 @@ def generate(env): env.AddMethod(GetBuildType) env.AddMethod(BuildProgram) env.AddMethod(ProcessProgramDeps) + env.AddMethod(ProcessCompileDbToolchainOption) env.AddMethod(ProcessProjectDeps) env.AddMethod(ParseFlagsExtended) env.AddMethod(ProcessFlags) diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index dee1d5bcef..a68336809d 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -478,6 +478,8 @@ def build(self): self.env.PrependUnique(CPPPATH=self.get_include_dirs()) + self.env.ProcessCompileDbToolchainOption() + if self.lib_ldf_mode == "off": for lb in self.env.GetLibBuilders(): if self == lb or not lb.is_built: