Add special case for finding the in-tree ABI library.

When libcxx is built in-tree with libcxxabi it links against libcxxabi using
the name of the cmake target and not the actual library name. The cmake target
will not work with `find_library()`, so it needs special case handling.

llvm-svn: 220121
This commit is contained in:
Eric Fiselier 2014-10-18 02:19:28 +00:00
parent 600f245b8a
commit a38dd8aad2
1 changed files with 13 additions and 6 deletions

View File

@ -27,13 +27,20 @@ macro(setup_abi_lib abipathvar abidefines abilibs abifiles abidirs)
# each run of find_library.
set(LIBCXX_CXX_ABI_LIBRARIES "")
foreach(alib ${abilibs})
unset(_Res CACHE)
find_library(_Res ${alib})
if (${_Res} STREQUAL "_Res-NOTFOUND")
message(FATAL_ERROR "Failed to find ABI library: ${alib}")
# cxxabi is a cmake target and not a library.
# Handle this special case explicitly.
# Otherwise use find_library to locate the correct binary.
if (alib STREQUAL "cxxabi")
list(APPEND LIBCXX_CXX_ABI_LIBRARIES cxxabi)
else()
message(STATUS "Adding ABI library: ${_Res}")
list(APPEND LIBCXX_CXX_ABI_LIBRARIES ${_Res})
unset(_Res CACHE)
find_library(_Res ${alib})
if (${_Res} STREQUAL "_Res-NOTFOUND")
message(FATAL_ERROR "Failed to find ABI library: ${alib}")
else()
message(STATUS "Adding ABI library: ${_Res}")
list(APPEND LIBCXX_CXX_ABI_LIBRARIES ${_Res})
endif()
endif()
endforeach()