Generators: Resolve dependencies in generated cores
Generators can create new cores. Currently, the source files listed in these cores are inserted into the file list, but the dependencies (as listed in the depend statements) ignored. This issue is to change that.
The main challenge here is runtime: solving the whole dependency tree takes multiple 100 ms. So we don't want to do that after each generator run, or fusesoc runs will become quite slow with multiple generators present. Instead, I'm proposing to do one solving step after all generators have run. Upside: speed. Downside: later generators (e.g. generator n + 1) cannot see the files added by generator n. But that's probably acceptable, or even preferred (since it gives each generator the same view of the tree, no matter when it runs).
I've implemented this in https://github.com/lowRISC/fusesoc/commits/generators and am playing around with it a bit more before doing a PR for it. Most of the implementation is a cleanup of the Edalizer class to make it more modular.