From 10dd714e6e750914819816360bb61dd312cdf9c7 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 24 Jan 2024 17:18:32 +0100 Subject: [PATCH] Allow compile of sketch-vendored libraries --- internal/arduino/builder/builder.go | 2 +- .../arduino/builder/internal/detector/detector.go | 3 ++- internal/arduino/libraries/librariesresolver/cpp.go | 12 ++++++++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/arduino/builder/builder.go b/internal/arduino/builder/builder.go index 40ca74e44d2..bf6af5beedc 100644 --- a/internal/arduino/builder/builder.go +++ b/internal/arduino/builder/builder.go @@ -189,7 +189,7 @@ func NewBuilder( logger := logger.New(stdout, stderr, verbose, warningsLevel) libsManager, libsResolver, verboseOut, err := detector.LibrariesLoader( useCachedLibrariesResolution, librariesManager, - builtInLibrariesDirs, libraryDirs, otherLibrariesDirs, + sk, builtInLibrariesDirs, libraryDirs, otherLibrariesDirs, actualPlatform, targetPlatform, ) if err != nil { diff --git a/internal/arduino/builder/internal/detector/detector.go b/internal/arduino/builder/internal/detector/detector.go index 9285846fcf1..3536573f509 100644 --- a/internal/arduino/builder/internal/detector/detector.go +++ b/internal/arduino/builder/internal/detector/detector.go @@ -590,6 +590,7 @@ func (f *sourceFile) DepfilePath() *paths.Path { func LibrariesLoader( useCachedLibrariesResolution bool, librariesManager *librariesmanager.LibrariesManager, + sk *sketch.Sketch, builtInLibrariesDirs *paths.Path, libraryDirs, otherLibrariesDirs paths.PathList, actualPlatform, targetPlatform *cores.PlatformRelease, ) (*librariesmanager.LibrariesManager, *librariesresolver.Cpp, []byte, error) { @@ -660,7 +661,7 @@ func LibrariesLoader( } allLibs := lm.FindAllInstalled() - resolver := librariesresolver.NewCppResolver(allLibs, targetPlatform, actualPlatform) + resolver := librariesresolver.NewCppResolver(allLibs, sk, targetPlatform, actualPlatform) return lm, resolver, verboseOut.Bytes(), nil } diff --git a/internal/arduino/libraries/librariesresolver/cpp.go b/internal/arduino/libraries/librariesresolver/cpp.go index 7f11f8a66c8..88cd20d2f7d 100644 --- a/internal/arduino/libraries/librariesresolver/cpp.go +++ b/internal/arduino/libraries/librariesresolver/cpp.go @@ -22,6 +22,7 @@ import ( "github.com/arduino/arduino-cli/internal/arduino/cores" "github.com/arduino/arduino-cli/internal/arduino/libraries" + "github.com/arduino/arduino-cli/internal/arduino/sketch" "github.com/arduino/arduino-cli/internal/arduino/utils" "github.com/arduino/arduino-cli/internal/i18n" "github.com/schollz/closestmatch" @@ -36,7 +37,7 @@ type Cpp struct { var tr = i18n.Tr // NewCppResolver creates a new Cpp resolver -func NewCppResolver(allLibs []*libraries.Library, targetPlatform, actualPlatform *cores.PlatformRelease) *Cpp { +func NewCppResolver(allLibs []*libraries.Library, sk *sketch.Sketch, targetPlatform, actualPlatform *cores.PlatformRelease) *Cpp { resolver := &Cpp{ headers: map[string]libraries.List{}, } @@ -46,10 +47,17 @@ func NewCppResolver(allLibs []*libraries.Library, targetPlatform, actualPlatform if actualPlatform != targetPlatform { resolver.ScanPlatformLibraries(allLibs, actualPlatform) } - + resolver.ScanSketchLibraries(sk) return resolver } +// ScanSketchLibraries loads libraries bundled with the sketch +func (resolver *Cpp) ScanSketchLibraries(sk *sketch.Sketch) { + for _, lib := range sk.VendoredLibraries() { + _ = resolver.ScanLibrary(lib) + } +} + // ScanIDEBuiltinLibraries reads ide-builtin librariers loaded in the LibrariesManager to find // and cache all C++ headers for later retrieval. func (resolver *Cpp) ScanIDEBuiltinLibraries(allLibs []*libraries.Library) {