Skip to content

Commit 18335b6

Browse files
committed
Split composed sketch and preprocessed sketch into different files
1 parent a838351 commit 18335b6

File tree

3 files changed

+7
-15
lines changed

3 files changed

+7
-15
lines changed

internal/arduino/builder/internal/detector/detector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func (l *SketchLibrariesDetector) findIncludes(
289289
sourceFileQueue := &uniqueSourceFileQueue{}
290290

291291
if !l.useCachedLibrariesResolution {
292-
mergedfile, err := makeSourceFile(sketchBuildPath, sketchBuildPath, paths.New(sketch.MainFile.Base()+".cpp"))
292+
mergedfile, err := makeSourceFile(sketchBuildPath, sketchBuildPath, paths.New(sketch.MainFile.Base()+".cpp.merged"))
293293
if err != nil {
294294
return err
295295
}

internal/arduino/builder/internal/preprocessor/ctags.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,17 @@ func PreprocessSketchWithCtags(
5757

5858
// Check if the preprocessed file is already up-to-date
5959
unpreprocessedSourceFile := buildPath.Join("sketch", sketch.MainFile.Base()+".cpp.merged")
60-
sourceFile := buildPath.Join("sketch", sketch.MainFile.Base()+".cpp")
60+
preprocessedSourceFile := buildPath.Join("sketch", sketch.MainFile.Base()+".cpp")
6161
if unpreprocessedStat, err := unpreprocessedSourceFile.Stat(); err != nil {
6262
return nil, fmt.Errorf("%s: %w", i18n.Tr("unable to open unpreprocessed source file"), err)
63-
} else if sourceStat, err := sourceFile.Stat(); err != nil {
64-
return nil, fmt.Errorf("%s: %w", i18n.Tr("unable to open source file"), err)
65-
} else if unpreprocessedStat.ModTime().Before(sourceStat.ModTime()) {
63+
} else if sourceStat, err := preprocessedSourceFile.Stat(); err == nil && unpreprocessedStat.ModTime().Before(sourceStat.ModTime()) {
6664
fmt.Fprintln(stdout, i18n.Tr("Sketch is unchanged, skipping preprocessing."))
6765
res := &runner.Result{Stdout: stdout.Bytes(), Stderr: stderr.Bytes()}
6866
return res, nil
6967
}
7068

7169
// Run GCC preprocessor
72-
result := GCC(sourceFile, ctagsTarget, includes, buildProperties).Run(ctx)
70+
result := GCC(unpreprocessedSourceFile, ctagsTarget, includes, buildProperties).Run(ctx)
7371
stdout.Write(result.Stdout)
7472
stderr.Write(result.Stderr)
7573
if err := result.Error; err != nil {
@@ -81,7 +79,7 @@ func PreprocessSketchWithCtags(
8179
fmt.Fprintf(stderr, "%s: %s",
8280
i18n.Tr("An error occurred adding prototypes"),
8381
i18n.Tr("the compilation database may be incomplete or inaccurate"))
84-
if err := sourceFile.CopyTo(ctagsTarget); err != nil {
82+
if err := unpreprocessedSourceFile.CopyTo(ctagsTarget); err != nil {
8583
return &runner.Result{Args: result.Args, Stdout: stdout.Bytes(), Stderr: stderr.Bytes()}, err
8684
}
8785
}
@@ -114,7 +112,7 @@ func PreprocessSketchWithCtags(
114112

115113
// Add prototypes to the original sketch source
116114
var source string
117-
if sourceData, err := sourceFile.ReadFile(); err == nil {
115+
if sourceData, err := unpreprocessedSourceFile.ReadFile(); err == nil {
118116
source = string(sourceData)
119117
} else {
120118
return &runner.Result{Args: result.Args, Stdout: stdout.Bytes(), Stderr: stderr.Bytes()}, err
@@ -148,7 +146,7 @@ func PreprocessSketchWithCtags(
148146
}
149147

150148
// Write back arduino-preprocess output to the sourceFile
151-
err = sourceFile.WriteFile([]byte(preprocessedSource))
149+
err = preprocessedSourceFile.WriteFile([]byte(preprocessedSource))
152150
return &runner.Result{Args: result.Args, Stdout: stdout.Bytes(), Stderr: stderr.Bytes()}, err
153151
}
154152

internal/arduino/builder/sketch.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,6 @@ func (b *Builder) prepareSketchBuildPath() error {
6262
if err := destFileUnpreprocessed.WriteFile([]byte(mergedSource)); err != nil {
6363
return err
6464
}
65-
66-
b.logger.Warn(i18n.Tr("Generating sketch files in build path"))
67-
destFile := b.sketchBuildPath.Join(b.sketch.MainFile.Base() + ".cpp")
68-
if err := destFile.WriteFile([]byte(mergedSource)); err != nil {
69-
return err
70-
}
7165
} else {
7266
b.logger.Warn(fmt.Sprintf("%s %s", i18n.Tr("Generating sketch files in build path..."), i18n.Tr("(sketch unchanged)")))
7367
}

0 commit comments

Comments
 (0)