Stefan Granitz 5d005a856d [CMake] Revised RPATH handling
Summary:
If we build LLDB.framework, dependant tools need appropriate RPATHs in both locations, the build-tree (for testing) and the install-tree (for deployment). Luckily, CMake can handle it for us: https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling.

* In the build-tree, tools use the absolute path to the framework's actual output location.
* In the install-tree, tools get a list of RPATHs to look for the framework when deployed.

`LLDB_FRAMEWORK_INSTALL_DIR` is added to the `CMAKE_INSTALL_PREFIX` to change the relative location of LLDB.framework in the install-tree.
If it is not empty, it will be added as an additional RPATH to all dependant tools (so they are functional in the install-tree).
If it is empty, LLDB.framework goes to the root and tools will not be functional in the directory structure of the LLVM install-tree.
For historical reasons `LLDB_FRAMEWORK_INSTALL_DIR` defaults to "Library/Frameworks".

Reviewers: xiaobai, JDevlieghere, aprantl, clayborg

Reviewed By: JDevlieghere

Subscribers: ki.stfu, mgorny, lldb-commits, #lldb

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

llvm-svn: 350392
2019-01-04 12:46:57 +00:00

35 lines
729 B
CMake

if ( CMAKE_SYSTEM_NAME MATCHES "Windows" OR CMAKE_SYSTEM_NAME MATCHES "NetBSD" )
add_definitions( -DIMPORT_LIBLLDB )
list(APPEND extra_libs lldbHost)
endif ()
if (HAVE_LIBPTHREAD)
list(APPEND extra_libs pthread)
endif ()
# We need to include the llvm components we depend on manually, as liblldb does
# not re-export those.
set(LLVM_LINK_COMPONENTS Support)
add_lldb_tool(lldb-vscode
lldb-vscode.cpp
BreakpointBase.cpp
ExceptionBreakpoint.cpp
FunctionBreakpoint.cpp
JSONUtils.cpp
LLDBUtils.cpp
SourceBreakpoint.cpp
VSCode.cpp
LINK_LIBS
liblldb
${host_lib}
${extra_libs}
LINK_COMPONENTS
Support
)
if(LLDB_BUILD_FRAMEWORK)
lldb_setup_framework_rpaths_in_tool(lldb-vscode)
endif()