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:
-rw-r--r--CMakeLists.txt4
-rw-r--r--build_files/cmake/platform/platform_apple.cmake38
-rw-r--r--source/creator/CMakeLists.txt30
3 files changed, 37 insertions, 35 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6c6408bee2c..b7dfb56ff02 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -110,6 +110,10 @@ if(POLICY CMP0074)
cmake_policy(SET CMP0074 NEW)
endif()
+# Install CODE|SCRIPT allow the use of generator expressions.
+if(POLICY CMP0087)
+ cmake_policy(SET CMP0087 NEW)
+endif()
#-----------------------------------------------------------------------------
# Load some macros.
include(build_files/cmake/macros.cmake)
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 70973eeda99..529c01db009 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -411,25 +411,9 @@ if(WITH_OPENMP)
set(OPENMP_FOUND ON)
set(OpenMP_C_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'")
set(OpenMP_CXX_FLAGS "-Xclang -fopenmp -I'${LIBDIR}/openmp/include'")
- set(OpenMP_LINKER_FLAGS "-L'${LIBDIR}/openmp/lib' -lomp")
-
- # Copy libomp.dylib to allow executables like datatoc and tests to work.
- # `@executable_path/../Resources/lib/` `LC_ID_DYLIB` is added by the deps builder.
- # For single config generator datatoc, tests etc.
- execute_process(
- COMMAND mkdir -p ${CMAKE_BINARY_DIR}/Resources/lib
- COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/Resources/lib/libomp.dylib
- )
- # For multi-config generator datatoc, etc.
- execute_process(
- COMMAND mkdir -p ${CMAKE_BINARY_DIR}/bin/Resources/lib
- COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/bin/Resources/lib/libomp.dylib
- )
- # For multi-config generator tests.
- execute_process(
- COMMAND mkdir -p ${CMAKE_BINARY_DIR}/bin/tests/Resources/lib
- COMMAND cp -p ${LIBDIR}/openmp/lib/libomp.dylib ${CMAKE_BINARY_DIR}/bin/tests/Resources/lib/libomp.dylib
- )
+ set(OpenMP_LIBRARY_DIR "${LIBDIR}/openmp/lib/")
+ set(OpenMP_LINKER_FLAGS "-L'${OpenMP_LIBRARY_DIR}' -lomp")
+ set(OpenMP_LIBRARY "${OpenMP_LIBRARY_DIR}/libomp.dylib")
endif()
endif()
@@ -511,3 +495,19 @@ if(WITH_COMPILER_CCACHE)
endif()
endif()
endif()
+
+# For binaries that are built but not installed (also not distributed) (datatoc,
+# makesdna, tests, etc.), we add an rpath to the OpenMP library dir through
+# CMAKE_BUILD_RPATH. This avoids having to make many copies of the dylib next to each binary.
+#
+# For the installed Blender executable, CMAKE_INSTALL_RPATH will be used, but
+# needs no changes since it already looks for dylibs next to the executable by
+# default (@executable_path).
+#
+# For the installed Python module, CMAKE_INSTALL_RPATH is modified to find the
+# dylib in an adjacent folder.
+set(CMAKE_SKIP_BUILD_RPATH FALSE)
+list(APPEND CMAKE_BUILD_RPATH "${OpenMP_LIBRARY_DIR}")
+if(WITH_PYTHON_MODULE)
+ list(APPEND CMAKE_INSTALL_RPATH "@loader_path/../Resources/${BLENDER_VERSION}/lib")
+endif()
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