123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- commit ade5af81ba7b039b42eff6efeb580b78bd54b6b3
- Author: CYBERDEViL <cyberdevil@notabug.org>
- Date: Sat Dec 16 02:23:16 2023 +0100
- openexr: fix header include
-
- Thanks to this patch: https://aur.archlinux.org/cgit/aur.git/tree/openexr3.patch?h=blender-2.7
- commit e00532824f88fbf8d6215df1509dd13ab33b8628
- Author: CYBERDEViL <cyberdevil@notabug.org>
- Date: Fri Dec 15 23:30:59 2023 +0100
- openexr: "Images: update code to support OpenEXR 3"
-
- Adjusted Blender ref: cd7550cfe7
- commit 7af9405f175999f38df80a421bde7166641183fd
- Author: CYBERDEViL <cyberdevil@notabug.org>
- Date: Fri Dec 15 22:23:21 2023 +0100
- openexr: "Build: update CMake to support OpenEXR 3"
-
- Applied whole Blender upstream ref: 2c9931699e2080639bb836357e116b8e340335d9
- diff --git a/blender-2.79b/build_files/cmake/Modules/FindOpenEXR.cmake b/blender-2.79b/build_files/cmake/Modules/FindOpenEXR.cmake
- index 41e60a7..7e1fdbd 100644
- --- a/blender-2.79b/build_files/cmake/Modules/FindOpenEXR.cmake
- +++ b/blender-2.79b/build_files/cmake/Modules/FindOpenEXR.cmake
- @@ -37,14 +37,6 @@ 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_FIND_COMPONENTS
- - Half
- - Iex
- - IlmImf
- - IlmThread
- - Imath
- -)
- -
- SET(_openexr_SEARCH_DIRS
- ${OPENEXR_ROOT_DIR}
- /usr/local
- @@ -101,6 +93,24 @@ 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
- + IlmThread
- + OpenEXR
- + OpenEXRCore
- + )
- +ELSE()
- + SET(_openexr_FIND_COMPONENTS
- + Half
- + Iex
- + IlmImf
- + IlmThread
- + Imath
- + )
- +ENDIF()
- +
- SET(_openexr_LIBRARIES)
- FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
- STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
- @@ -118,6 +128,57 @@ 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 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.
- +
- + # 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()
- +
- # handle the QUIETLY and REQUIRED arguments and set OPENEXR_FOUND to TRUE if
- # all listed variables are TRUE
- INCLUDE(FindPackageHandleStandardArgs)
- @@ -126,13 +187,25 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenEXR DEFAULT_MSG
-
- 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> :(
- - SET(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR_INCLUDE_DIR}/OpenEXR)
- + # 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()
- ENDIF()
-
- MARK_AS_ADVANCED(
- OPENEXR_INCLUDE_DIR
- OPENEXR_VERSION
- + IMATH_INCLUDE_DIR
- + IMATH_LIBRARY
- )
- FOREACH(COMPONENT ${_openexr_FIND_COMPONENTS})
- STRING(TOUPPER ${COMPONENT} UPPERCOMPONENT)
- diff --git a/blender-2.79b/source/blender/alembic/intern/abc_transform.cc b/blender-2.79b/source/blender/alembic/intern/abc_transform.cc
- index 5392387..9dc3200 100644
- --- a/blender-2.79b/source/blender/alembic/intern/abc_transform.cc
- +++ b/blender-2.79b/source/blender/alembic/intern/abc_transform.cc
- @@ -22,7 +22,7 @@
-
- #include "abc_transform.h"
-
- -#include <OpenEXR/ImathBoxAlgo.h>
- +#include <Imath/ImathBoxAlgo.h>
-
- #include "abc_util.h"
-
- diff --git a/blender-2.79b/source/blender/imbuf/intern/openexr/openexr_api.cpp b/blender-2.79b/source/blender/imbuf/intern/openexr/openexr_api.cpp
- index 5ad42bd..94c2232 100644
- --- a/blender-2.79b/source/blender/imbuf/intern/openexr/openexr_api.cpp
- +++ b/blender-2.79b/source/blender/imbuf/intern/openexr/openexr_api.cpp
- @@ -40,30 +40,46 @@
- #include <algorithm>
- #include <iostream>
-
- -#include <half.h>
- -#include <Iex.h>
- -#include <ImfVersion.h>
- -#include <ImathBox.h>
- -#include <ImfArray.h>
- -#include <ImfIO.h>
- -#include <ImfChannelList.h>
- -#include <ImfPixelType.h>
- -#include <ImfInputFile.h>
- -#include <ImfOutputFile.h>
- -#include <ImfCompression.h>
- -#include <ImfCompressionAttribute.h>
- -#include <ImfStringAttribute.h>
- -#include <ImfStandardAttributes.h>
- +/* The OpenEXR version can reliably be found in this header file from OpenEXR,
- + * for both 2.x and 3.x:
- + */
- +#include <OpenEXR/OpenEXRConfig.h>
- +#define COMBINED_OPENEXR_VERSION \
- + ((10000 * OPENEXR_VERSION_MAJOR) + (100 * OPENEXR_VERSION_MINOR) + OPENEXR_VERSION_PATCH)
- +
- +#if COMBINED_OPENEXR_VERSION >= 20599
- +/* >=2.5.99 -> OpenEXR >=3.0 */
- +# include <Imath/half.h>
- +# include <OpenEXR/ImfFrameBuffer.h>
- +# define exr_file_offset_t uint64_t
- +#else
- +/* OpenEXR 2.x, use the old locations. */
- +# include <OpenEXR/half.h>
- +# define exr_file_offset_t Int64
- +#endif
- +
- +#include <OpenEXR/Iex.h>
- +#include <OpenEXR/ImfArray.h>
- +#include <OpenEXR/ImfChannelList.h>
- +#include <OpenEXR/ImfCompression.h>
- +#include <OpenEXR/ImfCompressionAttribute.h>
- +#include <OpenEXR/ImfIO.h>
- +#include <OpenEXR/ImfInputFile.h>
- +#include <OpenEXR/ImfOutputFile.h>
- +#include <OpenEXR/ImfPixelType.h>
- +#include <OpenEXR/ImfStandardAttributes.h>
- +#include <OpenEXR/ImfStringAttribute.h>
- +#include <OpenEXR/ImfVersion.h>
-
- /* multiview/multipart */
- -#include <ImfMultiView.h>
- -#include <ImfMultiPartInputFile.h>
- -#include <ImfInputPart.h>
- -#include <ImfOutputPart.h>
- -#include <ImfMultiPartOutputFile.h>
- -#include <ImfTiledOutputPart.h>
- -#include <ImfPartType.h>
- -#include <ImfPartHelper.h>
- +#include <OpenEXR/ImfInputPart.h>
- +#include <OpenEXR/ImfMultiPartInputFile.h>
- +#include <OpenEXR/ImfMultiPartOutputFile.h>
- +#include <OpenEXR/ImfMultiView.h>
- +#include <OpenEXR/ImfOutputPart.h>
- +#include <OpenEXR/ImfPartHelper.h>
- +#include <OpenEXR/ImfPartType.h>
- +#include <OpenEXR/ImfTiledOutputPart.h>
-
- #include "DNA_scene_types.h" /* For OpenEXR compression constants */
-
- @@ -134,15 +150,15 @@ public:
- }
-
- virtual bool read(char c[], int n);
- - virtual Int64 tellg();
- - virtual void seekg(Int64 pos);
- + virtual exr_file_offset_t tellg();
- + virtual void seekg(exr_file_offset_t pos);
- virtual void clear();
- //virtual ~Mem_IStream() {}; // unused
-
- private:
-
- - Int64 _exrpos;
- - Int64 _exrsize;
- + exr_file_offset_t _exrpos;
- + exr_file_offset_t _exrsize;
- unsigned char *_exrbuf;
- };
-
- @@ -157,12 +173,12 @@ bool Mem_IStream::read(char c[], int n)
- return false;
- }
-
- -Int64 Mem_IStream::tellg()
- +exr_file_offset_t Mem_IStream::tellg()
- {
- return _exrpos;
- }
-
- -void Mem_IStream::seekg(Int64 pos)
- +void Mem_IStream::seekg(exr_file_offset_t pos)
- {
- _exrpos = pos;
- }
- @@ -202,12 +218,12 @@ public:
- return check_error();
- }
-
- - virtual Int64 tellg()
- + virtual exr_file_offset_t tellg()
- {
- return std::streamoff(ifs.tellg());
- }
-
- - virtual void seekg(Int64 pos)
- + virtual void seekg(exr_file_offset_t pos)
- {
- ifs.seekg(pos);
- check_error();
- @@ -262,12 +278,12 @@ public:
- check_error();
- }
-
- - virtual Int64 tellp()
- + virtual exr_file_offset_t tellp()
- {
- return std::streamoff(ofs.tellp());
- }
-
- - virtual void seekp(Int64 pos)
- + virtual void seekp(exr_file_offset_t pos)
- {
- ofs.seekp(pos);
- check_error();
|