From 01ded9b06ac33335fae1202ae92dea79567f4ac3 Mon Sep 17 00:00:00 2001 From: Richard Shaw Date: Mon, 23 Aug 2021 07:46:13 -0500 Subject: [PATCH] Add upstream patch. --- 1432.patch | 1173 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1173 insertions(+) create mode 100644 1432.patch diff --git a/1432.patch b/1432.patch new file mode 100644 index 0000000..55769ed --- /dev/null +++ b/1432.patch @@ -0,0 +1,1173 @@ +From 3607e8ca611e1c795faf810e2abd7c0cb276e4af Mon Sep 17 00:00:00 2001 +From: Michael Dolan +Date: Thu, 8 Jul 2021 13:52:32 -0400 +Subject: [PATCH 01/11] Add Imath 3 Half support + +Signed-off-by: Michael Dolan +--- + .github/workflows/analysis_workflow.yml | 1 + + CMakeLists.txt | 1 + + share/ci/scripts/linux/install_imath.sh | 30 +++ + share/ci/scripts/linux/install_openexr.sh | 2 +- + share/cmake/modules/FindExtPackages.cmake | 21 +- + share/cmake/modules/FindHalf.cmake | 15 +- + share/cmake/modules/FindImath.cmake | 221 ++++++++++++++++++ + src/OpenColorIO/BitDepthUtils.h | 2 +- + src/OpenColorIO/CMakeLists.txt | 2 +- + src/OpenColorIO/MathUtils.h | 2 +- + src/OpenColorIO/ops/range/RangeOp.cpp | 2 +- + src/OpenColorIO/transforms/builtins/ACES.cpp | 2 +- + .../transforms/builtins/OpHelpers.cpp | 2 +- + src/apps/ocioconvert/CMakeLists.txt | 2 +- + src/apps/ocioconvert/main.cpp | 2 +- + src/apps/ocioperf/CMakeLists.txt | 2 +- + src/apps/ocioperf/main.cpp | 2 +- + src/libutils/oiiohelpers/CMakeLists.txt | 2 +- + src/libutils/oiiohelpers/oiiohelpers.cpp | 2 +- + tests/cpu/CMakeLists.txt | 2 +- + 20 files changed, 292 insertions(+), 25 deletions(-) + create mode 100644 share/ci/scripts/linux/install_imath.sh + create mode 100644 share/cmake/modules/FindImath.cmake + +Index: OpenColorIO-2.0.1/.github/workflows/analysis_workflow.yml +=================================================================== +--- OpenColorIO-2.0.1.orig/.github/workflows/analysis_workflow.yml ++++ OpenColorIO-2.0.1/.github/workflows/analysis_workflow.yml +@@ -31,70 +31,46 @@ jobs: + image: aswf/ci-base:${{ matrix.vfx-cy }} + strategy: + matrix: +- build: [1, 2, 3, 4, 5, 6] ++ build: [1, 2, 3, 4] + include: + # ------------------------------------------------------------------- +- # GCC, VFX CY2020 ++ # GCC + # ------------------------------------------------------------------- +- # C++11, Python 3.7 ++ # VFX CY2022, C++17, docs + - build: 1 + build-docs: 'ON' +- cxx-standard: 11 ++ cxx-standard: 17 + cxx-compiler: g++ + cc-compiler: gcc +- compiler-desc: GCC 6.3.1 +- vfx-cy: 2020 +- # C++14 ++ compiler-desc: GCC 9.3.1 ++ vfx-cy: 2022 ++ # VFX CY2021, C++14 + - build: 2 + build-docs: 'OFF' + cxx-standard: 14 + cxx-compiler: g++ + cc-compiler: gcc +- compiler-desc: GCC 6.3.1 +- vfx-cy: 2020 ++ compiler-desc: GCC 9.3.1 ++ vfx-cy: 2021 + # ------------------------------------------------------------------- +- # GCC, VFX CY2019 ++ # Clang + # ------------------------------------------------------------------- +- # Python 2.7 ++ # VFX CY2022, C++17 + - build: 3 +- # Doc build requires Python 3 + build-docs: 'OFF' +- cxx-standard: 11 +- cxx-compiler: g++ +- cc-compiler: gcc +- compiler-desc: GCC 6.3.1 +- vfx-cy: 2019 +- # ------------------------------------------------------------------- +- # Clang, VFX CY2020 +- # ------------------------------------------------------------------- +- # C++11, Python 3.7 +- - build: 4 +- build-docs: 'OFF' +- cxx-standard: 11 ++ cxx-standard: 17 + cxx-compiler: clang++ + cc-compiler: clang +- compiler-desc: Clang 7 +- vfx-cy: 2020 +- # C++14 +- - build: 5 +- build-docs: 'OFF' ++ compiler-desc: Clang 9 ++ vfx-cy: 2022 ++ # VFX CY2021, C++14, docs ++ - build: 4 ++ build-docs: 'ON' + cxx-standard: 14 + cxx-compiler: clang++ + cc-compiler: clang +- compiler-desc: Clang 7 +- vfx-cy: 2020 +- # ------------------------------------------------------------------- +- # Clang, VFX CY2019 +- # ------------------------------------------------------------------- +- # Python 2.7 +- - build: 6 +- # Doc build requires Python 3 +- build-docs: 'OFF' +- cxx-standard: 11 +- cxx-compiler: clang++ +- cc-compiler: clang +- compiler-desc: Clang 7 +- vfx-cy: 2019 ++ compiler-desc: Clang 9 ++ vfx-cy: 2021 + env: + CXX: ${{ matrix.cxx-compiler }} + CC: ${{ matrix.cc-compiler }} +@@ -114,6 +90,7 @@ jobs: + share/ci/scripts/linux/install_pystring.sh latest + share/ci/scripts/linux/install_pybind11.sh latest + share/ci/scripts/linux/install_openexr.sh latest ++ share/ci/scripts/linux/install_imath.sh latest + share/ci/scripts/linux/install_oiio.sh latest + - name: Create build directories + run: | +@@ -155,7 +132,7 @@ jobs: + container: + # DockerHub: https://hub.docker.com/u/aswf + # Source: https://github.com/AcademySoftwareFoundation/aswf-docker +- image: aswf/ci-ocio:2020 ++ image: aswf/ci-ocio:2022 + env: + CXX: g++ + CC: gcc +Index: OpenColorIO-2.0.1/CMakeLists.txt +=================================================================== +--- OpenColorIO-2.0.1.orig/CMakeLists.txt ++++ OpenColorIO-2.0.1/CMakeLists.txt +@@ -127,6 +127,7 @@ option(OCIO_WARNING_AS_ERROR "Set build + # Optimization / internal linking preferences + + option(OCIO_USE_SSE "Specify whether to enable SSE CPU performance optimizations" ON) ++option(OCIO_USE_ILMBASE "Specify whether to use an OpenEXR/IlmBase install of the Half library (<=v2.5) instead of the newer Imath library (>=v3.0)" OFF) + option(OCIO_INLINES_HIDDEN "Specify whether to build with -fvisibility-inlines-hidden" ${UNIX}) + + +Index: OpenColorIO-2.0.1/share/ci/scripts/linux/install_imath.sh +=================================================================== +--- /dev/null ++++ OpenColorIO-2.0.1/share/ci/scripts/linux/install_imath.sh +@@ -0,0 +1,31 @@ ++#!/usr/bin/env bash ++# SPDX-License-Identifier: BSD-3-Clause ++# Copyright Contributors to the OpenColorIO Project. ++ ++set -ex ++ ++IMATH_VERSION="$1" ++ ++git clone https://github.com/AcademySoftwareFoundation/Imath.git ++cd Imath ++ ++if [ "$IMATH_VERSION" == "latest" ]; then ++ git checkout release ++ LATEST_TAG=$(git describe --abbrev=0 --tags) ++ git checkout tags/${LATEST_TAG} -b ${LATEST_TAG} ++else ++ git checkout tags/v${IMATH_VERSION} -b v${IMATH_VERSION} ++fi ++ ++mkdir build ++cd build ++cmake -DBUILD_TESTING=OFF \ ++ -DPYTHON=OFF \ ++ -DCMAKE_C_FLAGS="-fPIC" \ ++ -DCMAKE_CXX_FLAGS="-fPIC" \ ++ ../. ++make -j4 ++sudo make install ++ ++cd ../.. ++rm -rf Imath +Index: OpenColorIO-2.0.1/share/ci/scripts/linux/install_openexr.sh +=================================================================== +--- OpenColorIO-2.0.1.orig/share/ci/scripts/linux/install_openexr.sh ++++ OpenColorIO-2.0.1/share/ci/scripts/linux/install_openexr.sh +@@ -6,10 +6,11 @@ set -ex + + OPENEXR_VERSION="$1" + +-git clone https://github.com/openexr/openexr.git ++git clone https://github.com/AcademySoftwareFoundation/openexr.git + cd openexr + + if [ "$OPENEXR_VERSION" == "latest" ]; then ++ git checkout release + LATEST_TAG=$(git describe --abbrev=0 --tags) + git checkout tags/${LATEST_TAG} -b ${LATEST_TAG} + else +Index: OpenColorIO-2.0.1/share/cmake/modules/FindExtPackages.cmake +=================================================================== +--- OpenColorIO-2.0.1.orig/share/cmake/modules/FindExtPackages.cmake ++++ OpenColorIO-2.0.1/share/cmake/modules/FindExtPackages.cmake +@@ -32,14 +32,27 @@ find_package(expat 2.2.8 REQUIRED) + # https://github.com/jbeder/yaml-cpp + find_package(yaml-cpp 0.6.3 REQUIRED) + +-# Half (OpenEXR/IlmBase) +-# https://github.com/openexr/openexr +-find_package(Half 2.4.0 REQUIRED) +- + # pystring + # https://github.com/imageworks/pystring + find_package(pystring 1.1.3 REQUIRED) + ++# Half ++if(NOT OCIO_USE_ILMBASE) ++ ++ # Imath (>=3.0) ++ # https://github.com/AcademySoftwareFoundation/Imath ++ find_package(Imath 3.0.2 REQUIRED) ++ ++ set(OCIO_HALF_LIB Imath::Imath CACHE STRING "Half library target" FORCE) ++else() ++ ++ # OpenEXR/IlmBase (<=2.5) ++ # https://github.com/AcademySoftwareFoundation/openexr ++ find_package(Half 2.4.0 REQUIRED) ++ ++ set(OCIO_HALF_LIB IlmBase::Half CACHE STRING "Half library target" FORCE) ++endif() ++ + if(OCIO_BUILD_APPS) + + # NOTE: Depending of the compiler version lcms2 2.2 does not compile with +Index: OpenColorIO-2.0.1/share/cmake/modules/FindHalf.cmake +=================================================================== +--- OpenColorIO-2.0.1.orig/share/cmake/modules/FindHalf.cmake ++++ OpenColorIO-2.0.1/share/cmake/modules/FindHalf.cmake +@@ -48,12 +48,13 @@ if(NOT OCIO_INSTALL_EXT_PACKAGES STREQUA + # Find include directory + find_path(Half_INCLUDE_DIR + NAMES +- OpenEXR/half.h ++ half.h + HINTS + ${Half_ROOT} + ${PC_Half_INCLUDE_DIRS} + PATH_SUFFIXES + include ++ include/OpenEXR + OpenEXR/include + ) + +@@ -91,10 +92,10 @@ if(NOT OCIO_INSTALL_EXT_PACKAGES STREQUA + + # Get version from config header file + if(Half_INCLUDE_DIR) +- if(EXISTS "${Half_INCLUDE_DIR}/OpenEXR/IlmBaseConfig.h") +- set(_Half_CONFIG "${Half_INCLUDE_DIR}/OpenEXR/IlmBaseConfig.h") +- elseif(EXISTS "${Half_INCLUDE_DIR}/OpenEXR/OpenEXRConfig.h") +- set(_Half_CONFIG "${Half_INCLUDE_DIR}/OpenEXR/OpenEXRConfig.h") ++ if(EXISTS "${Half_INCLUDE_DIR}/IlmBaseConfig.h") ++ set(_Half_CONFIG "${Half_INCLUDE_DIR}/IlmBaseConfig.h") ++ elseif(EXISTS "${Half_INCLUDE_DIR}/OpenEXRConfig.h") ++ set(_Half_CONFIG "${Half_INCLUDE_DIR}/OpenEXRConfig.h") + endif() + endif() + +@@ -149,7 +150,7 @@ if(NOT Half_FOUND) + # Set find_package standard args + set(Half_FOUND TRUE) + set(Half_VERSION ${Half_FIND_VERSION}) +- set(Half_INCLUDE_DIR "${_EXT_DIST_ROOT}/${CMAKE_INSTALL_INCLUDEDIR}") ++ set(Half_INCLUDE_DIR "${_EXT_DIST_ROOT}/${CMAKE_INSTALL_INCLUDEDIR}/OpenEXR") + + # Set the expected library name. "_d" is appended to Debug Windows builds + # <= OpenEXR 2.3.0. In newer versions, it is appended to Debug libs on +@@ -195,7 +196,7 @@ if(NOT Half_FOUND) + file(MAKE_DIRECTORY ${Half_INCLUDE_DIR}) + + ExternalProject_Add(ilmbase_install +- GIT_REPOSITORY "https://github.com/openexr/openexr.git" ++ GIT_REPOSITORY "https://github.com/AcademySoftwareFoundation/openexr.git" + GIT_TAG "v${Half_VERSION}" + GIT_CONFIG advice.detachedHead=false + GIT_SHALLOW TRUE +Index: OpenColorIO-2.0.1/share/cmake/modules/FindImath.cmake +=================================================================== +--- /dev/null ++++ OpenColorIO-2.0.1/share/cmake/modules/FindImath.cmake +@@ -0,0 +1,222 @@ ++# SPDX-License-Identifier: BSD-3-Clause ++# Copyright Contributors to the OpenColorIO Project. ++# ++# Locate or install Imath ++# ++# Variables defined by this module: ++# Imath_FOUND - If FALSE, do not try to link to ilmbase ++# Imath_LIBRARY - Imath library to link to ++# Imath_INCLUDE_DIR - Where to find ImathConfig.h ++# Imath_VERSION - The version of the library ++# ++# Targets defined by this module: ++# Imath::Imath - IMPORTED target, if found ++# ++# By default, the dynamic libraries of Imath will be found. To find the ++# static ones instead, you must set the Imath_STATIC_LIBRARY variable to ++# TRUE before calling find_package(Imath ...). ++# ++# If Imath is not installed in a standard path, you can use the ++# Imath_ROOT variable to tell CMake where to find it. If it is not found ++# and OCIO_INSTALL_EXT_PACKAGES is set to MISSING or ALL, Imath will be ++# downloaded, built, and statically-linked into libOpenColorIO at build time. ++# ++ ++# Imath components may have the version in their name ++set(_Imath_LIB_VER "${Imath_FIND_VERSION_MAJOR}_${Imath_FIND_VERSION_MINOR}") ++ ++############################################################################### ++### Try to find package ### ++ ++if(NOT OCIO_INSTALL_EXT_PACKAGES STREQUAL ALL) ++ set(_Imath_REQUIRED_VARS Imath_LIBRARY) ++ ++ if(NOT DEFINED Imath_ROOT) ++ # Search for ImathConfig.cmake ++ find_package(Imath ${Imath_FIND_VERSION} CONFIG QUIET) ++ endif() ++ ++ if(Imath_FOUND) ++ get_target_property(Imath_LIBRARY Imath::Imath LOCATION) ++ else() ++ list(APPEND _Imath_REQUIRED_VARS Imath_INCLUDE_DIR) ++ ++ # Search for Imath.pc ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(PC_Imath QUIET "Imath>=${Imath_FIND_VERSION}") ++ ++ # Find include directory ++ find_path(Imath_INCLUDE_DIR ++ NAMES ++ ImathConfig.h ++ HINTS ++ ${Imath_ROOT} ++ ${PC_Imath_INCLUDE_DIRS} ++ PATH_SUFFIXES ++ include ++ include/Imath ++ Imath/include ++ ) ++ ++ # Lib names to search for ++ set(_Imath_LIB_NAMES "Imath-${_Imath_LIB_VER}" Imath) ++ if(BUILD_TYPE_DEBUG) ++ # Prefer Debug lib names ++ list(INSERT _Imath_LIB_NAMES 0 "Imath-${_Imath_LIB_VER}_d") ++ endif() ++ ++ if(Imath_STATIC_LIBRARY) ++ # Prefer static lib names ++ set(_Imath_STATIC_LIB_NAMES ++ "${CMAKE_STATIC_LIBRARY_PREFIX}Imath-${_Imath_LIB_VER}${CMAKE_STATIC_LIBRARY_SUFFIX}" ++ "${CMAKE_STATIC_LIBRARY_PREFIX}Imath${CMAKE_STATIC_LIBRARY_SUFFIX}" ++ ) ++ if(BUILD_TYPE_DEBUG) ++ # Prefer static Debug lib names ++ list(INSERT _Imath_STATIC_LIB_NAMES 0 ++ "${CMAKE_STATIC_LIBRARY_PREFIX}Imath-${_Imath_LIB_VER}_d${CMAKE_STATIC_LIBRARY_SUFFIX}") ++ endif() ++ endif() ++ ++ # Find library ++ find_library(Imath_LIBRARY ++ NAMES ++ ${_Imath_STATIC_LIB_NAMES} ++ ${_Imath_LIB_NAMES} ++ HINTS ++ ${Imath_ROOT} ++ ${PC_Imath_LIBRARY_DIRS} ++ PATH_SUFFIXES ++ lib64 lib ++ ) ++ ++ # Get version from config header file ++ if(Imath_INCLUDE_DIR) ++ if(EXISTS "${Imath_INCLUDE_DIR}/ImathConfig.h") ++ set(_Imath_CONFIG "${Imath_INCLUDE_DIR}/ImathConfig.h") ++ endif() ++ endif() ++ ++ if(_Imath_CONFIG) ++ file(STRINGS "${_Imath_CONFIG}" _Imath_VER_SEARCH ++ REGEX "^[ \t]*#define[ \t]+IMATH_VERSION_STRING[ \t]+\"[.0-9]+\".*$") ++ if(_Imath_VER_SEARCH) ++ string(REGEX REPLACE ".*#define[ \t]+IMATH_VERSION_STRING[ \t]+\"([.0-9]+)\".*" ++ "\\1" Imath_VERSION "${_Imath_VER_SEARCH}") ++ endif() ++ elseif(PC_Imath_FOUND) ++ set(Imath_VERSION "${PC_Imath_VERSION}") ++ endif() ++ endif() ++ ++ # Override REQUIRED if package can be installed ++ if(OCIO_INSTALL_EXT_PACKAGES STREQUAL MISSING) ++ set(Imath_FIND_REQUIRED FALSE) ++ endif() ++ ++ include(FindPackageHandleStandardArgs) ++ find_package_handle_standard_args(Imath ++ REQUIRED_VARS ++ ${_Imath_REQUIRED_VARS} ++ VERSION_VAR ++ Imath_VERSION ++ ) ++endif() ++ ++############################################################################### ++### Create target ++ ++if (NOT TARGET Imath::Imath) ++ add_library(Imath::Imath UNKNOWN IMPORTED GLOBAL) ++ set(_Imath_TARGET_CREATE TRUE) ++endif() ++ ++############################################################################### ++### Install package from source ### ++ ++if(NOT Imath_FOUND) ++ include(ExternalProject) ++ include(GNUInstallDirs) ++ ++ set(_EXT_DIST_ROOT "${CMAKE_BINARY_DIR}/ext/dist") ++ set(_EXT_BUILD_ROOT "${CMAKE_BINARY_DIR}/ext/build") ++ ++ # Set find_package standard args ++ set(Imath_FOUND TRUE) ++ set(Imath_VERSION ${Imath_FIND_VERSION}) ++ set(Imath_INCLUDE_DIR "${_EXT_DIST_ROOT}/${CMAKE_INSTALL_INCLUDEDIR}/Imath") ++ ++ # Set the expected library name. "_d" is appended to Debug Windows builds ++ # <= OpenEXR 2.3.0. In newer versions, it is appended to Debug libs on ++ # all platforms. ++ if(BUILD_TYPE_DEBUG) ++ set(_Imath_LIB_SUFFIX "_d") ++ endif() ++ ++ set(Imath_LIBRARY ++ "${_EXT_DIST_ROOT}/${CMAKE_INSTALL_LIBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}Imath-${_Imath_LIB_VER}${_Imath_LIB_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}") ++ ++ if(_Imath_TARGET_CREATE) ++ if(MSVC) ++ set(Imath_CXX_FLAGS "${Imath_CXX_FLAGS} /EHsc") ++ endif() ++ ++ string(STRIP "${Imath_CXX_FLAGS}" Imath_CXX_FLAGS) ++ ++ set(Imath_CMAKE_ARGS ++ ${Imath_CMAKE_ARGS} ++ -DCMAKE_CXX_VISIBILITY_PRESET=${CMAKE_CXX_VISIBILITY_PRESET} ++ -DCMAKE_VISIBILITY_INLINES_HIDDEN=${CMAKE_VISIBILITY_INLINES_HIDDEN} ++ -DCMAKE_POSITION_INDEPENDENT_CODE=ON ++ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++ -DCMAKE_CXX_FLAGS=${Imath_CXX_FLAGS} ++ -DCMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} ++ -DCMAKE_INSTALL_MESSAGE=${CMAKE_INSTALL_MESSAGE} ++ -DCMAKE_INSTALL_PREFIX=${_EXT_DIST_ROOT} ++ -DCMAKE_OBJECT_PATH_MAX=${CMAKE_OBJECT_PATH_MAX} ++ -DBUILD_SHARED_LIBS=OFF ++ -DBUILD_TESTING=OFF ++ -DPYTHON=OFF ++ -DIMATH_HALF_USE_LOOKUP_TABLE=OFF ++ ) ++ ++ if(CMAKE_TOOLCHAIN_FILE) ++ set(Imath_CMAKE_ARGS ++ ${Imath_CMAKE_ARGS} -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}) ++ endif() ++ ++ if(APPLE) ++ set(Imath_CMAKE_ARGS ++ ${Imath_CMAKE_ARGS} -DCMAKE_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}) ++ endif() ++ ++ # Hack to let imported target be built from ExternalProject_Add ++ file(MAKE_DIRECTORY ${Imath_INCLUDE_DIR}) ++ ++ ExternalProject_Add(imath_install ++ GIT_REPOSITORY "https://github.com/AcademySoftwareFoundation/Imath.git" ++ GIT_TAG "v${Imath_VERSION}" ++ GIT_CONFIG advice.detachedHead=false ++ GIT_SHALLOW TRUE ++ PREFIX "${_EXT_BUILD_ROOT}/Imath" ++ BUILD_BYPRODUCTS ${Imath_LIBRARY} ++ CMAKE_ARGS ${Imath_CMAKE_ARGS} ++ EXCLUDE_FROM_ALL TRUE ++ ) ++ ++ add_dependencies(Imath::Imath imath_install) ++ message(STATUS "Installing Imath: ${Imath_LIBRARY} (version \"${Imath_VERSION}\")") ++ endif() ++endif() ++ ++############################################################################### ++### Configure target ### ++ ++if(_Imath_TARGET_CREATE) ++ set_target_properties(Imath::Imath PROPERTIES ++ IMPORTED_LOCATION ${Imath_LIBRARY} ++ INTERFACE_INCLUDE_DIRECTORIES ${Imath_INCLUDE_DIR} ++ ) ++ ++ mark_as_advanced(Imath_INCLUDE_DIR Imath_LIBRARY Imath_VERSION) ++endif() +Index: OpenColorIO-2.0.1/src/OpenColorIO/BitDepthUtils.h +=================================================================== +--- OpenColorIO-2.0.1.orig/src/OpenColorIO/BitDepthUtils.h ++++ OpenColorIO-2.0.1/src/OpenColorIO/BitDepthUtils.h +@@ -7,7 +7,7 @@ + + #include + +-#include "OpenEXR/half.h" ++#include "half.h" + + + namespace OCIO_NAMESPACE +Index: OpenColorIO-2.0.1/src/OpenColorIO/CMakeLists.txt +=================================================================== +--- OpenColorIO-2.0.1.orig/src/OpenColorIO/CMakeLists.txt ++++ OpenColorIO-2.0.1/src/OpenColorIO/CMakeLists.txt +@@ -207,7 +207,7 @@ target_link_libraries(OpenColorIO + public_api + PRIVATE + expat::expat +- IlmBase::Half ++ ${OCIO_HALF_LIB} + pystring::pystring + sampleicc::sampleicc + utils::strings +Index: OpenColorIO-2.0.1/src/OpenColorIO/MathUtils.h +=================================================================== +--- OpenColorIO-2.0.1.orig/src/OpenColorIO/MathUtils.h ++++ OpenColorIO-2.0.1/src/OpenColorIO/MathUtils.h +@@ -9,7 +9,7 @@ + + #include + +-#include "OpenEXR/half.h" ++#include "half.h" + + namespace OCIO_NAMESPACE + { +Index: OpenColorIO-2.0.1/src/OpenColorIO/ops/range/RangeOp.cpp +=================================================================== +--- OpenColorIO-2.0.1.orig/src/OpenColorIO/ops/range/RangeOp.cpp ++++ OpenColorIO-2.0.1/src/OpenColorIO/ops/range/RangeOp.cpp +@@ -7,7 +7,7 @@ + #include + + #include "GpuShaderUtils.h" +-#include "OpenEXR/half.h" ++#include "half.h" + #include "HashUtils.h" + #include "MathUtils.h" + #include "ops/lut1d/Lut1DOpData.h" +Index: OpenColorIO-2.0.1/src/OpenColorIO/transforms/builtins/ACES.cpp +=================================================================== +--- OpenColorIO-2.0.1.orig/src/OpenColorIO/transforms/builtins/ACES.cpp ++++ OpenColorIO-2.0.1/src/OpenColorIO/transforms/builtins/ACES.cpp +@@ -6,7 +6,7 @@ + + #include + +-#include "OpenEXR/half.h" ++#include "half.h" + #include "ops/fixedfunction/FixedFunctionOp.h" + #include "ops/gradingrgbcurve/GradingRGBCurveOp.h" + #include "ops/log/LogOp.h" +Index: OpenColorIO-2.0.1/src/OpenColorIO/transforms/builtins/OpHelpers.cpp +=================================================================== +--- OpenColorIO-2.0.1.orig/src/OpenColorIO/transforms/builtins/OpHelpers.cpp ++++ OpenColorIO-2.0.1/src/OpenColorIO/transforms/builtins/OpHelpers.cpp +@@ -4,7 +4,7 @@ + + #include + +-#include "OpenEXR/half.h" ++#include "half.h" + #include "ops/lut1d/Lut1DOp.h" + #include "transforms/builtins/OpHelpers.h" + +Index: OpenColorIO-2.0.1/src/apps/ocioconvert/CMakeLists.txt +=================================================================== +--- OpenColorIO-2.0.1.orig/src/apps/ocioconvert/CMakeLists.txt ++++ OpenColorIO-2.0.1/src/apps/ocioconvert/CMakeLists.txt +@@ -27,7 +27,7 @@ set_target_properties(ocioconvert PROPER + target_link_libraries(ocioconvert + PRIVATE + apputils +- IlmBase::Half ++ ${OCIO_HALF_LIB} + ${OCIO_GL_LIB} + oiiohelpers + OpenColorIO +Index: OpenColorIO-2.0.1/src/apps/ocioconvert/main.cpp +=================================================================== +--- OpenColorIO-2.0.1.orig/src/apps/ocioconvert/main.cpp ++++ OpenColorIO-2.0.1/src/apps/ocioconvert/main.cpp +@@ -24,7 +24,7 @@ namespace OIIO = OIIO_NAMESPACE; + #endif // OCIO_GPU_ENABLED + + #include "oiiohelpers.h" +-#include "OpenEXR/half.h" ++#include "half.h" + + + // Array of non OpenColorIO arguments. +Index: OpenColorIO-2.0.1/src/apps/ocioperf/CMakeLists.txt +=================================================================== +--- OpenColorIO-2.0.1.orig/src/apps/ocioperf/CMakeLists.txt ++++ OpenColorIO-2.0.1/src/apps/ocioperf/CMakeLists.txt +@@ -20,7 +20,7 @@ set_target_properties(ocioperf PROPERTIE + target_link_libraries(ocioperf + PRIVATE + apputils +- IlmBase::Half ++ ${OCIO_HALF_LIB} + oiiohelpers + OpenColorIO + OpenImageIO::OpenImageIO +Index: OpenColorIO-2.0.1/src/apps/ocioperf/main.cpp +=================================================================== +--- OpenColorIO-2.0.1.orig/src/apps/ocioperf/main.cpp ++++ OpenColorIO-2.0.1/src/apps/ocioperf/main.cpp +@@ -11,7 +11,7 @@ namespace OIIO = OIIO_NAMESPACE; + #endif + + #include "apputils/argparse.h" +-#include "OpenEXR/half.h" ++#include "half.h" + #include "oiiohelpers.h" + #include "utils/StringUtils.h" + +Index: OpenColorIO-2.0.1/src/libutils/oiiohelpers/CMakeLists.txt +=================================================================== +--- OpenColorIO-2.0.1.orig/src/libutils/oiiohelpers/CMakeLists.txt ++++ OpenColorIO-2.0.1/src/libutils/oiiohelpers/CMakeLists.txt +@@ -31,7 +31,7 @@ target_link_libraries(oiiohelpers + + PRIVATE + OpenColorIO +- IlmBase::Half ++ ${OCIO_HALF_LIB} + utils::strings + ) + +Index: OpenColorIO-2.0.1/src/libutils/oiiohelpers/oiiohelpers.cpp +=================================================================== +--- OpenColorIO-2.0.1.orig/src/libutils/oiiohelpers/oiiohelpers.cpp ++++ OpenColorIO-2.0.1/src/libutils/oiiohelpers/oiiohelpers.cpp +@@ -5,7 +5,7 @@ + #include + + +-#include "OpenEXR/half.h" ++#include "half.h" + #include "oiiohelpers.h" + #include "utils/StringUtils.h" + +Index: OpenColorIO-2.0.1/tests/cpu/CMakeLists.txt +=================================================================== +--- OpenColorIO-2.0.1.orig/tests/cpu/CMakeLists.txt ++++ OpenColorIO-2.0.1/tests/cpu/CMakeLists.txt +@@ -18,7 +18,7 @@ function(add_ocio_test NAME SOURCES PRIV + public_api + PRIVATE + expat::expat +- IlmBase::Half ++ ${OCIO_HALF_LIB} + pystring::pystring + sampleicc::sampleicc + unittest_data +Index: OpenColorIO-2.0.1/.github/workflows/ci_workflow.yml +=================================================================== +--- OpenColorIO-2.0.1.orig/.github/workflows/ci_workflow.yml ++++ OpenColorIO-2.0.1/.github/workflows/ci_workflow.yml +@@ -58,175 +58,163 @@ jobs: + build: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + include: + # ------------------------------------------------------------------- +- # VFX CY2021 ++ # VFX CY2022 (Python 3.9) + # ------------------------------------------------------------------- ++ # Clang, Debug + - build: 12 + build-type: Debug + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' +- use-sse: 'OFF' ++ use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 17 + cxx-compiler: clang++ + cc-compiler: clang + compiler-desc: Clang 9 +- vfx-cy: 2021 ++ vfx-cy: 2022 ++ # GCC, no SSE + - build: 11 + build-type: Release + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' +- use-sse: 'ON' ++ use-sse: 'OFF' ++ use-ilmbase: 'OFF' + cxx-standard: 17 + cxx-compiler: g++ + cc-compiler: gcc + compiler-desc: GCC 9.3.1 +- vfx-cy: 2021 +- # ------------------------------------------------------------------- +- # GCC, VFX CY2020 +- # ------------------------------------------------------------------- +- # C++11, Python 3.7 ++ vfx-cy: 2022 ++ # GCC, static, docs + - build: 10 + build-type: Release +- build-shared: 'ON' ++ build-shared: 'OFF' + build-docs: 'ON' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' +- cxx-standard: 11 ++ use-ilmbase: 'OFF' ++ cxx-standard: 17 + cxx-compiler: g++ + cc-compiler: gcc +- compiler-desc: GCC 6.3.1 +- vfx-cy: 2020 +- # Debug ++ compiler-desc: GCC 9.3.1 ++ vfx-cy: 2022 ++ # ------------------------------------------------------------------- ++ # VFX CY2021 (Python 3.7) ++ # ------------------------------------------------------------------- ++ # Clang, docs + - build: 9 ++ build-type: Release ++ build-shared: 'ON' ++ build-docs: 'ON' ++ use-sse: 'ON' ++ use-ilmbase: 'ON' ++ cxx-standard: 17 ++ cxx-compiler: clang++ ++ cc-compiler: clang ++ compiler-desc: Clang 9 ++ vfx-cy: 2021 ++ # Clang, static, no SSE ++ - build: 8 ++ build-type: Release ++ build-shared: 'OFF' ++ build-docs: 'OFF' ++ use-sse: 'OFF' ++ use-ilmbase: 'ON' ++ cxx-standard: 17 ++ cxx-compiler: clang++ ++ cc-compiler: clang ++ compiler-desc: Clang 9 ++ vfx-cy: 2021 ++ # GCC, Debug ++ - build: 7 + build-type: Debug + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' +- cxx-standard: 11 ++ use-ilmbase: 'ON' ++ cxx-standard: 17 + cxx-compiler: g++ + cc-compiler: gcc +- compiler-desc: GCC 6.3.1 +- vfx-cy: 2020 +- # C++14 +- - build: 8 ++ compiler-desc: GCC 9.3.1 ++ vfx-cy: 2021 ++ # ------------------------------------------------------------------- ++ # VFX CY2020 (Python 3.7) ++ # ------------------------------------------------------------------- ++ # Clang ++ - build: 6 + build-type: Release + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' +- use-sse: 'ON' ++ use-sse: 'OFF' ++ use-ilmbase: 'ON' + cxx-standard: 14 +- cxx-compiler: g++ +- cc-compiler: gcc +- compiler-desc: GCC 6.3.1 ++ cxx-compiler: clang++ ++ cc-compiler: clang ++ compiler-desc: Clang 7 + vfx-cy: 2020 +- # Static, no SSE +- - build: 7 +- build-type: Release ++ # GCC, static, Debug ++ - build: 5 ++ build-type: Debug + build-shared: 'OFF' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' +- use-sse: 'OFF' +- cxx-standard: 11 ++ use-sse: 'ON' ++ use-ilmbase: 'ON' ++ cxx-standard: 14 + cxx-compiler: g++ + cc-compiler: gcc + compiler-desc: GCC 6.3.1 + vfx-cy: 2020 +- # ------------------------------------------------------------------- +- # GCC, VFX CY2019 +- # ------------------------------------------------------------------- +- # Python 2.7 +- - build: 6 ++ # GCC, no SSE, docs ++ - build: 4 + build-type: Release + build-shared: 'ON' +- # Doc build requires Python 3 +- build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' ++ build-docs: 'ON' + use-sse: 'ON' +- cxx-standard: 11 ++ use-ilmbase: 'ON' ++ cxx-standard: 14 + cxx-compiler: g++ + cc-compiler: gcc + compiler-desc: GCC 6.3.1 +- vfx-cy: 2019 ++ vfx-cy: 2020 + # ------------------------------------------------------------------- +- # Clang, VFX CY2020 ++ # VFX CY2019 (Python 2.7) + # ------------------------------------------------------------------- +- # C++11, Python 3.7 +- - build: 5 +- build-type: Release +- build-shared: 'ON' +- build-docs: 'ON' +- build-gpu: 'OFF' +- use-headless: 'OFF' +- use-sse: 'ON' +- cxx-standard: 11 +- cxx-compiler: clang++ +- cc-compiler: clang +- compiler-desc: Clang 7 +- vfx-cy: 2020 +- # Debug +- - build: 4 +- build-type: Debug +- build-shared: 'ON' +- build-docs: 'OFF' +- build-gpu: 'OFF' +- build-headless: 'OFF' +- use-sse: 'ON' +- cxx-standard: 11 +- cxx-compiler: clang++ +- cc-compiler: clang +- compiler-desc: Clang 7 +- vfx-cy: 2020 +- # C++14 ++ # Clang, static + - build: 3 + build-type: Release +- build-shared: 'ON' ++ build-shared: 'OFF' ++ # Doc build requires Python 3 + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' +- cxx-standard: 14 ++ use-ilmbase: 'ON' ++ cxx-standard: 11 + cxx-compiler: clang++ + cc-compiler: clang + compiler-desc: Clang 7 +- vfx-cy: 2020 +- # Static, no SSE ++ vfx-cy: 2019 ++ # Clang, Debug, no SSE + - build: 2 +- build-type: Release +- build-shared: 'OFF' ++ build-type: Debug ++ build-shared: 'ON' ++ # Doc build requires Python 3 + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'OFF' ++ use-ilmbase: 'ON' + cxx-standard: 11 + cxx-compiler: clang++ + cc-compiler: clang + compiler-desc: Clang 7 +- vfx-cy: 2020 +- # ------------------------------------------------------------------- +- # Clang, VFX CY2019 +- # ------------------------------------------------------------------- +- # Python 2.7 ++ vfx-cy: 2019 ++ # GCC + - build: 1 + build-type: Release + build-shared: 'ON' + # Doc build requires Python 3 + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'ON' + cxx-standard: 11 +- cxx-compiler: clang++ +- cc-compiler: clang +- compiler-desc: Clang 7 ++ cxx-compiler: g++ ++ cc-compiler: gcc ++ compiler-desc: GCC 6.3.1 + vfx-cy: 2019 + env: + CXX: ${{ matrix.cxx-compiler }} +@@ -251,9 +239,9 @@ jobs: + -DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ + -DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ + -DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ +- -DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \ +- -DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \ ++ -DOCIO_BUILD_GPU_TESTS=OFF \ + -DOCIO_USE_SSE=${{ matrix.use-sse }} \ ++ -DOCIO_USE_ILMBASE=${{ matrix.use-ilmbase }} \ + -DOCIO_INSTALL_EXT_PACKAGES=ALL \ + -DOCIO_WARNING_AS_ERROR=ON \ + -DPython_EXECUTABLE=$(which python) +@@ -292,20 +280,18 @@ jobs: + build-type: Release + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 17 +- python-version: 3.7 ++ python-version: 3.9 + # Static, no SSE + # C++11, Python 3.7 + - build: 5 + build-type: Release + build-shared: 'ON' + build-docs: 'ON' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 3.7 + # Debug +@@ -313,19 +299,17 @@ jobs: + build-type: Debug + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 3.7 +- # C++14 ++ # C++14, IlmBase + - build: 3 + build-type: Release + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'ON' + cxx-standard: 14 + python-version: 3.7 + # Static, no SSE +@@ -333,9 +317,8 @@ jobs: + build-type: Release + build-shared: 'OFF' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'OFF' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 3.7 + # Python 2.7 +@@ -344,9 +327,8 @@ jobs: + build-shared: 'ON' + # Doc build requires Python 3 + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 2.7 + steps: +@@ -373,9 +355,9 @@ jobs: + -DCMAKE_CXX_STANDARD=${{ matrix.cxx-standard }} \ + -DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ + -DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ +- -DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \ +- -DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \ ++ -DOCIO_BUILD_GPU_TESTS=OFF \ + -DOCIO_USE_SSE=${{ matrix.use-sse }} \ ++ -DOCIO_USE_ILMBASE=${{ matrix.use-ilmbase }} \ + -DOCIO_INSTALL_EXT_PACKAGES=ALL \ + -DOCIO_WARNING_AS_ERROR=ON \ + -DPython_EXECUTABLE=$(which python) +@@ -416,19 +398,17 @@ jobs: + build-type: Release + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 17 +- python-version: 3.7 ++ python-version: 3.9 + # C++11, Python 3.7 + - build: 5 + build-type: Release + build-shared: 'ON' + build-docs: 'ON' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 3.7 + # Debug +@@ -436,19 +416,17 @@ jobs: + build-type: Debug + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 3.7 +- # C++14 ++ # C++14, IlmBase + - build: 3 + build-type: Release + build-shared: 'ON' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'ON' + cxx-standard: 14 + python-version: 3.7 + # Static, no SSE +@@ -456,9 +434,8 @@ jobs: + build-type: Release + build-shared: 'OFF' + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'OFF' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 3.7 + # Python 2.7 +@@ -467,9 +444,8 @@ jobs: + build-shared: 'ON' + # Doc build requires Python 3 + build-docs: 'OFF' +- build-gpu: 'OFF' +- use-headless: 'OFF' + use-sse: 'ON' ++ use-ilmbase: 'OFF' + cxx-standard: 11 + python-version: 2.7 + steps: +@@ -499,9 +475,9 @@ jobs: + -DCMAKE_GENERATOR_PLATFORM=x64 \ + -DBUILD_SHARED_LIBS=${{ matrix.build-shared }} \ + -DOCIO_BUILD_DOCS=${{ matrix.build-docs }} \ +- -DOCIO_BUILD_GPU_TESTS=${{ matrix.build-gpu }} \ +- -DOCIO_USE_HEADLESS=${{ matrix.use-headless }} \ ++ -DOCIO_BUILD_GPU_TESTS=OFF \ + -DOCIO_USE_SSE=${{ matrix.use-sse }} \ ++ -DOCIO_USE_ILMBASE=${{ matrix.use-ilmbase }} \ + -DOCIO_INSTALL_EXT_PACKAGES=ALL \ + -DOCIO_WARNING_AS_ERROR=ON \ + -DPython_EXECUTABLE=$(which python) +Index: OpenColorIO-2.0.1/buildspec.yml +=================================================================== +--- OpenColorIO-2.0.1.orig/buildspec.yml ++++ OpenColorIO-2.0.1/buildspec.yml +@@ -41,6 +41,7 @@ phases: + cmake ../. \ + -DCMAKE_INSTALL_PREFIX=../_install \ + -DOCIO_USE_HEADLESS=ON \ ++ -DOCIO_USE_ILMBASE=ON \ + -DOCIO_BUILD_APPS=ON \ + -DOCIO_BUILD_DOCS=OFF \ + -DOCIO_BUILD_TESTS=ON \ +Index: OpenColorIO-2.0.1/docs/quick_start/installation.rst +=================================================================== +--- OpenColorIO-2.0.1.orig/docs/quick_start/installation.rst ++++ OpenColorIO-2.0.1/docs/quick_start/installation.rst +@@ -67,6 +67,10 @@ it is not necessary to install those ite + - \*yaml-cpp >= 0.6.3 (YAML parser for Configs) + - \*IlmBase (Half only) >= 2.3.0 (for half domain LUTs) + - \*pystring >= 1.1.3 ++- \*Imath >= 3.0.5 (for half domain LUTs) ++ - \*IlmBase (Half only) >= 2.4.0 (Alternative half implementation when ++ OpenEXR 2 is available. Use ``-DOCIO_USE_ILMBASE=ON`` CMake option to ++ enable). + + Some optional components also depend on: + +@@ -122,10 +126,12 @@ When using existing system libraries, th + defined to hint at non-standard install locations and preference of shared + or static linking: + +-- ``-DExpat_ROOT=`` (include and/or library root dir) +-- ``-DExpat_STATIC_LIBRARY=ON`` (prefer static lib) ++- ``-Dexpat_ROOT=`` (include and/or library root dir) ++- ``-Dexpat_STATIC_LIBRARY=ON`` (prefer static lib) + - ``-Dyaml-cpp_ROOT=`` (include and/or library root dir) + - ``-Dyaml-cpp_STATIC_LIBRARY=ON`` (prefer static lib) ++- ``-DImath_ROOT=`` (include and/or library root dir) ++- ``-DImath_STATIC_LIBRARY=ON`` (prefer static lib) + - ``-DHalf_ROOT=`` (include and/or library root dir) + - ``-DHalf_STATIC_LIBRARY=ON`` (prefer static lib) + - ``-Dpystring_ROOT=`` (include and/or library root dir)