CMake: Disable Options Depending on OpenEXR Dependecies #106209

Merged
Jeroen Bakker merged 3 commits from Jeroen-Bakker/blender:cmake-imath-libraries into main 2023-04-03 09:51:02 +02:00
3 changed files with 13 additions and 5 deletions

View File

@ -886,8 +886,11 @@ set_and_warn_dependency(WITH_TBB WITH_MOD_FLUID OFF)
# NanoVDB requires OpenVDB to convert the data structure # NanoVDB requires OpenVDB to convert the data structure
set_and_warn_dependency(WITH_OPENVDB WITH_NANOVDB OFF) 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_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. # Haru needs `TIFFFaxBlackCodes` & `TIFFFaxWhiteCodes` symbols from TIFF.
set_and_warn_dependency(WITH_IMAGE_TIFF WITH_HARU OFF) set_and_warn_dependency(WITH_IMAGE_TIFF WITH_HARU OFF)

View File

@ -120,9 +120,8 @@ UNSET(_openexr_libs_ver)
IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0") IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
# For OpenEXR 3.x, we also need to find the now separate Imath library. # 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 # For simplicity we also add it to the OpenEXR includes and libraries,
# have no direct dependency on Imath and it's simpler to support both # as it's simpler to support both 2.x and 3.x this way.
# 2.x and 3.x this way.
Jeroen-Bakker marked this conversation as resolved Outdated

This code only runs for OpenEXR 3, so this does not work for 2. To handle both cases:

IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
	set(IMATH_LIBRARIES ${IMATH_LIBRARY})
ELSE()
	set(IMATH_LIBRARIES ${OPENEXR_IMATH_LIBRARY})
ENDIF()
This code only runs for OpenEXR 3, so this does not work for 2. To handle both cases: ``` IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0") set(IMATH_LIBRARIES ${IMATH_LIBRARY}) ELSE() set(IMATH_LIBRARIES ${OPENEXR_IMATH_LIBRARY}) ENDIF() ```
# Find include directory # Find include directory
FIND_PATH(IMATH_INCLUDE_DIR FIND_PATH(IMATH_INCLUDE_DIR
@ -169,6 +168,12 @@ IF(OPENEXR_VERSION VERSION_GREATER_EQUAL "3.0.0")
UNSET(_imath_build_specification) UNSET(_imath_build_specification)
ENDIF() 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 # handle the QUIETLY and REQUIRED arguments and set OPENEXR_FOUND to TRUE if
# all listed variables are TRUE # all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs) INCLUDE(FindPackageHandleStandardArgs)
@ -196,6 +201,7 @@ MARK_AS_ADVANCED(
OPENEXR_VERSION OPENEXR_VERSION
IMATH_INCLUDE_DIR IMATH_INCLUDE_DIR
IMATH_LIBRARY IMATH_LIBRARY
IMATH_LIBRARIES
) )
FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS}) FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT) STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)

View File

@ -801,7 +801,6 @@ if(WITH_GPU_BUILDTIME_SHADER_BUILDER)
bf_intern_ghost bf_intern_ghost
${PLATFORM_LINKLIBS} ${PLATFORM_LINKLIBS}
${IMATH_LIBRARIES} ${IMATH_LIBRARIES}
${IMATH_LIBRARY}
) )
target_include_directories(shader_builder PRIVATE ${INC} ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(shader_builder PRIVATE ${INC} ${CMAKE_CURRENT_BINARY_DIR})