diff --git a/CMakeLists.txt b/CMakeLists.txt index 43a0994e642..b6fe32149e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -460,7 +460,8 @@ mark_as_advanced(WITH_CXX_GUARDEDALLOC) option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" ON) mark_as_advanced(WITH_ASSERT_ABORT) -option(WITH_BOOST "Enable features depending on boost" ON) +option(WITH_BOOST "Enable features depending on boost" ON) +option(WITH_TBB "Enable features depending on TBB (OpenVDB, OpenImageDenoise, sculpt multithreading)" ON) # Unit testsing option(WITH_GTESTS "Enable GTest unit testing" OFF) diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake index 403d38f6a05..4c47c4c4dba 100644 --- a/build_files/cmake/config/blender_full.cmake +++ b/build_files/cmake/config/blender_full.cmake @@ -49,6 +49,7 @@ set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW ON CACHE BOOL "" FORCE) set(WITH_RAYOPTIMIZATION ON CACHE BOOL "" FORCE) set(WITH_SDL ON CACHE BOOL "" FORCE) +set(WITH_TBB ON CACHE BOOL "" FORCE) set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE) set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake index 37cbfa27972..6d0f160c764 100644 --- a/build_files/cmake/config/blender_lite.cmake +++ b/build_files/cmake/config/blender_lite.cmake @@ -54,5 +54,6 @@ set(WITH_OPENVDB OFF CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW OFF CACHE BOOL "" FORCE) set(WITH_RAYOPTIMIZATION OFF CACHE BOOL "" FORCE) set(WITH_SDL OFF CACHE BOOL "" FORCE) +set(WITH_TBB OFF CACHE BOOL "" FORCE) set(WITH_X11_XINPUT OFF CACHE BOOL "" FORCE) set(WITH_X11_XF86VMODE OFF CACHE BOOL "" FORCE) diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake index cb338f40a7b..cf849519c83 100644 --- a/build_files/cmake/config/blender_release.cmake +++ b/build_files/cmake/config/blender_release.cmake @@ -50,6 +50,7 @@ set(WITH_PYTHON_INSTALL ON CACHE BOOL "" FORCE) set(WITH_QUADRIFLOW ON CACHE BOOL "" FORCE) set(WITH_RAYOPTIMIZATION ON CACHE BOOL "" FORCE) set(WITH_SDL ON CACHE BOOL "" FORCE) +set(WITH_TBB ON CACHE BOOL "" FORCE) set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE) set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index f642a199915..c3025be34ba 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -460,13 +460,16 @@ function(setup_liblinks target_link_libraries(${target} ${OSL_LIBRARIES}) endif() if(WITH_OPENVDB) - target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${TBB_LIBRARIES} ${BLOSC_LIBRARIES}) + target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${BLOSC_LIBRARIES}) endif() if(WITH_OPENIMAGEIO) target_link_libraries(${target} ${OPENIMAGEIO_LIBRARIES}) endif() if(WITH_OPENIMAGEDENOISE) - target_link_libraries(${target} ${OPENIMAGEDENOISE_LIBRARIES} ${TBB_LIBRARIES}) + target_link_libraries(${target} ${OPENIMAGEDENOISE_LIBRARIES}) + endif() + if(WITH_TBB) + target_link_libraries(${target} ${TBB_LIBRARIES}) endif() if(WITH_OPENCOLORIO) target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES}) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index 249546dd216..5cea7a418bd 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -313,9 +313,7 @@ endif() if(WITH_OPENVDB) set(OPENVDB ${LIBDIR}/openvdb) set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include) - set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include) - set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a) - set(OPENVDB_LIBRARIES openvdb blosc ${TBB_LIBRARIES}) + set(OPENVDB_LIBRARIES openvdb blosc) set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib) set(OPENVDB_DEFINITIONS) endif() @@ -386,14 +384,25 @@ endif() if(WITH_OPENIMAGEDENOISE) find_package(OpenImageDenoise) - find_package(TBB) if(NOT OPENIMAGEDENOISE_FOUND) set(WITH_OPENIMAGEDENOISE OFF) message(STATUS "OpenImageDenoise not found") - elseif(NOT TBB_FOUND) + endif() +endif() + +if(WITH_TBB) + find_package(TBB) +endif() + +if(NOT WITH_TBB OR NOT TBB_FOUND) + if(WITH_OPENIMAGEDENOISE) + message(STATUS "TBB not found, disabling OpenImageDenoise") set(WITH_OPENIMAGEDENOISE OFF) - message(STATUS "TBB not found") + endif() + if(WITH_OPENVDB) + message(STATUS "TBB not found, disabling OpenVDB") + set(WITH_OPENVDB OFF) endif() endif() diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index e655234eb34..c48780ebd6a 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -260,13 +260,8 @@ endif() if(WITH_OPENVDB) find_package_wrapper(OpenVDB) - find_package_wrapper(TBB) find_package_wrapper(Blosc) - if(NOT TBB_FOUND) - set(WITH_OPENVDB OFF) - set(WITH_OPENVDB_BLOSC OFF) - message(STATUS "TBB not found, disabling OpenVDB") - elseif(NOT OPENVDB_FOUND) + if(NOT OPENVDB_FOUND) set(WITH_OPENVDB OFF) set(WITH_OPENVDB_BLOSC OFF) message(STATUS "OpenVDB not found, disabling it") @@ -432,6 +427,21 @@ if(WITH_OPENSUBDIV) endif() endif() +if(WITH_TBB) + find_package_wrapper(TBB) +endif() + +if(NOT WITH_TBB OR NOT TBB_FOUND) + if(WITH_OPENIMAGEDENOISE) + message(STATUS "TBB not found, disabling OpenImageDenoise") + set(WITH_OPENIMAGEDENOISE OFF) + endif() + if(WITH_OPENVDB) + message(STATUS "TBB not found, disabling OpenVDB") + set(WITH_OPENVDB OFF) + endif() +endif() + # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed if(HAIKU) list(APPEND PLATFORM_LINKLIBS -lnetwork) diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 7956a299320..f64dd4a4aa3 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -491,25 +491,20 @@ endif() if(WITH_OPENVDB) set(BLOSC_LIBRARIES optimized ${LIBDIR}/blosc/lib/libblosc.lib debug ${LIBDIR}/blosc/lib/libblosc_d.lib) - set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib) - set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include) set(OPENVDB ${LIBDIR}/openVDB) set(OPENVDB_LIBPATH ${OPENVDB}/lib) - set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR}) - set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ${TBB_LIBRARIES} ${BLOSC_LIBRARIES}) + set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include) + set(OPENVDB_LIBRARIES optimized ${OPENVDB_LIBPATH}/openvdb.lib debug ${OPENVDB_LIBPATH}/openvdb_d.lib ${BLOSC_LIBRARIES}) set(OPENVDB_DEFINITIONS -DNOMINMAX) endif() if(WITH_OPENIMAGEDENOISE) - set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib) - set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include) set(OPENIMAGEDENOISE ${LIBDIR}/OpenImageDenoise) set(OPENIMAGEDENOISE_LIBPATH ${LIBDIR}/OpenImageDenoise/lib) - set(OPENIMAGEDENOISE_INCLUDE_DIRS ${OPENIMAGEDENOISE}/include ${TBB_INCLUDE_DIR}) + set(OPENIMAGEDENOISE_INCLUDE_DIRS ${OPENIMAGEDENOISE}/include) set(OPENIMAGEDENOISE_LIBRARIES optimized ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise.lib ${OPENIMAGEDENOISE_LIBPATH}/common.lib ${OPENIMAGEDENOISE_LIBPATH}/mkldnn.lib - debug ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise_d.lib ${OPENIMAGEDENOISE_LIBPATH}/common_d.lib ${OPENIMAGEDENOISE_LIBPATH}/mkldnn_d.lib - ${TBB_LIBRARIES}) + debug ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise_d.lib ${OPENIMAGEDENOISE_LIBPATH}/common_d.lib ${OPENIMAGEDENOISE_LIBPATH}/mkldnn_d.lib) set(OPENIMAGEDENOISE_DEFINITIONS) endif() @@ -574,6 +569,20 @@ if(WITH_SYSTEM_AUDASPACE) set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib) endif() +if(WITH_TBB) + set(TBB_LIBRARIES optimized ${LIBDIR}/tbb/lib/tbb.lib debug ${LIBDIR}/tbb/lib/tbb_debug.lib) + set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include) +else() + if(WITH_OPENIMAGEDENOISE) + message(STATUS "TBB disabled, also disabling OpenImageDenoise") + set(WITH_OPENIMAGEDENOISE OFF) + endif() + if(WITH_OPENVDB) + message(STATUS "TBB disabled, also disabling OpenVDB") + set(WITH_OPENVDB OFF) + endif() +endif() + # used in many places so include globally, like OpenGL blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}") diff --git a/source/blender/compositor/CMakeLists.txt b/source/blender/compositor/CMakeLists.txt index 2a8914c8cd9..f0685b169fa 100644 --- a/source/blender/compositor/CMakeLists.txt +++ b/source/blender/compositor/CMakeLists.txt @@ -566,6 +566,7 @@ if(WITH_OPENIMAGEDENOISE) add_definitions(-DOIDN_STATIC_LIB) list(APPEND INC_SYS ${OPENIMAGEDENOISE_INCLUDE_DIRS} + ${TBB_INCLUDE_DIRS} ) endif()