From 365828b0fdfd921365906bf3d6b0da087cd4b42d Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Sun, 1 Nov 2015 22:32:12 -0500 Subject: [PATCH] Bug 480585 - Better handling of default config. We no longer create a default config. Instead we use the Eclipse default and select a default board for it. At build time though we make sure we create a new one for it. Change-Id: I11bd9e67f1df160d5a660d383eb37a74da8ec38c --- .../internal/ArduinoProjectGenerator.java | 22 ------------------- .../build/ArduinoBuildConfiguration.java | 20 ++++++++++++++--- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java index 0cdf16f6270..f081ecbce0d 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java @@ -11,18 +11,13 @@ package org.eclipse.cdt.arduino.core.internal; import java.util.HashMap; -import java.util.List; import java.util.Map; -import org.eclipse.cdt.arduino.core.internal.board.ArduinoBoard; -import org.eclipse.cdt.arduino.core.internal.board.ArduinoManager; -import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuildConfiguration; import org.eclipse.cdt.arduino.core.internal.build.ArduinoBuilder; import org.eclipse.cdt.core.CCProjectNature; import org.eclipse.cdt.core.CProjectNature; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.IPathEntry; -import org.eclipse.core.resources.IBuildConfiguration; import org.eclipse.core.resources.ICommand; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -57,25 +52,8 @@ public class ArduinoProjectGenerator { command.setBuilding(IncrementalProjectBuilder.AUTO_BUILD, false); projDesc.setBuildSpec(new ICommand[] { command }); - // Create the default config - uno - projDesc.setBuildConfigs(new String[] { "uno" }); //$NON-NLS-1$ - project.setDescription(projDesc, monitor); - IBuildConfiguration config = project.getBuildConfig("uno"); //$NON-NLS-1$ - ArduinoBuildConfiguration arduinoConfig = config.getAdapter(ArduinoBuildConfiguration.class); - ArduinoBoard board = ArduinoManager.instance.getBoard("Arduino/Genuino Uno", "Arduino AVR Boards", "arduino"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - if (board == null) { - // Just find one - List boards = ArduinoManager.instance.getInstalledBoards(); - if (!boards.isEmpty()) { - board = boards.get(0); - } - } - if (board != null) { - arduinoConfig.setBoard(board); - } - // Generate files ArduinoTemplateGenerator templateGen = new ArduinoTemplateGenerator(); Map fmModel = new HashMap<>(); diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java index 83f63441e4a..c8779d4083e 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/build/ArduinoBuildConfiguration.java @@ -109,9 +109,11 @@ public class ArduinoBuildConfiguration { // return it if it exists already for (IBuildConfiguration config : project.getBuildConfigs()) { - ArduinoBuildConfiguration arduinoConfig = config.getAdapter(ArduinoBuildConfiguration.class); - if (arduinoConfig.matches(target)) { - return arduinoConfig; + if (!config.getName().equals(IBuildConfiguration.DEFAULT_CONFIG_NAME)) { + ArduinoBuildConfiguration arduinoConfig = config.getAdapter(ArduinoBuildConfiguration.class); + if (arduinoConfig.matches(target)) { + return arduinoConfig; + } } } @@ -232,6 +234,17 @@ public class ArduinoBuildConfiguration { String platformName = settings.get(PLATFORM_NAME, ""); //$NON-NLS-1$ String boardName = settings.get(BOARD_NAME, ""); //$NON-NLS-1$ board = ArduinoManager.instance.getBoard(boardName, platformName, packageName); + + if (board == null) { + // Default to Uno or first one we find + board = ArduinoManager.instance.getBoard("Arduino/Genuino Uno", "Arduino AVR Boards", "arduino"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + if (board == null) { + List boards = ArduinoManager.instance.getInstalledBoards(); + if (!boards.isEmpty()) { + board = boards.get(0); + } + } + } } return board; } @@ -302,6 +315,7 @@ public class ArduinoBuildConfiguration { IFolder buildFolder = getBuildFolder(); if (!buildFolder.exists()) { buildFolder.create(true, true, monitor); + buildFolder.setDerived(true, monitor); ICProject cproject = CoreModel.getDefault().create(project); IOutputEntry output = CoreModel.newOutputEntry(buildFolder.getFullPath()); IPathEntry[] oldEntries = cproject.getRawPathEntries();