[CMake] Fix in-tree libcxxabi build support after r283659

r283659 changed the argument to gen_link_script.py from SCRIPT_ABI_LIBNAME to
LIBCXX_LIBRARIES_PUBLIC, assuming that all of the items in the
LIBCXX_LIBRARIES_PUBLIC list were library names. This is not right, however,
for in-tree libcxxabi builds, we might have the target name in this list. There
was special logic to fixup SCRIPT_ABI_LIBNAME for this situation; change it to
apply a similar fixup for LIBCXX_LIBRARIES_PUBLIC.

llvm-svn: 283684
This commit is contained in:
Hal Finkel 2016-10-09 02:49:31 +00:00
parent 3b593f56fc
commit 5b5f4f0c74
1 changed files with 10 additions and 5 deletions

View File

@ -244,10 +244,15 @@ endif()
if (LIBCXX_ENABLE_SHARED AND LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
# Get the name of the ABI library and handle the case where CXXABI_LIBNAME
# is a target name and not a library. Ex cxxabi_shared.
set(SCRIPT_ABI_LIBNAME "${LIBCXX_CXX_ABI_LIBRARY}")
if (SCRIPT_ABI_LIBNAME STREQUAL "cxxabi_shared")
set(SCRIPT_ABI_LIBNAME "c++abi")
endif()
set(LIBCXX_LIBRARIES_PUBLIC_NAMES)
foreach(lib ${LIBCXX_LIBRARIES_PUBLIC})
if (lib STREQUAL "cxxabi_shared")
list(APPEND LIBCXX_LIBRARIES_PUBLIC_NAMES "c++abi")
else()
list(APPEND LIBCXX_LIBRARIES_PUBLIC_NAMES "${lib}")
endif()
endforeach()
# Generate a linker script inplace of a libc++.so symlink. Rerun this command
# after cxx builds.
add_custom_command(TARGET cxx_shared POST_BUILD
@ -255,7 +260,7 @@ if (LIBCXX_ENABLE_SHARED AND LIBCXX_ENABLE_ABI_LINKER_SCRIPT)
${PYTHON_EXECUTABLE} ${LIBCXX_SOURCE_DIR}/utils/gen_link_script/gen_link_script.py
ARGS
"$<TARGET_LINKER_FILE:cxx_shared>"
"\"${LIBCXX_LIBRARIES_PUBLIC}\""
"\"${LIBCXX_LIBRARIES_PUBLIC_NAMES}\""
WORKING_DIRECTORY ${LIBCXX_BUILD_DIR}
)
endif()