From e76de57f6b9d44d25b4d8d24c86c9127b7c13d43 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 31 Oct 2014 11:39:36 +0100 Subject: [PATCH] Fixed parsing of dependency files (.d) to improve sketch build speed Close #2255 --- app/src/processing/app/debug/Compiler.java | 21 +++++++++++++++--- .../processing/app/debug/CompilerTest.java | 22 +++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100755 app/test/processing/app/debug/CompilerTest.java diff --git a/app/src/processing/app/debug/Compiler.java b/app/src/processing/app/debug/Compiler.java index 8a38db7e90a..41cb47b4325 100644 --- a/app/src/processing/app/debug/Compiler.java +++ b/app/src/processing/app/debug/Compiler.java @@ -275,6 +275,23 @@ private List compileFiles(File outputPath, File sourcePath, return objectPaths; } + /** + * Strip escape sequences used in makefile dependency files (.d) + * https://github.com/arduino/Arduino/issues/2255#issuecomment-57645845 + * + * @param dep + * @return + */ + protected static String unescapeDepFile(String line) { + // Replaces: "\\" -> "\" + // Replaces: "\ " -> " " + // Replaces: "\#" -> "#" + line = line.replaceAll("\\\\([ #\\\\])", "$1"); + // Replaces: "$$" -> "$" + line = line.replace("$$", "$"); + return line; + } + private boolean isAlreadyCompiled(File src, File obj, File dep, Map prefs) { boolean ret=true; try { @@ -293,9 +310,7 @@ private boolean isAlreadyCompiled(File src, File obj, File dep, Map