Compilers supported for building libc++ and libc++abi dylibs


libc++ currently claims support for Clang 3.5 and GCC 5.0. Furthermore, the LLVM project claims support for the following toolchains:
    - Clang 3.5
    - Apple Clang 6.0
    - GCC 5.1
    - Visual Studio 2017

The reality, however, is that building proper libc++ and libc++abi requires an almost tip-of-trunk compiler, because we rely on recent fixes to visibility annotations (for libc++), and on the magic emission of RTTI for fundamental types (for libc++abi). Basically, if one wants to build a libc++/libc++abi pair that works similarly to what a vendor is shipping today, one must use a very recent compiler. It's just the way it is.

Now, I don't think it's a big deal because I don't see much value in being able to build libc++/libc++abi with old compilers, and the only vendors I know today build the dylibs with recent compilers. Being able to use the libc++ headers with an older compiler is important, but we do support that and it's not the object of this message. The object of this message is specifically about building the dylibs.

So my question is: are we OK with acknowledging this requirement officially in the documentation?


If we end up going this path, it might be helpful to advertise the runtimes build (LLVM_ENABLE_RUNTIMES) in the documentation as well. The runtimes build builds clang and then uses the just-built clang to build the runtimes (libcxx, libcxxabi, compiler-rt, etc.), so it's an easy way to automatically build with a tip-of-tree compiler.