diff options
author | Ankit Meel <ankitjmeel@gmail.com> | 2021-08-03 18:19:40 +0300 |
---|---|---|
committer | Ankit Meel <ankitjmeel@gmail.com> | 2021-08-03 18:19:40 +0300 |
commit | 652fbc200500497a67bd11d18b786587ba34e3d9 (patch) | |
tree | c08748c1d77552fbb3f8af0df7e3d6c1d8c302d5 /source/creator | |
parent | a25a1f39aa1de148605b85ee5f18e52e8038c303 (diff) |
macOS: Portable builds with dynamic libraries.
For Blender.app: dropping libomp.dylib next to Blender executable is
enough for it getting picked up since `@executable_path` is an rpath.
For non-distributed binaries datatoc, makesdna, tests etc, code for
copying libomp.dylib to build folder is removed and replaced by
CMake's rpath option for *build* tree.
For bpy.so, the post build rpath change has also been replaced by CMake
rpath option for *install* tree.
Since -id has been changed in D11748, remove the
`install_name_tool -change ...` command.
Any dylib can just be dropped at `MAC_BLENDER_TARGET_DYLIBS_DIR`
hereafter. Appending dylib path to `CMAKE_BUILD_RPATH` will be needed
for datatoc etc if linked against one (instead of copying the
dylibs around).
Reviewed By: #platform_macos, brecht
Differential Revision: https://developer.blender.org/D11997
Diffstat (limited to 'source/creator')
-rw-r--r-- | source/creator/CMakeLists.txt | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index c3aeffe8fda..f7179dfb7e9 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -345,8 +345,13 @@ elseif(APPLE) set(TARGETDIR_VER "${PYTHON_LIBPATH}/Resources/${BLENDER_VERSION}") set(INSTALL_BPY_TO_SITE_PACKAGES ON) endif() + # Dylibs folder for bpy.so. + set(MAC_BLENDER_TARGET_DYLIBS_DIR "${TARGETDIR_VER}/lib") else() set(TARGETDIR_VER Blender.app/Contents/Resources/${BLENDER_VERSION}) + # Dylibs folder for Blender executable. @executable_path is a default + # rpath, so dropping libraries next to Blender is enough. + set(MAC_BLENDER_TARGET_DYLIBS_DIR "$<TARGET_FILE_DIR:blender>") endif() # Skip relinking on cpack / install set_target_properties(blender PROPERTIES BUILD_WITH_INSTALL_RPATH true) @@ -1041,23 +1046,16 @@ elseif(APPLE) if(WITH_OPENMP AND OPENMP_CUSTOM) install( - FILES ${LIBDIR}/openmp/lib/libomp.dylib - DESTINATION Blender.app/Contents/Resources/lib + FILES "${OpenMP_LIBRARY}" + DESTINATION "${MAC_BLENDER_TARGET_DYLIBS_DIR}" + ) + endif() + + if(WITH_COMPILER_ASAN) + install( + FILES "${COMPILER_ASAN_LIBRARY}" + DESTINATION "${MAC_BLENDER_TARGET_DYLIBS_DIR}" ) - if(WITH_PYTHON_MODULE) - # Move the dylib in a Blender version folder to keep the corresponding OpenMP version. - install( - DIRECTORY ${CMAKE_BINARY_DIR}/Resources/lib - DESTINATION ${TARGETDIR_VER} - ) - add_custom_command(TARGET blender POST_BUILD - # The old `LC_LOAD_DYLIB` is the `LC_ID_DYLIB` of the LIBDIR OpenMP dylib. - # Change it to support multiple rpaths. - COMMAND xcrun install_name_tool -change "@executable_path/../Resources/lib/libomp.dylib" "@rpath/libomp.dylib" "$<TARGET_FILE:blender>" - # For installation into site-packages. - COMMAND xcrun install_name_tool -add_rpath "@loader_path/../Resources/${BLENDER_VERSION}/lib" "$<TARGET_FILE:blender>" - ) - endif() endif() # python |