diff --git a/app/src/cc/arduino/view/preferences/Preferences.java b/app/src/cc/arduino/view/preferences/Preferences.java index f833024e9dc..ba1837f2623 100644 --- a/app/src/cc/arduino/view/preferences/Preferences.java +++ b/app/src/cc/arduino/view/preferences/Preferences.java @@ -128,6 +128,7 @@ private void initComponents() { enableCodeFoldingBox = new javax.swing.JCheckBox(); verifyUploadBox = new javax.swing.JCheckBox(); externalEditorBox = new javax.swing.JCheckBox(); + cacheCompiledCore = new javax.swing.JCheckBox(); checkUpdatesBox = new javax.swing.JCheckBox(); updateExtensionBox = new javax.swing.JCheckBox(); saveVerifyUploadBox = new javax.swing.JCheckBox(); @@ -244,6 +245,9 @@ public void mouseEntered(java.awt.event.MouseEvent evt) { externalEditorBox.setText(tr("Use external editor")); checkboxesContainer.add(externalEditorBox); + cacheCompiledCore.setText(tr("Aggressively cache compiled core")); + checkboxesContainer.add(cacheCompiledCore); + checkUpdatesBox.setText(tr("Check for updates on startup")); checkboxesContainer.add(checkUpdatesBox); @@ -678,6 +682,7 @@ private void autoScaleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {// private javax.swing.JCheckBox enableCodeFoldingBox; private javax.swing.JButton extendedAdditionalUrlFieldWindow; private javax.swing.JCheckBox externalEditorBox; + private javax.swing.JCheckBox cacheCompiledCore; private javax.swing.JTextField fontSizeField; private javax.swing.JLabel fontSizeLabel; private javax.swing.JLabel jLabel1; @@ -772,6 +777,8 @@ private void savePreferencesData() { PreferencesData.setBoolean("editor.external", externalEditorBox.isSelected()); + PreferencesData.setBoolean("compiler.cache_core", cacheCompiledCore.isSelected()); + PreferencesData.setBoolean("update.check", checkUpdatesBox.isSelected()); PreferencesData.setBoolean("editor.update_extension", updateExtensionBox.isSelected()); @@ -832,6 +839,8 @@ private void showPrerefencesData() { externalEditorBox.setSelected(PreferencesData.getBoolean("editor.external")); + cacheCompiledCore.setSelected(PreferencesData.get("compiler.cache_core") == null || PreferencesData.getBoolean("compiler.cache_core")); + checkUpdatesBox.setSelected(PreferencesData.getBoolean("update.check")); updateExtensionBox.setSelected(PreferencesData.get("editor.update_extension") == null || PreferencesData.getBoolean("editor.update_extension")); diff --git a/arduino-core/src/cc/arduino/Compiler.java b/arduino-core/src/cc/arduino/Compiler.java index e04f1a729d8..0cf36b2ff05 100644 --- a/arduino-core/src/cc/arduino/Compiler.java +++ b/arduino-core/src/cc/arduino/Compiler.java @@ -138,6 +138,7 @@ enum BuilderAction { private final File pathToSketch; private final Sketch sketch; private String buildPath; + private File buildCache; private final boolean verbose; private RunnerException exception; @@ -156,9 +157,10 @@ public String build(CompilerProgressListener progListener, boolean exportHex) th listeners.add(progListener); return this.build(listeners, exportHex); } - + public String build(ArrayList progListeners, boolean exportHex) throws RunnerException, PreferencesMapException, IOException { this.buildPath = sketch.getBuildPath().getAbsolutePath(); + this.buildCache = BaseNoGui.getCachePath(); TargetBoard board = BaseNoGui.getTargetBoard(); if (board == null) { @@ -258,6 +260,11 @@ private void callArduinoBuilder(TargetBoard board, TargetPlatform platform, Targ cmd.add(buildPath); cmd.add("-warnings=" + PreferencesData.get("compiler.warning_level")); + if (PreferencesData.getBoolean("compiler.cache_core") == true && buildCache != null) { + cmd.add("-build-cache"); + cmd.add(buildCache.getAbsolutePath()); + } + PreferencesData.getMap() .subTree("runtime.build_properties_custom") .entrySet() diff --git a/arduino-core/src/processing/app/BaseNoGui.java b/arduino-core/src/processing/app/BaseNoGui.java index fd372596c5b..b634bc25ec8 100644 --- a/arduino-core/src/processing/app/BaseNoGui.java +++ b/arduino-core/src/processing/app/BaseNoGui.java @@ -21,6 +21,9 @@ import processing.app.packages.LibraryList; import processing.app.packages.UserLibrary; +import cc.arduino.files.DeleteFilesOnShutdown; +import processing.app.helpers.FileUtils; + import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.io.File; @@ -100,6 +103,8 @@ public class BaseNoGui { private static String boardManagerLink = ""; + private static File buildCache; + // Returns a File object for the given pathname. If the pathname // is not absolute, it is interpreted relative to the current // directory when starting the IDE (which is not the same as the @@ -131,7 +136,7 @@ static public PreferencesMap getBoardPreferences() { if (board == null) return null; String boardId = board.getId(); - + PreferencesMap prefs = new PreferencesMap(board.getPreferences()); String extendedName = prefs.get("name"); @@ -256,6 +261,18 @@ static public String getPortableSketchbookFolder() { return portableSketchbookFolder; } + static public File getCachePath() { + if (buildCache == null) { + try { + buildCache = FileUtils.createTempFolder("arduino_cache_"); + DeleteFilesOnShutdown.add(buildCache); + } catch (IOException e) { + return null; + } + } + return buildCache; + } + /** * Convenience method to get a File object for the specified filename inside * the settings folder. diff --git a/build/arduino-builder-linux32-1.3.24.tar.bz2.sha b/build/arduino-builder-linux32-1.3.24.tar.bz2.sha deleted file mode 100644 index 47a01236b04..00000000000 --- a/build/arduino-builder-linux32-1.3.24.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -4b2a788a5be3b927245d5fd9aecf6a8090185ebb diff --git a/build/arduino-builder-linux32-1.3.25.tar.bz2.sha b/build/arduino-builder-linux32-1.3.25.tar.bz2.sha new file mode 100644 index 00000000000..10e51bc16b1 --- /dev/null +++ b/build/arduino-builder-linux32-1.3.25.tar.bz2.sha @@ -0,0 +1 @@ +31160c158c98e4623c52f058830d99a0fd69f0df diff --git a/build/arduino-builder-linux64-1.3.24.tar.bz2.sha b/build/arduino-builder-linux64-1.3.24.tar.bz2.sha deleted file mode 100644 index a21a09a5bae..00000000000 --- a/build/arduino-builder-linux64-1.3.24.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -dcb4e45d1fa74bc498d6ca4a5a0f411db17209b3 diff --git a/build/arduino-builder-linux64-1.3.25.tar.bz2.sha b/build/arduino-builder-linux64-1.3.25.tar.bz2.sha new file mode 100644 index 00000000000..d89ea52b8e8 --- /dev/null +++ b/build/arduino-builder-linux64-1.3.25.tar.bz2.sha @@ -0,0 +1 @@ +4bcb333c6942e2e033ce92961a06df9124c7a9c7 diff --git a/build/arduino-builder-linuxarm-1.3.24.tar.bz2.sha b/build/arduino-builder-linuxarm-1.3.24.tar.bz2.sha deleted file mode 100644 index b3866b0956b..00000000000 --- a/build/arduino-builder-linuxarm-1.3.24.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -c9a0208ccc585fcaba8165308200cbdada6bd959 diff --git a/build/arduino-builder-linuxarm-1.3.25.tar.bz2.sha b/build/arduino-builder-linuxarm-1.3.25.tar.bz2.sha new file mode 100644 index 00000000000..b2a57ebbfff --- /dev/null +++ b/build/arduino-builder-linuxarm-1.3.25.tar.bz2.sha @@ -0,0 +1 @@ +bb731bc81890f5d8e871ae8d35f25475adcd8861 diff --git a/build/arduino-builder-macosx-1.3.24.tar.bz2.sha b/build/arduino-builder-macosx-1.3.24.tar.bz2.sha deleted file mode 100644 index e299a2a76c4..00000000000 --- a/build/arduino-builder-macosx-1.3.24.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -cbd07f8627e3d3cdd0a80fbfa82f0438852a2d8e diff --git a/build/arduino-builder-macosx-1.3.25.tar.bz2.sha b/build/arduino-builder-macosx-1.3.25.tar.bz2.sha new file mode 100644 index 00000000000..f4d4964eea5 --- /dev/null +++ b/build/arduino-builder-macosx-1.3.25.tar.bz2.sha @@ -0,0 +1 @@ +267577e82b44caaec952499ca3fdb3df35d969ae diff --git a/build/arduino-builder-windows-1.3.24.zip.sha b/build/arduino-builder-windows-1.3.24.zip.sha deleted file mode 100644 index bef67807ddd..00000000000 --- a/build/arduino-builder-windows-1.3.24.zip.sha +++ /dev/null @@ -1 +0,0 @@ -17251a697f5c8bed208892d7c34d02a33d512b70 diff --git a/build/arduino-builder-windows-1.3.25.zip.sha b/build/arduino-builder-windows-1.3.25.zip.sha new file mode 100644 index 00000000000..18873541d37 --- /dev/null +++ b/build/arduino-builder-windows-1.3.25.zip.sha @@ -0,0 +1 @@ +14cb24db2d50546ef80e6b0e5f2af76bcb476d80 diff --git a/build/build.xml b/build/build.xml index a836e6d9c19..d2fd470e62e 100644 --- a/build/build.xml +++ b/build/build.xml @@ -85,7 +85,7 @@ - +