@@ -23,6 +23,7 @@ import (
23
23
"fmt"
24
24
"os/exec"
25
25
"regexp"
26
+ "slices"
26
27
"strings"
27
28
"time"
28
29
@@ -60,6 +61,7 @@ type SketchLibrariesDetector struct {
60
61
logger * logger.BuilderLogger
61
62
diagnosticStore * diagnostics.Store
62
63
preRunner * runner.Runner
64
+ detectedChangeInLibraries bool
63
65
}
64
66
65
67
// NewSketchLibrariesDetector todo
@@ -192,6 +194,12 @@ func (l *SketchLibrariesDetector) IncludeFolders() paths.PathList {
192
194
return l .includeFolders
193
195
}
194
196
197
+ // IncludeFoldersChanged returns true if the include folders list changed
198
+ // from the previous compile.
199
+ func (l * SketchLibrariesDetector ) IncludeFoldersChanged () bool {
200
+ return l .detectedChangeInLibraries
201
+ }
202
+
195
203
// addIncludeFolder add the given folder to the include path.
196
204
func (l * SketchLibrariesDetector ) addIncludeFolder (folder * paths.Path ) {
197
205
l .includeFolders = append (l .includeFolders , folder )
@@ -237,17 +245,21 @@ func (l *SketchLibrariesDetector) findIncludes(
237
245
platformArch string ,
238
246
jobs int ,
239
247
) error {
240
- librariesResolutionCache := buildPath .Join ("libraries.cache" )
241
- if l .useCachedLibrariesResolution && librariesResolutionCache .Exist () {
242
- d , err := librariesResolutionCache .ReadFile ()
248
+ librariesResolutionCachePath := buildPath .Join ("libraries.cache" )
249
+ var cachedIncludeFolders paths.PathList
250
+ if librariesResolutionCachePath .Exist () {
251
+ d , err := librariesResolutionCachePath .ReadFile ()
243
252
if err != nil {
244
253
return err
245
254
}
246
- if err := json .Unmarshal (d , & l . includeFolders ); err != nil {
255
+ if err := json .Unmarshal (d , & cachedIncludeFolders ); err != nil {
247
256
return err
248
257
}
258
+ }
259
+ if l .useCachedLibrariesResolution && librariesResolutionCachePath .Exist () {
260
+ l .includeFolders = cachedIncludeFolders
249
261
if l .logger .VerbosityLevel () == logger .VerbosityVerbose {
250
- l .logger .Info ("Using cached library discovery: " + librariesResolutionCache .String ())
262
+ l .logger .Info ("Using cached library discovery: " + librariesResolutionCachePath .String ())
251
263
}
252
264
return nil
253
265
}
@@ -329,10 +341,12 @@ func (l *SketchLibrariesDetector) findIncludes(
329
341
330
342
if d , err := json .Marshal (l .includeFolders ); err != nil {
331
343
return err
332
- } else if err := librariesResolutionCache .WriteFile (d ); err != nil {
344
+ } else if err := librariesResolutionCachePath .WriteFile (d ); err != nil {
333
345
return err
334
346
}
335
-
347
+ l .detectedChangeInLibraries = ! slices .Equal (
348
+ cachedIncludeFolders .AsStrings (),
349
+ l .includeFolders .AsStrings ())
336
350
return nil
337
351
}
338
352
0 commit comments