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)