diff --git a/lldb/cmake/modules/AddLLDB.cmake b/lldb/cmake/modules/AddLLDB.cmake --- a/lldb/cmake/modules/AddLLDB.cmake +++ b/lldb/cmake/modules/AddLLDB.cmake @@ -27,6 +27,22 @@ endif() endfunction(lldb_tablegen) +# Filter out clang libraries and add clang_shared when CLANG_LINK_CLANG_DYLIB=ON +function(lldb_filter_link_libs link_libs) + + set(link_libs_list ${${link_libs}}) + list(LENGTH link_libs_list lib_count) + if (CLANG_LINK_CLANG_DYLIB AND lib_count GREATER 0) + list(FILTER link_libs_list EXCLUDE REGEX "^clang") + list(LENGTH link_libs_list filtered_lib_count) + if (filtered_lib_count LESS lib_count) + list(APPEND link_libs_list clang-cpp) + endif() + endif() + set(${link_libs} ${link_libs_list} PARENT_SCOPE) + +endfunction(lldb_filter_link_libs) + function(add_lldb_library name) include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR} @@ -85,6 +101,8 @@ set(pass_NO_INSTALL_RPATH NO_INSTALL_RPATH) endif() + lldb_filter_link_libs(PARAM_LINK_LIBS) + llvm_add_library(${name} ${libkind} ${srcs} LINK_LIBS ${PARAM_LINK_LIBS} DEPENDS ${PARAM_DEPENDS} @@ -155,6 +173,8 @@ ${ARG_UNPARSED_ARGUMENTS} ) + lldb_filter_link_libs(ARG_LINK_LIBS) + target_link_libraries(${name} PRIVATE ${ARG_LINK_LIBS}) set_target_properties(${name} PROPERTIES FOLDER "lldb executables")