1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-06-16 11:21:18 +03:00

Compiler: adding hooks (custom recipes) between the main phases. New hooks are:

hooks.sketch.prebuild, hooks.sketch.postbuild, hooks.libraries.prebuild,
hooks.libraries.postbuild, hooks.core.prebuild, hooks.core.postbuild,
hooks.linking.prelink, hooks.linking.postlink, hooks.objcopy.preobjcopy,
hooks.objcopy.postobjcopy, hooks.savehex.presavehex, hooks.savehex.postsavehex
This commit is contained in:
Federico Fissore
2015-05-26 15:29:47 +02:00
parent c1002e247f
commit b11d54e503

View File

@ -405,26 +405,44 @@ public class Compiler implements MessageConsumer {
System.err.println(); System.err.println();
} }
} }
runActions("hooks.sketch.prebuild", prefs);
// 1. compile the sketch (already in the buildPath) // 1. compile the sketch (already in the buildPath)
progressListener.progress(20); progressListener.progress(20);
compileSketch(includeFolders); compileSketch(includeFolders);
sketchIsCompiled = true; sketchIsCompiled = true;
runActions("hooks.sketch.postbuild", prefs);
runActions("hooks.libraries.prebuild", prefs);
// 2. compile the libraries, outputting .o files to: <buildPath>/<library>/ // 2. compile the libraries, outputting .o files to: <buildPath>/<library>/
// Doesn't really use configPreferences // Doesn't really use configPreferences
progressListener.progress(30); progressListener.progress(30);
compileLibraries(includeFolders); compileLibraries(includeFolders);
runActions("hooks.libraries.postbuild", prefs);
runActions("hooks.core.prebuild", prefs);
// 3. compile the core, outputting .o files to <buildPath> and then // 3. compile the core, outputting .o files to <buildPath> and then
// collecting them into the core.a library file. // collecting them into the core.a library file.
progressListener.progress(40); progressListener.progress(40);
compileCore(); compileCore();
runActions("hooks.core.postbuild", prefs);
runActions("hooks.linking.prelink", prefs);
// 4. link it all together into the .elf file // 4. link it all together into the .elf file
progressListener.progress(50); progressListener.progress(50);
compileLink(); compileLink();
runActions("hooks.linking.postlink", prefs);
runActions("hooks.objcopy.preobjcopy", prefs);
// 5. run objcopy to generate output files // 5. run objcopy to generate output files
progressListener.progress(60); progressListener.progress(60);
List<String> objcopyPatterns = new ArrayList<String>(); List<String> objcopyPatterns = new ArrayList<String>();
@ -437,10 +455,16 @@ public class Compiler implements MessageConsumer {
runRecipe(recipe); runRecipe(recipe);
} }
runActions("hooks.objcopy.postobjcopy", prefs);
// 7. save the hex file // 7. save the hex file
if (saveHex) { if (saveHex) {
runActions("hooks.savehex.presavehex", prefs);
progressListener.progress(80); progressListener.progress(80);
saveHex(); saveHex();
runActions("hooks.savehex.postsavehex", prefs);
} }
progressListener.progress(90); progressListener.progress(90);