set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
+
+ # The install name for the Python 3 framework in Xcode is relative to
+ # the framework's location and not the dylib itself.
+ #
+ # @rpath/Python3.framework/Versions/3.x/Python3
+ #
+ # This means that we need to compute the path to the Python3.framework
+ # and use that as the RPATH instead of the usual dylib's directory.
+ #
+ # The check below shouldn't match Homebrew's Python framework as it is
+ # called Python.framework instead of Python3.framework.
+ if (APPLE AND Python3_LIBRARIES MATCHES "Python3.framework")
+ string(FIND "${Python3_LIBRARIES}" "Python3.framework" python_framework_pos)
+ string(SUBSTRING "${Python3_LIBRARIES}" "0" ${python_framework_pos} PYTHON_RPATH)
+ endif()
+
mark_as_advanced(
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE
+ PYTHON_RPATH
SWIG_EXECUTABLE)
elseif(NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
# Use PYTHON_HOME as a hint to find Python 2.
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE
+ PYTHON_RPATH
SWIG_EXECUTABLE)
endif()
endif()
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE
+ PYTHON_RPATH
SWIG_EXECUTABLE)
endif()
endif()
message(STATUS "SWIG 2 or later is required for Python support in LLDB but could not be found")
endif()
+
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(PythonInterpAndLibs
FOUND_VAR
PYTHON_LIBRARIES
PYTHON_INCLUDE_DIRS
PYTHON_EXECUTABLE
+ PYTHON_RPATH
SWIG_EXECUTABLE)
endif()
set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "\$ORIGIN/../../../../lib${LLVM_LIBDIR_SUFFIX}")
endif()
+if(PYTHON_RPATH)
+ set_property(TARGET liblldb APPEND PROPERTY INSTALL_RPATH "${PYTHON_RPATH}")
+endif()
+
if (MSVC)
set_source_files_properties(SBReproducer.cpp PROPERTIES COMPILE_FLAGS /bigobj)
endif()
Support
)
+if(PYTHON_RPATH)
+ set_property(TARGET lldb-test APPEND PROPERTY INSTALL_RPATH "${PYTHON_RPATH}")
+endif()
+
target_include_directories(lldb-test PRIVATE ${LLDB_SOURCE_DIR}/source)
target_include_directories(lldb-test PRIVATE ${LLDB_BINARY_DIR}/source)