Skip to content

Commit

Permalink
CMake: set rpath to installed plugins on MacOSX frameworks (fixes #4761)
Browse files Browse the repository at this point in the history
Credits to @PeterPetrik for the hints!
  • Loading branch information
rouault committed Nov 4, 2021
1 parent 3b18f05 commit 2488e70
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
12 changes: 12 additions & 0 deletions cmake/helpers/GdalDriverHelper.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,21 @@ function(add_gdal_driver)
LIBRARY_OUTPUT_DIRECTORY ${PLUGIN_OUTPUT_DIR}
SKIP_BUILD_RPATH YES
)
# The following doesn't work: we have to manually tweak will install_name_tool
#if (GDAL_ENABLE_MACOSX_FRAMEWORK)
# set_target_properties(${_DRIVER_TARGET}
# PROPERTIES
# INSTALL_RPATH "@loader_path/../../../..")
#endif()
target_link_libraries(${_DRIVER_TARGET} PRIVATE $<TARGET_NAME:${GDAL_LIB_TARGET_NAME}>)
install(FILES $<TARGET_LINKER_FILE:${_DRIVER_TARGET}> DESTINATION ${INSTALL_PLUGIN_DIR}
RENAME "${_DRIVER_TARGET}${CMAKE_SHARED_LIBRARY_SUFFIX}" NAMELINK_SKIP)
if (GDAL_ENABLE_MACOSX_FRAMEWORK)
file(RELATIVE_PATH relDir
${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_PLUGIN_DIR}
${CMAKE_CURRENT_BINARY_DIR}/${FRAMEWORK_DESTINATION})
install(CODE "execute_process(COMMAND install_name_tool -add_rpath \"@loader_path/${relDir}\" \"$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${INSTALL_PLUGIN_DIR}/${_DRIVER_TARGET}${CMAKE_SHARED_LIBRARY_SUFFIX}\")")
endif()
set_property(GLOBAL APPEND PROPERTY PLUGIN_MODULES ${_DRIVER_TARGET})
else ()
add_library(${_DRIVER_TARGET} OBJECT ${_DRIVER_SOURCES})
Expand Down
2 changes: 1 addition & 1 deletion gdal.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ endif ()
if (GDAL_ENABLE_MACOSX_FRAMEWORK)
set(CMAKE_MACOSX_RPATH ON)
set(FRAMEWORK_VERSION ${GDAL_VERSION_MAJOR}.${GDAL_VERSION_MINOR})
set(FRAMEWORK_DESTINATION "Library/Frameworks")
set(FRAMEWORK_DESTINATION "Library/Frameworks" CACHE STRING "Framework destination sub-directory")
set(FRAMEWORK_SUBDIR "${FRAMEWORK_DESTINATION}/gdal.framework/Versions/${FRAMEWORK_VERSION}")
set(INSTALL_PLUGIN_DIR
"${FRAMEWORK_SUBDIR}/PlugIns"
Expand Down

0 comments on commit 2488e70

Please sign in to comment.