Deps: Fix fragile openexr dependency linking

When working on the 5.1 library updates, I noticed that quite a few places in Blender where OpenEXR (and libraries depending on OpenEXR) didn't really seem to pull in all of the required libraries properly.
While we are working around this currently, I felt like actually doing the proper thing and using the new cmake libraries interfaces would be the best way forward as we then can rely on them pulling in all needed dependencies by themselves.

To be able to use the .cmake files, two patches are needed:

1. `openexr_deflate_cmake.diff`:
This fixes the cmake install targets to not require libdeflate if it has been complied into openexr as a static library.
2. `osl_relative_inc_cmake.diff`:
This makes it so the library targets no longer uses absolute paths for the include directories. They now use relative paths so that they can be relocated properly.

Co-authored-by: Ray Molenkamp <github@lazydodo.com>
Co-authored-by: Jonas Holzman <jonas@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/153424
This commit is contained in:
Sebastian Parborg 2026-02-03 18:32:16 +01:00 • committed by Thomas Dinges
parent f17c38837d
commit 0243d0c2fa
23 changed files with 197 additions and 675 deletions

View file

@ -39,5 +39,6 @@ if(WIN32)
)
else()
harvest(external_imath imath/include imath/include "*.h")
harvest(external_imath imath/lib/cmake/Imath imath/lib/cmake/Imath "*.cmake")
harvest_rpath_lib(external_imath imath/lib imath/lib "*${SHAREDLIBEXT}*")
endif()

View file

@ -32,6 +32,10 @@ ExternalProject_Add(external_openexr
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
PREFIX ${BUILD_DIR}/openexr
PATCH_COMMAND ${PATCH_CMD} -p 1 -d
${BUILD_DIR}/openexr/src/external_openexr <
${PATCH_DIR}/openexr_deflate_cmake.diff
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/openexr
${DEFAULT_CMAKE_FLAGS}
@ -68,6 +72,7 @@ if(WIN32)
)
else()
harvest(external_openexr openexr/include openexr/include "*.h")
harvest(external_openexr openexr/lib/cmake/OpenEXR openexr/lib/cmake/OpenEXR "*.cmake")
harvest_rpath_lib(external_openexr openexr/lib openexr/lib "*${SHAREDLIBEXT}*")
endif()

View file

@ -235,10 +235,9 @@ if(WIN32)
)
endif()
else()
harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "idiff")
harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "maketx")
harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "oiiotool")
harvest_rpath_bin(external_openimageio openimageio/bin openimageio/bin "*")
harvest(external_openimageio openimageio/include openimageio/include "*")
harvest(external_openimageio openimageio/lib/cmake/OpenImageIO openimageio/lib/cmake/OpenImageIO "*.cmake")
harvest_rpath_lib(external_openimageio openimageio/lib openimageio/lib "*${SHAREDLIBEXT}*")
harvest_rpath_python(external_openimageio
openimageio/lib/python${PYTHON_SHORT_VERSION}

View file

@ -31,14 +31,16 @@ ExternalProject_Add(external_openjph
if(WIN32)
ExternalProject_Add_Step(external_openjph after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/openjph
${HARVEST_TARGET}/openjph
ExternalProject_Add_Step(external_openjph after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory
${LIBDIR}/openjph
${HARVEST_TARGET}/openjph
DEPENDEES install
)
DEPENDEES install
)
else()
harvest(external_openjph openjph/include openjph/include "*.h")
harvest_rpath_lib(external_openjph openjph/lib openjph/lib "*${SHAREDLIBEXT}*")
harvest(external_openjph openjph/include openjph/include "*.h")
# Cmake files first because harvest_rpath_lib edits them.
harvest(external_openjph openjph/lib/cmake/openjph openjph/lib/cmake/openjph "*.cmake")
harvest_rpath_lib(external_openjph openjph/lib openjph/lib "*${SHAREDLIBEXT}*")
endif()

View file

@ -82,7 +82,10 @@ ExternalProject_Add(external_osl
${PATCH_DIR}/osl_ptx_version.diff &&
${PATCH_CMD} -p 1 -d
${BUILD_DIR}/osl/src/external_osl <
${PATCH_DIR}/osl_supports_isa_thread.diff
${PATCH_DIR}/osl_supports_isa_thread.diff &&
${PATCH_CMD} -p 1 -d
${BUILD_DIR}/osl/src/external_osl <
${PATCH_DIR}/osl_relative_inc_cmake.diff
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${LIBDIR}/osl
@ -159,8 +162,10 @@ if(WIN32)
)
endif()
else()
harvest_rpath_bin(external_osl osl/bin osl/bin "oslc")
harvest_rpath_bin(external_osl osl/bin osl/bin "*")
harvest(external_osl osl/include osl/include "*.h")
# Cmake files first because harvest_rpath_lib edits them.
harvest(external_osl osl/lib/cmake/OSL osl/lib/cmake/OSL "*.cmake")
harvest_rpath_lib(external_osl osl/lib osl/lib "*${SHAREDLIBEXT}*")
harvest(external_osl osl/share/OSL/shaders osl/share/OSL/shaders "*.h")
harvest_rpath_python(external_osl

View file

@ -0,0 +1,29 @@
Fix openexr trying to pull in libdeflate even if it has been included as a
static library.
diff -Naur openexr/cmake/OpenEXRConfig.cmake.in openexr/cmake/OpenEXRConfig.cmake.in
--- openexr/cmake/OpenEXRConfig.cmake.in 2026-01-16 13:44:08.143001800 -0800
+++ openexr/cmake/OpenEXRConfig.cmake.in 2026-01-21 15:51:39.475353400 -0800
@@ -14,7 +14,7 @@
find_dependency(Imath)
-if (@libdeflate_FOUND@)
+if (@libdeflate_FOUND@ AND @EXR_DEFLATE_SHARED@)
find_dependency(libdeflate)
endif()
diff -Naur openexr/cmake/OpenEXRSetup.cmake openexr/cmake/OpenEXRSetup.cmake
--- openexr/cmake/OpenEXRSetup.cmake 2026-01-16 13:44:08.143001800 -0800
+++ openexr/cmake/OpenEXRSetup.cmake 2026-01-21 15:51:28.225418400 -0800
@@ -212,8 +212,10 @@
if(libdeflate_FOUND)
if(TARGET libdeflate::libdeflate_shared)
set(EXR_DEFLATE_LIB libdeflate::libdeflate_shared)
+ set(EXR_DEFLATE_SHARED 1)
else()
set(EXR_DEFLATE_LIB libdeflate::libdeflate_static)
+ set(EXR_DEFLATE_SHARED 0)
endif()
set(EXR_DEFLATE_VERSION ${libdeflate_VERSION})
message(STATUS "Using libdeflate from ${libdeflate_DIR}")

View file

@ -0,0 +1,83 @@
Fix OSL cmake files using absolute include directory path in
their .cmake target files
diff --git a/src/liboslcomp/CMakeLists.txt b/src/liboslcomp/CMakeLists.txt
index 261168c5..0a9343dd 100644
--- a/src/liboslcomp/CMakeLists.txt
+++ b/src/liboslcomp/CMakeLists.txt
@@ -17,9 +17,8 @@ endif ()
FLEX_BISON (osllex.l oslgram.y osl lib_src compiler_headers)
add_library (${local_lib} ${lib_src})
-target_include_directories(${local_lib}
- PUBLIC
- ${CMAKE_INSTALL_FULL_INCLUDEDIR}
+target_include_directories(${local_lib} INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_link_libraries (${local_lib}
PUBLIC
diff --git a/src/liboslexec/CMakeLists.txt b/src/liboslexec/CMakeLists.txt
index 8b9cfccd..4ea75927 100644
--- a/src/liboslexec/CMakeLists.txt
+++ b/src/liboslexec/CMakeLists.txt
@@ -510,11 +510,9 @@ foreach(batched_target ${BATCHED_TARGET_LIST})
endforeach(target_src)
add_library ( ${batched_target_lib} MODULE ${TARGET_LIB_SOURCES} )
-
- target_include_directories (${batched_target_lib}
- PUBLIC
- ${CMAKE_INSTALL_FULL_INCLUDEDIR}
- ${IMATH_INCLUDES}
+
+ target_include_directories (${batched_target_lib} INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${ROBINMAP_INCLUDES}
)
@@ -531,10 +529,8 @@ foreach(batched_target ${BATCHED_TARGET_LIST})
endforeach(batched_target)
add_library (${local_lib} ${lib_src})
-target_include_directories (${local_lib}
- PUBLIC
- ${CMAKE_INSTALL_FULL_INCLUDEDIR}
- ${IMATH_INCLUDES}
+target_include_directories(${local_lib} INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
"${CMAKE_SOURCE_DIR}/src/liboslcomp"
${ROBINMAP_INCLUDES}
diff --git a/src/liboslnoise/CMakeLists.txt b/src/liboslnoise/CMakeLists.txt
index 23bd4114..d5a84199 100644
--- a/src/liboslnoise/CMakeLists.txt
+++ b/src/liboslnoise/CMakeLists.txt
@@ -8,9 +8,8 @@ set (liboslnoise_srcs gabornoise.cpp simplexnoise.cpp)
#file ( GLOB compiler_headers "../liboslexec/*.h" )
add_library (${local_lib} ${liboslnoise_srcs})
-target_include_directories (${local_lib}
- PUBLIC
- ${CMAKE_INSTALL_FULL_INCLUDEDIR}
+target_include_directories(${local_lib} INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
../liboslexec)
target_include_directories (${local_lib} BEFORE PRIVATE ${OpenImageIO_INCLUDES})
diff --git a/src/liboslquery/CMakeLists.txt b/src/liboslquery/CMakeLists.txt
index 70a25259..d3522a37 100644
--- a/src/liboslquery/CMakeLists.txt
+++ b/src/liboslquery/CMakeLists.txt
@@ -9,9 +9,8 @@ file (GLOB compiler_headers "../liboslexec/*.h")
FLEX_BISON (../liboslexec/osolex.l ../liboslexec/osogram.y oso lib_src compiler_headers)
add_library (${local_lib} ${lib_src})
-target_include_directories (${local_lib}
- PUBLIC
- ${CMAKE_INSTALL_FULL_INCLUDEDIR}
+target_include_directories(${local_lib} INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
../liboslexec)
target_link_libraries (${local_lib}

View file

@ -1,146 +0,0 @@
# SPDX-FileCopyrightText: 2014 Blender Authors
#
# SPDX-License-Identifier: BSD-3-Clause
# - Find OpenShadingLanguage library
# Find the native OpenShadingLanguage includes and library
# This module defines
# OSL_INCLUDE_DIRS, where to find OSL headers, Set when
# OSL_INCLUDE_DIR is found.
# OSL_LIBRARIES, libraries to link against to use OSL.
# OSL_ROOT_DIR, the base directory to search for OSL.
# This can also be an environment variable.
# OSL_COMPILER, full path to OSL script compiler.
# OSL_FOUND, if false, do not try to use OSL.
# OSL_LIBRARY_VERSION_MAJOR, OSL_LIBRARY_VERSION_MINOR, the major
# and minor versions of OSL library if found.
# If `OSL_ROOT_DIR` was defined in the environment, use it.
if(DEFINED OSL_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{OSL_ROOT_DIR})
set(OSL_ROOT_DIR $ENV{OSL_ROOT_DIR})
else()
set(OSL_ROOT_DIR "")
endif()
# If `OSLHOME` was defined in the environment, use it.
if(DEFINED ENV{OSLHOME})
set(OSL_HOME_DIR $ENV{OSLHOME})
else()
set(OSL_HOME_DIR "")
endif()
set(_osl_FIND_COMPONENTS
oslnoise
oslcomp
oslexec
oslquery
)
set(_osl_SEARCH_DIRS
${OSL_ROOT_DIR}
/opt/lib/osl
)
find_path(OSL_INCLUDE_DIR
NAMES
OSL/oslversion.h
HINTS
${_osl_SEARCH_DIRS}
PATH_SUFFIXES
include
)
foreach(COMPONENT ${_osl_FIND_COMPONENTS})
string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
find_library(OSL_${UPPERCOMPONENT}_LIBRARY
NAMES
${COMPONENT}
HINTS
${_osl_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
endforeach()
# Note linking order matters, and oslnoise existence depends on version.
set(_osl_LIBRARIES ${OSL_OSLCOMP_LIBRARY})
if(APPLE)
list(APPEND _osl_LIBRARIES -force_load ${OSL_OSLEXEC_LIBRARY})
else()
list(APPEND _osl_LIBRARIES ${OSL_OSLEXEC_LIBRARY})
endif()
list(APPEND _osl_LIBRARIES ${OSL_OSLQUERY_LIBRARY})
if(OSL_OSLNOISE_LIBRARY)
list(APPEND _osl_LIBRARIES ${OSL_OSLNOISE_LIBRARY})
endif()
find_program(OSL_COMPILER oslc
HINTS ${_osl_SEARCH_DIRS}
PATH_SUFFIXES bin)
get_filename_component(OSL_SHADER_HINT ${OSL_COMPILER} DIRECTORY)
find_path(OSL_SHADER_DIR
NAMES
stdosl.h
HINTS
${OSL_ROOT_DIR}
${OSL_SHADER_HINT}
${OSL_HOME_DIR}
/usr/share/OSL/
/usr/include/OSL/
PATH_SUFFIXES
share/OSL/shaders
shaders
)
if(OSL_INCLUDE_DIR)
set(OSL_LIBRARIES ${_osl_LIBRARIES})
set(OSL_INCLUDE_DIRS ${OSL_INCLUDE_DIR})
file(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MAJOR
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+[0-9]+.*$")
file(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MINOR
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+[0-9]+.*$")
file(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_PATCH
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_PATCH[ \t]+[0-9]+.*$")
string(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_MAJOR ${OSL_LIBRARY_VERSION_MAJOR})
string(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_MINOR ${OSL_LIBRARY_VERSION_MINOR})
string(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_PATCH[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_PATCH ${OSL_LIBRARY_VERSION_PATCH})
set(OSL_VERSION "${OSL_LIBRARY_VERSION_MAJOR}.${OSL_LIBRARY_VERSION_MINOR}.${OSL_LIBRARY_VERSION_PATCH}")
endif()
# handle the QUIETLY and REQUIRED arguments and set OSL_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OSL
REQUIRED_VARS
OSL_LIBRARIES
OSL_INCLUDE_DIRS
OSL_COMPILER
VERSION_VAR
OSL_VERSION
)
mark_as_advanced(
OSL_INCLUDE_DIR
OSL_SHADER_DIR
)
foreach(COMPONENT ${_osl_FIND_COMPONENTS})
string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
mark_as_advanced(OSL_${UPPERCOMPONENT}_LIBRARY)
endforeach()
unset(COMPONENT)
unset(UPPERCOMPONENT)
unset(_osl_FIND_COMPONENTS)
unset(_osl_LIBRARIES)
unset(_osl_SEARCH_DIRS)

View file

@ -1,223 +0,0 @@
# SPDX-FileCopyrightText: 2011 Blender Authors
#
# SPDX-License-Identifier: BSD-3-Clause
# - Find OpenEXR library
# Find the native OpenEXR includes and library
# This module defines
# OPENEXR_INCLUDE_DIRS, where to find ImfXdr.h, etc. Set when
# OPENEXR_INCLUDE_DIR is found.
# OPENEXR_LIBRARIES, libraries to link against to use OpenEXR.
# OPENEXR_ROOT_DIR, The base directory to search for OpenEXR.
# This can also be an environment variable.
# OPENEXR_FOUND, If false, do not try to use OpenEXR.
#
# For individual library access these advanced settings are available
# OPENEXR_HALF_LIBRARY, Path to Half library
# OPENEXR_IEX_LIBRARY, Path to Iex library
# OPENEXR_ILMIMF_LIBRARY, Path to Ilmimf library
# OPENEXR_ILMTHREAD_LIBRARY, Path to IlmThread library
# OPENEXR_IMATH_LIBRARY, Path to Imath library
#
# also defined, but not for general use are
# OPENEXR_LIBRARY, where to find the OpenEXR library.
# If `OPENEXR_ROOT_DIR` was defined in the environment, use it.
if(DEFINED OPENEXR_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{OPENEXR_ROOT_DIR})
set(OPENEXR_ROOT_DIR $ENV{OPENEXR_ROOT_DIR})
else()
set(OPENEXR_ROOT_DIR "")
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_SEARCH_DIRS
${OPENEXR_ROOT_DIR}
/opt/lib/openexr
)
find_path(OPENEXR_INCLUDE_DIR
NAMES
OpenEXR/ImfXdr.h
HINTS
${_openexr_SEARCH_DIRS}
PATH_SUFFIXES
include
)
# If the headers were found, get the version from config file, if not already set.
if(OPENEXR_INCLUDE_DIR)
if(NOT OPENEXR_VERSION)
find_file(_openexr_CONFIG
NAMES
OpenEXRConfig.h
PATHS
"${OPENEXR_INCLUDE_DIR}"
"${OPENEXR_INCLUDE_DIR}/OpenEXR"
NO_DEFAULT_PATH
)
if(_openexr_CONFIG)
file(STRINGS "${_openexr_CONFIG}" OPENEXR_BUILD_SPECIFICATION
REGEX "^[ \t]*#define[ \t]+OPENEXR_VERSION_STRING[ \t]+\"[.0-9]+\".*$")
else()
message(WARNING "Could not find \"OpenEXRConfig.h\" in \"${OPENEXR_INCLUDE_DIR}\"")
endif()
if(OPENEXR_BUILD_SPECIFICATION)
message(STATUS "${OPENEXR_BUILD_SPECIFICATION}")
string(REGEX REPLACE ".*#define[ \t]+OPENEXR_VERSION_STRING[ \t]+\"([.0-9]+)\".*"
"\\1" _openexr_libs_ver_init ${OPENEXR_BUILD_SPECIFICATION})
else()
message(WARNING "Could not determine ILMBase library version, assuming ${_openexr_libs_ver_init}.")
endif()
unset(_openexr_CONFIG CACHE)
endif()
endif()
set("OPENEXR_VERSION" ${_openexr_libs_ver_init} CACHE STRING "Version of OpenEXR lib")
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
OpenEXR
OpenEXRCore
IlmThread
)
else()
set(_openexr_FIND_COMPONENTS
Half
Iex
IlmImf
IlmThread
Imath
)
endif()
set(_openexr_LIBRARIES "")
foreach(COMPONENT ${_openexr_FIND_COMPONENTS})
string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
find_library(OPENEXR_${UPPERCOMPONENT}_LIBRARY
NAMES
${COMPONENT}-${_openexr_libs_ver} ${COMPONENT}
NAMES_PER_DIR
HINTS
${_openexr_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
list(APPEND _openexr_LIBRARIES "${OPENEXR_${UPPERCOMPONENT}_LIBRARY}")
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 also add it to the OpenEXR includes and libraries,
# as 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]+\".*$")
string(REGEX REPLACE ".*#define[ \t]+IMATH_VERSION_STRING[ \t]+\"([.0-9]+)\".*"
"\\1" _imath_libs_ver ${_imath_build_specification})
string(REGEX REPLACE "([0-9]+)[.]([0-9]+).*" "\\1_\\2" _imath_libs_ver ${_imath_libs_ver})
# Find library, with or without version number.
find_library(IMATH_LIBRARY
NAMES
Imath-${_imath_libs_ver} Imath
NAMES_PER_DIR
HINTS
${_openexr_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
list(APPEND _openexr_LIBRARIES "${IMATH_LIBRARY}")
# In cmake version 3.21 and up, we can instead use the NO_CACHE option for
# FIND_FILE so we don't need to clear it from the cache here.
unset(_imath_config CACHE)
unset(_imath_libs_ver)
unset(_imath_build_specification)
endif()
if(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
set(IMATH_LIBRARIES ${IMATH_LIBRARY})
else()
set(IMATH_LIBRARIES ${OPENEXR_IMATH_LIBRARY})
endif()
# handle the QUIETLY and REQUIRED arguments and set OPENEXR_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenEXR DEFAULT_MSG
_openexr_LIBRARIES OPENEXR_INCLUDE_DIR)
if(OPENEXR_FOUND)
set(OPENEXR_LIBRARIES ${_openexr_LIBRARIES})
# Both include paths are needed because of dummy OSL headers mixing
# #include <OpenEXR/foo.h> and #include <foo.h>, as well as Alembic
# include <half.h> directly.
set(OPENEXR_INCLUDE_DIRS
${OPENEXR_INCLUDE_DIR}
${OPENEXR_INCLUDE_DIR}/OpenEXR)
if(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
list(APPEND OPENEXR_INCLUDE_DIRS
${IMATH_INCLUDE_DIR}
${IMATH_INCLUDE_DIR}/Imath)
endif()
set(IMATH_INCLUDE_DIRS
${IMATH_INCLUDE_DIR})
endif()
mark_as_advanced(
OPENEXR_INCLUDE_DIR
OPENEXR_VERSION
IMATH_INCLUDE_DIR
IMATH_LIBRARY
IMATH_LIBRARIES
)
foreach(COMPONENT ${_openexr_FIND_COMPONENTS})
string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
mark_as_advanced(OPENEXR_${UPPERCOMPONENT}_LIBRARY)
endforeach()
unset(COMPONENT)
unset(UPPERCOMPONENT)
unset(_openexr_FIND_COMPONENTS)
unset(_openexr_LIBRARIES)
unset(_openexr_SEARCH_DIRS)

View file

@ -1,122 +0,0 @@
# SPDX-FileCopyrightText: 2011 Blender Authors
#
# SPDX-License-Identifier: BSD-3-Clause
# - Find OpenImageIO library
# Find the native OpenImageIO includes and library
# This module defines
# OPENIMAGEIO_INCLUDE_DIRS, where to find openimageio.h, Set when
# OPENIMAGEIO_INCLUDE_DIR is found.
# OPENIMAGEIO_LIBRARIES, libraries to link against to use OpenImageIO.
# OPENIMAGEIO_ROOT_DIR, The base directory to search for OpenImageIO.
# This can also be an environment variable.
# OPENIMAGEIO_FOUND, If false, do not try to use OpenImageIO.
# OPENIMAGEIO_PUGIXML_FOUND, Indicates whether OIIO has builtin PugiXML parser.
# OPENIMAGEIO_TOOL, full path to oiiotool application if found.
#
# also defined, but not for general use are
# OPENIMAGEIO_LIBRARY, where to find the OpenImageIO library.
# If `OPENIMAGEIO_ROOT_DIR` was defined in the environment, use it.
if(DEFINED OPENIMAGEIO_ROOT_DIR)
# Pass.
elseif(DEFINED ENV{OPENIMAGEIO_ROOT_DIR})
set(OPENIMAGEIO_ROOT_DIR $ENV{OPENIMAGEIO_ROOT_DIR})
else()
set(OPENIMAGEIO_ROOT_DIR "")
endif()
set(_openimageio_SEARCH_DIRS
${OPENIMAGEIO_ROOT_DIR}
/opt/lib/oiio
)
find_path(OPENIMAGEIO_INCLUDE_DIR
NAMES
OpenImageIO/imageio.h
HINTS
${_openimageio_SEARCH_DIRS}
PATH_SUFFIXES
include
)
find_library(OPENIMAGEIO_LIBRARY
NAMES
OpenImageIO
HINTS
${_openimageio_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
set(_openimageio_LIBRARIES ${OPENIMAGEIO_LIBRARY})
find_file(OPENIMAGEIO_TOOL
NAMES
oiiotool
HINTS
${_openimageio_SEARCH_DIRS}
PATH_SUFFIXES
bin
)
# Additionally find util library if needed. In old versions this library was
# included in libOpenImageIO and linking to both would duplicate symbols. In
# new versions we need to link to both.
find_file(_openimageio_export
NAMES
export.h
PATHS
${OPENIMAGEIO_INCLUDE_DIR}/OpenImageIO
NO_DEFAULT_PATH
)
# Use existence of OIIO_UTIL_API to check if it's a separate lib.
file(STRINGS "${_openimageio_export}" _openimageio_util_define
REGEX "^[ \t]*#[ \t]*define[ \t]+OIIO_UTIL_API.*$")
if(_openimageio_util_define)
find_library(OPENIMAGEIO_UTIL_LIBRARY
NAMES
OpenImageIO_Util
HINTS
${_openimageio_SEARCH_DIRS}
PATH_SUFFIXES
lib64 lib
)
list(APPEND _openimageio_LIBRARIES ${OPENIMAGEIO_UTIL_LIBRARY})
endif()
# In cmake version 3.21 and up, we can instead use the NO_CACHE option for
# FIND_FILE so we don't need to clear it from the cache here.
unset(_openimageio_export CACHE)
unset(_openimageio_util_define)
# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if
# all listed variables are TRUE
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenImageIO DEFAULT_MSG
_openimageio_LIBRARIES OPENIMAGEIO_INCLUDE_DIR)
if(OPENIMAGEIO_FOUND)
set(OPENIMAGEIO_LIBRARIES ${_openimageio_LIBRARIES})
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR})
if(EXISTS ${OPENIMAGEIO_INCLUDE_DIR}/OpenImageIO/pugixml.hpp)
set(OPENIMAGEIO_PUGIXML_FOUND TRUE)
else()
set(OPENIMAGEIO_PUGIXML_FOUND FALSE)
endif()
else()
set(OPENIMAGEIO_PUGIXML_FOUND FALSE)
endif()
mark_as_advanced(
OPENIMAGEIO_INCLUDE_DIR
OPENIMAGEIO_LIBRARY
OPENIMAGEIO_UTIL_LIBRARY
OPENIMAGEIO_TOOL
)
unset(_openimageio_SEARCH_DIRS)
unset(_openimageio_LIBRARIES)

View file

@ -138,18 +138,8 @@ target_link_libraries(bf_deps_png INTERFACE ${PNG_LIBRARIES})
# -----------------------------------------------------------------------------
# Configure OpenImageIO
add_library(bf_deps_openimageio INTERFACE)
add_library(bf::dependencies::openimageio ALIAS bf_deps_openimageio)
target_include_directories(bf_deps_openimageio SYSTEM INTERFACE ${OPENIMAGEIO_INCLUDE_DIRS})
target_link_libraries(bf_deps_openimageio INTERFACE ${OPENIMAGEIO_LIBRARIES})
# OpenImageIO headers include `Imath` headers when there is no SSE support for
# matrix operations. This depends on the specific architecture and compiler
# flags, most reliable is to always include the `Imath` headers if we have them.
if(DEFINED IMATH_INCLUDE_DIRS)
target_include_directories(bf_deps_openimageio SYSTEM INTERFACE ${IMATH_INCLUDE_DIRS})
endif()
add_library(bf::dependencies::openimageio ALIAS OpenImageIO::OpenImageIO)
get_target_property(OPENIMAGEIO_TOOL OpenImageIO::oiiotool LOCATION)
# -----------------------------------------------------------------------------
# Configure USD
@ -195,8 +185,7 @@ add_library(bf::dependencies::optional::openexr ALIAS bf_deps_optional_openexr)
if(WITH_IMAGE_OPENEXR)
target_compile_definitions(bf_deps_optional_openexr INTERFACE WITH_IMAGE_OPENEXR)
target_include_directories(bf_deps_optional_openexr SYSTEM INTERFACE ${OPENEXR_INCLUDE_DIRS})
target_link_libraries(bf_deps_optional_openexr INTERFACE ${OPENEXR_LIBRARIES})
target_link_libraries(bf_deps_optional_openexr INTERFACE OpenEXR::OpenEXR)
endif()
# -----------------------------------------------------------------------------
@ -447,3 +436,16 @@ endif()
#
add_library(bf::dependencies::fmt ALIAS fmt::fmt)
# -----------------------------------------------------------------------------
# Configure OSL
if(WITH_CYCLES_OSL)
add_library(bf_deps_optional_osl INTERFACE)
target_link_libraries(bf_deps_optional_osl INTERFACE OSL::oslcomp OSL::oslquery OSL::oslexec OSL::oslnoise)
add_library(bf::dependencies::optional::osl ALIAS bf_deps_optional_osl)
get_target_property(OSL_COMPILER OSL::oslc LOCATION)
else()
add_library(bf_deps_optional_osl INTERFACE)
add_library(bf::dependencies::optional::osl ALIAS bf_deps_optional_osl)
endif()

View file

@ -97,6 +97,12 @@ if(DEFINED LIBDIR)
set(CLANG_ROOT_DIR ${LIBDIR}/llvm)
set(MaterialX_DIR ${LIBDIR}/materialx/lib/cmake/MaterialX)
set(fmt_ROOT ${LIBDIR}/fmt)
set(OSL_ROOT ${LIBDIR}/osl)
set(OpenImageIO_ROOT ${LIBDIR}/openimageio)
set(OpenEXR_ROOT ${LIBDIR}/openexr)
# OpenEXR deps, used by the OpenEXR module scripts
set(Imath_ROOT ${LIBDIR}/imath)
set(openjph_ROOT ${LIBDIR}/openjph)
endif()
# Wrapper to prefer static libraries
@ -257,8 +263,17 @@ else()
endif()
if(WITH_IMAGE_OPENEXR)
find_package_wrapper(OpenEXR) # our own module
set_and_warn_library_found("OpenEXR" OPENEXR_FOUND WITH_IMAGE_OPENEXR)
find_package_wrapper(OpenEXR)
set_and_warn_library_found("OpenEXR" OpenEXR_FOUND WITH_IMAGE_OPENEXR)
endif()
if(DEFINED OpenEXR_DIR)
mark_as_advanced(OpenEXR_DIR)
endif()
if(DEFINED Imath_DIR)
mark_as_advanced(Imath_DIR)
endif()
if(DEFINED openjph_DIR)
mark_as_advanced(openjph_DIR)
endif()
add_bundled_libraries(openexr/lib)
add_bundled_libraries(imath/lib)
@ -357,19 +372,11 @@ if(WITH_CYCLES AND WITH_CYCLES_OSL)
endif()
find_package_wrapper(OSL 1.13.4)
set_and_warn_library_found("OSL" OSL_FOUND WITH_CYCLES_OSL)
if(OSL_FOUND)
if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
# otherwise LLVM is missing the osl_allocate_closure_component function
set(OSL_LIBRARIES
${OSL_OSLCOMP_LIBRARY}
-Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY}
-Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY}
)
endif()
endif()
endif()
if(DEFINED OSL_DIR)
mark_as_advanced(OSL_DIR)
endif()
add_bundled_libraries(osl/lib)
if(WITH_CYCLES AND DEFINED LIBDIR)
@ -454,6 +461,9 @@ if(WITH_IMAGE_WEBP)
endif()
find_package_wrapper(OpenImageIO REQUIRED)
if(DEFINED OpenImageIO_DIR)
mark_as_advanced(OpenImageIO_DIR)
endif()
add_bundled_libraries(openimageio/lib)
if(WITH_OPENCOLORIO)
@ -1001,13 +1011,6 @@ set(PLATFORM_LINKFLAGS
"${PLATFORM_LINKFLAGS} -Wl,--version-script='${PLATFORM_SYMBOLS_MAP}'"
)
# We do not ensure transitive dependencies of dynamic libraries are available at
# link time, this allows that. The better solution would be to switch to cmake
# configs but more work is needed for that.
set(PLATFORM_LINKFLAGS
"${PLATFORM_LINKFLAGS} -Wl,--allow-shlib-undefined -Wl,--unresolved-symbols=ignore-in-shared-libs"
)
# Don't use position independent executable for portable install since file
# browsers can't properly detect blender as an executable then. Still enabled
# for non-portable installs as typically used by Linux distributions.

View file

@ -501,57 +501,13 @@ if(WITH_CODEC_FFMPEG)
endif()
endif()
set(openjph_ROOT ${LIBDIR}/openjph)
if(WITH_IMAGE_OPENEXR)
# Imath and OpenEXR have a single combined build option and include and library variables
# used by the rest of the build system.
set(IMATH_ROOT_DIR ${LIBDIR}/imath)
set(IMATH_VERSION "3.14")
windows_find_package(IMATH REQUIRED)
if(NOT IMATH_FOUND)
set(IMATH ${LIBDIR}/imath)
set(IMATH_INCLUDE_DIR ${IMATH}/include)
set(IMATH_INCLUDE_DIRS ${IMATH_INCLUDE_DIR} ${IMATH}/include/Imath)
set(IMATH_LIBPATH ${IMATH}/lib)
if(EXISTS ${IMATH_LIBPATH}/Imath_s.lib)
set(IMATH_POSTFIX _s)
endif()
set(IMATH_LIBRARIES
optimized ${IMATH_LIBPATH}/Imath${IMATH_POSTFIX}.lib
debug ${IMATH_LIBPATH}/Imath${IMATH_POSTFIX}_d.lib
)
endif()
set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
set(OPENEXR_VERSION "3.14")
windows_find_package(OPENEXR REQUIRED)
if(NOT OpenEXR_FOUND)
warn_hardcoded_paths(OpenEXR)
set(OPENEXR ${LIBDIR}/openexr)
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
set(OPENEXR_INCLUDE_DIRS
${OPENEXR_INCLUDE_DIR}
${IMATH_INCLUDE_DIRS}
${OPENEXR_INCLUDE_DIR}/OpenEXR
)
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
# Check if the blender 3.3 lib static library exists
# if not assume this is a 3.4+ dynamic version.
if(EXISTS "${OPENEXR_LIBPATH}/OpenEXR_s.lib")
set(OPENEXR_POSTFIX _s)
endif()
set(OPENEXR_LIBRARIES
optimized ${OPENEXR_LIBPATH}/Iex${OPENEXR_POSTFIX}.lib
optimized ${OPENEXR_LIBPATH}/IlmThread${OPENEXR_POSTFIX}.lib
optimized ${OPENEXR_LIBPATH}/OpenEXR${OPENEXR_POSTFIX}.lib
optimized ${OPENEXR_LIBPATH}/OpenEXRCore${OPENEXR_POSTFIX}.lib
optimized ${OPENEXR_LIBPATH}/OpenEXRUtil${OPENEXR_POSTFIX}.lib
debug ${OPENEXR_LIBPATH}/Iex${OPENEXR_POSTFIX}_d.lib
debug ${OPENEXR_LIBPATH}/IlmThread${OPENEXR_POSTFIX}_d.lib
debug ${OPENEXR_LIBPATH}/OpenEXR${OPENEXR_POSTFIX}_d.lib
debug ${OPENEXR_LIBPATH}/OpenEXRCore${OPENEXR_POSTFIX}_d.lib
debug ${OPENEXR_LIBPATH}/OpenEXRUtil${OPENEXR_POSTFIX}_d.lib
${IMATH_LIBRARIES}
)
endif()
set(IMATH_ROOT ${LIBDIR}/imath)
find_package(IMATH REQUIRED CONFIG)
set(OpenEXR_ROOT ${LIBDIR}/openexr)
find_package(OpenEXR REQUIRED CONFIG)
endif()
# Try to find tiff first then complain and set static and maybe wrong paths
@ -615,23 +571,8 @@ endif()
unset(_PYTHON_VERSION)
unset(_PYTHON_VERSION_NO_DOTS)
windows_find_package(OpenImageIO)
if(NOT OpenImageIO_FOUND)
set(OPENIMAGEIO ${LIBDIR}/OpenImageIO)
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
set(OPENIMAGEIO_INCLUDE_DIR ${OPENIMAGEIO}/include)
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR})
set(OIIO_OPTIMIZED
optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO.lib
optimized ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util.lib
)
set(OIIO_DEBUG
debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_d.lib
debug ${OPENIMAGEIO_LIBPATH}/OpenImageIO_Util_d.lib
)
set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
set(OPENIMAGEIO_TOOL "${OPENIMAGEIO}/bin/oiiotool.exe")
endif()
set(OpenImageIO_ROOT ${LIBDIR}/OpenImageIO)
find_package(OpenImageIO REQUIRED CONFIG)
if(WITH_LLVM)
set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
@ -909,48 +850,8 @@ endif()
if(WITH_CYCLES AND WITH_CYCLES_OSL)
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
set(OSL_SHADER_DIR ${CYCLES_OSL}/shaders)
# Shaders have moved around a bit between OSL versions, check multiple locations
if(NOT EXISTS "${OSL_SHADER_DIR}")
set(OSL_SHADER_DIR ${CYCLES_OSL}/share/OSL/shaders)
endif()
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_NOISE NAMES oslnoise PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
find_library(OSL_LIB_NOISE_DEBUG NAMES oslnoise_d PATHS ${CYCLES_OSL}/lib)
list(APPEND OSL_LIBRARIES
optimized ${OSL_LIB_COMP}
optimized ${OSL_LIB_EXEC}
optimized ${OSL_LIB_QUERY}
debug ${OSL_LIB_EXEC_DEBUG}
debug ${OSL_LIB_COMP_DEBUG}
debug ${OSL_LIB_QUERY_DEBUG}
${PUGIXML_LIBRARIES}
)
if(OSL_LIB_NOISE)
list(APPEND OSL_LIBRARIES optimized ${OSL_LIB_NOISE})
endif()
if(OSL_LIB_NOISE_DEBUG)
list(APPEND OSL_LIBRARIES debug ${OSL_LIB_NOISE_DEBUG})
endif()
find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
file(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MAJOR
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+[0-9]+.*$")
file(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_MINOR
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+[0-9]+.*$")
file(STRINGS "${OSL_INCLUDE_DIR}/OSL/oslversion.h" OSL_LIBRARY_VERSION_PATCH
REGEX "^[ \t]*#define[ \t]+OSL_LIBRARY_VERSION_PATCH[ \t]+[0-9]+.*$")
string(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MAJOR[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_MAJOR ${OSL_LIBRARY_VERSION_MAJOR})
string(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_MINOR[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_MINOR ${OSL_LIBRARY_VERSION_MINOR})
string(REGEX REPLACE ".*#define[ \t]+OSL_LIBRARY_VERSION_PATCH[ \t]+([.0-9]+).*"
"\\1" OSL_LIBRARY_VERSION_PATCH ${OSL_LIBRARY_VERSION_PATCH})
set(OSL_ROOT ${CYCLES_OSL})
find_package(OSL REQUIRED CONFIG)
endif()
if(WITH_CYCLES AND WITH_CYCLES_EMBREE)

View file

@ -205,9 +205,6 @@ add_definitions(
include_directories(
SYSTEM
${OPENIMAGEIO_INCLUDE_DIRS}
${IMATH_INCLUDE_DIRS}
${OPENEXR_INCLUDE_DIRS}
${PUGIXML_INCLUDE_DIR}
)
@ -224,10 +221,6 @@ endif()
if(WITH_CYCLES_OSL)
add_definitions(-DWITH_OSL)
include_directories(
SYSTEM
${OSL_INCLUDE_DIR}
)
endif()
if(WITH_CYCLES_DEVICE_CUDA OR WITH_CYCLES_DEVICE_OPTIX)

View file

@ -107,7 +107,7 @@ endif()
if(WITH_CYCLES_OSL)
list(APPEND LIB
${OSL_LIBRARIES}
bf::dependencies::optional::osl
)
endif()

View file

@ -86,7 +86,7 @@ macro(cycles_external_libraries_append libraries)
endif()
endif()
if(WITH_CYCLES_OSL)
list(APPEND ${libraries} ${OSL_LIBRARIES})
list(APPEND ${libraries} bf::dependencies::optional::osl)
endif()
if(WITH_CYCLES_EMBREE)
list(APPEND ${libraries} ${EMBREE_LIBRARIES})
@ -128,13 +128,12 @@ macro(cycles_external_libraries_append libraries)
list(APPEND ${libraries} "-lm -lc -lutil")
endif()
list(APPEND ${libraries}
${OPENIMAGEIO_LIBRARIES}
bf::dependencies::openimageio
${PNG_LIBRARIES}
${JPEG_LIBRARIES}
${TIFF_LIBRARY}
${OPENJPEG_LIBRARIES}
${OPENEXR_LIBRARIES}
${OPENEXR_LIBRARIES} # For circular dependencies between libs.
bf::dependencies::optional::openexr
${PUGIXML_LIBRARIES}
${ZLIB_LIBRARIES}
${CMAKE_DL_LIBS}

View file

@ -232,7 +232,7 @@ endif()
if(WITH_CYCLES_OSL)
list(APPEND LIB
${OSL_LIBRARIES}
bf::dependencies::optional::osl
)
endif()

View file

@ -16,7 +16,7 @@ set(SRC_KERNEL_DEVICE_OPTIX
)
if(WITH_CYCLES_OSL)
math(EXPR OSL_LIBRARY_VERSION_CODE "${OSL_LIBRARY_VERSION_MAJOR} * 10000 + ${OSL_LIBRARY_VERSION_MINOR} * 100 + ${OSL_LIBRARY_VERSION_PATCH}")
math(EXPR OSL_LIBRARY_VERSION_CODE "${OSL_VERSION_MAJOR} * 10000 + ${OSL_VERSION_MINOR} * 100 + ${OSL_VERSION_PATCH}")
set(SRC_KERNEL_DEVICE_OPTIX
${SRC_KERNEL_DEVICE_OPTIX}

View file

@ -30,7 +30,7 @@ set(HEADER_SRC
set(LIB
cycles_scene
${OSL_LIBRARIES}
PUBLIC bf::dependencies::optional::osl
${OPENIMAGEIO_LIBRARIES}
${PUGIXML_LIBRARIES}
)

View file

@ -104,7 +104,6 @@ endif()
if(WITH_CYCLES_OSL)
list(APPEND LIB
cycles_kernel_osl
${OSL_LIBRARIES}
)
endif()

View file

@ -28,7 +28,8 @@ set(SRC_HEADERS
)
set(LIB
cycles_scene
bf::dependencies::openimageio
)
include_directories(${INC})

View file

@ -36,6 +36,7 @@ set(SRC
)
set(LIB
PUBLIC bf::dependencies::openimageio
${TBB_LIBRARIES}
${ZSTD_LIBRARIES}
)

View file

@ -100,16 +100,6 @@ if(WITH_USD)
endif()
endif()
if(WITH_IMAGE_OPENEXR)
# NOTE: This is _only_ needed when linking blender before the install target runs.
# Once `openjph` libraries have been copied into `TARGETDIR_LIB` then Blender will link.
# Don't rely on this though as failing on a fresh build is no good and the library
# files could get outdated too.
if(DEFINED LIBDIR)
link_directories(${LIBDIR}/openjph/lib)
endif()
endif()
if(WITH_PYTHON)
list(APPEND INC ../blender/python)
add_definitions(-DWITH_PYTHON)