Skip to content
Snippets Groups Projects
Commit a764e133 authored by calrama's avatar calrama
Browse files

Fix shared library bundling for macOS

parent caa35a93
No related branches found
No related tags found
No related merge requests found
Pipeline #37487 passed
......@@ -29,7 +29,11 @@ target_link_libraries(extension PRIVATE robofish::trackviewer::cpp)
install(TARGETS extension OPTIONAL DESTINATION .)
set_target_properties(extension PROPERTIES INSTALL_RPATH "\$ORIGIN;")
if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
set_target_properties(extension PROPERTIES INSTALL_RPATH "\$ORIGIN;")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
set_target_properties(extension PROPERTIES INSTALL_RPATH "@loader_path")
endif()
include(Locate)
......@@ -60,6 +64,34 @@ elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
endif()
get_filename_component(library_path "${library_path}" REALPATH)
get_filename_component(library_name "${library_path}" NAME)
install(FILES "${library_path}" RENAME "${library_name}" DESTINATION .)
execute_process(
COMMAND otool -D "${library_path}"
OUTPUT_VARIABLE _output
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE _res
)
if(NOT "${_res}" STREQUAL "0")
message(FATAL_ERROR "Could not get shared library id name for ${library_path}")
endif()
string(REPLACE "\n" ";" _output_lines "${_output}")
list(GET _output_lines 1 library_id)
add_custom_command(
TARGET extension POST_BUILD
COMMAND install_name_tool -change "${library_id}" "@loader_path/${library_name}" "$<TARGET_FILE:extension>"
VERBATIM
)
file(COPY "${library_path}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}" FILE_PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_WRITE)
execute_process(
COMMAND install_name_tool -id "@loader_path/${library_name}" "${CMAKE_CURRENT_BINARY_DIR}/${library_name}"
RESULT_VARIABLE _res
)
if(NOT "${_res}" STREQUAL "0")
message(FATAL_ERROR "Could not patch shared library id name for ${library_path}")
endif()
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${library_name}" RENAME "${library_name}" DESTINATION .)
endforeach()
endif()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment