From 293c2d5a5f85ebd774f57b26032dd9722253d2d8 Mon Sep 17 00:00:00 2001
From: slady <slady-github@slady.net>
Date: Thu, 20 Jun 2019 12:21:28 +0200
Subject: [PATCH] add #line directive to additional source files

improvement for https://github.com/arduino/arduino-builder/issues/323
---
 additional_sketch_files_copier.go | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/additional_sketch_files_copier.go b/additional_sketch_files_copier.go
index c992e820..1b5dee42 100644
--- a/additional_sketch_files_copier.go
+++ b/additional_sketch_files_copier.go
@@ -63,13 +63,15 @@ func (s *AdditionalSketchFilesCopier) Run(ctx *types.Context) error {
 			return i18n.WrapError(err)
 		}
 
-		bytes, err := ioutil.ReadFile(file.Name)
+		originalFileContent, err := ioutil.ReadFile(file.Name)
 		if err != nil {
 			return i18n.WrapError(err)
 		}
 
-		if targetFileChanged(bytes, targetFilePath) {
-			err := utils.WriteFileBytes(targetFilePath, bytes)
+		line := []byte("#line 1 " + utils.QuoteCppString(file.Name) + "\n")
+		changedFileContent := bytes.Join([][]byte{line,originalFileContent},[]byte{})
+		if targetFileChanged(changedFileContent, targetFilePath) {
+			err := utils.WriteFileBytes(targetFilePath, changedFileContent)
 			if err != nil {
 				return i18n.WrapError(err)
 			}