forked from OSchip/llvm-project
[CMake] Fix RPATH handling for LLDB.framework
Summary: Generator expressions are not supported in the `BUILD_RPATH` target property. `BUILD_RPATH` is only supported in 3.8+ https://cliutils.gitlab.io/modern-cmake/chapters/intro/newcmake.html `LLDB_FRAMEWORK_INSTALL_DIR` should not overwrite, but rather add an install RPATH (and it should be the first) Reviewers: xiaobai, lanza Reviewed By: xiaobai Subscribers: mgorny Differential Revision: https://reviews.llvm.org/D57989 llvm-svn: 354037
This commit is contained in:
parent
617cd10bf7
commit
db85fdd115
|
@ -175,23 +175,25 @@ endfunction()
|
|||
# added as an extra RPATH below.
|
||||
#
|
||||
function(lldb_setup_framework_rpaths_in_tool name)
|
||||
# In the build-tree, we know the exact path to the binary in the framework.
|
||||
set(rpath_build_tree "$<TARGET_FILE:liblldb>")
|
||||
|
||||
# The installed framework is relocatable and can be in different locations.
|
||||
set(rpaths_install_tree "@loader_path/../../../SharedFrameworks")
|
||||
set(rpaths_install_tree)
|
||||
|
||||
if(LLDB_FRAMEWORK_INSTALL_DIR)
|
||||
list(APPEND rpaths_install_tree "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}")
|
||||
endif()
|
||||
|
||||
list(APPEND rpaths_install_tree "@loader_path/../../../SharedFrameworks")
|
||||
list(APPEND rpaths_install_tree "@loader_path/../../System/Library/PrivateFrameworks")
|
||||
list(APPEND rpaths_install_tree "@loader_path/../../Library/PrivateFrameworks")
|
||||
|
||||
if(LLDB_FRAMEWORK_INSTALL_DIR)
|
||||
set(rpaths_install_tree "@loader_path/../${LLDB_FRAMEWORK_INSTALL_DIR}")
|
||||
endif()
|
||||
# In the build-tree, we know the exact path to the framework directory.
|
||||
get_target_property(framework_target_dir liblldb LIBRARY_OUTPUT_DIRECTORY)
|
||||
|
||||
# If LLDB_NO_INSTALL_DEFAULT_RPATH was NOT enabled (default), this overwrites
|
||||
# the default settings from llvm_setup_rpath().
|
||||
set_target_properties(${name} PROPERTIES
|
||||
BUILD_WITH_INSTALL_RPATH OFF
|
||||
BUILD_RPATH "${rpath_build_tree}"
|
||||
BUILD_RPATH "${framework_target_dir}"
|
||||
INSTALL_RPATH "${rpaths_install_tree}"
|
||||
)
|
||||
|
||||
|
|
|
@ -55,8 +55,9 @@ if(LLDB_BUILD_FRAMEWORK)
|
|||
message(FATAL_ERROR "LLDB.framework can only be generated when targeting Apple platforms")
|
||||
endif()
|
||||
# CMake 3.6 did not correctly emit POST_BUILD commands for Apple Framework targets
|
||||
if(CMAKE_VERSION VERSION_LESS 3.7)
|
||||
message(FATAL_ERROR "LLDB_BUILD_FRAMEWORK is not supported on CMake < 3.7")
|
||||
# CMake < 3.8 did not have the BUILD_RPATH target property
|
||||
if(CMAKE_VERSION VERSION_LESS 3.8)
|
||||
message(FATAL_ERROR "LLDB_BUILD_FRAMEWORK is not supported on CMake < 3.8")
|
||||
endif()
|
||||
|
||||
set(LLDB_FRAMEWORK_VERSION A CACHE STRING "LLDB.framework version (default is A)")
|
||||
|
|
Loading…
Reference in New Issue