In order to get C++ support for CloudABI working, we need to import three libraries from LLVM, namely libc++, libc++abi and libunwind. Even though they are installed separately, there seems to be a circular dependency between them:
- libc++ depends on an internal header from libc++abi.
- libc++abi depends on public headers from libc++, but also an internal header from libunwind.
- similarly, libunwind depends on public headers from libc++, but also an internal header from libc++abi.
This change adds three new ports for these libraries. As with compiler-rt, it seems to be almost impossible to use the cmake infrastructure shipped with these libraries, for the reason that they depend on a functional C++ compiler being present. This is obviously not the case, as we're trying to get these installed.
The libc++ port ships with a small number of patches. Almost all of the patches needed to get libc++ to work on CloudABI have already been upstreamed. These are the last remaining ones that haven't been upstreamed yet. Expect the patches to become smaller over time.