[Bf-blender-cvs] [060a50a5f72] master: Cycles: refactor Hydra render delegate building

Brecht Van Lommel noreply at git.blender.org
Fri Apr 29 19:20:49 CEST 2022


Commit: 060a50a5f72a0ccdb754bf155aa2ed394a1bcda5
Author: Brecht Van Lommel
Date:   Thu Apr 7 20:27:23 2022 +0200
Branches: master
https://developer.blender.org/rB060a50a5f72a0ccdb754bf155aa2ed394a1bcda5

Cycles: refactor Hydra render delegate building

* Leave code for building the render delegate against other applications and
  their USD libraries to the Cycles repository, since this is not a great fit.
  In the Blender repository, always use Blender's USD libraries now that they
  include Hydra support.
* Hide non-USD symbols from the hdCycles shared library, to avoid library
  version conflicts.
* Share Apple framework linking between the standalone app and plugin.
* Add cycles_hydra module, to be shared between the standalone app and plugin.
* Bring external libs code in sync with standalone repo, adding various missing
  libraries.
* Move some cmake include directories to the top level cycles source folder
  because we need to control their global order, to ensure we link against the
  correct headers with mixed Blender libraries and external USD libraries.

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

M	intern/cycles/CMakeLists.txt
M	intern/cycles/app/CMakeLists.txt
M	intern/cycles/cmake/external_libs.cmake
M	intern/cycles/cmake/macros.cmake
M	intern/cycles/hydra/CMakeLists.txt
A	intern/cycles/hydra/resources/apple_symbols.map
A	intern/cycles/hydra/resources/linux_symbols.map
M	intern/cycles/scene/CMakeLists.txt

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

diff --git a/intern/cycles/CMakeLists.txt b/intern/cycles/CMakeLists.txt
index 003f75267ce..f5d717e70fc 100644
--- a/intern/cycles/CMakeLists.txt
+++ b/intern/cycles/CMakeLists.txt
@@ -18,8 +18,10 @@ endif()
 
 # External Libraries
 
-include(cmake/external_libs.cmake)
-include(cmake/macros.cmake)
+if(NOT CYCLES_STANDALONE_REPOSITORY)
+  include(cmake/external_libs.cmake)
+  include(cmake/macros.cmake)
+endif()
 
 # Build Flags
 # todo: this code could be refactored a bit to avoid duplication
@@ -221,7 +223,6 @@ include_directories(
   ${OPENIMAGEIO_INCLUDE_DIRS}
   ${OPENEXR_INCLUDE_DIRS}
   ${PUGIXML_INCLUDE_DIR}
-  ${TBB_INCLUDE_DIRS}
 )
 
 if(WITH_CYCLES_DEBUG)
@@ -270,6 +271,49 @@ if(WITH_CYCLES_EMBREE)
   )
 endif()
 
+if(WITH_OPENIMAGEDENOISE)
+  add_definitions(-DWITH_OPENIMAGEDENOISE)
+  include_directories(
+    SYSTEM
+    ${OPENIMAGEDENOISE_INCLUDE_DIRS}
+  )
+endif()
+
+# Logging capabilities using GLog library.
+if(WITH_CYCLES_LOGGING)
+  add_definitions(-DWITH_CYCLES_LOGGING)
+  add_definitions(${GLOG_DEFINES})
+  add_definitions(-DCYCLES_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE})
+  include_directories(
+    SYSTEM
+    ${GLOG_INCLUDE_DIRS}
+    ${GFLAGS_INCLUDE_DIRS}
+  )
+endif()
+
+if(WITH_ALEMBIC)
+  add_definitions(-DWITH_ALEMBIC)
+  include_directories(
+    SYSTEM
+    ${ALEMBIC_INCLUDE_DIRS}
+  )
+endif()
+
+# Includes that might be overrides by USD last, to avoid compiling
+# against the wrong versions of other libraries.
+include_directories(
+  SYSTEM
+  ${TBB_INCLUDE_DIRS}
+)
+
+if(WITH_OPENVDB)
+  add_definitions(-DWITH_OPENVDB ${OPENVDB_DEFINITIONS})
+  include_directories(
+    SYSTEM
+    ${OPENVDB_INCLUDE_DIRS}
+  )
+endif()
+
 if(WITH_NANOVDB)
   add_definitions(-DWITH_NANOVDB)
   include_directories(
@@ -286,23 +330,11 @@ if(WITH_OPENSUBDIV)
   )
 endif()
 
-if(WITH_OPENIMAGEDENOISE)
-  add_definitions(-DWITH_OPENIMAGEDENOISE)
-  include_directories(
-    SYSTEM
-    ${OPENIMAGEDENOISE_INCLUDE_DIRS}
-  )
-endif()
-
-# Logging capabilities using GLog library.
-if(WITH_CYCLES_LOGGING)
-  add_definitions(-DWITH_CYCLES_LOGGING)
-  add_definitions(${GLOG_DEFINES})
-  add_definitions(-DCYCLES_GFLAGS_NAMESPACE=${GFLAGS_NAMESPACE})
+if(WITH_OPENCOLORIO)
+  add_definitions(-DWITH_OCIO)
   include_directories(
     SYSTEM
-    ${GLOG_INCLUDE_DIRS}
-    ${GFLAGS_INCLUDE_DIRS}
+    ${OPENCOLORIO_INCLUDE_DIRS}
   )
 endif()
 
@@ -395,7 +427,7 @@ if(WITH_GTESTS)
   add_subdirectory(test)
 endif()
 
-if(WITH_CYCLES_HYDRA_RENDER_DELEGATE)
+if(WITH_CYCLES_HYDRA_RENDER_DELEGATE OR (WITH_CYCLES_STANDALONE AND WITH_USD))
   add_subdirectory(hydra)
 endif()
 
diff --git a/intern/cycles/app/CMakeLists.txt b/intern/cycles/app/CMakeLists.txt
index 872a95ed5a6..6aea962eab5 100644
--- a/intern/cycles/app/CMakeLists.txt
+++ b/intern/cycles/app/CMakeLists.txt
@@ -83,13 +83,6 @@ if(WITH_CYCLES_STANDALONE)
   target_link_libraries(cycles PRIVATE ${LIB})
 
   if(APPLE)
-    if(WITH_OPENCOLORIO)
-      set_property(TARGET cycles APPEND_STRING PROPERTY LINK_FLAGS " -framework IOKit -framework Carbon")
-    endif()
-    if(WITH_OPENIMAGEDENOISE AND "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
-      # OpenImageDenoise uses BNNS from the Accelerate framework.
-      set_property(TARGET cycles APPEND_STRING PROPERTY LINK_FLAGS " -framework Accelerate")
-    endif()
     if(WITH_CYCLES_STANDALONE_GUI)
       set_property(TARGET cycles APPEND_STRING PROPERTY LINK_FLAGS
         " -framework Cocoa -framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework ForceFeedback -framework CoreVideo")
@@ -103,6 +96,10 @@ if(WITH_CYCLES_STANDALONE)
   if(CYCLES_STANDALONE_REPOSITORY)
     cycles_install_libraries(cycles)
   endif()
+
+  install(PROGRAMS
+    $<TARGET_FILE:cycles>
+    DESTINATION ${CMAKE_INSTALL_PREFIX})
 endif()
 
 #####################################################################
diff --git a/intern/cycles/cmake/external_libs.cmake b/intern/cycles/cmake/external_libs.cmake
index 05c0980bdfb..f4186374d10 100644
--- a/intern/cycles/cmake/external_libs.cmake
+++ b/intern/cycles/cmake/external_libs.cmake
@@ -24,6 +24,9 @@ if(CYCLES_STANDALONE_REPOSITORY)
     else()
       set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/darwin_arm64")
     endif()
+
+    # Always use system zlib
+    find_package(ZLIB REQUIRED)
   elseif(WIN32)
     if(CMAKE_CL_64)
       set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/win64_vc15")
@@ -66,10 +69,12 @@ if(CYCLES_STANDALONE_REPOSITORY)
     _set_default(BOOST_ROOT "${_cycles_lib_dir}/boost")
     _set_default(BLOSC_ROOT_DIR "${_cycles_lib_dir}/blosc")
     _set_default(EMBREE_ROOT_DIR "${_cycles_lib_dir}/embree")
+    _set_default(IMATH_ROOT_DIR "${_cycles_lib_dir}/imath")
     _set_default(GLEW_ROOT_DIR "${_cycles_lib_dir}/glew")
     _set_default(JPEG_ROOT "${_cycles_lib_dir}/jpeg")
     _set_default(LLVM_ROOT_DIR "${_cycles_lib_dir}/llvm")
     _set_default(CLANG_ROOT_DIR "${_cycles_lib_dir}/llvm")
+    _set_default(NANOVDB_ROOT_DIR "${_cycles_lib_dir}/openvdb")
     _set_default(OPENCOLORIO_ROOT_DIR "${_cycles_lib_dir}/opencolorio")
     _set_default(OPENEXR_ROOT_DIR "${_cycles_lib_dir}/openexr")
     _set_default(OPENIMAGEDENOISE_ROOT_DIR "${_cycles_lib_dir}/openimagedenoise")
@@ -80,8 +85,11 @@ if(CYCLES_STANDALONE_REPOSITORY)
     _set_default(OSL_ROOT_DIR "${_cycles_lib_dir}/osl")
     _set_default(PNG_ROOT "${_cycles_lib_dir}/png")
     _set_default(PUGIXML_ROOT_DIR "${_cycles_lib_dir}/pugixml")
+    _set_default(SDL2_ROOT_DIR "${_cycles_lib_dir}/sdl")
     _set_default(TBB_ROOT_DIR "${_cycles_lib_dir}/tbb")
     _set_default(TIFF_ROOT "${_cycles_lib_dir}/tiff")
+    _set_default(USD_ROOT_DIR "${_cycles_lib_dir}/usd")
+    _set_default(WEBP_ROOT_DIR "${_cycles_lib_dir}/webp")
     _set_default(ZLIB_ROOT "${_cycles_lib_dir}/zlib")
 
     # Ignore system libraries
@@ -91,23 +99,6 @@ if(CYCLES_STANDALONE_REPOSITORY)
   endif()
 endif()
 
-###########################################################################
-# USD
-###########################################################################
-
-if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_HYDRA_RENDER_DELEGATE)
-  set(WITH_USD ON)
-endif()
-if(WITH_CYCLES_HYDRA_RENDER_DELEGATE)
-  find_package(pxr CONFIG REQUIRED PATHS ${PXR_ROOT} ${USD_ROOT} NO_DEFAULT_PATH)
-  if(pxr_FOUND)
-    set(PXR_LIBRARY_DIR ${PXR_CMAKE_DIR}/lib)
-    set(USD_INCLUDE_DIRS ${PXR_INCLUDE_DIRS})
-  else()
-    set(WITH_USD OFF)
-  endif()
-endif()
-
 ###########################################################################
 # Zlib
 ###########################################################################
@@ -189,6 +180,7 @@ if(CYCLES_STANDALONE_REPOSITORY)
 
   find_package(JPEG REQUIRED)
   find_package(TIFF REQUIRED)
+  find_package(WebP)
 
   if(EXISTS ${_cycles_lib_dir})
     set(PNG_NAMES png16 libpng16 png libpng)
@@ -277,20 +269,22 @@ endif()
 if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_OPENCOLORIO)
   set(WITH_OPENCOLORIO ON)
 
-  if(MSVC AND EXISTS ${_cycles_lib_dir})
-    set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO_ROOT_DIR}/include)
-    set(OPENCOLORIO_LIBRARIES
-      optimized ${OPENCOLORIO_ROOT_DIR}/lib/OpenColorIO.lib
-      optimized ${OPENCOLORIO_ROOT_DIR}/lib/libyaml-cpp.lib
-      optimized ${OPENCOLORIO_ROOT_DIR}/lib/libexpatMD.lib
-      optimized ${OPENCOLORIO_ROOT_DIR}/lib/pystring.lib
-      debug ${OPENCOLORIO_ROOT_DIR}/lib/OpencolorIO_d.lib
-      debug ${OPENCOLORIO_ROOT_DIR}/lib/libyaml-cpp_d.lib
-      debug ${OPENCOLORIO_ROOT_DIR}/lib/libexpatdMD.lib
-      debug ${OPENCOLORIO_ROOT_DIR}/lib/pystring_d.lib
-    )
-  else()
-    find_package(OpenColorIO REQUIRED)
+  if(NOT USD_OVERRIDE_OPENCOLORIO)
+    if(MSVC AND EXISTS ${_cycles_lib_dir})
+      set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO_ROOT_DIR}/include)
+      set(OPENCOLORIO_LIBRARIES
+        optimized ${OPENCOLORIO_ROOT_DIR}/lib/OpenColorIO.lib
+        optimized ${OPENCOLORIO_ROOT_DIR}/lib/libyaml-cpp.lib
+        optimized ${OPENCOLORIO_ROOT_DIR}/lib/libexpatMD.lib
+        optimized ${OPENCOLORIO_ROOT_DIR}/lib/pystring.lib
+        debug ${OPENCOLORIO_ROOT_DIR}/lib/OpencolorIO_d.lib
+        debug ${OPENCOLORIO_ROOT_DIR}/lib/libyaml-cpp_d.lib
+        debug ${OPENCOLORIO_ROOT_DIR}/lib/libexpatdMD.lib
+        debug ${OPENCOLORIO_ROOT_DIR}/lib/pystring_d.lib
+      )
+    else()
+      find_package(OpenColorIO REQUIRED)
+    endif()
   endif()
 endif()
 
@@ -366,7 +360,7 @@ if(CYCLES_STANDALONE_REPOSITORY)
     set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
   endif()
 
-  set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
+  set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB ${BOOST_DEFINITIONS}")
 endif()
 
 ###########################################################################
@@ -414,26 +408,10 @@ endif()
 # OpenSubdiv
 ###########################################################################
 
-if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND PXR_LIBRARY_DIR AND (WITH_OPENSUBDIV OR WITH_CYCLES_OPENSUBDIV))
-  find_library(OPENSUBDIV_LIBRARY_CPU_DEBUG_PXR NAMES osdCPU_d osdCPU PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
-  find_library(OPENSUBDIV_LIBRARY_GPU_DEBUG_PXR NAMES osdGPU_d osdGPU PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
-  find_library(OPENSUBDIV_LIBRARY_CPU_RELEASE_PXR NAMES osdCPU PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
-  find_library(OPENSUBDIV_LIBRARY_GPU_RELEASE_PXR NAMES osdGPU PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
-  if(OPENSUBDIV_LIBRARY_CPU_RELEASE_PXR AND OPENSUBDIV_LIBRARY_GPU_RELEASE_PXR)
-    set(OPENSUBDIV_INCLUDE_DIRS ${PXR_INCLUDE_DIRS})
-    set(OPENSUBDIV_LIBRARIES
-      optimized ${OPENSUBDIV_LIBRARY_CPU_RELEASE_PXR}
-      optimized ${OPENSUBDIV_LIBRARY_GPU_RELEASE_PXR}
-      debug ${OPENSUBDIV_LIBRARY_CPU_DEBUG_PXR}
-      debug ${OPENSUBDIV_LIBRARY_GPU_DEBUG_PXR}
-    )
-  endif()
-endif()
-
 if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_OPENSUBDIV)
   set(WITH_OPENSUBDIV ON)
 
-  if(NOT OPENSUBDIV_LIBRARY_CPU_RELEASE_PXR OR NOT OPENSUBDIV_LIBRARY_GPU_RELEASE_PXR)
+  if(NOT USD_OVERRIDE_OPENSUBDIV)
     if(MSVC AND EXISTS ${_cycles_lib_dir})
       set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_ROOT_DIR}/include)
       set(OPENSUBDIV_LIBRARIES
@@ -452,19 +430,11 @@ endif()
 # OpenVDB
 ##########################

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list