Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2021-01-31 21:35:00 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-02-01 16:46:14 +0300
commit84f4e9b4313b1595bfd4bda4add23e9aa72bcc7b (patch)
tree38446d0d375943dbd87e7c6f3fb7ea56b1454d57
parentd0f59d38429d945b3215890897eb2cfb90eacaa7 (diff)
Build: OpenColorIO 2.0.0 support for make deps and install_deps.sh
* 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, couldn't be bothered to update and test it. * Pystring remains built as part of OCIO itself, since it has no good build system. We currently require OpenColorIO 2.0.0 and the upcoming code changes have no compatibility with 1.x. Compatibility could be added, but it's rather complicated and I only want to do the work if it's really needed. The install_deps.sh support was implemented by Jeroen, I have no tested it myself. The Windows code was updated, but I have not tested if it actually works, it almost certainly will not.
-rw-r--r--CMakeLists.txt3
-rw-r--r--build_files/build_environment/CMakeLists.txt14
-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.cmake4
-rw-r--r--build_files/build_environment/cmake/opencolorio.cmake73
-rw-r--r--build_files/build_environment/cmake/tinyxml.cmake31
-rw-r--r--build_files/build_environment/cmake/versions.cmake14
-rw-r--r--build_files/build_environment/cmake/yamlcpp.cmake9
-rwxr-xr-xbuild_files/build_environment/install_deps.sh12
-rw-r--r--build_files/cmake/Modules/FindOpenColorIO.cmake19
-rw-r--r--build_files/cmake/platform/platform_apple.cmake7
-rw-r--r--build_files/cmake/platform/platform_unix.cmake2
-rw-r--r--build_files/cmake/platform/platform_win32.cmake6
13 files changed, 97 insertions, 119 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 035cf81e1b3..7168eb3d94e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -727,8 +727,9 @@ set_and_warn_dependency(WITH_TBB WITH_MOD_FLUID OFF)
# NanoVDB requires OpenVDB to convert the data structure
set_and_warn_dependency(WITH_OPENVDB WITH_NANOVDB OFF)
-# OpenVDB uses 'half' type from OpenEXR & fails to link without OpenEXR enabled.
+# OpenVDB and OpenColorIO uses 'half' type from OpenEXR
set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_OPENVDB OFF)
+set_and_warn_dependency(WITH_IMAGE_OPENEXR WITH_OPENCOLORIO OFF)
# auto enable openimageio for cycles
if(WITH_CYCLES)
diff --git a/build_files/build_environment/CMakeLists.txt b/build_files/build_environment/CMakeLists.txt
index dfbb0e824a0..036c908b206 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)
@@ -104,18 +103,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 51d7ebd8830..d704df6cc4c 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 e8b0043edf7..afc1f9356fa 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,38 +61,25 @@ 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 ${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/expat.lib ${HARVEST_TARGET}/opencolorio/lib/expat.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()
@@ -111,9 +87,16 @@ if(WIN32)
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}/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/expat.lib ${HARVEST_TARGET}/opencolorio/lib/expat_d.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 d4a2c715ecc..48baadf6128 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)
@@ -256,9 +256,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)
@@ -313,8 +313,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 671417214d8..546d99a3cd7 100755
--- a/build_files/build_environment/install_deps.sh
+++ b/build_files/build_environment/install_deps.sh
@@ -419,10 +419,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="2.0"
OCIO_FORCE_BUILD=false
OCIO_FORCE_REBUILD=false
OCIO_SKIP=false
@@ -1808,8 +1808,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 31da5292eaf..6ab8857c0c2 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -293,7 +293,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 a2448829206..cc9a31dc244 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 016ae58fde4..4cd84cf7b5f 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -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}/expat.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}/expat_d.lib
+ debug ${OPENCOLORIO_LIBPATH}/pystring_d.lib
)
set(OPENCOLORIO_DEFINITIONS)
endif()