From 5b5f4f0c74a5555c214cdb1bf37e1c5771ea6340 Mon Sep 17 00:00:00 2001 From: Hal Finkel Date: Sun, 9 Oct 2016 02:49:31 +0000 Subject: [PATCH] [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 --- libcxx/lib/CMakeLists.txt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libcxx/lib/CMakeLists.txt b/libcxx/lib/CMakeLists.txt index 872a08e..154be0c 100644 --- a/libcxx/lib/CMakeLists.txt +++ b/libcxx/lib/CMakeLists.txt @@ -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 "$" - "\"${LIBCXX_LIBRARIES_PUBLIC}\"" + "\"${LIBCXX_LIBRARIES_PUBLIC_NAMES}\"" WORKING_DIRECTORY ${LIBCXX_BUILD_DIR} ) endif() -- 2.7.4