diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-01-31 21:35:00 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-02-12 21:06:35 +0300 |
commit | 1b4961b318f14064bc3c915da7206a74146af95d (patch) | |
tree | fd8168e60333efad3dd0433b5229e2f7f9d97131 /build_files | |
parent | 6b40ee608c5a1dbe67870fab4b83cce4cc4b54f5 (diff) |
OpenColorIO: upgrade to version 2.0.0
Ref T84819
Build System
============
This is an API breaking new version, and the updated code only builds with
OpenColorIO 2.0 and later. Adding backwards compatibility was too complicated.
* Tinyxml was replaced with Expat, adding a new dependency.
* Yaml-cpp is now built as a dependency on Unix, as was already done on Windows.
* Removed currently unused LCMS code.
* Pystring remains built as part of OCIO itself, since it has no good build system.
* Linux and macOS check for the OpenColorIO verison, and disable it if too old.
Ref D10270
Processors and Transforms
=========================
CPU processors now need to be created to do CPU processing. These are cached
internally, but the cache lookup is not fast enough to execute per pixel or
texture sample, so for performance these are now also exposed in the C API.
The C API for transforms will no longer be needed afer all changes, so remove
it to simplify the API and fallback implementation.
Ref D10271
Display Transforms
==================
Needs a bit more manual work constructing the transform. LegacyViewingPipeline
could also have been used, but isn't really any simpler and since it's legacy
we better not rely on it.
We moved more logic into the opencolorio module, to simplify the API. There is
no need to wrap a dozen functions just to be able to do this in C rather than C++.
It's also tightly coupled to the GPU shader logic, and so should be in the same
module.
Ref D10271
GPU Display Shader
==================
To avoid baking exposure and gamma into the GLSL shader and requiring slow
recompiles when tweaking, we manually apply them in the shader. This leads
to some logic duplicaton between the CPU and GPU display processor, but it
seems unavoidable.
Caching was also changed. Previously this was done both on the imbuf and
opencolorio module levels. Now it's all done in the opencolorio module by
simply matching color space names. We no longer use cacheIDs from OpenColorIO
since computing them is expensive, and they are unlikely to match now that
more is baked into the shader code.
Shaders can now use multiple 2D textures, 3D textures and uniforms, rather
than a single 3D texture. So allocating and binding those adds some code.
Color space conversions for blending with overlays is now hardcoded in the
shader. This was using harcoded numbers anyway, if this every becomes a
general OpenColorIO transform it can be changed, but for now there is no
point to add code complexity.
Ref D10273
CIE XYZ
=======
We need standard CIE XYZ values for rendering effects like blackbody emission.
The relation to the scene linear role is based on OpenColorIO configuration.
In OpenColorIO 2.0 configs roles can no longer have the same name as color
spaces, which means our XYZ role and colorspace in the configuration give an
error.
Instead use the new standard aces_interchange role, which relates scene linear
to a known scene referred color space. Compatibility with the old XYZ role is
preserved, if the configuration file has no conflicting names.
Also includes a non-functional change to the configuraton file to use an
XYZ-to-ACES matrix instead of REC709-to-ACES, makes debugging a little easier
since the matrix is the same one we have in the code now and that is also
found easily in the ACES specs.
Ref D10274
Diffstat (limited to 'build_files')
-rw-r--r-- | build_files/build_environment/CMakeLists.txt | 14 | ||||
-rw-r--r-- | build_files/build_environment/cmake/expat.cmake (renamed from build_files/build_environment/cmake/lcms.cmake) | 22 | ||||
-rw-r--r-- | build_files/build_environment/cmake/nasm.cmake | 4 | ||||
-rw-r--r-- | build_files/build_environment/cmake/opencolorio.cmake | 77 | ||||
-rw-r--r-- | build_files/build_environment/cmake/tinyxml.cmake | 31 | ||||
-rw-r--r-- | build_files/build_environment/cmake/versions.cmake | 14 | ||||
-rw-r--r-- | build_files/build_environment/cmake/yamlcpp.cmake | 9 | ||||
-rwxr-xr-x | build_files/build_environment/install_deps.sh | 12 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindOpenColorIO.cmake | 19 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_apple.cmake | 7 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_unix.cmake | 2 | ||||
-rw-r--r-- | build_files/cmake/platform/platform_win32.cmake | 8 |
12 files changed, 98 insertions, 121 deletions
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt index 672f5820a16..8d6fd3ab4c3 100644 --- a/build_files/build_environment/CMakeLists.txt +++ b/build_files/build_environment/CMakeLists.txt @@ -70,7 +70,6 @@ include(cmake/cuew.cmake) include(cmake/opensubdiv.cmake) include(cmake/sdl.cmake) include(cmake/opencollada.cmake) -include(cmake/opencolorio.cmake) include(cmake/llvm.cmake) include(cmake/clang.cmake) if(APPLE) @@ -105,18 +104,15 @@ if(NOT APPLE) include(cmake/xr_openxr.cmake) endif() +# OpenColorIO and dependencies. +include(cmake/expat.cmake) +include(cmake/yamlcpp.cmake) +include(cmake/opencolorio.cmake) + if(WITH_WEBP) include(cmake/webp.cmake) endif() -if(WIN32) - # OCIO deps - include(cmake/tinyxml.cmake) - include(cmake/yamlcpp.cmake) - # LCMS is an OCIO dep, but only if you build the apps, leaving it here for convenience - # include(cmake/lcms.cmake) -endif() - if(NOT WIN32 OR ENABLE_MINGW64) include(cmake/gmp.cmake) include(cmake/openjpeg.cmake) diff --git a/build_files/build_environment/cmake/lcms.cmake b/build_files/build_environment/cmake/expat.cmake index c7019bc645e..001f3941de1 100644 --- a/build_files/build_environment/cmake/lcms.cmake +++ b/build_files/build_environment/cmake/expat.cmake @@ -16,16 +16,20 @@ # # ***** END GPL LICENSE BLOCK ***** -set(LCMS_EXTRA_ARGS +set(EXPAT_EXTRA_ARGS + -DEXPAT_BUILD_DOCS=OFF + -DEXPAT_BUILD_EXAMPLES=OFF + -DEXPAT_BUILD_TESTS=OFF + -DEXPAT_BUILD_TOOLS=OFF + -DEXPAT_SHARED_LIBS=OFF ) -ExternalProject_Add(external_lcms - URL ${LCMS_URI} +ExternalProject_Add(external_expat + URL ${EXPAT_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH MD5=${LCMS_HASH} - PREFIX ${BUILD_DIR}/lcms - # Patch taken from ocio. - PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${PATCH_DIR}/cmakelists_lcms.txt ${BUILD_DIR}/lcms/src/external_lcms/CMakeLists.txt - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/lcms ${DEFAULT_CMAKE_FLAGS} ${LCMS_EXTRA_ARGS} - INSTALL_DIR ${LIBDIR}/lcms + URL_HASH MD5=${EXPAT_HASH} + PREFIX ${BUILD_DIR}/expat + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/expat ${DEFAULT_CMAKE_FLAGS} ${EXPAT_EXTRA_ARGS} + INSTALL_DIR ${LIBDIR}/expat + SOURCE_SUBDIR expat ) diff --git a/build_files/build_environment/cmake/nasm.cmake b/build_files/build_environment/cmake/nasm.cmake index 6eadfc5e4f0..37a57273bfe 100644 --- a/build_files/build_environment/cmake/nasm.cmake +++ b/build_files/build_environment/cmake/nasm.cmake @@ -22,8 +22,8 @@ ExternalProject_Add(external_nasm URL_HASH SHA256=${NASM_HASH} PREFIX ${BUILD_DIR}/nasm PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/nasm/src/external_nasm < ${PATCH_DIR}/nasm.diff - CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/nasm - BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && make -j${MAKE_THREADS} + CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && ./autogen.sh && ${CONFIGURE_COMMAND} --prefix=${LIBDIR}/nasm + BUILD_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && make -j${MAKE_THREADS} && make manpages INSTALL_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/nasm/src/external_nasm/ && make install INSTALL_DIR ${LIBDIR}/nasm ) diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake index 4ad401800d0..7622a2afdaa 100644 --- a/build_files/build_environment/cmake/opencolorio.cmake +++ b/build_files/build_environment/cmake/opencolorio.cmake @@ -18,16 +18,22 @@ set(OPENCOLORIO_EXTRA_ARGS -DOCIO_BUILD_APPS=OFF - -DOCIO_BUILD_PYGLUE=OFF + -DOCIO_BUILD_PYTHON=OFF -DOCIO_BUILD_NUKE=OFF - -DOCIO_USE_BOOST_PTR=OFF - -DOCIO_BUILD_STATIC=ON - -DOCIO_BUILD_SHARED=OFF - -DOCIO_BUILD_TRUELIGHT=OFF + -DOCIO_BUILD_JAVA=OFF + -DBUILD_SHARED_LIBS=OFF -DOCIO_BUILD_DOCS=OFF - -DOCIO_BUILD_PYGLUE=OFF - -DOCIO_BUILD_JNIGLUE=OFF - -DOCIO_STATIC_JNIGLUE=OFF + -DOCIO_BUILD_TESTS=OFF + -DOCIO_BUILD_GPU_TESTS=OFF + -DOCIO_USE_SSE=ON + + # Manually build ext packages except for pystring, which does not have + # a CMake or autotools build system that we can easily use. + -DOCIO_INSTALL_EXT_PACKAGES=MISSING + -DHalf_ROOT=${LIBDIR}/openexr + -DHalf_STATIC_LIBRARY=ON + -Dexpat_ROOT=${LIBDIR}/expat + -Dyaml-cpp_ROOT=${LIBDIR}/yamlcpp ) if(APPLE AND NOT("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "x86_64")) @@ -41,24 +47,7 @@ if(WIN32) set(OCIO_PATCH opencolorio_win.diff) set(OPENCOLORIO_EXTRA_ARGS ${OPENCOLORIO_EXTRA_ARGS} - -DOCIO_BUILD_TESTS=OFF - -DOCIO_USE_SSE=ON -DOCIO_INLINES_HIDDEN=OFF - -DOCIO_PYGLUE_LINK=OFF - -DOCIO_PYGLUE_RESPECT_ABI=OFF - -DOCIO_PYGLUE_SONAME=OFF - -DOCIO_PYGLUE_LIB_PREFIX=OFF - -DUSE_EXTERNAL_TINYXML=ON - -DTINYXML_INCLUDE_DIR=${LIBDIR}/tinyxml/include - -DTINYXML_LIBRARY=${LIBDIR}/tinyxml/lib/tinyxml${libext} - -DUSE_EXTERNAL_YAML=ON - -DYAML_CPP_FOUND=ON - -DYAML_CPP_VERSION=${YAMLCPP_VERSION} - -DUSE_EXTERNAL_LCMS=ON - -DINC_1=${LIBDIR}/tinyxml/include - -DINC_2=${LIBDIR}/yamlcpp/include - # Lie because ocio cmake is demanding boost even though it is not needed. - -DYAML_CPP_VERSION=0.5.0 ) else() set(OCIO_PATCH opencolorio.diff) @@ -72,48 +61,42 @@ ExternalProject_Add(external_opencolorio DOWNLOAD_DIR ${DOWNLOAD_DIR} URL_HASH MD5=${OPENCOLORIO_HASH} PREFIX ${BUILD_DIR}/opencolorio - PATCH_COMMAND ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/opencolorio/src/external_opencolorio < ${PATCH_DIR}/${OCIO_PATCH} CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/opencolorio ${DEFAULT_CMAKE_FLAGS} ${OPENCOLORIO_EXTRA_ARGS} INSTALL_DIR ${LIBDIR}/opencolorio ) -if(NOT WIN32) - add_custom_command( - OUTPUT ${LIBDIR}/opencolorio/lib/libtinyxml.a - COMMAND cp ${BUILD_DIR}/opencolorio/src/external_opencolorio-build/ext/dist/lib/libtinyxml.a ${LIBDIR}/opencolorio/lib/libtinyxml.a - COMMAND cp ${BUILD_DIR}/opencolorio/src/external_opencolorio-build/ext/dist/lib/libyaml-cpp.a ${LIBDIR}/opencolorio/lib/libyaml-cpp.a - ) - add_custom_target(external_opencolorio_extra ALL DEPENDS external_opencolorio ${LIBDIR}/opencolorio/lib/libtinyxml.a) -endif() - add_dependencies( external_opencolorio - external_boost + external_yamlcpp + external_expat + external_openexr ) if(WIN32) - add_dependencies( - external_opencolorio - external_tinyxml - external_yamlcpp - - ) if(BUILD_MODE STREQUAL Release) ExternalProject_Add_Step(external_opencolorio after_install COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/opencolorio/include ${HARVEST_TARGET}/opencolorio/include - COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/opencolorio/lib/static ${HARVEST_TARGET}/opencolorio/lib + COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/opencolorio/lib ${HARVEST_TARGET}/opencolorio/lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/libyaml-cppmd.lib ${HARVEST_TARGET}/opencolorio/lib/libyaml-cpp.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tinyxml/lib/tinyxml.lib ${HARVEST_TARGET}/opencolorio/lib/tinyxml.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/expat/lib/libexpatMD.lib ${HARVEST_TARGET}/opencolorio/lib/libexpatMD.lib + COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/opencolorio/src/external_opencolorio-build/ext/dist/lib/pystring.lib ${HARVEST_TARGET}/opencolorio/lib/pystring.lib DEPENDEES install ) endif() if(BUILD_MODE STREQUAL Debug) ExternalProject_Add_Step(external_opencolorio after_install - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencolorio/lib/static/Opencolorio.lib ${HARVEST_TARGET}/opencolorio/lib/OpencolorIO_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/opencolorio/lib/Opencolorio.lib ${HARVEST_TARGET}/opencolorio/lib/OpencolorIO_d.lib COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/yamlcpp/lib/libyaml-cppmdd.lib ${HARVEST_TARGET}/opencolorio/lib/libyaml-cpp_d.lib - COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/tinyxml/lib/tinyxml.lib ${HARVEST_TARGET}/opencolorio/lib/tinyxml_d.lib + COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/expat/lib/libexpatdMD.lib ${HARVEST_TARGET}/opencolorio/lib/libexpatdMD.lib + COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_DIR}/opencolorio/src/external_opencolorio-build/ext/dist/lib/pystring.lib ${HARVEST_TARGET}/opencolorio/lib/pystring_d.lib DEPENDEES install ) endif() - +else() + ExternalProject_Add_Step(external_opencolorio after_install + COMMAND cp ${LIBDIR}/yamlcpp/lib/libyaml-cpp.a ${LIBDIR}/opencolorio/lib/ + COMMAND cp ${LIBDIR}/expat/lib/libexpat.a ${LIBDIR}/opencolorio/lib/ + COMMAND cp ${BUILD_DIR}/opencolorio/src/external_opencolorio-build/ext/dist/lib/libpystring.a ${LIBDIR}/opencolorio/lib/ + DEPENDEES install + ) endif() diff --git a/build_files/build_environment/cmake/tinyxml.cmake b/build_files/build_environment/cmake/tinyxml.cmake deleted file mode 100644 index 763fd959d24..00000000000 --- a/build_files/build_environment/cmake/tinyxml.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# ***** BEGIN GPL LICENSE BLOCK ***** -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# ***** END GPL LICENSE BLOCK ***** - -set(TINYXML_EXTRA_ARGS -) - -ExternalProject_Add(external_tinyxml - URL ${TINYXML_URI} - DOWNLOAD_DIR ${DOWNLOAD_DIR} - URL_HASH MD5=${TINYXML_HASH} - PREFIX ${BUILD_DIR}/tinyxml - # patch taken from ocio - PATCH_COMMAND ${PATCH_CMD} -p 1 -N -d ${BUILD_DIR}/tinyxml/src/external_tinyxml < ${PATCH_DIR}/tinyxml.diff - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/tinyxml ${DEFAULT_CMAKE_FLAGS} ${TINYXML_EXTRA_ARGS} - INSTALL_DIR ${LIBDIR}/tinyxml -) diff --git a/build_files/build_environment/cmake/versions.cmake b/build_files/build_environment/cmake/versions.cmake index 76417b59bb3..3a44977e4d3 100644 --- a/build_files/build_environment/cmake/versions.cmake +++ b/build_files/build_environment/cmake/versions.cmake @@ -109,9 +109,9 @@ set(OPENCOLLADA_VERSION v1.6.68) set(OPENCOLLADA_URI https://github.com/KhronosGroup/OpenCOLLADA/archive/${OPENCOLLADA_VERSION}.tar.gz) set(OPENCOLLADA_HASH ee7dae874019fea7be11613d07567493) -set(OPENCOLORIO_VERSION 1.1.1) +set(OPENCOLORIO_VERSION 2.0.0) set(OPENCOLORIO_URI https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/v${OPENCOLORIO_VERSION}.tar.gz) -set(OPENCOLORIO_HASH 23d8b9ac81599305539a5a8674b94a3d) +set(OPENCOLORIO_HASH 1a2e3478b6cd9a1549f24e1b2205e3f0) set(LLVM_VERSION 9.0.1) set(LLVM_URI https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz) @@ -257,9 +257,9 @@ set(YAMLCPP_VERSION 0.6.3) set(YAMLCPP_URI https://codeload.github.com/jbeder/yaml-cpp/tar.gz/yaml-cpp-${YAMLCPP_VERSION}) set(YAMLCPP_HASH b45bf1089a382e81f6b661062c10d0c2) -set(LCMS_VERSION 2.9) -set(LCMS_URI https://nchc.dl.sourceforge.net/project/lcms/lcms/${LCMS_VERSION}/lcms2-${LCMS_VERSION}.tar.gz) -set(LCMS_HASH 8de1b7724f578d2995c8fdfa35c3ad0e) +set(EXPAT_VERSION 2_2_10) +set(EXPAT_URI https://github.com/libexpat/libexpat/archive/R_${EXPAT_VERSION}.tar.gz) +set(EXPAT_HASH 7ca5f09959fcb9a57618368deb627b9f) set(PUGIXML_VERSION 1.10) set(PUGIXML_URI https://github.com/zeux/pugixml/archive/v${PUGIXML_VERSION}.tar.gz) @@ -314,8 +314,8 @@ set(MESA_URI ftp://ftp.freedesktop.org/pub/mesa/mesa-${MESA_VERSION}.tar.xz) set(MESA_HASH d60828056d77bfdbae0970f9b15fb1be) set(NASM_VERSION 2.15.02) -set(NASM_URI https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/nasm-${NASM_VERSION}.tar.xz) -set(NASM_HASH f4fd1329b1713e1ccd34b2fc121c4bcd278c9f91cc4cb205ae8fcd2e4728dd14) +set(NASM_URI https://github.com/netwide-assembler/nasm/archive/nasm-${NASM_VERSION}.tar.gz) +set(NASM_HASH aded8b796c996a486a56e0515c83e414116decc3b184d88043480b32eb0a8589) set(XR_OPENXR_SDK_VERSION 1.0.8) set(XR_OPENXR_SDK_URI https://github.com/KhronosGroup/OpenXR-SDK/archive/release-${XR_OPENXR_SDK_VERSION}.tar.gz) diff --git a/build_files/build_environment/cmake/yamlcpp.cmake b/build_files/build_environment/cmake/yamlcpp.cmake index 3d3639593ad..d56a3e4a63a 100644 --- a/build_files/build_environment/cmake/yamlcpp.cmake +++ b/build_files/build_environment/cmake/yamlcpp.cmake @@ -17,13 +17,18 @@ # ***** END GPL LICENSE BLOCK ***** set(YAMLCPP_EXTRA_ARGS - -DBUILD_GMOCK=OFF -DYAML_CPP_BUILD_TESTS=OFF -DYAML_CPP_BUILD_TOOLS=OFF -DYAML_CPP_BUILD_CONTRIB=OFF - -DYAML_MSVC_SHARED_RT=ON ) +if(WIN32) + set(YAMLCPP_EXTRA_ARGS + ${YAMLCPP_EXTRA_ARGS} + -DBUILD_GMOCK=OFF + -DYAML_MSVC_SHARED_RT=ON) +endif() + ExternalProject_Add(external_yamlcpp URL ${YAMLCPP_URI} DOWNLOAD_DIR ${DOWNLOAD_DIR} diff --git a/build_files/build_environment/install_deps.sh b/build_files/build_environment/install_deps.sh index da2a6535142..318da4f6183 100755 --- a/build_files/build_environment/install_deps.sh +++ b/build_files/build_environment/install_deps.sh @@ -454,10 +454,10 @@ TBB_FORCE_BUILD=false TBB_FORCE_REBUILD=false TBB_SKIP=false -OCIO_VERSION="1.1.1" -OCIO_VERSION_SHORT="1.1" -OCIO_VERSION_MIN="1.0" -OCIO_VERSION_MAX="1.2" +OCIO_VERSION="2.0.0" +OCIO_VERSION_SHORT="2.0" +OCIO_VERSION_MIN="2.0" +OCIO_VERSION_MAX="3.0" OCIO_FORCE_BUILD=false OCIO_FORCE_REBUILD=false OCIO_SKIP=false @@ -1787,8 +1787,8 @@ compile_OCIO() { cmake_d="$cmake_d -D CMAKE_PREFIX_PATH=$_inst" cmake_d="$cmake_d -D CMAKE_INSTALL_PREFIX=$_inst" cmake_d="$cmake_d -D OCIO_BUILD_APPS=OFF" - cmake_d="$cmake_d -D OCIO_BUILD_PYGLUE=OFF" - cmake_d="$cmake_d -D STOP_ON_WARNING=OFF" + cmake_d="$cmake_d -D OCIO_BUILD_PYTHON=OFF" + cmake_d="$cmake_d -D OCIO_BUILD_GPU_TESTS=OFF" if file /bin/cp | grep -q '32-bit'; then cflags="-fPIC -m32 -march=i686" diff --git a/build_files/cmake/Modules/FindOpenColorIO.cmake b/build_files/cmake/Modules/FindOpenColorIO.cmake index 5c0ad89a0b7..21118533ebe 100644 --- a/build_files/cmake/Modules/FindOpenColorIO.cmake +++ b/build_files/cmake/Modules/FindOpenColorIO.cmake @@ -26,7 +26,8 @@ ENDIF() SET(_opencolorio_FIND_COMPONENTS OpenColorIO yaml-cpp - tinyxml + expat + pystring ) SET(_opencolorio_SEARCH_DIRS @@ -60,12 +61,23 @@ FOREACH(COMPONENT ${_opencolorio_FIND_COMPONENTS}) ENDIF() ENDFOREACH() +IF(EXISTS "${OPENCOLORIO_INCLUDE_DIR}/OpenColorIO/OpenColorABI.h") + # Search twice, because this symbol changed between OCIO 1.x and 2.x + FILE(STRINGS "${OPENCOLORIO_INCLUDE_DIR}/OpenColorIO/OpenColorABI.h" _opencolorio_version + REGEX "^#define OCIO_VERSION_STR[ \t].*$") + IF(NOT _opencolorio_version) + file(STRINGS "${OPENCOLORIO_INCLUDE_DIR}/OpenColorIO/OpenColorABI.h" _opencolorio_version + REGEX "^#define OCIO_VERSION[ \t].*$") + ENDIF() + STRING(REGEX MATCHALL "[0-9]+[.0-9]+" OPENCOLORIO_VERSION ${_opencolorio_version}) +ENDIF() # handle the QUIETLY and REQUIRED arguments and set OPENCOLORIO_FOUND to TRUE if # all listed variables are TRUE INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenColorIO DEFAULT_MSG - _opencolorio_LIBRARIES OPENCOLORIO_INCLUDE_DIR) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenColorIO + REQUIRED_VARS _opencolorio_LIBRARIES OPENCOLORIO_INCLUDE_DIR + VERSION_VAR OPENCOLORIO_VERSION) IF(OPENCOLORIO_FOUND) SET(OPENCOLORIO_LIBRARIES ${_opencolorio_LIBRARIES}) @@ -78,6 +90,7 @@ MARK_AS_ADVANCED( OPENCOLORIO_OPENCOLORIO_LIBRARY OPENCOLORIO_TINYXML_LIBRARY OPENCOLORIO_YAML-CPP_LIBRARY + OPENCOLORIO_VERSION ) UNSET(COMPONENT) diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake index e51bdede34b..b95b21da946 100644 --- a/build_files/cmake/platform/platform_apple.cmake +++ b/build_files/cmake/platform/platform_apple.cmake @@ -297,7 +297,12 @@ if(WITH_OPENIMAGEIO) endif() if(WITH_OPENCOLORIO) - find_package(OpenColorIO) + find_package(OpenColorIO 2.0.0) + + if(NOT OPENCOLORIO_FOUND) + set(WITH_OPENCOLORIO OFF) + message(STATUS "OpenColorIO not found") + endif() endif() if(WITH_OPENVDB) diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index fed70c5b8b2..f212741f0b6 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -385,7 +385,7 @@ if(WITH_OPENIMAGEIO) endif() if(WITH_OPENCOLORIO) - find_package_wrapper(OpenColorIO) + find_package_wrapper(OpenColorIO 2.0.0) set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES}) set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake index 37a3eabc338..06cee51344a 100644 --- a/build_files/cmake/platform/platform_win32.cmake +++ b/build_files/cmake/platform/platform_win32.cmake @@ -500,7 +500,7 @@ if(WITH_OPENIMAGEIO) set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG}) set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0") - set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD") + set(OPENCOLORIO_DEFINITIONS "-DDOpenColorIO_SKIP_IMPORTS") set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe") add_definitions(-DOIIO_STATIC_DEFINE) add_definitions(-DOIIO_NO_SSE=1) @@ -538,11 +538,13 @@ if(WITH_OPENCOLORIO) set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib) set(OPENCOLORIO_LIBRARIES optimized ${OPENCOLORIO_LIBPATH}/OpenColorIO.lib - optimized ${OPENCOLORIO_LIBPATH}/tinyxml.lib optimized ${OPENCOLORIO_LIBPATH}/libyaml-cpp.lib + optimized ${OPENCOLORIO_LIBPATH}/libexpatMD.lib + optimized ${OPENCOLORIO_LIBPATH}/pystring.lib debug ${OPENCOLORIO_LIBPATH}/OpencolorIO_d.lib - debug ${OPENCOLORIO_LIBPATH}/tinyxml_d.lib debug ${OPENCOLORIO_LIBPATH}/libyaml-cpp_d.lib + debug ${OPENCOLORIO_LIBPATH}/libexpatdMD.lib + debug ${OPENCOLORIO_LIBPATH}/pystring_d.lib ) set(OPENCOLORIO_DEFINITIONS) endif() |