Ideal way to build llvm and friends?

Hi all,

I'm a maintainer for the llvm ecosystem for nixpkgs[1]. Currently only clang and llvm are up-to-date, but I'd like to move to building all of the packages listed on the release page for the latest version (and in particular, have libc++ and compiler RT integrated in with llvm/clang). Right now we're using the CMake build, with llvm and clang being built as separate packages. Due to a quirk in our package manager that's no longer an issue, having them be built together was previously not a good option.

I'd like to revamp this to do this the "official" way, but I'm not really sure what that is. CMake or autotools? Is it best to build everything as a single big build (putting clang, lld, lldb and polly in the "tools" subdir and everything else in projects)? Or should I build them all separately? I see libc++ is purposefully excluded from projects/CMakeLists.txt and compiler-rt is built differently from all other projects, why is that? Where does libc++abi fit in with all of this (it's not on the release page)? In general it seems like there are a lot of options and the documentation is not up-to-date everywhere, so I'm a bit lost.

Note that while building from SVN is an option if it's really important, ideally we only want released packages, optionally with small patches where needed.