rust/mk
bors 74fedf325a auto merge of #11787 : alexcrichton/rust/refactor, r=brson
It was decided a long, long time ago that libextra should not exist, but rather its modules should be split out into smaller independent libraries maintained outside of the compiler itself. The theory was to use `rustpkg` to manage dependencies in order to move everything out of the compiler, but maintain an ease of usability.

Sadly, the work on `rustpkg` isn't making progress as quickly as expected, but the need for dissolving libextra is becoming more and more pressing. Because of this, we've thought that a good interim solution would be to simply package more libraries with the rust distribution itself. Instead of dissolving libextra into libraries outside of the mozilla/rust repo, we can dissolve libraries into the mozilla/rust repo for now.

Work on this has been excruciatingly painful in the past because the makefiles are completely opaque to all but a few. Adding a new library involved adding about 100 lines spread out across 8 files (incredibly error prone). The first commit of this pull request targets this pain point. It does not rewrite the build system, but rather refactors large portions of it. Afterwards, adding a new library is as simple as modifying 2 lines (easy, right?). The build system automatically keeps track of dependencies between crates (rust *and* native), promotes binaries between stages, tracks dependencies of installed tools, etc, etc.

With this newfound buildsystem power, I chose the `extra::flate` module as the first candidate for removal from libextra. While a small module, this module is relative complex in that is has a C dependency and the compiler requires it (messing with the dependency graph a bit). Albeit I modified more than 2 lines of makefiles to accomodate libflate (the native dependency required 2 extra lines of modifications), but the removal process was easy to do and straightforward.

---

Testing-wise, I've cross-compiled, run tests, built some docs, installed, uninstalled, etc. I'm still working out a few kinks, and I'm sure that there's gonna be built system issues after this, but it should be working well for basic use!

cc #8784
2014-01-26 16:46:34 -08:00
..
clean.mk Refactor the build system for easily adding crates 2014-01-26 00:53:41 -08:00
crates.mk Move extra::flate to libflate 2014-01-26 15:42:15 -08:00
ctags.mk Don't make tags for our dependencies and tests. 2013-11-16 13:44:52 +11:00
dist.mk make: Add all the make support for lib{native,green} 2013-12-24 19:59:52 -08:00
docs.mk Refactor the build system for easily adding crates 2014-01-26 00:53:41 -08:00
host.mk Refactor the build system for easily adding crates 2014-01-26 00:53:41 -08:00
install.mk Refactor the build system for easily adding crates 2014-01-26 00:53:41 -08:00
llvm.mk Only build LLVM tools Rust needs. 2014-01-15 17:47:48 -08:00
perf.mk support for GNU configure syntax 2013-10-29 16:22:08 -07:00
platform.mk Removed all instances of XXX in preparation for relaxing of FIXME rule 2014-01-26 14:42:53 -05:00
rt.mk Move extra::flate to libflate 2014-01-26 15:42:15 -08:00
rustllvm.mk Refactor the build system for easily adding crates 2014-01-26 00:53:41 -08:00
snap.mk support for GNU configure syntax 2013-10-29 16:22:08 -07:00
stage0.mk Make rustc's own lib directory configurable and change the default to rustlib. Fixes #3319 2014-01-05 12:06:20 +01:00
target.mk Refactor the build system for easily adding crates 2014-01-26 00:53:41 -08:00
tests.mk Move extra::flate to libflate 2014-01-26 15:42:15 -08:00