From 4aed240b0216c97a32deda89f36cd36cfc3bde1e Mon Sep 17 00:00:00 2001 From: Jeroen Bakker Date: Mon, 3 Apr 2023 09:50:50 +0200 Subject: [PATCH] CMake: Disable Options Depending on OpenEXR Dependecies OpenEXR has some dependecies that other other modules in Blender requires. When disabling OpenEXR these dependecies could not match and building blender would fail. This PR disables the next options when `WITH_IMAGE_OPENEXR=Off` - `WITH_OPENVDB` - `WITH_ALEMBIC` - `WITH_VULKAN_BACKEND` - `WITH_CYCLES_OSL` Additionally windows stores the IMath libraries in `IMATH_LIBRARIES` Linux and Mac stored the IMath libraries in `IMATH_LIBRARY`. This change will also adds `IMATH_LIBRARIES` variable to all platforms. Pull Request: https://projects.blender.org/blender/blender/pulls/106209 --- CMakeLists.txt | 5 ++++- build_files/cmake/Modules/FindOpenEXR.cmake | 12 +++++++++--- source/blender/gpu/CMakeLists.txt | 1 - 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 63953945e1e..dfa7a257cd6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -886,8 +886,11 @@ set_and_warn_dependency(WITH_TBB WITH_MOD_FLUID OFF) # NanoVDB requires OpenVDB to convert the data structure set_and_warn_dependency(WITH_OPENVDB WITH_NANOVDB OFF) -# OpenVDB and OpenColorIO uses 'half' type from OpenEXR +# OpenVDB, Alembic and Vulkan, OSL uses 'half' or 'imath' from OpenEXR set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_OPENVDB OFF) +set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_ALEMBIC OFF) +set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_VULKAN_BACKEND OFF) +set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_CYCLES_OSL OFF) # Haru needs `TIFFFaxBlackCodes` & `TIFFFaxWhiteCodes` symbols from TIFF. set_and_warn_dependency(WITH_IMAGE_TIFF WITH_HARU OFF) diff --git a/build_files/cmake/Modules/FindOpenEXR.cmake b/build_files/cmake/Modules/FindOpenEXR.cmake index bbc1e11539f..0f840ff2af0 100644 --- a/build_files/cmake/Modules/FindOpenEXR.cmake +++ b/build_files/cmake/Modules/FindOpenEXR.cmake @@ -120,9 +120,8 @@ 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 add it to the OpenEXR includes and libraries, as we - # have no direct dependency on Imath and it's simpler to support both - # 2.x and 3.x this way. + # 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 @@ -169,6 +168,12 @@ IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0") 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) @@ -196,6 +201,7 @@ MARK_AS_ADVANCED( OPENEXR_VERSION IMATH_INCLUDE_DIR IMATH_LIBRARY + IMATH_LIBRARIES ) FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) diff --git a/source/blender/gpu/CMakeLists.txt b/source/blender/gpu/CMakeLists.txt index a7b23a35dba..070131a186e 100644 --- a/source/blender/gpu/CMakeLists.txt +++ b/source/blender/gpu/CMakeLists.txt @@ -801,7 +801,6 @@ if(WITH_GPU_BUILDTIME_SHADER_BUILDER) bf_intern_ghost ${PLATFORM_LINKLIBS} ${IMATH_LIBRARIES} - ${IMATH_LIBRARY} ) target_include_directories(shader_builder PRIVATE ${INC} ${CMAKE_CURRENT_BINARY_DIR})