From 4cd6dc9370dc3fe3c4c453e9717bc2f2a9ccdcb5 Mon Sep 17 00:00:00 2001 From: lestofante Date: Fri, 21 Sep 2012 23:21:07 +0200 Subject: [PATCH] Recursive compilation --- app/src/processing/app/debug/Compiler.java | 36 ++++++++++++++++++++-- libraries/Ethernet/Dhcp.cpp | 2 +- libraries/Ethernet/Dns.cpp | 2 +- libraries/Ethernet/Ethernet.cpp | 2 +- libraries/Ethernet/EthernetClient.cpp | 4 +-- libraries/Ethernet/EthernetServer.cpp | 4 +-- libraries/Ethernet/EthernetUdp.cpp | 4 +-- libraries/WiFi/WiFiClient.cpp | 2 +- libraries/WiFi/WiFiServer.cpp | 2 +- libraries/WiFi/WiFiServer.h | 2 +- libraries/Wire/Wire.cpp | 2 +- 11 files changed, 47 insertions(+), 15 deletions(-) diff --git a/app/src/processing/app/debug/Compiler.java b/app/src/processing/app/debug/Compiler.java index 9660ca721fe..dee9ca28bd1 100644 --- a/app/src/processing/app/debug/Compiler.java +++ b/app/src/processing/app/debug/Compiler.java @@ -137,6 +137,12 @@ public boolean compile(Sketch sketch, // 2. compile the libraries, outputting .o files to: // sketch.setCompilingProgress(40); + + for (File libraryFolder : sketch.getImportedLibraries()) { + copyRecursively(avrBasePath, libraryFolder, buildPath, objectFiles, includePaths, boardPreferences); + } + + /* for (File libraryFolder : sketch.getImportedLibraries()) { File outputFolder = new File(buildPath, libraryFolder.getName()); File utilityFolder = new File(libraryFolder, "utility"); @@ -160,7 +166,8 @@ public boolean compile(Sketch sketch, // other libraries should not see this library's utility/ folder includePaths.remove(includePaths.size() - 1); } - + */ + // 3. compile the core, outputting .o files to and then // collecting them into the core.a library file. @@ -250,7 +257,32 @@ public boolean compile(Sketch sketch, return true; } - + + + private void copyRecursively(String avrBasePath, File folder, String where, List objectFiles, List includePaths, Map boardPreferences) throws RunnerException { + File outputFolder = new File(where, folder.getName()); + createFolder(outputFolder); + + //if (folder.isDirectory()){ + File[] subdirList = folder.listFiles(); + if (subdirList != null){ //if it contains folder + for (File child : subdirList) { + copyRecursively(avrBasePath, child, outputFolder.getAbsolutePath(), objectFiles, includePaths, boardPreferences); + } + } + //} + + includePaths.add(folder.getAbsolutePath()); + + objectFiles.addAll( + compileFiles(avrBasePath, outputFolder.getAbsolutePath(), includePaths, + findFilesInFolder(folder, "S", false), + findFilesInFolder(folder, "c", false), + findFilesInFolder(folder, "cpp", false), + boardPreferences)); + // other libraries should not see this library's utility/ folder + includePaths.remove(includePaths.size() - 1); + } private List compileFiles(String avrBasePath, String buildPath, List includePaths, diff --git a/libraries/Ethernet/Dhcp.cpp b/libraries/Ethernet/Dhcp.cpp index e4d27f722f4..b4a9eb5c897 100755 --- a/libraries/Ethernet/Dhcp.cpp +++ b/libraries/Ethernet/Dhcp.cpp @@ -1,7 +1,7 @@ // DHCP Library v0.3 - April 25, 2009 // Author: Jordan Terrell - blog.jordanterrell.com -#include "w5100.h" +#include "utility/w5100.h" #include #include diff --git a/libraries/Ethernet/Dns.cpp b/libraries/Ethernet/Dns.cpp index b3c1a9dc148..ecf884142ff 100644 --- a/libraries/Ethernet/Dns.cpp +++ b/libraries/Ethernet/Dns.cpp @@ -2,7 +2,7 @@ // (c) Copyright 2009-2010 MCQN Ltd. // Released under Apache License, version 2.0 -#include "w5100.h" +#include "utility/w5100.h" #include "EthernetUdp.h" #include "util.h" diff --git a/libraries/Ethernet/Ethernet.cpp b/libraries/Ethernet/Ethernet.cpp index 5d28f71f9e6..68cd62622a7 100644 --- a/libraries/Ethernet/Ethernet.cpp +++ b/libraries/Ethernet/Ethernet.cpp @@ -1,4 +1,4 @@ -#include "w5100.h" +#include "utility/w5100.h" #include "Ethernet.h" #include "Dhcp.h" diff --git a/libraries/Ethernet/EthernetClient.cpp b/libraries/Ethernet/EthernetClient.cpp index 9885efb7850..b5911c5ee3d 100644 --- a/libraries/Ethernet/EthernetClient.cpp +++ b/libraries/Ethernet/EthernetClient.cpp @@ -1,5 +1,5 @@ -#include "w5100.h" -#include "socket.h" +#include "utility/w5100.h" +#include "utility/socket.h" extern "C" { #include "string.h" diff --git a/libraries/Ethernet/EthernetServer.cpp b/libraries/Ethernet/EthernetServer.cpp index 0308b92619f..6d6ce8c8027 100644 --- a/libraries/Ethernet/EthernetServer.cpp +++ b/libraries/Ethernet/EthernetServer.cpp @@ -1,5 +1,5 @@ -#include "w5100.h" -#include "socket.h" +#include "utility/w5100.h" +#include "utility/socket.h" extern "C" { #include "string.h" } diff --git a/libraries/Ethernet/EthernetUdp.cpp b/libraries/Ethernet/EthernetUdp.cpp index 37600529f8b..b0df74ba9be 100644 --- a/libraries/Ethernet/EthernetUdp.cpp +++ b/libraries/Ethernet/EthernetUdp.cpp @@ -26,8 +26,8 @@ * bjoern@cs.stanford.edu 12/30/2008 */ -#include "w5100.h" -#include "socket.h" +#include "utility/w5100.h" +#include "utility/socket.h" #include "Ethernet.h" #include "Udp.h" #include "Dns.h" diff --git a/libraries/WiFi/WiFiClient.cpp b/libraries/WiFi/WiFiClient.cpp index 83c0d10b97c..0668bcb4c81 100755 --- a/libraries/WiFi/WiFiClient.cpp +++ b/libraries/WiFi/WiFiClient.cpp @@ -9,7 +9,7 @@ extern "C" { #include "WiFi.h" #include "WiFiClient.h" #include "WiFiServer.h" -#include "server_drv.h" +#include "utility/server_drv.h" uint16_t WiFiClient::_srcport = 1024; diff --git a/libraries/WiFi/WiFiServer.cpp b/libraries/WiFi/WiFiServer.cpp index 77dbac0b952..188793f9948 100644 --- a/libraries/WiFi/WiFiServer.cpp +++ b/libraries/WiFi/WiFiServer.cpp @@ -1,5 +1,5 @@ #include -#include "server_drv.h" +#include "utility/server_drv.h" extern "C" { #include "utility/debug.h" diff --git a/libraries/WiFi/WiFiServer.h b/libraries/WiFi/WiFiServer.h index 68b574c2980..09945dc157e 100755 --- a/libraries/WiFi/WiFiServer.h +++ b/libraries/WiFi/WiFiServer.h @@ -5,7 +5,7 @@ extern "C" { #include "utility/wl_definitions.h" } -#include "Server.h" +#include "utility/Server.h" class WiFiClient; diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index 4e7a17c4776..bfa9284869f 100755 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -23,7 +23,7 @@ extern "C" { #include #include #include - #include "twi.h" + #include "utility/twi.h" } #include "Wire.h"