[cmake] Add explicit linkage from Core to curses

The Core library calls functions provided by the curses library. Add
an appropriate explicit LINK_LIBS to ${CURSES_LIBRARIES} to propagate
the dependency correctly within the build system.

It seems that so far the linkage was handled by some kind of implicit
magic LLDB_SYSTEM_LIBS variable. However, it stopped working for
unittests as the curses libraries are passed before the LLDBCore
library, resulting in `-Wl,--as-needed` stripping the yet-unused library
before it is required by LLDBCore, and effectively breaking the build.
I think it's better to focus on listing all the dependencies explicitly
and let CMake propagate them rather than trying to figure out why this
hack stopped working.

This is also more consistent with LLVM where the curses linkage
in LLVMSupport is expressed directly in the library rather than deferred
to the final programs.

Differential Revision: https://reviews.llvm.org/D36358

llvm-svn: 311122
This commit is contained in:
Michal Gorny 2017-08-17 20:33:21 +00:00
parent a2c4112791
commit 8e58ad5182
1 changed files with 10 additions and 0 deletions

View File

@ -1,3 +1,12 @@
set(LLDB_CURSES_LIBS)
if (NOT LLDB_DISABLE_CURSES)
list(APPEND LLDB_CURSES_LIBS ${CURSES_LIBRARIES})
if(LLVM_ENABLE_TERMINFO AND HAVE_TERMINFO)
list(APPEND LLDB_CURSES_LIBS ${TERMINFO_LIBS})
endif()
endif()
add_lldb_library(lldbCore
Address.cpp
AddressRange.cpp
@ -62,6 +71,7 @@ add_lldb_library(lldbCore
lldbPluginCPlusPlusLanguage
lldbPluginObjCLanguage
lldbPluginObjectFileJIT
${LLDB_CURSES_LIBS}
LINK_COMPONENTS
BinaryFormat