From a95eaf0ec1ad3e4757788f4e5b7b0aa0fe62ecce Mon Sep 17 00:00:00 2001 From: Jesse Yurkovich Date: Fri, 3 Mar 2023 21:53:34 +0100 Subject: [PATCH] Build: Make OpenImageIO a required dependency During the discussion for #101413 there was consensus that we could make OIIO a mandatory dependency. This patch does just that. The `idiff` testing tool remains optional. Pull Request #105111 --- CMakeLists.txt | 13 +------- build_files/build_environment/install_deps.sh | 6 ++-- build_files/cmake/config/blender_lite.cmake | 1 - .../cmake/platform/platform_apple.cmake | 14 +------- .../cmake/platform/platform_unix.cmake | 27 +--------------- .../cmake/platform/platform_win32.cmake | 27 ++++++---------- source/blender/CMakeLists.txt | 5 +-- source/blender/blenkernel/CMakeLists.txt | 4 --- .../blender/blenkernel/intern/image_format.cc | 2 -- .../blender/editors/space_file/CMakeLists.txt | 4 --- .../editors/space_image/CMakeLists.txt | 4 --- source/blender/imbuf/CMakeLists.txt | 9 +----- source/blender/imbuf/IMB_imbuf_types.h | 2 -- source/blender/imbuf/intern/filetype.c | 6 +--- .../blender/imbuf/intern/oiio/CMakeLists.txt | 32 ++++--------------- source/blender/imbuf/intern/util.c | 4 --- source/blender/makesrna/intern/CMakeLists.txt | 4 --- source/blender/python/intern/CMakeLists.txt | 12 +------ source/blender/python/intern/bpy_app_oiio.c | 16 +--------- 19 files changed, 26 insertions(+), 166 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 02b78fd604c..6d280b05330 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -331,7 +331,6 @@ option(WITH_MOD_REMESH "Enable Remesh Modifier" ON) option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" ON) # Image format support -option(WITH_OPENIMAGEIO "Enable OpenImageIO Support (http://www.openimageio.org)" ON) option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON) option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON) option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON) @@ -892,8 +891,6 @@ set_and_warn_dependency(WITH_IMAGE_TIFF WITH_HARU OFF) # auto enable openimageio for cycles if(WITH_CYCLES) - set(WITH_OPENIMAGEIO ON) - # auto enable llvm for cycles_osl if(WITH_CYCLES_OSL) set(WITH_LLVM ON CACHE BOOL "" FORCE) @@ -1085,13 +1082,6 @@ if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM) endif() if(WITH_CYCLES) - if(NOT WITH_OPENIMAGEIO) - message( - FATAL_ERROR - "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. " - "Configure OIIO or disable WITH_CYCLES" - ) - endif() if(WITH_CYCLES_OSL) if(NOT WITH_LLVM) message( @@ -1942,8 +1932,7 @@ if(FIRST_RUN) info_cfg_option(WITH_IMAGE_OPENEXR) info_cfg_option(WITH_IMAGE_OPENJPEG) info_cfg_option(WITH_IMAGE_TIFF) - info_cfg_option(WITH_OPENIMAGEIO) - + info_cfg_text("Audio:") info_cfg_option(WITH_CODEC_AVI) info_cfg_option(WITH_CODEC_FFMPEG) diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index a0d0414fbb0..7a52cf30c01 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -6615,11 +6615,9 @@ print_info() { fi if [ -d $INST/oiio ]; then - _1="-D WITH_OPENIMAGEIO=ON" - _2="-D OPENIMAGEIO_ROOT_DIR=$INST/oiio" + _1="-D OPENIMAGEIO_ROOT_DIR=$INST/oiio" PRINT " $_1" - PRINT " $_2" - _buildargs="$_buildargs $_1 $_2" + _buildargs="$_buildargs $_1" fi if [ "$OSL_SKIP" = false ]; then diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake index 79a0e5f3858..f80e6cf9c8b 100644 --- a/build_files/cmake/config/blender_lite.cmake +++ b/build_files/cmake/config/blender_lite.cmake @@ -52,7 +52,6 @@ set(WITH_OPENAL OFF CACHE BOOL "" FORCE) set(WITH_OPENCOLLADA OFF CACHE BOOL "" FORCE) set(WITH_OPENCOLORIO OFF CACHE BOOL "" FORCE) set(WITH_OPENIMAGEDENOISE OFF CACHE BOOL "" FORCE) -set(WITH_OPENIMAGEIO OFF CACHE BOOL "" FORCE) set(WITH_OPENMP OFF CACHE BOOL "" FORCE) set(WITH_OPENSUBDIV OFF CACHE BOOL "" FORCE) set(WITH_OPENVDB OFF CACHE BOOL "" FORCE) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index ca0585ce9ad..593db096a74 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -270,19 +270,7 @@ if(WITH_PUGIXML) find_package(PugiXML REQUIRED) endif() -if(WITH_OPENIMAGEIO) - find_package(OpenImageIO) - list(APPEND OPENIMAGEIO_LIBRARIES - ${PNG_LIBRARIES} - ${JPEG_LIBRARIES} - ${TIFF_LIBRARY} - ${OPENEXR_LIBRARIES} - ${OPENJPEG_LIBRARIES} - ${ZLIB_LIBRARIES} - ) - set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD") - set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff") -endif() +find_package(OpenImageIO REQUIRED) add_bundled_libraries(openimageio/lib) if(WITH_OPENCOLORIO) diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index d6aa7d63a6f..7a63dc3ef49 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -438,32 +438,7 @@ if(WITH_IMAGE_WEBP) set_and_warn_library_found("WebP" WEBP_FOUND WITH_IMAGE_WEBP) endif() -if(WITH_OPENIMAGEIO) - find_package_wrapper(OpenImageIO) - set(OPENIMAGEIO_LIBRARIES - ${OPENIMAGEIO_LIBRARIES} - ${PNG_LIBRARIES} - ${JPEG_LIBRARIES} - ${ZLIB_LIBRARIES} - ) - - set(OPENIMAGEIO_DEFINITIONS "") - - if(WITH_BOOST) - list(APPEND OPENIMAGEIO_LIBRARIES "${BOOST_LIBRARIES}") - endif() - if(WITH_IMAGE_TIFF) - list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}") - endif() - if(WITH_IMAGE_OPENEXR) - list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}") - endif() - if(WITH_IMAGE_WEBP) - list(APPEND OPENIMAGEIO_LIBRARIES "${WEBP_LIBRARIES}") - endif() - - set_and_warn_library_found("OPENIMAGEIO" OPENIMAGEIO_FOUND WITH_OPENIMAGEIO) -endif() +find_package_wrapper(OpenImageIO REQUIRED) add_bundled_libraries(openimageio/lib) if(WITH_OPENCOLORIO) diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 2ee8697d695..6e469cdd307 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -602,25 +602,18 @@ if(WITH_BOOST) set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB") endif() -if(WITH_OPENIMAGEIO) - 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}) - endif() - set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0") +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_IDIFF "${OPENIMAGEIO}/bin/idiff.exe") - # If the .dll does not exist, assume it is a static OIIO - if(NOT EXISTS ${OPENIMAGEIO}/bin/OpenImageIO.dll) - add_definitions(-DOIIO_STATIC_DEFINE) - endif() - add_definitions(-DOIIO_NO_SSE=1) endif() +add_definitions(-DOIIO_NO_SSE=1) if(WITH_LLVM) set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation") diff --git a/source/blender/CMakeLists.txt b/source/blender/CMakeLists.txt index 0df742603f1..2ffd223653a 100644 --- a/source/blender/CMakeLists.txt +++ b/source/blender/CMakeLists.txt @@ -144,6 +144,7 @@ add_subdirectory(simulation) add_subdirectory(geometry) add_subdirectory(gpu) add_subdirectory(imbuf) +add_subdirectory(imbuf/intern/oiio) add_subdirectory(nodes) add_subdirectory(modifiers) add_subdirectory(gpencil_modifiers) @@ -164,10 +165,6 @@ if(WITH_IMAGE_OPENEXR) add_subdirectory(imbuf/intern/openexr) endif() -if(WITH_OPENIMAGEIO) - add_subdirectory(imbuf/intern/oiio) -endif() - if(WITH_IMAGE_DDS) add_subdirectory(imbuf/intern/dds) endif() diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index ab1d8c0b245..1e7a0ac316f 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -593,10 +593,6 @@ if(WITH_IMAGE_TIFF) add_definitions(-DWITH_TIFF) endif() -if(WITH_OPENIMAGEIO) - add_definitions(-DWITH_OPENIMAGEIO) -endif() - if(WITH_IMAGE_OPENJPEG) add_definitions(-DWITH_OPENJPEG) endif() diff --git a/source/blender/blenkernel/intern/image_format.cc b/source/blender/blenkernel/intern/image_format.cc index 5b861eff166..a4759216ca1 100644 --- a/source/blender/blenkernel/intern/image_format.cc +++ b/source/blender/blenkernel/intern/image_format.cc @@ -464,13 +464,11 @@ static bool do_add_image_extension(char *string, } } #endif -#ifdef WITH_OPENIMAGEIO else if (imtype == R_IMF_IMTYPE_PSD) { if (!BLI_path_extension_check(string, extension_test = ".psd")) { extension = extension_test; } } -#endif #ifdef WITH_OPENEXR else if (ELEM(imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER)) { if (!BLI_path_extension_check(string, extension_test = ".exr")) { diff --git a/source/blender/editors/space_file/CMakeLists.txt b/source/blender/editors/space_file/CMakeLists.txt index 06f4f81e8b8..684577a399f 100644 --- a/source/blender/editors/space_file/CMakeLists.txt +++ b/source/blender/editors/space_file/CMakeLists.txt @@ -66,10 +66,6 @@ if(WITH_IMAGE_OPENEXR) add_definitions(-DWITH_OPENEXR) endif() -if(WITH_OPENIMAGEIO) - add_definitions(-DWITH_OPENIMAGEIO) -endif() - if(WITH_IMAGE_TIFF) add_definitions(-DWITH_TIFF) endif() diff --git a/source/blender/editors/space_image/CMakeLists.txt b/source/blender/editors/space_image/CMakeLists.txt index 8b822c4fc2a..81e457eaea6 100644 --- a/source/blender/editors/space_image/CMakeLists.txt +++ b/source/blender/editors/space_image/CMakeLists.txt @@ -46,10 +46,6 @@ set(LIB bf_editor_uvedit ) -if(WITH_OPENIMAGEIO) - add_definitions(-DWITH_OPENIMAGEIO) -endif() - if(WITH_IMAGE_OPENJPEG) add_definitions(-DWITH_OPENJPEG) endif() diff --git a/source/blender/imbuf/CMakeLists.txt b/source/blender/imbuf/CMakeLists.txt index 823866c75bb..e8e8bc580c1 100644 --- a/source/blender/imbuf/CMakeLists.txt +++ b/source/blender/imbuf/CMakeLists.txt @@ -74,6 +74,7 @@ set(LIB bf_blenkernel bf_blenlib bf_blenloader + bf_imbuf_openimageio bf_intern_guardedalloc bf_intern_memutil bf_intern_opencolorio @@ -106,14 +107,6 @@ if(WITH_IMAGE_TIFF) add_definitions(-DWITH_TIFF) endif() - -if(WITH_OPENIMAGEIO) - list(APPEND LIB - bf_imbuf_openimageio - ) - add_definitions(-DWITH_OPENIMAGEIO) -endif() - if(WITH_IMAGE_OPENJPEG) list(APPEND INC_SYS ${OPENJPEG_INCLUDE_DIRS} diff --git a/source/blender/imbuf/IMB_imbuf_types.h b/source/blender/imbuf/IMB_imbuf_types.h index 129b265f854..5d4b8e453b3 100644 --- a/source/blender/imbuf/IMB_imbuf_types.h +++ b/source/blender/imbuf/IMB_imbuf_types.h @@ -59,9 +59,7 @@ enum eImbFileType { IMB_FTYPE_BMP = 4, IMB_FTYPE_OPENEXR = 5, IMB_FTYPE_IMAGIC = 6, -#ifdef WITH_OPENIMAGEIO IMB_FTYPE_PSD = 7, -#endif #ifdef WITH_OPENJPEG IMB_FTYPE_JP2 = 8, #endif diff --git a/source/blender/imbuf/intern/filetype.c b/source/blender/imbuf/intern/filetype.c index 00820268333..06b70d354a9 100644 --- a/source/blender/imbuf/intern/filetype.c +++ b/source/blender/imbuf/intern/filetype.c @@ -14,9 +14,7 @@ #include "IMB_colormanagement.h" -#ifdef WITH_OPENIMAGEIO -# include "oiio/openimageio_api.h" -#endif +#include "oiio/openimageio_api.h" #ifdef WITH_OPENEXR # include "openexr/openexr_api.h" @@ -183,7 +181,6 @@ const ImFileType IMB_FILE_TYPES[] = { .default_save_role = COLOR_ROLE_DEFAULT_BYTE, }, #endif -#ifdef WITH_OPENIMAGEIO { .init = NULL, .exit = NULL, @@ -196,7 +193,6 @@ const ImFileType IMB_FILE_TYPES[] = { .filetype = IMB_FTYPE_PSD, .default_save_role = COLOR_ROLE_DEFAULT_FLOAT, }, -#endif #ifdef WITH_WEBP { .init = NULL, diff --git a/source/blender/imbuf/intern/oiio/CMakeLists.txt b/source/blender/imbuf/intern/oiio/CMakeLists.txt index b694f6b51a7..03a38928537 100644 --- a/source/blender/imbuf/intern/oiio/CMakeLists.txt +++ b/source/blender/imbuf/intern/oiio/CMakeLists.txt @@ -13,7 +13,7 @@ set(INC ) set(INC_SYS - + ${OPENIMAGEIO_INCLUDE_DIRS} ) set(SRC @@ -23,37 +23,17 @@ set(SRC ) set(LIB + ${OPENIMAGEIO_LIBRARIES} + ${PUGIXML_LIBRARIES} ) -if(WITH_OPENIMAGEIO) +if(WITH_IMAGE_OPENEXR) list(APPEND INC_SYS - ${OPENIMAGEIO_INCLUDE_DIRS} + ${OPENEXR_INCLUDE_DIRS} ) - if(WITH_BOOST) - list(APPEND INC_SYS - ${BOOST_INCLUDE_DIR} - ) - endif() - list(APPEND LIB - ${OPENIMAGEIO_LIBRARIES} - ${PUGIXML_LIBRARIES} + ${OPENEXR_LIBRARIES} ) - if(WITH_IMAGE_OPENEXR) - list(APPEND INC_SYS - ${OPENEXR_INCLUDE_DIRS} - ) - list(APPEND LIB - ${OPENEXR_LIBRARIES} - ) - endif() - - if(WITH_BOOST) - list(APPEND LIB - ${BOOST_LIBRARIES} - ) - endif() - add_definitions(-DWITH_OPENIMAGEIO) endif() blender_add_lib(bf_imbuf_openimageio "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") diff --git a/source/blender/imbuf/intern/util.c b/source/blender/imbuf/intern/util.c index 2870ff56c0a..7967c7c0fa5 100644 --- a/source/blender/imbuf/intern/util.c +++ b/source/blender/imbuf/intern/util.c @@ -60,9 +60,7 @@ const char *imb_ext_image[] = { #ifdef WITH_OPENEXR ".exr", #endif -#ifdef WITH_OPENIMAGEIO ".psd", ".pdd", ".psb", -#endif #ifdef WITH_WEBP ".webp", #endif @@ -70,11 +68,9 @@ const char *imb_ext_image[] = { }; const char *imb_ext_image_filepath_only[] = { -#ifdef WITH_OPENIMAGEIO ".psd", ".pdd", ".psb", -#endif NULL, }; diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 9809daf6ff5..2988b7e2e35 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -242,10 +242,6 @@ if(WITH_IMAGE_OPENEXR) add_definitions(-DWITH_OPENEXR) endif() -if(WITH_OPENIMAGEIO) - add_definitions(-DWITH_OPENIMAGEIO) -endif() - if(WITH_IMAGE_TIFF) add_definitions(-DWITH_TIFF) endif() diff --git a/source/blender/python/intern/CMakeLists.txt b/source/blender/python/intern/CMakeLists.txt index 9d2516969cf..3e8cdc2e94c 100644 --- a/source/blender/python/intern/CMakeLists.txt +++ b/source/blender/python/intern/CMakeLists.txt @@ -11,6 +11,7 @@ set(INC ../../editors/include ../../gpu ../../imbuf + ../../imbuf/intern/oiio ../../makesdna ../../makesrna ../../windowmanager @@ -219,10 +220,6 @@ if(WITH_IMAGE_OPENEXR) add_definitions(-DWITH_OPENEXR) endif() -if(WITH_OPENIMAGEIO) - add_definitions(-DWITH_OPENIMAGEIO) -endif() - if(WITH_IMAGE_OPENJPEG) add_definitions(-DWITH_OPENJPEG) endif() @@ -351,13 +348,6 @@ if(WITH_USD) ) endif() -if(WITH_OPENIMAGEIO) - add_definitions(-DWITH_OPENIMAGEIO) - list(APPEND INC - ../../imbuf/intern/oiio - ) -endif() - if(WITH_OPENSUBDIV) add_definitions(-DWITH_OPENSUBDIV) list(APPEND INC diff --git a/source/blender/python/intern/bpy_app_oiio.c b/source/blender/python/intern/bpy_app_oiio.c index ae1c2176dd3..9a2a6639e18 100644 --- a/source/blender/python/intern/bpy_app_oiio.c +++ b/source/blender/python/intern/bpy_app_oiio.c @@ -11,9 +11,7 @@ #include "../generic/py_capi_utils.h" -#ifdef WITH_OPENIMAGEIO -# include "openimageio_api.h" -#endif +#include "openimageio_api.h" static PyTypeObject BlenderAppOIIOType; @@ -36,32 +34,20 @@ static PyObject *make_oiio_info(void) PyObject *oiio_info; int pos = 0; -#ifdef WITH_OPENIMAGEIO int curversion; -#endif oiio_info = PyStructSequence_New(&BlenderAppOIIOType); if (oiio_info == NULL) { return NULL; } -#ifndef WITH_OPENIMAGEIO -# define SetStrItem(str) PyStructSequence_SET_ITEM(oiio_info, pos++, PyUnicode_FromString(str)) -#endif - #define SetObjItem(obj) PyStructSequence_SET_ITEM(oiio_info, pos++, obj) -#ifdef WITH_OPENIMAGEIO curversion = OIIO_getVersionHex(); SetObjItem(PyBool_FromLong(1)); SetObjItem(PyC_Tuple_Pack_I32(curversion / 10000, (curversion / 100) % 100, curversion % 100)); SetObjItem(PyUnicode_FromFormat( "%2d, %2d, %2d", curversion / 10000, (curversion / 100) % 100, curversion % 100)); -#else - SetObjItem(PyBool_FromLong(0)); - SetObjItem(PyC_Tuple_Pack_I32(0, 0, 0)); - SetStrItem("Unknown"); -#endif if (UNLIKELY(PyErr_Occurred())) { Py_DECREF(oiio_info);