@@ -172,16 +172,14 @@ public String build(List<CompilerProgressListener> progListeners, boolean export
172172 throw new RunnerException ("Board is not selected" );
173173 }
174174
175- TargetPlatform platform = board .getContainerPlatform ();
176- TargetPackage aPackage = platform .getContainerPackage ();
177175 String vidpid = VIDPID ();
178176
179- PreferencesMap prefs = loadPreferences (board , platform , aPackage , vidpid );
177+ PreferencesMap prefs = loadPreferences (board , vidpid );
180178
181179 MessageConsumerOutputStream out = new MessageConsumerOutputStream (new ProgressAwareMessageConsumer (new I18NAwareMessageConsumer (System .out , System .err ), progListeners ), "\n " );
182180 MessageConsumerOutputStream err = new MessageConsumerOutputStream (new I18NAwareMessageConsumer (System .err , Compiler .this ), "\n " );
183181
184- callArduinoBuilder (board , platform , aPackage , vidpid , BuilderAction .COMPILE , out , err );
182+ callArduinoBuilder (board , vidpid , BuilderAction .COMPILE , out , err );
185183
186184 out .flush ();
187185 err .flush ();
@@ -206,8 +204,6 @@ public String codeComplete(ArrayList<CompilerProgressListener> progListeners, Fi
206204 throw new RunnerException ("Board is not selected" );
207205 }
208206
209- TargetPlatform platform = board .getContainerPlatform ();
210- TargetPackage aPackage = platform .getContainerPackage ();
211207 String vidpid = VIDPID ();
212208
213209 ByteArrayOutputStream completions = new ByteArrayOutputStream ();
@@ -217,7 +213,7 @@ public String codeComplete(ArrayList<CompilerProgressListener> progListeners, Fi
217213 codeCompleteFile = file ;
218214 codeCompleteLine = line ;
219215 codeCompleteCol = col ;
220- callArduinoBuilder (board , platform , aPackage , vidpid , BuilderAction .CODE_COMPLETE , out , err );
216+ callArduinoBuilder (board , vidpid , BuilderAction .CODE_COMPLETE , out , err );
221217
222218 out .flush ();
223219 err .flush ();
@@ -240,12 +236,12 @@ private String VIDPID() {
240236 return vid .toUpperCase () + "_" + pid .toUpperCase ();
241237 }
242238
243- private PreferencesMap loadPreferences (TargetBoard board , TargetPlatform platform , TargetPackage aPackage , String vidpid ) throws RunnerException , IOException {
239+ private PreferencesMap loadPreferences (TargetBoard board , String vidpid ) throws RunnerException , IOException {
244240 ByteArrayOutputStream stdout = new ByteArrayOutputStream ();
245241 ByteArrayOutputStream stderr = new ByteArrayOutputStream ();
246242 MessageConsumerOutputStream err = new MessageConsumerOutputStream (new I18NAwareMessageConsumer (new PrintStream (stderr ), Compiler .this ), "\n " );
247243 try {
248- callArduinoBuilder (board , platform , aPackage , vidpid , BuilderAction .DUMP_PREFS , stdout , err );
244+ callArduinoBuilder (board , vidpid , BuilderAction .DUMP_PREFS , stdout , err );
249245 } catch (RunnerException e ) {
250246 System .err .println (new String (stderr .toByteArray ()));
251247 throw e ;
@@ -262,7 +258,7 @@ private void addPathFlagIfPathExists(List<String> cmd, String flag, File folder)
262258 }
263259 }
264260
265- private void callArduinoBuilder (TargetBoard board , TargetPlatform platform , TargetPackage aPackage , String vidpid , BuilderAction action , OutputStream outStream , OutputStream errStream ) throws RunnerException {
261+ private void callArduinoBuilder (TargetBoard board , String vidpid , BuilderAction action , OutputStream outStream , OutputStream errStream ) throws RunnerException {
266262 List <String > cmd = new ArrayList <>();
267263 cmd .add (BaseNoGui .getContentFile ("arduino-builder" ).getAbsolutePath ());
268264 cmd .add (action .value );
@@ -284,8 +280,7 @@ private void callArduinoBuilder(TargetBoard board, TargetPlatform platform, Targ
284280 addPathFlagIfPathExists (cmd , "-built-in-libraries" , BaseNoGui .getContentFile ("libraries" ));
285281 addPathFlagIfPathExists (cmd , "-libraries" , BaseNoGui .getSketchbookLibrariesFolder ().folder );
286282
287- String fqbn = Stream .of (aPackage .getId (), platform .getId (), board .getId (), boardOptions (board )).filter (s -> !s .isEmpty ()).collect (Collectors .joining (":" ));
288- cmd .add ("-fqbn=" + fqbn );
283+ cmd .add ("-fqbn=" + getBoardFQBN (board ));
289284
290285 if (!"" .equals (vidpid )) {
291286 cmd .add ("-vid-pid=" + vidpid );
@@ -514,7 +509,17 @@ protected Thread createPump(InputStream is, OutputStream os, boolean closeWhenEx
514509 }
515510 }
516511
517- private String boardOptions (TargetBoard board ) {
512+ public static String getBoardFQBN (TargetBoard board ) {
513+ TargetPlatform plat = board .getContainerPlatform ();
514+ TargetPackage pack = plat .getContainerPackage ();
515+ String fqbn = pack .getId () + ":" + plat .getId () + ":" + board .getId ();
516+ String opts = boardOptions (board );
517+ if (!opts .isEmpty ())
518+ fqbn += ":" + opts ;
519+ return fqbn ;
520+ }
521+
522+ private static String boardOptions (TargetBoard board ) {
518523 return board .getMenuIds ().stream ()
519524 .filter (board ::hasMenu )
520525 .filter (menuId -> {
0 commit comments