Skip to content

Commit

Permalink
[cmake] Add explicit linkage from Core to curses
Browse files Browse the repository at this point in the history
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
  • Loading branch information
mgorny committed Aug 17, 2017
1 parent a2c4112 commit 8e58ad5
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions lldb/source/Core/CMakeLists.txt
@@ -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
Expand Down Expand Up @@ -62,6 +71,7 @@ add_lldb_library(lldbCore
lldbPluginCPlusPlusLanguage
lldbPluginObjCLanguage
lldbPluginObjectFileJIT
${LLDB_CURSES_LIBS}

LINK_COMPONENTS
BinaryFormat
Expand Down

0 comments on commit 8e58ad5

Please sign in to comment.