[Bf-blender-cvs] [5304d326d64] tmp_lib_update_32: deps: updates and fixes for macOS

Brecht Van Lommel noreply at git.blender.org
Tue Feb 15 11:29:08 CET 2022


Commit: 5304d326d640067ebd1f581824f2475fa4bfa91f
Author: Brecht Van Lommel
Date:   Tue Feb 15 02:09:24 2022 +0100
Branches: tmp_lib_update_32
https://developer.blender.org/rB5304d326d640067ebd1f581824f2475fa4bfa91f

deps: updates and fixes for macOS

* Use upstream Embree for Arm now that it includes required changes
* Fix various build issues with different TBB cmake option names
* Fix for renamed USD static lib
* Disable NanoVDB command line tools
* FindOpenEXR updated to find new lib names and separate Imath. Add it all
  to the list of  OpenEXR include dirs and libs. This keeps things compatible
  with both version 2.x and 3.x for now.
* FindOpenImageIO updated to link to separate OpenImageIO_Util for new
  versions, where it is required.
* Link to GameController and CoreHaptics frameworker for latest SDL. This seems
  unnecessary though as we don't even use SDL joystick functionality. However
  disabling SDL joystick or haptics support gives link errors due to missing
  symbols, which would likely require patching SDL to solve.

Ref T95206

===================================================================

M	CMakeLists.txt
M	build_files/build_environment/cmake/embree.cmake
M	build_files/build_environment/cmake/harvest.cmake
M	build_files/build_environment/cmake/imath.cmake
M	build_files/build_environment/cmake/opensubdiv.cmake
M	build_files/build_environment/cmake/openvdb.cmake
M	build_files/build_environment/cmake/usd.cmake
M	build_files/build_environment/cmake/versions.cmake
M	build_files/build_environment/patches/embree.diff
M	build_files/cmake/Modules/FindOpenEXR.cmake
M	build_files/cmake/Modules/FindOpenImageIO.cmake
M	build_files/cmake/platform/platform_apple.cmake

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75f5795db68..cd4a85afd4c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -301,7 +301,7 @@ option(WITH_USD                 "Enable Universal Scene Description (USD) Suppor
 option(WITH_OPENCOLLADA   "Enable OpenCollada Support (http://www.opencollada.org)" ON)
 
 # Sound output
-option(WITH_SDL           "Enable SDL for sound and joystick support" ON)
+option(WITH_SDL           "Enable SDL for sound" ON)
 option(WITH_OPENAL        "Enable OpenAL Support (http://www.openal.org)" ON)
 if(APPLE)
   option(WITH_COREAUDIO    "Enable CoreAudio for audio support on macOS" ON)
diff --git a/build_files/build_environment/cmake/embree.cmake b/build_files/build_environment/cmake/embree.cmake
index 229c1800e16..2eafc729111 100644
--- a/build_files/build_environment/cmake/embree.cmake
+++ b/build_files/build_environment/cmake/embree.cmake
@@ -17,6 +17,16 @@ set(EMBREE_EXTRA_ARGS
   -DTBB_STATIC_LIB=${TBB_STATIC_LIBRARY}
 )
 
+if(BLENDER_PLATFORM_ARM)
+  set(EMBREE_EXTRA_ARGS
+    ${EMBREE_EXTRA_ARGS}
+    -DEMBREE_MAX_ISA=NEON)
+else()
+  set(EMBREE_EXTRA_ARGS
+    ${EMBREE_EXTRA_ARGS}
+    -DEMBREE_MAX_ISA=AVX2)
+endif()
+
 if(TBB_STATIC_LIBRARY)
   set(EMBREE_EXTRA_ARGS
     ${EMBREE_EXTRA_ARGS}
@@ -37,26 +47,15 @@ else()
   set(EMBREE_BUILD_DIR)
 endif()
 
-if(BLENDER_PLATFORM_ARM)
-  ExternalProject_Add(external_embree
-    GIT_REPOSITORY ${EMBREE_ARM_GIT}
-    GIT_TAG "blender-arm"
-    DOWNLOAD_DIR ${DOWNLOAD_DIR}
-    PREFIX ${BUILD_DIR}/embree
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS}
-    INSTALL_DIR ${LIBDIR}/embree
-  )
-else()
-  ExternalProject_Add(external_embree
-    URL file://${PACKAGE_DIR}/${EMBREE_FILE}
-    DOWNLOAD_DIR ${DOWNLOAD_DIR}
-    URL_HASH ${EMBREE_HASH_TYPE}=${EMBREE_HASH}
-    PREFIX ${BUILD_DIR}/embree
-    PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/embree/src/external_embree < ${PATCH_DIR}/embree.diff
-    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS}
-    INSTALL_DIR ${LIBDIR}/embree
-  )
-endif()
+ExternalProject_Add(external_embree
+  URL file://${PACKAGE_DIR}/${EMBREE_FILE}
+  DOWNLOAD_DIR ${DOWNLOAD_DIR}
+  URL_HASH ${EMBREE_HASH_TYPE}=${EMBREE_HASH}
+  PREFIX ${BUILD_DIR}/embree
+  PATCH_COMMAND ${PATCH_CMD} -p 1 -d ${BUILD_DIR}/embree/src/external_embree < ${PATCH_DIR}/embree.diff
+  CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/embree ${DEFAULT_CMAKE_FLAGS} ${EMBREE_EXTRA_ARGS}
+  INSTALL_DIR ${LIBDIR}/embree
+)
 
 add_dependencies(
   external_embree
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index 399adc1e627..a0c7a6d3086 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -67,6 +67,8 @@ harvest(brotli/include brotli/include "*.h")
 harvest(brotli/lib brotli/lib "*.a")
 harvest(boost/include boost/include "*")
 harvest(boost/lib boost/lib "*.a")
+harvest(imath/include imath/include "*.h")
+harvest(imath/lib imath/lib "*.a")
 harvest(ffmpeg/include ffmpeg/include "*.h")
 harvest(ffmpeg/lib ffmpeg/lib "*.a")
 harvest(fftw3/include fftw3/include "*.h")
diff --git a/build_files/build_environment/cmake/imath.cmake b/build_files/build_environment/cmake/imath.cmake
index e615b667a1e..eb5465e6d37 100644
--- a/build_files/build_environment/cmake/imath.cmake
+++ b/build_files/build_environment/cmake/imath.cmake
@@ -3,6 +3,7 @@
 set(IMATH_EXTRA_ARGS
   -DBUILD_SHARED_LIBS=OFF
   -DBUILD_TESTING=OFF
+  -DIMATH_LIB_SUFFIX=${OPENEXR_VERSION_BUILD_POSTFIX}
 )
 
 ExternalProject_Add(external_imath
diff --git a/build_files/build_environment/cmake/opensubdiv.cmake b/build_files/build_environment/cmake/opensubdiv.cmake
index 9f6d242ac6f..6d6e3568406 100644
--- a/build_files/build_environment/cmake/opensubdiv.cmake
+++ b/build_files/build_environment/cmake/opensubdiv.cmake
@@ -39,6 +39,8 @@ if(WIN32)
 else()
   set(OPENSUBDIV_EXTRA_ARGS
     ${OPENSUBDIV_EXTRA_ARGS}
+    -DTBB_INCLUDE_DIR=${LIBDIR}/tbb/include
+    -DTBB_tbb_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
     -DCUEW_INCLUDE_DIR=${LIBDIR}/cuew/include
     -DCLEW_INCLUDE_DIR=${LIBDIR}/clew/include/CL
     -DCLEW_LIBRARY=${LIBDIR}/clew/lib/static/${LIBPREFIX}clew${LIBEXT}
diff --git a/build_files/build_environment/cmake/openvdb.cmake b/build_files/build_environment/cmake/openvdb.cmake
index 0ce63d0112f..4a4df61d88e 100644
--- a/build_files/build_environment/cmake/openvdb.cmake
+++ b/build_files/build_environment/cmake/openvdb.cmake
@@ -30,6 +30,7 @@ set(OPENVDB_EXTRA_ARGS
   -DOPENVDB_BUILD_UNITTESTS=OFF
   -DOPENVDB_BUILD_PYTHON_MODULE=OFF
   -DOPENVDB_BUILD_NANOVDB=ON
+  -DNANOVDB_BUILD_TOOLS=OFF
   -DBlosc_ROOT=${LIBDIR}/blosc/
   -DTBB_ROOT=${LIBDIR}/tbb/
   -DOPENVDB_CORE_SHARED=${OPENVDB_SHARED}
@@ -50,10 +51,8 @@ if(WIN32)
 else()
   # OpenVDB can't find the _static libraries automatically.
   set(OPENVDB_EXTRA_ARGS ${OPENVDB_EXTRA_ARGS}
-    -DTbb_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
-    -DTbb_tbb_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT}
-    -DTbb_tbbmalloc_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbbmalloc_static${LIBEXT}
-    -DTbb_tbbmalloc_proxy_LIBRARY=${LIBDIR}/tbb/lib/${LIBPREFIX}tbbmalloc_proxy_static${LIBEXT}
+    -DTBB_INCLUDE_DIRS=${LIBDIR}/tbb/include
+    -DTbb_RELEASE_LIBRARIES=${LIBDIR}/tbb/lib/${LIBPREFIX}tbb_static${LIBEXT};${LIBDIR}/tbb/lib/${LIBPREFIX}tbbmalloc_static${LIBEXT};${LIBDIR}/tbb/lib/${LIBPREFIX}tbbmalloc_proxy_static${LIBEXT}
   )
 endif()
 
diff --git a/build_files/build_environment/cmake/usd.cmake b/build_files/build_environment/cmake/usd.cmake
index 92b2bb686c3..79babe36a1d 100644
--- a/build_files/build_environment/cmake/usd.cmake
+++ b/build_files/build_environment/cmake/usd.cmake
@@ -92,7 +92,7 @@ else()
   # case (only the shared library). As a result, we need to grab the `libusd_m.a`
   # file from the build directory instead of from the install directory.
   ExternalProject_Add_Step(external_usd after_install
-    COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/libusd_m.a ${HARVEST_TARGET}/usd/lib/libusd_m.a
+    COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/usd/src/external_usd-build/pxr/libusd_usd_m.a ${HARVEST_TARGET}/usd/lib/libusd_m.a
     DEPENDEES install
   )
 endif()
diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake
index bd1e9092f81..d4bab96c955 100644
--- a/build_files/build_environment/cmake/versions.cmake
+++ b/build_files/build_environment/cmake/versions.cmake
@@ -435,7 +435,6 @@ set(EMBREE_URI https://github.com/embree/embree/archive/v${EMBREE_VERSION}.zip)
 set(EMBREE_HASH f62766ba54e48a2f327c3a22596e7133)
 set(EMBREE_HASH_TYPE MD5)
 set(EMBREE_FILE embree-v${EMBREE_VERSION}.zip)
-set(EMBREE_ARM_GIT https://github.com/brechtvl/embree.git)
 
 set(USD_VERSION 21.11)
 set(USD_URI https://github.com/PixarAnimationStudios/USD/archive/v${USD_VERSION}.tar.gz)
diff --git a/build_files/build_environment/patches/embree.diff b/build_files/build_environment/patches/embree.diff
index 9b2c66feaf7..e83d754a465 100644
--- a/build_files/build_environment/patches/embree.diff
+++ b/build_files/build_environment/patches/embree.diff
@@ -12,3 +12,19 @@ diff -Naur orig/common/sys/platform.h external_embree/common/sys/platform.h
  #else
  #define dll_export __attribute__ ((visibility ("default")))
  #define dll_import 
+diff --git orig/common/tasking/CMakeLists.txt external_embree/common/tasking/CMakeLists.txt
+--- orig/common/tasking/CMakeLists.txt
++++ external_embree/common/tasking/CMakeLists.txt
+@@ -27,7 +27,11 @@
+     else()
+       # If not found try getting older TBB via module (FindTBB.cmake)
+       unset(TBB_DIR CACHE)
+-      find_package(TBB 4.1 REQUIRED tbb)
++      if (TBB_STATIC_LIB)
++        find_package(TBB 4.1 REQUIRED tbb_static)
++      else()
++        find_package(TBB 4.1 REQUIRED tbb)
++      endif()
+       if (TBB_FOUND)
+         TARGET_LINK_LIBRARIES(tasking PUBLIC TBB)
+         TARGET_INCLUDE_DIRECTORIES(tasking PUBLIC "${TBB_INCLUDE_DIRS}")
diff --git a/build_files/cmake/Modules/FindOpenEXR.cmake b/build_files/cmake/Modules/FindOpenEXR.cmake
index 792bb127f99..fd13a4d9511 100644
--- a/build_files/cmake/Modules/FindOpenEXR.cmake
+++ b/build_files/cmake/Modules/FindOpenEXR.cmake
@@ -29,14 +29,6 @@ ENDIF()
 # Old versions (before 2.0?) do not have any version string, just assuming this should be fine though.
 SET(_openexr_libs_ver_init "2.0")
 
-SET(_openexr_FIND_COMPONENTS
-  Half
-  Iex
-  IlmImf
-  IlmThread
-  Imath
-)
-
 SET(_openexr_SEARCH_DIRS
   ${OPENEXR_ROOT_DIR}
   /opt/lib/openexr
@@ -89,6 +81,24 @@ UNSET(_openexr_libs_ver_init)
 
 STRING(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _openexr_libs_ver ${OPENEXR_VERSION})
 
+# Different library names in 3.0, and Imath and Half moved out.
+IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
+  SET(_openexr_FIND_COMPONENTS
+    Iex
+    IlmThread
+    OpenEXR
+    OpenEXRCore
+  )
+ELSE()
+  SET(_openexr_FIND_COMPONENTS
+    Half
+    Iex
+    IlmImf
+    IlmThread
+    Imath
+  )
+ENDIF()
+
 SET(_openexr_LIBRARIES)
 FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
   STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
@@ -107,6 +117,57 @@ ENDFOREACH()
 
 UNSET(_openexr_libs_ver)
 
+IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
+  # For OpenEXR 3.x, we also need to find the now separate Imath library.
+  # For simplicity we add it to the OpenEXR includes and libraries, as we
+  # have no direct dependency on Imath and it's simpler to support both
+  # 2.x and 3.x this way.
+
+  # Find include directory
+  FIND_PATH(IMATH_INCLUDE_DIR
+    NAMES
+      Imath/ImathMath.h
+    HINTS
+      ${_openexr_SEARCH_DIRS}
+    PATH_SUFFIXES
+      include
+  )
+
+  # Find version
+  FIND_FILE(_imath_config
+    NAMES
+      ImathConfig.h
+    PATHS
+      ${IMATH_INCLUDE_DIR}/Imath
+    NO_DEFAULT_PATH
+  )
+
+  # Find line with version, extract string, and format for library suffix.
+  FILE(STRINGS "${_imath_config}" _imath_build_specification
+       REGEX "^[ \t]*#define[ \t]+IMATH_VERSION_STRING[ \t]+\"[.0-9]+\".*

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list