From 61592d78fa71c023e4f1577f7e2b6bada2661a13 Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Fri, 10 Apr 2015 15:27:25 +0200 Subject: [PATCH] New preference: enable all compiler warnings, off by default. Fixes #1728 and #2415. Also affects #2634 and #2207 --- app/src/processing/app/Preferences.java | 14 ++++++++++++-- .../src/processing/app/debug/Compiler.java | 14 ++++++++++++++ .../src/processing/app/helpers/PreferencesMap.java | 2 +- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java index 50cab76f2..30909416a 100644 --- a/app/src/processing/app/Preferences.java +++ b/app/src/processing/app/Preferences.java @@ -203,10 +203,9 @@ public class Preferences { JCheckBox verboseCompilationBox; JCheckBox verboseUploadBox; JCheckBox displayLineNumbersBox; + JCheckBox enableCompilerWarningsBox; JCheckBox verifyUploadBox; JCheckBox externalEditorBox; - JCheckBox memoryOverrideBox; - JTextField memoryField; JCheckBox checkUpdatesBox; JTextField fontSizeField; JCheckBox updateExtensionBox; @@ -352,6 +351,15 @@ public class Preferences { pane.add(box); d = box.getPreferredSize(); box.setBounds(left, top, d.width, d.height); + top += d.height + GUI_BETWEEN; + + // [ ] Enable all compiler warnings + + enableCompilerWarningsBox = new JCheckBox(_("Enable all compiler warnings")); + pane.add(enableCompilerWarningsBox); + d = enableCompilerWarningsBox.getPreferredSize(); + enableCompilerWarningsBox.setBounds(left, top, d.width + 10, d.height); + right = Math.max(right, left + d.width); top += d.height + GUI_BETWEEN; // [ ] Display line numbers @@ -674,6 +682,7 @@ public class Preferences { PreferencesData.setBoolean("editor.linenumbers", displayLineNumbersBox.isSelected()); PreferencesData.setBoolean("upload.verify", verifyUploadBox.isSelected()); PreferencesData.setBoolean("editor.save_on_verify", saveVerifyUploadBox.isSelected()); + PreferencesData.setBoolean("build.allwarnings", enableCompilerWarningsBox.isSelected()); // setBoolean("sketchbook.closing_last_window_quits", // closingLastQuitsBox.isSelected()); @@ -758,6 +767,7 @@ public class Preferences { verboseUploadBox.setSelected(PreferencesData.getBoolean("upload.verbose")); displayLineNumbersBox.setSelected(PreferencesData.getBoolean("editor.linenumbers")); verifyUploadBox.setSelected(PreferencesData.getBoolean("upload.verify")); + enableCompilerWarningsBox.setSelected(PreferencesData.getBoolean("build.allwarnings")); //closingLastQuitsBox. // setSelected(getBoolean("sketchbook.closing_last_window_quits")); diff --git a/arduino-core/src/processing/app/debug/Compiler.java b/arduino-core/src/processing/app/debug/Compiler.java index b2ba629c8..c249165b4 100644 --- a/arduino-core/src/processing/app/debug/Compiler.java +++ b/arduino-core/src/processing/app/debug/Compiler.java @@ -559,6 +559,7 @@ public class Compiler implements MessageConsumer { File objectFile = new File(outputPath, file.getName() + ".o"); objectPaths.add(objectFile); String[] cmd = getCommandCompilerByRecipe(includeFolders, file, objectFile, "recipe.S.o.pattern"); + cmd = enableWarnings(cmd, prefs.getBoolean("build.allwarnings")); execAsynchronously(cmd); } @@ -569,6 +570,7 @@ public class Compiler implements MessageConsumer { if (isAlreadyCompiled(file, objectFile, dependFile, prefs)) continue; String[] cmd = getCommandCompilerByRecipe(includeFolders, file, objectFile, "recipe.c.o.pattern"); + cmd = enableWarnings(cmd, prefs.getBoolean("build.allwarnings")); execAsynchronously(cmd); } @@ -579,12 +581,24 @@ public class Compiler implements MessageConsumer { if (isAlreadyCompiled(file, objectFile, dependFile, prefs)) continue; String[] cmd = getCommandCompilerByRecipe(includeFolders, file, objectFile, "recipe.cpp.o.pattern"); + cmd = enableWarnings(cmd, prefs.getBoolean("build.allwarnings")); execAsynchronously(cmd); } return objectPaths; } + private String[] enableWarnings(String[] cmd, boolean enable) { + if (!enable) { + return cmd; + } + + List cmdList = new ArrayList(Arrays.asList(cmd)); + cmdList.remove("-w"); + + return cmdList.toArray(new String[cmdList.size()]); + } + /** * Strip escape sequences used in makefile dependency files (.d) * https://github.com/arduino/Arduino/issues/2255#issuecomment-57645845 diff --git a/arduino-core/src/processing/app/helpers/PreferencesMap.java b/arduino-core/src/processing/app/helpers/PreferencesMap.java index 09a095447..f26c2b122 100644 --- a/arduino-core/src/processing/app/helpers/PreferencesMap.java +++ b/arduino-core/src/processing/app/helpers/PreferencesMap.java @@ -311,7 +311,7 @@ public class PreferencesMap extends LinkedHashMap { * insensitive compared), false in any other case */ public boolean getBoolean(String key) { - return new Boolean(get(key)); + return Boolean.valueOf(get(key)); } /**