Skip to content

Commit aa33373

Browse files
committed
Split composed sketch and preprocessed sketch into different files
1 parent 2d449aa commit aa33373

File tree

3 files changed

+7
-14
lines changed

3 files changed

+7
-14
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 & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,6 @@ func (b *Builder) prepareSketchBuildPath() error {
6161
if err := destFileUnpreprocessed.WriteFile([]byte(mergedSource)); err != nil {
6262
return err
6363
}
64-
65-
destFile := b.sketchBuildPath.Join(b.sketch.MainFile.Base() + ".cpp")
66-
if err := destFileUnpreprocessed.CopyTo(destFile); err != nil {
67-
return err
68-
}
6964
}
7065

7166
if err := b.sketchCopyAdditionalFiles(b.sketchBuildPath, b.sourceOverrides); err != nil {

0 commit comments

Comments
 (0)