Create new library 'libc++experimental.a' for packaging TS symbols.


Create new library 'libc++experimental.a' for packaging TS symbols.

Out-of-line symbols for <experimental/...> headers are not ABI or API stable and cannot live in the 'libc++.dylib'. Currently they have nowhere to live. I would like to add a new library target libc++experimental.a to fix this.

Previously I had suggested different libraries for different TS's (libc++filesystem.a, 'libc++LFTS.a`, ect). I no longer think this is the right approach.
Instead c++experimental will hold *all* TS implementations as a single monolithic library. I see two main benefits to this:

  1. Users only have to know about and manually link one library.
  2. It makes it easy to implement TS's with one or two out-of-line symbols. (Ex. PMRs)

c++experimental provides NO ABI compatibility. Symbols can freely be added/removed/changed without concern for ABI stability.
I will add documentation for this after landing this patch (but before adding anything to it).

c++experimental only builds as a static library. By default CMake will build/test this library but will *NOT* install it.

This patch adds the CMake and LIT logic needed to build/test the new library. Once this lands I plan on using it to implement parts of <experimental/memory_resource>.

Reviewers: mclow.lists

Subscribers: cfe-commits, theraven, krememek, dexonsmith, bcraig, beanz, danalbert

Differential Revision: