Skip to content

Commit a9cfb1c

Browse files
make BuildLibraries a method recevier of arduino/builder
1 parent 71557af commit a9cfb1c

File tree

2 files changed

+41
-60
lines changed

2 files changed

+41
-60
lines changed

arduino/builder/libraries.go

Lines changed: 40 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020

2121
"github.com/arduino/arduino-cli/arduino/builder/compilation"
2222
"github.com/arduino/arduino-cli/arduino/builder/cpp"
23-
"github.com/arduino/arduino-cli/arduino/builder/logger"
2423
"github.com/arduino/arduino-cli/arduino/builder/progress"
2524
"github.com/arduino/arduino-cli/arduino/builder/utils"
2625
"github.com/arduino/arduino-cli/arduino/libraries"
@@ -37,31 +36,25 @@ var (
3736
FpuCflag = "fpu"
3837
)
3938

40-
// LibrariesBuilder fixdoc
41-
func LibrariesBuilder(
42-
librariesBuildPath *paths.Path,
43-
buildProperties *properties.Map,
39+
// BuildLibraries fixdoc
40+
func (b *Builder) BuildLibraries(
4441
includesFolders paths.PathList,
4542
importedLibraries libraries.List,
4643
onlyUpdateCompilationDatabase bool,
4744
compilationDatabase *compilation.Database,
48-
jobs int,
49-
builderLogger *logger.BuilderLogger,
5045
progress *progress.Struct, progressCB rpc.TaskProgressCB,
5146
) (paths.PathList, error) {
5247
includes := f.Map(includesFolders.AsStrings(), cpp.WrapWithHyphenI)
5348
libs := importedLibraries
5449

55-
if err := librariesBuildPath.MkdirAll(); err != nil {
50+
if err := b.librariesBuildPath.MkdirAll(); err != nil {
5651
return nil, errors.WithStack(err)
5752
}
5853

59-
librariesObjectFiles, err := compileLibraries(
60-
libs, librariesBuildPath, buildProperties, includes,
54+
librariesObjectFiles, err := b.compileLibraries(
55+
libs, includes,
6156
onlyUpdateCompilationDatabase,
6257
compilationDatabase,
63-
jobs,
64-
builderLogger,
6558
progress, progressCB,
6659
)
6760
if err != nil {
@@ -79,10 +72,9 @@ func directoryContainsFile(folder *paths.Path) bool {
7972
return false
8073
}
8174

82-
func findExpectedPrecompiledLibFolder(
75+
func (b *Builder) findExpectedPrecompiledLibFolder(
8376
library *libraries.Library,
8477
buildProperties *properties.Map,
85-
builderLogger *logger.BuilderLogger,
8678
) *paths.Path {
8779
mcu := buildProperties.Get("build.mcu")
8880
// Add fpu specifications if they exist
@@ -109,47 +101,43 @@ func findExpectedPrecompiledLibFolder(
109101
}
110102
}
111103

112-
builderLogger.Info(tr("Library %[1]s has been declared precompiled:", library.Name))
104+
b.logger.Info(tr("Library %[1]s has been declared precompiled:", library.Name))
113105

114106
// Try directory with full fpuSpecs first, if available
115107
if len(fpuSpecs) > 0 {
116108
fpuSpecs = strings.TrimRight(fpuSpecs, "-")
117109
fullPrecompDir := library.SourceDir.Join(mcu).Join(fpuSpecs)
118110
if fullPrecompDir.Exist() && directoryContainsFile(fullPrecompDir) {
119-
builderLogger.Info(tr("Using precompiled library in %[1]s", fullPrecompDir))
111+
b.logger.Info(tr("Using precompiled library in %[1]s", fullPrecompDir))
120112
return fullPrecompDir
121113
}
122-
builderLogger.Info(tr(`Precompiled library in "%[1]s" not found`, fullPrecompDir))
114+
b.logger.Info(tr(`Precompiled library in "%[1]s" not found`, fullPrecompDir))
123115
}
124116

125117
precompDir := library.SourceDir.Join(mcu)
126118
if precompDir.Exist() && directoryContainsFile(precompDir) {
127-
builderLogger.Info(tr("Using precompiled library in %[1]s", precompDir))
119+
b.logger.Info(tr("Using precompiled library in %[1]s", precompDir))
128120
return precompDir
129121
}
130-
builderLogger.Info(tr(`Precompiled library in "%[1]s" not found`, precompDir))
122+
b.logger.Info(tr(`Precompiled library in "%[1]s" not found`, precompDir))
131123
return nil
132124
}
133125

134-
func compileLibraries(
135-
libraries libraries.List, buildPath *paths.Path, buildProperties *properties.Map, includes []string,
126+
func (b *Builder) compileLibraries(
127+
libraries libraries.List, includes []string,
136128
onlyUpdateCompilationDatabase bool,
137129
compilationDatabase *compilation.Database,
138-
jobs int,
139-
builderLogger *logger.BuilderLogger,
140130
progress *progress.Struct, progressCB rpc.TaskProgressCB,
141131
) (paths.PathList, error) {
142132
progress.AddSubSteps(len(libraries))
143133
defer progress.RemoveSubSteps()
144134

145135
objectFiles := paths.NewPathList()
146136
for _, library := range libraries {
147-
libraryObjectFiles, err := compileLibrary(
148-
library, buildPath, buildProperties, includes,
137+
libraryObjectFiles, err := b.compileLibrary(
138+
library, includes,
149139
onlyUpdateCompilationDatabase,
150140
compilationDatabase,
151-
jobs,
152-
builderLogger,
153141
progress, progressCB,
154142
)
155143
if err != nil {
@@ -170,18 +158,16 @@ func compileLibraries(
170158
return objectFiles, nil
171159
}
172160

173-
func compileLibrary(
174-
library *libraries.Library, buildPath *paths.Path, buildProperties *properties.Map, includes []string,
161+
func (b *Builder) compileLibrary(
162+
library *libraries.Library, includes []string,
175163
onlyUpdateCompilationDatabase bool,
176164
compilationDatabase *compilation.Database,
177-
jobs int,
178-
builderLogger *logger.BuilderLogger,
179165
progress *progress.Struct, progressCB rpc.TaskProgressCB,
180166
) (paths.PathList, error) {
181-
if builderLogger.Verbose() {
182-
builderLogger.Info(tr(`Compiling library "%[1]s"`, library.Name))
167+
if b.logger.Verbose() {
168+
b.logger.Info(tr(`Compiling library "%[1]s"`, library.Name))
183169
}
184-
libraryBuildPath := buildPath.Join(library.DirName)
170+
libraryBuildPath := b.librariesBuildPath.Join(library.DirName)
185171

186172
if err := libraryBuildPath.MkdirAll(); err != nil {
187173
return nil, errors.WithStack(err)
@@ -190,15 +176,14 @@ func compileLibrary(
190176
objectFiles := paths.NewPathList()
191177

192178
if library.Precompiled {
193-
coreSupportPrecompiled := buildProperties.ContainsKey("compiler.libraries.ldflags")
194-
precompiledPath := findExpectedPrecompiledLibFolder(
179+
coreSupportPrecompiled := b.buildProperties.ContainsKey("compiler.libraries.ldflags")
180+
precompiledPath := b.findExpectedPrecompiledLibFolder(
195181
library,
196-
buildProperties,
197-
builderLogger,
182+
b.buildProperties,
198183
)
199184

200185
if !coreSupportPrecompiled {
201-
builderLogger.Info(tr("The platform does not support '%[1]s' for precompiled libraries.", "compiler.libraries.ldflags"))
186+
b.logger.Info(tr("The platform does not support '%[1]s' for precompiled libraries.", "compiler.libraries.ldflags"))
202187
} else if precompiledPath != nil {
203188
// Find all libraries in precompiledPath
204189
libs, err := precompiledPath.ReadDir()
@@ -217,8 +202,8 @@ func compileLibrary(
217202
}
218203
}
219204

220-
currLDFlags := buildProperties.Get("compiler.libraries.ldflags")
221-
buildProperties.Set("compiler.libraries.ldflags", currLDFlags+" \"-L"+precompiledPath.String()+"\" "+libsCmd+" ")
205+
currLDFlags := b.buildProperties.Get("compiler.libraries.ldflags")
206+
b.buildProperties.Set("compiler.libraries.ldflags", currLDFlags+" \"-L"+precompiledPath.String()+"\" "+libsCmd+" ")
222207

223208
// TODO: This codepath is just taken for .a with unusual names that would
224209
// be ignored by -L / -l methods.
@@ -239,24 +224,24 @@ func compileLibrary(
239224

240225
if library.Layout == libraries.RecursiveLayout {
241226
libObjectFiles, err := utils.CompileFilesRecursive(
242-
library.SourceDir, libraryBuildPath, buildProperties, includes,
227+
library.SourceDir, libraryBuildPath, b.buildProperties, includes,
243228
onlyUpdateCompilationDatabase,
244229
compilationDatabase,
245-
jobs,
246-
builderLogger,
230+
b.jobs,
231+
b.logger,
247232
progress, progressCB,
248233
)
249234
if err != nil {
250235
return nil, errors.WithStack(err)
251236
}
252237
if library.DotALinkage {
253238
archiveFile, verboseInfo, err := utils.ArchiveCompiledFiles(
254-
libraryBuildPath, paths.New(library.DirName+".a"), libObjectFiles, buildProperties,
255-
onlyUpdateCompilationDatabase, builderLogger.Verbose(),
256-
builderLogger.Stdout(), builderLogger.Stderr(),
239+
libraryBuildPath, paths.New(library.DirName+".a"), libObjectFiles, b.buildProperties,
240+
onlyUpdateCompilationDatabase, b.logger.Verbose(),
241+
b.logger.Stdout(), b.logger.Stderr(),
257242
)
258-
if builderLogger.Verbose() {
259-
builderLogger.Info(string(verboseInfo))
243+
if b.logger.Verbose() {
244+
b.logger.Info(string(verboseInfo))
260245
}
261246
if err != nil {
262247
return nil, errors.WithStack(err)
@@ -270,11 +255,11 @@ func compileLibrary(
270255
includes = append(includes, cpp.WrapWithHyphenI(library.UtilityDir.String()))
271256
}
272257
libObjectFiles, err := utils.CompileFiles(
273-
library.SourceDir, libraryBuildPath, buildProperties, includes,
258+
library.SourceDir, libraryBuildPath, b.buildProperties, includes,
274259
onlyUpdateCompilationDatabase,
275260
compilationDatabase,
276-
jobs,
277-
builderLogger,
261+
b.jobs,
262+
b.logger,
278263
progress, progressCB,
279264
)
280265
if err != nil {
@@ -285,11 +270,11 @@ func compileLibrary(
285270
if library.UtilityDir != nil {
286271
utilityBuildPath := libraryBuildPath.Join("utility")
287272
utilityObjectFiles, err := utils.CompileFiles(
288-
library.UtilityDir, utilityBuildPath, buildProperties, includes,
273+
library.UtilityDir, utilityBuildPath, b.buildProperties, includes,
289274
onlyUpdateCompilationDatabase,
290275
compilationDatabase,
291-
jobs,
292-
builderLogger,
276+
b.jobs,
277+
b.logger,
293278
progress, progressCB,
294279
)
295280
if err != nil {

legacy/builder/builder.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,15 +100,11 @@ func (s *Builder) Run(ctx *types.Context) error {
100100
}),
101101

102102
types.BareCommand(func(ctx *types.Context) error {
103-
librariesObjectFiles, err := builder.LibrariesBuilder(
104-
ctx.Builder.GetLibrariesBuildPath(),
105-
ctx.Builder.GetBuildProperties(),
103+
librariesObjectFiles, err := ctx.Builder.BuildLibraries(
106104
ctx.SketchLibrariesDetector.IncludeFolders(),
107105
ctx.SketchLibrariesDetector.ImportedLibraries(),
108106
ctx.OnlyUpdateCompilationDatabase,
109107
ctx.CompilationDatabase,
110-
ctx.Builder.Jobs(),
111-
ctx.BuilderLogger,
112108
&ctx.Progress, ctx.ProgressCB,
113109
)
114110
if err != nil {

0 commit comments

Comments
 (0)