This is the second attempt at allowing for the use of libraries that the linker cannot find. The first attempt used CMAKE_LIBRARY_PATH and find_library to select which ABI library should be used. There were a number of problems with this approach:
- find_library didn't work with cmake targets (ie in-tree libcxxabi build)
- It wasn't always possible to determine where find_library actually found your library.
- target_link_libraries inserted the path of the ABI library into libc++'s RPATH when find_library was used.
- Linking libc++ and it's ABI library is a special case. It's a lot easier to keep it simple.
After discussion with @cbergstrum a new approach was decided upon.
This patch achieve the same ends by simply using LIBCXX_CXX_ABI_LIBRARY_PATH to specify where to find the library (if the linker won't find it). When this variable is defined it is simply added as a library search path when linking libc++. It is a lot easier to duplicate this behavior in LIT. It also prevents libc++ from being linked with an RPATH.