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
path: root/intern
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2022-04-07 21:27:23 +0300
committerBrecht Van Lommel <brecht@blender.org>2022-04-29 20:03:06 +0300
commit060a50a5f72a0ccdb754bf155aa2ed394a1bcda5 (patch)
tree813b0d519df9f4bed79f5e267664204e874db2ee /intern
parent074a8558b7b320d7be78d436ab5473fd5b53ff56 (diff)
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.
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/CMakeLists.txt70
-rw-r--r--intern/cycles/app/CMakeLists.txt11
-rw-r--r--intern/cycles/cmake/external_libs.cmake132
-rw-r--r--intern/cycles/cmake/macros.cmake14
-rw-r--r--intern/cycles/hydra/CMakeLists.txt128
-rw-r--r--intern/cycles/hydra/resources/apple_symbols.map1
-rw-r--r--intern/cycles/hydra/resources/linux_symbols.map8
-rw-r--r--intern/cycles/scene/CMakeLists.txt5
8 files changed, 208 insertions, 161 deletions
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
@@ -92,23 +100,6 @@ if(CYCLES_STANDALONE_REPOSITORY)
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
###########################################################################
-if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND PXR_LIBRARY_DIR AND (WITH_OPENVDB OR WITH_CYCLES_OPENVDB))
- find_library(OPENVDB_LIBRARY_PXR NAMES openvdb PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
- if(OPENVDB_LIBRARY_PXR)
- set(OPENVDB_INCLUDE_DIRS ${PXR_INCLUDE_DIRS})
- set(OPENVDB_LIBRARIES ${OPENVDB_LIBRARY_PXR})
- endif()
-endif()
-
if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_OPENVDB)
set(WITH_OPENVDB ON)
set(OPENVDB_DEFINITIONS -DNOMINMAX -D_USE_MATH_DEFINES)
- if(NOT OPENVDB_LIBRARY_PXR)
+ if(NOT USD_OVERRIDE_OPENVDB)
find_package(OpenVDB REQUIRED)
if(MSVC AND EXISTS ${_cycles_lib_dir})
@@ -479,6 +449,20 @@ if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_OPENVDB)
endif()
###########################################################################
+# NanoVDB
+###########################################################################
+
+if(CYCLES_STANDALONE_REPOSITORY AND WITH_CYCLES_NANOVDB)
+ set(WITH_NANOVDB ON)
+
+ if(MSVC AND EXISTS ${_cycles_lib_dir})
+ set(NANOVDB_INCLUDE_DIR ${NANOVDB_ROOT_DIR}/include)
+ else()
+ find_package(NanoVDB REQUIRED)
+ endif()
+endif()
+
+###########################################################################
# OpenImageDenoise
###########################################################################
@@ -504,20 +488,8 @@ endif()
# TBB
###########################################################################
-if(WITH_CYCLES_HYDRA_RENDER_DELEGATE AND PXR_LIBRARY_DIR)
- find_library(TBB_LIBRARY_DEBUG_PXR NAMES tbb_debug tbb PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
- find_library(TBB_LIBRARY_RELEASE_PXR NAMES tbb PATHS ${PXR_LIBRARY_DIR} NO_CACHE NO_DEFAULT_PATH)
- if(TBB_LIBRARY_RELEASE_PXR)
- set(TBB_INCLUDE_DIRS ${PXR_INCLUDE_DIRS})
- set(TBB_LIBRARIES
- optimized ${TBB_LIBRARY_RELEASE_PXR}
- debug ${TBB_LIBRARY_DEBUG_PXR}
- )
- endif()
-endif()
-
if(CYCLES_STANDALONE_REPOSITORY)
- if(NOT TBB_LIBRARY_RELEASE_PXR)
+ if(NOT USD_OVERRIDE_TBB)
if(MSVC AND EXISTS ${_cycles_lib_dir})
set(TBB_INCLUDE_DIRS ${TBB_ROOT_DIR}/include)
set(TBB_LIBRARIES
@@ -586,7 +558,8 @@ endif()
# OpenGL
###########################################################################
-if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
+if((WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI) OR
+ WITH_CYCLES_HYDRA_RENDER_DELEGATE)
if(CYCLES_STANDALONE_REPOSITORY)
if(NOT DEFINED OpenGL_GL_PREFERENCE)
set(OpenGL_GL_PREFERENCE "LEGACY")
@@ -624,7 +597,7 @@ endif()
# CUDA
###########################################################################
-if(WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD)
+if(WITH_CYCLES_DEVICE_CUDA AND (WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD))
find_package(CUDA) # Try to auto locate CUDA toolkit
if(CUDA_FOUND)
message(STATUS "Found CUDA ${CUDA_NVCC_EXECUTABLE} (${CUDA_VERSION})")
@@ -674,16 +647,3 @@ if(WITH_CYCLES_DEVICE_METAL)
message(STATUS "Found Metal: ${METAL_LIBRARY}")
endif()
endif()
-
-###########################################################################
-# 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 cd1db8e95a9..abadfc2c1ac 100644
--- a/intern/cycles/cmake/macros.cmake
+++ b/intern/cycles/cmake/macros.cmake
@@ -74,6 +74,19 @@ macro(cycles_add_library target library_deps)
endmacro()
macro(cycles_external_libraries_append libraries)
+ if(APPLE)
+ list(APPEND ${libraries} "-framework Foundation")
+ if(WITH_USD)
+ list(APPEND ${libraries} "-framework CoreVideo -framework Cocoa")
+ endif()
+ if(WITH_CYCLES_STANDALONE_GUI OR WITH_USD)
+ list(APPEND ${libraries} "-framework OpenGL")
+ endif()
+ elseif(UNIX)
+ if(WITH_USD)
+ list(APPEND ${libraries} "X11")
+ endif()
+ endif()
if(WITH_CYCLES_LOGGING)
list(APPEND ${libraries} ${GLOG_LIBRARIES} ${GFLAGS_LIBRARIES})
endif()
@@ -90,6 +103,7 @@ macro(cycles_external_libraries_append libraries)
list(APPEND ${libraries} ${OPENCOLORIO_LIBRARIES})
if(APPLE)
list(APPEND ${libraries} "-framework IOKit")
+ list(APPEND ${libraries} "-framework Carbon")
endif()
endif()
if(WITH_OPENVDB)
diff --git a/intern/cycles/hydra/CMakeLists.txt b/intern/cycles/hydra/CMakeLists.txt
index 7b7ea43cfe5..17a7f897ac6 100644
--- a/intern/cycles/hydra/CMakeLists.txt
+++ b/intern/cycles/hydra/CMakeLists.txt
@@ -81,18 +81,18 @@ endif()
include_directories(${INC})
include_directories(SYSTEM ${INC_SYS})
-add_library(hdCyclesStatic STATIC
+add_library(cycles_hydra STATIC
${SRC_HD_CYCLES}
${INC_HD_CYCLES}
)
-target_compile_options(hdCyclesStatic
+target_compile_options(cycles_hydra
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:/wd4003 /wd4244 /wd4506>
$<$<CXX_COMPILER_ID:GNU>:-Wno-float-conversion -Wno-double-promotion -Wno-deprecated>
)
-target_compile_definitions(hdCyclesStatic
+target_compile_definitions(cycles_hydra
PRIVATE
GLOG_NO_ABBREVIATED_SEVERITIES=1
OSL_DEBUG=$<CONFIG:DEBUG>
@@ -100,57 +100,93 @@ target_compile_definitions(hdCyclesStatic
$<$<CXX_COMPILER_ID:MSVC>:NOMINMAX=1>
)
-target_link_libraries(hdCyclesStatic
+target_link_libraries(cycles_hydra
PUBLIC
- hd
- hgi
- hgiGL
+ ${USD_LIBRARIES}
PRIVATE
${LIB}
)
-set(HdCyclesPluginName hdCycles)
-add_library(${HdCyclesPluginName} SHARED
- plugin.h
- plugin.cpp
-)
-
-set_target_properties(${HdCyclesPluginName}
- PROPERTIES PREFIX ""
-)
-
-target_compile_definitions(${HdCyclesPluginName}
- PRIVATE
- MFB_PACKAGE_NAME=${HdCyclesPluginName}
- MFB_ALT_PACKAGE_NAME=${HdCyclesPluginName}
- GLOG_NO_ABBREVIATED_SEVERITIES=1
- OSL_DEBUG=$<CONFIG:DEBUG>
- TBB_USE_DEBUG=$<CONFIG:DEBUG>
- $<$<CXX_COMPILER_ID:MSVC>:NOMINMAX=1>
-)
-
-target_link_libraries(${HdCyclesPluginName}
- hdCyclesStatic
-)
+if(WITH_CYCLES_HYDRA_RENDER_DELEGATE)
+ set(HdCyclesPluginName hdCycles)
+ add_library(${HdCyclesPluginName} SHARED
+ plugin.h
+ plugin.cpp
+ )
-if(WITH_CYCLES_BLENDER)
- set(CYCLES_HYDRA_INSTALL_PATH "../")
-else()
- set(CYCLES_HYDRA_INSTALL_PATH ${CMAKE_INSTALL_PREFIX})
- # Put the root plugInfo.json one level up
- delayed_install("${CMAKE_CURRENT_SOURCE_DIR}" "plugInfo.json" ${CMAKE_INSTALL_PREFIX})
-endif()
+ set_target_properties(${HdCyclesPluginName}
+ PROPERTIES PREFIX ""
+ )
-delayed_install("" $<TARGET_FILE:${HdCyclesPluginName}> ${CYCLES_HYDRA_INSTALL_PATH})
+ target_compile_definitions(${HdCyclesPluginName}
+ PRIVATE
+ MFB_PACKAGE_NAME=${HdCyclesPluginName}
+ MFB_ALT_PACKAGE_NAME=${HdCyclesPluginName}
+ GLOG_NO_ABBREVIATED_SEVERITIES=1
+ OSL_DEBUG=$<CONFIG:DEBUG>
+ TBB_USE_DEBUG=$<CONFIG:DEBUG>
+ $<$<CXX_COMPILER_ID:MSVC>:NOMINMAX=1>
+ )
-set(PLUG_INFO_ROOT "..")
+ target_link_libraries(${HdCyclesPluginName}
+ cycles_hydra
+ )
-file(RELATIVE_PATH PLUG_INFO_LIBRARY_PATH "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}" "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}${CMAKE_SHARED_LIBRARY_SUFFIX}")
-file(RELATIVE_PATH PLUG_INFO_RESOURCE_PATH "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}" "${CYCLES_INSTALL_PATH}")
+ if(APPLE)
+ set_property(
+ TARGET
+ ${HdCyclesPluginName}
+ APPEND_STRING PROPERTY LINK_FLAGS
+ " -Wl,-exported_symbols_list,'${CMAKE_CURRENT_SOURCE_DIR}/resources/apple_symbols.map'"
+ )
+ elseif(UNIX)
+ set_property(
+ TARGET
+ ${HdCyclesPluginName}
+ APPEND_STRING PROPERTY LINK_FLAGS
+ " -Wl,--version-script='${CMAKE_CURRENT_SOURCE_DIR}/resources/linux_symbols.map'"
+ )
+ endif()
+
+
+ if(WITH_CYCLES_BLENDER)
+ # Install inside add-on
+ set(CYCLES_HYDRA_INSTALL_PATH ${CYCLES_INSTALL_PATH}/hydra)
+ else()
+ # Install next to cycles executable
+ set(CYCLES_HYDRA_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/hydra)
+ endif()
-configure_file(resources/plugInfo.json
- ${CMAKE_CURRENT_BINARY_DIR}/resources/plugInfo.json
- @ONLY
-)
+ # Put the root plugInfo.json one level up
+ delayed_install("${CMAKE_CURRENT_SOURCE_DIR}" "plugInfo.json" ${CYCLES_HYDRA_INSTALL_PATH})
+ delayed_install("" $<TARGET_FILE:${HdCyclesPluginName}> ${CYCLES_HYDRA_INSTALL_PATH})
+
+ set_target_properties(${HdCyclesPluginName}
+ PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+ set(PLUG_INFO_ROOT "..")
+
+ if(WITH_CYCLES_BLENDER)
+ # Full path not yet know at this point and RELATIVE_PATH requires
+ # absolute path as input. So just set manually.
+ set(PLUG_INFO_LIBRARY_PATH "../${HdCyclesPluginName}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ set(PLUG_INFO_RESOURCE_PATH "../..")
+ else()
+ file(RELATIVE_PATH
+ PLUG_INFO_LIBRARY_PATH
+ "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}"
+ "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ file(RELATIVE_PATH PLUG_INFO_RESOURCE_PATH
+ "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}"
+ "${CYCLES_INSTALL_PATH}")
+ endif()
+
+ configure_file(resources/plugInfo.json
+ ${CMAKE_CURRENT_BINARY_DIR}/resources/plugInfo.json
+ @ONLY
+ )
-delayed_install("${CMAKE_CURRENT_BINARY_DIR}/resources" "plugInfo.json" "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}/resources")
+ delayed_install("${CMAKE_CURRENT_BINARY_DIR}/resources" "plugInfo.json" "${CYCLES_HYDRA_INSTALL_PATH}/${HdCyclesPluginName}/resources")
+endif()
diff --git a/intern/cycles/hydra/resources/apple_symbols.map b/intern/cycles/hydra/resources/apple_symbols.map
new file mode 100644
index 00000000000..85be5ae55fe
--- /dev/null
+++ b/intern/cycles/hydra/resources/apple_symbols.map
@@ -0,0 +1 @@
+*PXR*
diff --git a/intern/cycles/hydra/resources/linux_symbols.map b/intern/cycles/hydra/resources/linux_symbols.map
new file mode 100644
index 00000000000..397422c9854
--- /dev/null
+++ b/intern/cycles/hydra/resources/linux_symbols.map
@@ -0,0 +1,8 @@
+/* Hide everything except USD / Hydra symbols, to avoid conflicts with other
+ * application using different library versions. */
+{
+global:
+ PXR*;
+local:
+ *;
+};
diff --git a/intern/cycles/scene/CMakeLists.txt b/intern/cycles/scene/CMakeLists.txt
index ddb7ff6f906..4904bf247ba 100644
--- a/intern/cycles/scene/CMakeLists.txt
+++ b/intern/cycles/scene/CMakeLists.txt
@@ -108,14 +108,13 @@ endif()
if(WITH_OPENCOLORIO)
add_definitions(-DWITH_OCIO)
- include_directories(
- SYSTEM
+ list(APPEND INC_SYS
${OPENCOLORIO_INCLUDE_DIRS}
)
list(APPEND LIB
${OPENCOLORIO_LIBRARIES}
)
- if(WIN32)
+ if(WIN32 AND NOT USD_OVERRIDE_OPENCOLORIO)
add_definitions(-DOpenColorIO_SKIP_IMPORTS)
endif()
endif()