Skip to content

Commit 806f0fe

Browse files
Remove Compiler.[recursive]CompileFilesInFolder
Since Compiler.compileFiles already knows how to recursively compile files, it seems pointless to keep these around. Because compileFiles uses a one-off recursion to list files to compile at the start, it has to be slightly smarter about creating directories recursively when needed and needs to fiddle with the filenames a bit (so that the directory structure within a new-style library is maintained in the build directory), but those are only minor changes to compileFiles.
1 parent 1809605 commit 806f0fe

File tree

1 file changed

+8
-20
lines changed

1 file changed

+8
-20
lines changed

Diff for: app/src/processing/app/debug/Compiler.java

+8-20
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,15 @@ private List<File> compileFiles(File outputPath, File sourcePath,
250250
throws RunnerException {
251251
List<File> objectPaths = new ArrayList<File>();
252252
for (File file : sourceFiles) {
253-
File objectFile = new File(outputPath, file.getName() + ".o");
254-
File dependFile = new File(outputPath, file.getName() + ".d");
253+
String relative = FileUtils.relativeSubPath(sourcePath, file);
254+
File objectFile = new File(outputPath, relative + ".o");
255+
File dependFile = new File(outputPath, relative + ".d");
255256
objectPaths.add(objectFile);
256257

257258
if (isAlreadyCompiled(file, objectFile, dependFile, prefs))
258259
continue;
259260

261+
createFolder(objectFile.getParentFile());
260262
String[] cmd;
261263
if (FileUtils.hasExtension(file, "s")) {
262264
cmd = getCommandCompilerS(includeFolders, file, objectFile);
@@ -599,7 +601,7 @@ private String[] getCommandCompilerCPP(List<File> includeFolders,
599601
private void createFolder(File folder) throws RunnerException {
600602
if (folder.isDirectory())
601603
return;
602-
if (!folder.mkdir())
604+
if (!folder.mkdirs())
603605
throw new RunnerException("Couldn't create: " + folder);
604606
}
605607

@@ -625,7 +627,7 @@ private void compileLibrary(Library lib, List<File> includeFolders)
625627
if (lib.useRecursion()) {
626628
// libBuildFolder == {build.path}/LibName
627629
// libFolder == {lib.path}/src
628-
recursiveCompileFilesInFolder(libBuildFolder, libFolder, includeFolders);
630+
objectFiles.addAll(compileFiles(libBuildFolder, libFolder, true, includeFolders));
629631

630632
} else {
631633
// libFolder == {lib.path}/
@@ -636,29 +638,15 @@ private void compileLibrary(Library lib, List<File> includeFolders)
636638
File utilityBuildFolder = new File(libBuildFolder, "utility");
637639

638640
includeFolders.add(utilityFolder);
639-
compileFilesInFolder(libBuildFolder, libFolder, includeFolders);
641+
objectFiles.addAll(compileFiles(libBuildFolder, libFolder, false, includeFolders));
640642
if (utilityFolder.isDirectory())
641-
compileFilesInFolder(utilityBuildFolder, utilityFolder, includeFolders);
643+
objectFiles.addAll(compileFiles(utilityBuildFolder, utilityFolder, false, includeFolders));
642644

643645
// other libraries should not see this library's utility/ folder
644646
includeFolders.remove(utilityFolder);
645647
}
646648
}
647649

648-
private void recursiveCompileFilesInFolder(File srcBuildFolder, File srcFolder, List<File> includeFolders) throws RunnerException {
649-
compileFilesInFolder(srcBuildFolder, srcFolder, includeFolders);
650-
for (File subFolder : srcFolder.listFiles(new OnlyDirs())) {
651-
File subBuildFolder = new File(srcBuildFolder, subFolder.getName());
652-
recursiveCompileFilesInFolder(subBuildFolder, subFolder, includeFolders);
653-
}
654-
}
655-
656-
private void compileFilesInFolder(File buildFolder, File srcFolder, List<File> includeFolders) throws RunnerException {
657-
createFolder(buildFolder);
658-
List<File> objects = compileFiles(buildFolder, srcFolder, false, includeFolders);
659-
objectFiles.addAll(objects);
660-
}
661-
662650
// 3. compile the core, outputting .o files to <buildPath> and then
663651
// collecting them into the core.a library file.
664652
// Also compiles the variant (if it supplies actual source files),

0 commit comments

Comments
 (0)