[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.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@283684 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 872a08e..154be0c 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -244,10 +244,15 @@
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 @@
${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()