diff --git a/arduino-core/src/processing/app/debug/Compiler.java b/arduino-core/src/processing/app/debug/Compiler.java index 1bc0f907479..2f37524c233 100644 --- a/arduino-core/src/processing/app/debug/Compiler.java +++ b/arduino-core/src/processing/app/debug/Compiler.java @@ -34,6 +34,8 @@ import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; +import java.util.Date; +import java.util.GregorianCalendar; import cc.arduino.packages.BoardPort; import cc.arduino.packages.Uploader; @@ -416,6 +418,9 @@ public boolean compile(boolean _verbose) throws RunnerException, PreferencesMapE // 4. link it all together into the .elf file progressListener.progress(60); compileLink(); + if (prefs.get("build.elfpatch") != null) { + runRecipe("recipe.elfpatch.pattern"); + } // 5. run objcopy to generate output files progressListener.progress(75); @@ -542,6 +547,17 @@ private PreferencesMap createBuildPreferences(String _buildPath, p.put("build.variant.path", ""); } + // Build Time + Date d = new Date(); + GregorianCalendar cal = new GregorianCalendar(); + long current = d.getTime()/1000; + long timezone = cal.get(cal.ZONE_OFFSET)/1000; + long daylight = cal.get(cal.DST_OFFSET)/1000; + p.put("extra.time.utc", Long.toString(current)); + p.put("extra.time.local", Long.toString(current + timezone + daylight)); + p.put("extra.time.zone", Long.toString(timezone)); + p.put("extra.time.dst", Long.toString(daylight)); + return p; } @@ -1134,6 +1150,7 @@ void runActions(String recipeClass, PreferencesMap prefs) throws RunnerException void runRecipe(String recipe) throws RunnerException, PreferencesMapException { PreferencesMap dict = new PreferencesMap(prefs); dict.put("ide_version", "" + BaseNoGui.REVISION); + dict.put("sketch_path", sketch.getFolder().getAbsolutePath()); String[] cmdArray; String cmd = prefs.getOrExcept(recipe);