[Bf-blender-cvs] [9f662b383b1] tmp-vfx-platform-2023: Build: make OpenColorIO dynamic library and enable Python bindings

Brecht Van Lommel noreply at git.blender.org
Mon Dec 5 20:39:39 CET 2022


Commit: 9f662b383b18214bf45a7f683ccf1a3ceb2432aa
Author: Brecht Van Lommel
Date:   Mon Dec 5 17:21:47 2022 +0100
Branches: tmp-vfx-platform-2023
https://developer.blender.org/rB9f662b383b18214bf45a7f683ccf1a3ceb2432aa

Build: make OpenColorIO dynamic library and enable Python bindings

And fix some missing python/pybind11 dependencies.

Needs more work for Windows.

===================================================================

M	build_files/build_environment/cmake/epoxy.cmake
M	build_files/build_environment/cmake/harvest.cmake
M	build_files/build_environment/cmake/materialx.cmake
M	build_files/build_environment/cmake/opencolorio.cmake
M	build_files/build_environment/cmake/openimageio.cmake
M	build_files/build_environment/cmake/pybind11.cmake
M	build_files/cmake/platform/platform_apple.cmake
M	build_files/cmake/platform/platform_unix.cmake

===================================================================

diff --git a/build_files/build_environment/cmake/epoxy.cmake b/build_files/build_environment/cmake/epoxy.cmake
index fe674135842..312784598d4 100644
--- a/build_files/build_environment/cmake/epoxy.cmake
+++ b/build_files/build_environment/cmake/epoxy.cmake
@@ -23,3 +23,8 @@ if(BUILD_MODE STREQUAL Release AND WIN32)
     DEPENDEES install
   )
 endif()
+
+add_dependencies(
+  external_epoxy
+  external_python_site_packages
+)
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index 8b2a3a77ca7..f11dc9b54a3 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -179,9 +179,8 @@ endif()
 harvest(opencollada/include/opencollada opencollada/include "*.h")
 harvest(opencollada/lib/opencollada opencollada/lib "*.a")
 harvest(opencolorio/include opencolorio/include "*.h")
-harvest(opencolorio/lib opencolorio/lib "*.a")
-harvest(opencolorio/lib/static opencolorio/lib "*.a")
-harvest(minizipng/lib opencolorio/lib "*.a")
+harvest_rpath_lib(opencolorio/lib opencolorio/lib "*${SHAREDLIBEXT}*")
+harvest_rpath_python(opencolorio/lib/python${PYTHON_SHORT_VERSION} python/lib/python${PYTHON_SHORT_VERSION} "*PyOpenColorIO*")
 harvest(openexr/include openexr/include "*.h")
 harvest_rpath_lib(openexr/lib openexr/lib "*${SHAREDLIBEXT}*")
 harvest_rpath_bin(openimageio/bin openimageio/bin "idiff")
diff --git a/build_files/build_environment/cmake/materialx.cmake b/build_files/build_environment/cmake/materialx.cmake
index 37913c74d6a..cb45f444e59 100644
--- a/build_files/build_environment/cmake/materialx.cmake
+++ b/build_files/build_environment/cmake/materialx.cmake
@@ -8,6 +8,8 @@ set(MATERIALX_EXTRA_ARGS
   -DMATERIALX_PYTHON_VERSION=${PYTHON_SHORT_VERSION}
   -DMATERIALX_BUILD_SHARED_LIBS=ON
   -DCMAKE_DEBUG_POSTFIX=_d
+  -Dpybind11_ROOT=${LIBDIR}/pybind11
+  -DPython_EXECUTABLE=${PYTHON_BINARY}
 )
 
 ExternalProject_Add(external_materialx
@@ -47,3 +49,9 @@ if(WIN32)
   unset(MATERIALX_PYTHON_TARGET)
   unset(MATERIALX_PYTHON_TARGET_DOS)
 endif()
+
+add_dependencies(
+  external_materialx
+  external_python
+  external_pybind11
+)
diff --git a/build_files/build_environment/cmake/opencolorio.cmake b/build_files/build_environment/cmake/opencolorio.cmake
index 79d1ffa9c2e..fbf1a9f6354 100644
--- a/build_files/build_environment/cmake/opencolorio.cmake
+++ b/build_files/build_environment/cmake/opencolorio.cmake
@@ -2,10 +2,10 @@
 
 set(OPENCOLORIO_EXTRA_ARGS
   -DOCIO_BUILD_APPS=OFF
-  -DOCIO_BUILD_PYTHON=OFF
+  -DOCIO_BUILD_PYTHON=ON
   -DOCIO_BUILD_NUKE=OFF
   -DOCIO_BUILD_JAVA=OFF
-  -DBUILD_SHARED_LIBS=OFF
+  -DBUILD_SHARED_LIBS=ON
   -DOCIO_BUILD_DOCS=OFF
   -DOCIO_BUILD_TESTS=OFF
   -DOCIO_BUILD_GPU_TESTS=OFF
@@ -23,8 +23,22 @@ set(OPENCOLORIO_EXTRA_ARGS
   -Dminizip-ng_LIBRARY=${LIBDIR}/minizipng/lib/libminizip${LIBEXT}
   -DZLIB_LIBRARY=${LIBDIR}/zlib/lib/${ZLIB_LIBRARY}
   -DZLIB_INCLUDE_DIR=${LIBDIR}/zlib/include/
+  -DPython_EXECUTABLE=${PYTHON_BINARY}
+  -Dpybind11_ROOT=${LIBDIR}/pybind11
 )
 
+if(APPLE)
+  set(OPENCOLORIO_EXTRA_ARGS
+    ${OPENCOLORIO_EXTRA_ARGS}
+    "-DCMAKE_SHARED_LINKER_FLAGS=-liconv ${LIBDIR}/bzip2/lib/${LIBPREFIX}bz2${LIBEXT}"
+  )
+elseif(UNIX)
+  set(OPENCOLORIO_EXTRA_ARGS
+    ${OPENCOLORIO_EXTRA_ARGS}
+    "-DCMAKE_SHARED_LINKER_FLAGS=${LIBDIR}/bzip2/lib/${LIBPREFIX}bz2${LIBEXT}"
+  )
+endif()
+
 if(BLENDER_PLATFORM_ARM)
   set(OPENCOLORIO_EXTRA_ARGS
     ${OPENCOLORIO_EXTRA_ARGS}
@@ -64,6 +78,8 @@ add_dependencies(
   external_pystring
   external_zlib
   external_minizipng
+  external_python
+  external_pybind11
 )
 
 if(WIN32)
diff --git a/build_files/build_environment/cmake/openimageio.cmake b/build_files/build_environment/cmake/openimageio.cmake
index 329d525e60e..d65fbe8223e 100644
--- a/build_files/build_environment/cmake/openimageio.cmake
+++ b/build_files/build_environment/cmake/openimageio.cmake
@@ -123,6 +123,7 @@ add_dependencies(
   external_robinmap
   external_openjpeg${OPENJPEG_POSTFIX}
   external_webp
+  external_python
   external_pybind11
 )
 
diff --git a/build_files/build_environment/cmake/pybind11.cmake b/build_files/build_environment/cmake/pybind11.cmake
index 971300ef394..986da7f0006 100644
--- a/build_files/build_environment/cmake/pybind11.cmake
+++ b/build_files/build_environment/cmake/pybind11.cmake
@@ -14,3 +14,8 @@ ExternalProject_Add(external_pybind11
   CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/pybind11 ${DEFAULT_CMAKE_FLAGS} ${PYBIND11_EXTRA_ARGS}
   INSTALL_DIR ${LIBDIR}/pybind11
 )
+
+add_dependencies(
+  external_pybind11
+  external_python
+)
diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index db5fd54cd7b..a8ce4db943e 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -296,6 +296,7 @@ endif()
 
 if(WITH_OPENCOLORIO)
   find_package(OpenColorIO 2.0.0 REQUIRED)
+  add_bundled_libraries(opencolorio/lib)
 endif()
 
 if(WITH_OPENVDB)
diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake
index 0a50463d547..03ad1308143 100644
--- a/build_files/cmake/platform/platform_unix.cmake
+++ b/build_files/cmake/platform/platform_unix.cmake
@@ -461,11 +461,12 @@ endif()
 if(WITH_OPENCOLORIO)
   find_package_wrapper(OpenColorIO 2.0.0)
 
-  set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
-  set(OPENCOLORIO_LIBPATH)  # TODO, remove and reference the absolute path everywhere
   set(OPENCOLORIO_DEFINITIONS)
-
   set_and_warn_library_found("OpenColorIO" OPENCOLORIO_FOUND WITH_OPENCOLORIO)
+
+  if(WITH_OPENCOLORIO)
+    add_bundled_libraries(opencolorio/lib)
+  endif()
 endif()
 
 if(WITH_CYCLES AND WITH_CYCLES_EMBREE)



More information about the Bf-blender-cvs mailing list