OpenColorIO/1432.patch

1174 lines
41 KiB
Diff

From 3607e8ca611e1c795faf810e2abd7c0cb276e4af Mon Sep 17 00:00:00 2001
From: Michael Dolan <michdolan@gmail.com>
Date: Thu, 8 Jul 2021 13:52:32 -0400
Subject: [PATCH 01/11] Add Imath 3 Half support
Signed-off-by: Michael Dolan <michdolan@gmail.com>
---
.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 <OpenColorIO/OpenColorIO.h>
-#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 <OpenColorIO/OpenColorIO.h>
-#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 <OpenColorIO/OpenColorIO.h>
#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 <OpenColorIO/OpenColorIO.h>
-#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 <OpenColorIO/OpenColorIO.h>
-#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 <OpenColorIO/OpenColorIO.h>
-#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=<path>`` (include and/or library root dir)
-- ``-DExpat_STATIC_LIBRARY=ON`` (prefer static lib)
+- ``-Dexpat_ROOT=<path>`` (include and/or library root dir)
+- ``-Dexpat_STATIC_LIBRARY=ON`` (prefer static lib)
- ``-Dyaml-cpp_ROOT=<path>`` (include and/or library root dir)
- ``-Dyaml-cpp_STATIC_LIBRARY=ON`` (prefer static lib)
+- ``-DImath_ROOT=<path>`` (include and/or library root dir)
+- ``-DImath_STATIC_LIBRARY=ON`` (prefer static lib)
- ``-DHalf_ROOT=<path>`` (include and/or library root dir)
- ``-DHalf_STATIC_LIBRARY=ON`` (prefer static lib)
- ``-Dpystring_ROOT=<path>`` (include and/or library root dir)