Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnkit Meel <ankitjmeel@gmail.com>2021-08-03 18:19:40 +0300
committerAnkit Meel <ankitjmeel@gmail.com>2021-08-03 18:19:40 +0300
commit652fbc200500497a67bd11d18b786587ba34e3d9 (patch)
treec08748c1d77552fbb3f8af0df7e3d6c1d8c302d5 /source/creator
parenta25a1f39aa1de148605b85ee5f18e52e8038c303 (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.txt30
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