[Bf-blender-cvs] [0de0950ad5d] master: Cycles: various Linux build fixes related to Hydra render delegate

Brecht Van Lommel noreply at git.blender.org
Thu Apr 7 19:53:19 CEST 2022


Commit: 0de0950ad5d1de5172cbd2b6b0e67fe319a420c1
Author: Brecht Van Lommel
Date:   Wed Apr 6 22:25:40 2022 +0200
Branches: master
https://developer.blender.org/rB0de0950ad5d1de5172cbd2b6b0e67fe319a420c1

Cycles: various Linux build fixes related to Hydra render delegate

* Add missing GLEW and hgiGL libraries for Hydra
* Fix wrong case sensitive include
* Fix link errors by adding external libs to static Hydra lib
* Work around weird Hydra link error with MAX_SAMPLES
* Use Embree by default for Hydra
* Sync external libs code with standalone
* Update version number to match Blender
* Remove unneeded CLEW/GLEW from test executable

None of this should affect Cycles in Blender.

Ref T96731

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

M	intern/cycles/app/CMakeLists.txt
M	intern/cycles/cmake/external_libs.cmake
M	intern/cycles/cmake/macros.cmake
M	intern/cycles/device/CMakeLists.txt
M	intern/cycles/hydra/CMakeLists.txt
M	intern/cycles/hydra/plugin.cpp
M	intern/cycles/hydra/render_delegate.cpp
M	intern/cycles/scene/scene.h
M	intern/cycles/test/CMakeLists.txt
M	intern/cycles/util/system.cpp
M	intern/cycles/util/version.h

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

diff --git a/intern/cycles/app/CMakeLists.txt b/intern/cycles/app/CMakeLists.txt
index 484d99c5ca7..872a95ed5a6 100644
--- a/intern/cycles/app/CMakeLists.txt
+++ b/intern/cycles/app/CMakeLists.txt
@@ -11,7 +11,7 @@ set(INC
 set(INC_SYS
 )
 
-set(LIBRARIES
+set(LIB
   cycles_device
   cycles_kernel
   cycles_scene
@@ -33,27 +33,23 @@ if(WITH_ALEMBIC)
 endif()
 
 if(WITH_CYCLES_OSL)
-  list(APPEND LIBRARIES cycles_kernel_osl)
+  list(APPEND LIB cycles_kernel_osl)
 endif()
 
 if(CYCLES_STANDALONE_REPOSITORY)
-  list(APPEND LIBRARIES extern_sky)
+  list(APPEND LIB extern_sky)
 else()
-  list(APPEND LIBRARIES bf_intern_sky)
+  list(APPEND LIB bf_intern_sky)
 endif()
 
 if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
   add_definitions(${GL_DEFINITIONS})
-  list(APPEND INC_SYS
-    ${GLEW_INCLUDE_DIR}
-    ${SDL2_INCLUDE_DIRS}
-  )
-  list(APPEND LIBRARIES
-    ${CYCLES_GL_LIBRARIES}
-    ${SDL2_LIBRARIES}
-  )
+  list(APPEND INC_SYS ${GLEW_INCLUDE_DIR} ${SDL2_INCLUDE_DIRS})
+  list(APPEND LIB ${CYCLES_GL_LIBRARIES} ${CYCLES_GLEW_LIBRARIES} ${SDL2_LIBRARIES})
 endif()
 
+cycles_external_libraries_append(LIB)
+
 # Common configuration.
 
 include_directories(${INC})
@@ -84,8 +80,7 @@ if(WITH_CYCLES_STANDALONE)
   add_executable(cycles ${SRC} ${INC} ${INC_SYS})
   unset(SRC)
 
-  target_link_libraries(cycles ${LIBRARIES})
-  cycles_target_link_libraries(cycles)
+  target_link_libraries(cycles PRIVATE ${LIB})
 
   if(APPLE)
     if(WITH_OPENCOLORIO)
@@ -128,9 +123,12 @@ if(WITH_CYCLES_CUBIN_COMPILER)
     set(INC
       ../../../extern/cuew/include
     )
+    set(LIB
+    )
+    cycles_external_libraries_append(LIB)
     add_executable(cycles_cubin_cc ${SRC})
     include_directories(${INC})
-    cycles_target_link_libraries(cycles_cubin_cc)
+    target_link_libraries(cycles_cubin_cc PRIVATE ${LIB})
     unset(SRC)
     unset(INC)
   endif()
diff --git a/intern/cycles/cmake/external_libs.cmake b/intern/cycles/cmake/external_libs.cmake
index 3ee92b7be88..0924b83201f 100644
--- a/intern/cycles/cmake/external_libs.cmake
+++ b/intern/cycles/cmake/external_libs.cmake
@@ -19,7 +19,11 @@ endmacro()
 
 if(CYCLES_STANDALONE_REPOSITORY)
   if(APPLE)
-    set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/darwin")
+    if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")
+      set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/darwin")
+    else()
+      set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/darwin_arm64")
+    endif()
   elseif(WIN32)
     if(CMAKE_CL_64)
       set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/win64_vc15")
@@ -48,18 +52,24 @@ if(CYCLES_STANDALONE_REPOSITORY)
       endif()
     endif()
 
+    if(DEFINED _cycles_lib_dir)
+      message(STATUS "Using precompiled libraries at ${_cycles_lib_dir}")
+    endif()
+
     # Avoid namespace pollustion.
     unset(LIBDIR_NATIVE_ABI)
     unset(LIBDIR_CENTOS7_ABI)
   endif()
 
   if(EXISTS ${_cycles_lib_dir})
+    _set_default(ALEMBIC_ROOT_DIR "${_cycles_lib_dir}/alembic")
     _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(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(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")
@@ -110,7 +120,7 @@ if(CYCLES_STANDALONE_REPOSITORY)
     set(ZLIB_LIBRARY ${_cycles_lib_dir}/zlib/lib/libz_st.lib)
     set(ZLIB_DIR ${_cycles_lib_dir}/zlib)
     set(ZLIB_FOUND ON)
-  else()
+  elseif(NOT APPLE)
     find_package(ZLIB REQUIRED)
   endif()
 endif()
@@ -179,6 +189,10 @@ if(CYCLES_STANDALONE_REPOSITORY)
 
   find_package(JPEG REQUIRED)
   find_package(TIFF REQUIRED)
+
+  if(EXISTS ${_cycles_lib_dir})
+    set(PNG_NAMES png16 libpng16 png libpng)
+  endif()
   find_package(PNG REQUIRED)
 endif()
 
@@ -252,6 +266,7 @@ if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_OSL)
   else()
     find_package(OSL REQUIRED)
     find_package(LLVM REQUIRED)
+    find_package(Clang REQUIRED)
   endif()
 endif()
 
@@ -312,12 +327,14 @@ if(CYCLES_STANDALONE_REPOSITORY)
     set(BOOST_DEBUG_POSTFIX "vc141-mt-gd-x64-${BOOST_VERSION}.lib")
     set(BOOST_LIBRARIES
       optimized ${BOOST_ROOT}/lib/libboost_date_time-${BOOST_POSTFIX}
+      optimized ${BOOST_ROOT}/lib/libboost_iostreams-${BOOST_POSTFIX}
       optimized ${BOOST_ROOT}/lib/libboost_filesystem-${BOOST_POSTFIX}
       optimized ${BOOST_ROOT}/lib/libboost_regex-${BOOST_POSTFIX}
       optimized ${BOOST_ROOT}/lib/libboost_system-${BOOST_POSTFIX}
       optimized ${BOOST_ROOT}/lib/libboost_thread-${BOOST_POSTFIX}
       optimized ${BOOST_ROOT}/lib/libboost_chrono-${BOOST_POSTFIX}
       debug ${BOOST_ROOT}/lib/libboost_date_time-${BOOST_DEBUG_POSTFIX}
+      debug ${BOOST_ROOT}/lib/libboost_iostreams-${BOOST_DEBUG_POSTFIX}
       debug ${BOOST_ROOT}/lib/libboost_filesystem-${BOOST_DEBUG_POSTFIX}
       debug ${BOOST_ROOT}/lib/libboost_regex-${BOOST_DEBUG_POSTFIX}
       debug ${BOOST_ROOT}/lib/libboost_system-${BOOST_DEBUG_POSTFIX}
@@ -330,7 +347,7 @@ if(CYCLES_STANDALONE_REPOSITORY)
         debug ${BOOST_ROOT}/lib/libboost_wave-${BOOST_DEBUG_POSTFIX})
     endif()
   else()
-    set(__boost_packages filesystem regex system thread date_time)
+    set(__boost_packages iostreams filesystem regex system thread date_time)
     if(WITH_CYCLES_OSL)
       list(APPEND __boost_packages wave)
     endif()
@@ -517,17 +534,42 @@ endif()
 # GLEW
 ###########################################################################
 
-if(CYCLES_STANDALONE_REPOSITORY)
-  if(MSVC AND EXISTS ${_cycles_lib_dir})
-    set(GLEW_LIBRARY "${_cycles_lib_dir}/opengl/lib/glew.lib")
-    set(GLEW_INCLUDE_DIR "${_cycles_lib_dir}/opengl/include")
-    add_definitions(-DGLEW_STATIC)
+if((WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI) OR
+   WITH_CYCLES_HYDRA_RENDER_DELEGATE)
+  if(CYCLES_STANDALONE_REPOSITORY)
+    if(MSVC AND EXISTS ${_cycles_lib_dir})
+      set(GLEW_LIBRARY "${_cycles_lib_dir}/opengl/lib/glew.lib")
+      set(GLEW_INCLUDE_DIR "${_cycles_lib_dir}/opengl/include")
+      add_definitions(-DGLEW_STATIC)
+    else()
+      find_package(GLEW REQUIRED)
+    endif()
+
+    set(CYCLES_GLEW_LIBRARIES ${GLEW_LIBRARY})
   else()
-    find_package(GLEW REQUIRED)
+    # Workaround for unconventional variable name use in Blender.
+    set(GLEW_INCLUDE_DIR "${GLEW_INCLUDE_PATH}")
+    set(CYCLES_GLEW_LIBRARIES bf_intern_glew_mx ${BLENDER_GLEW_LIBRARIES})
+  endif()
+endif()
+
+###########################################################################
+# Alembic
+###########################################################################
+
+if(WITH_CYCLES_ALEMBIC)
+  if(CYCLES_STANDALONE_REPOSITORY)
+    if(MSVC AND EXISTS ${_cycles_lib_dir})
+      set(ALEMBIC_INCLUDE_DIRS ${_cycles_lib_dir}/alembic/include)
+      set(ALEMBIC_LIBRARIES
+        optimized ${_cycles_lib_dir}/alembic/lib/Alembic.lib
+        debug ${_cycles_lib_dir}/alembic/lib/Alembic_d.lib)
+    else()
+      find_package(Alembic REQUIRED)
+    endif()
+
+    set(WITH_ALEMBIC ON)
   endif()
-else()
-  # Workaround for unconventional variable name use in Blender.
-  set(GLEW_INCLUDE_DIR "${GLEW_INCLUDE_PATH}")
 endif()
 
 ###########################################################################
@@ -537,29 +579,25 @@ endif()
 # Detect system libraries again
 if(EXISTS ${_cycles_lib_dir})
   unset(CMAKE_IGNORE_PATH)
+  unset(_cycles_lib_dir)
 endif()
 
 ###########################################################################
 # OpenGL
 ###########################################################################
 
-if(CYCLES_STANDALONE_REPOSITORY)
-  if(NOT DEFINED OpenGL_GL_PREFERENCE)
-    set(OpenGL_GL_PREFERENCE "LEGACY")
-  endif()
+if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
+  if(CYCLES_STANDALONE_REPOSITORY)
+    if(NOT DEFINED OpenGL_GL_PREFERENCE)
+      set(OpenGL_GL_PREFERENCE "LEGACY")
+    endif()
 
-  find_package(OpenGL REQUIRED)
+    find_package(OpenGL REQUIRED)
 
-    set(CYCLES_GL_LIBRARIES
-      ${OPENGL_gl_LIBRARY}
-      ${OPENGL_glu_LIBRARY}
-      ${GLEW_LIBRARY}
-    )
-else()
-  set(CYCLES_GL_LIBRARIES
-    bf_intern_glew_mx
-    ${BLENDER_GL_LIBRARIES}
-    ${BLENDER_GLEW_LIBRARIES})
+    set(CYCLES_GL_LIBRARIES ${OPENGL_gl_LIBRARY})
+  else()
+    set(CYCLES_GL_LIBRARIES ${BLENDER_GL_LIBRARIES})
+  endif()
 endif()
 
 ###########################################################################
@@ -569,7 +607,7 @@ endif()
 if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
   # We can't use the version from the Blender precompiled libraries because
   # it does not include the video subsystem.
-  find_package(SDL2)
+  find_package(SDL2 REQUIRED)
 
   if(NOT SDL2_FOUND)
     set(WITH_CYCLES_STANDALONE_GUI OFF)
@@ -600,7 +638,6 @@ if(WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD)
   endif()
 endif()
 
-
 ###########################################################################
 # HIP
 ###########################################################################
@@ -638,4 +675,15 @@ if(WITH_CYCLES_DEVICE_METAL)
   endif()
 endif()
 
-unset(_cycles_lib_dir)
+###########################################################################
+# macOS
+###########################################################################
+
+if(CYCLES_STANDALONE_REPOSITORY)
+  # On macOS, always use zlib from system.
+  if(APPLE)
+    set(ZLIB_ROOT /usr)
+    find_package(ZLIB REQUIRED)
+    find_package(PNG REQUIRED)
+  endif()
+endif()
diff --git a/intern/cycles/cmake/macros.cmake b/intern/cycles/cmake/macros.cmake
index 7c14fd87518..cd1db8e95a9 100644
--- a/intern/cycles/cmake/macros.cmake
+++ b/intern/cycles/cmake/macros.cmake
@@ -73,30 +73,39 @@ macro(cycles_add_library target library_deps)
   cycles_set_solution_folder(${target})
 endmacro()
 
-macro(cycles_target_link_libraries target)
+macro(cycles_external_libraries_append libraries)
   if(WITH_CYCLES_LOGGING)
-    targe

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list