mozilla/shumway — pull request #1432 by tschneidereit (2014-07-06 16:50:38+00:00)
Title: Combine build output into a set of js files per build target and letting targets depend on each other

This is a pretty large changeset, but it boils down to a conceptually simple process:
- change every build target (except `player`) to create one combined `.js` file instead of one file per `.ts` file
- create `.d.ts` files for those combined files
- let other build targets depend on the relevant `.d.ts` files instead of the respective `references.ts` files
- fix all ordering issues
- fix all "duplicate definitions" issues
- profit

I fully expect there to be some issues, but they should be simple to resolve. One area where issues might appear is dependencies in the `flash` package being undefined. To resolve those, the class that is undefined has to be moved above the one that uses it in `flash/references.ts`. The order was correct in `shumway.player.package` but it was pretty much impossible to compare the two lists and apply the same ordering, so this'll have to be fixed on a case-by-case basis.

The advantages of doing this? For one, we don't load something close to 500 files anymore during startup. Instead, we're at less than 20, which could be reduced further by applying the same process to the `player` build target. The other advantage is that no single build target takes more than 7 seconds to build, down from about 15 for `player` which had to be rebuilt quite frequently. And finally, some of this untangling had to be done anyway, so this also includes quite a bit of cleanup. E.g., `flash` doesn't rely on `avm1` anymore, and `avm1lib` doesn't rely on `flash`, so `avm1` and `avm1lib` could be combined. Conceivably, we can build some of these targets in parallel, which should reduce the total build time even for fresh rebuilds.

To get a running system after this update, run `grunt shu` once. It builds all targets in the correct order.