# Attempt to find the desired version, but fall back to other # additional versions. if (NOT PYTHONINTERP_FOUND) find_package (PythonInterp ${PYTHON_VERSION} REQUIRED) endif () # The version that was found may not be the default or user # defined one. set (PYTHON_VERSION_FOUND ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) if (NOT ${PYTHON_VERSION} EQUAL ${PYTHON_VERSION_FOUND} ) message (WARNING "The requested version ${PYTHON_VERSION} was not found.") message (WARNING "Using ${PYTHON_VERSION_FOUND} instead.") endif () find_package (PythonLibs ${PYTHON_VERSION_FOUND} REQUIRED) if (NOT DEFINED PYTHON_SITE_DIR) set (PYTHON_SITE_DIR "${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_FOUND}/site-packages") endif () set (target_name PyOpenImageIO) set (python_srcs py_imageinput.cpp py_imageoutput.cpp py_imagecache.cpp py_imagespec.cpp py_roi.cpp py_imagebuf.cpp py_imagebufalgo.cpp py_typedesc.cpp py_paramvalue.cpp py_deepdata.cpp py_oiio.cpp) if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") # Seems to be a problem on some systems, with pybind11 and python headers set_property (SOURCE ${python_srcs} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-macro-redefined ") endif () message (STATUS "Python version ${PYTHON_VERSION_STRING}") if (VERBOSE) message (STATUS "Python found ${PYTHONLIBS_FOUND} ") message (STATUS "Python include dirs ${PYTHON_INCLUDE_PATH}") message (STATUS "Python libraries ${PYTHON_LIBRARIES}") message (STATUS "Python site packages dir ${PYTHON_SITE_DIR}") message (STATUS "Python to include 'lib' prefix: ${PYLIB_LIB_PREFIX}") message (STATUS "Python to include SO version: ${PYLIB_INCLUDE_SONAME}") message (STATUS "Python version major: ${PYTHON_VERSION_MAJOR} minor: ${PYTHON_VERSION_MINOR}") message (STATUS "pybind11 headers ${PYBIND11_INCLUDE_DIR}") endif () include_directories (${PYTHON_INCLUDE_PATH} ${PYBIND11_INCLUDE_DIR}) add_library (${target_name} MODULE ${python_srcs}) if (APPLE) target_link_libraries (${target_name} OpenImageIO ${Boost_LIBRARIES} ${CMAKE_DL_LIBS}) set_target_properties (${target_name} PROPERTIES LINK_FLAGS "-undefined dynamic_lookup") else () target_link_libraries (${target_name} OpenImageIO ${SANITIZE_LIBRARIES} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES} ${CMAKE_DL_LIBS}) endif () if(NOT PYLIB_LIB_PREFIX) add_definitions("-DOIIO_PYMODULE_NAME=OpenImageIO${PYMODULE_SUFFIX}") set_target_properties (${target_name} PROPERTIES OUTPUT_NAME OpenImageIO PREFIX "") else() add_definitions("-DOIIO_PYMODULE_NAME=PyOpenImageIO${PYMODULE_SUFFIX}") set_target_properties (${target_name} PROPERTIES OUTPUT_NAME PyOpenImageIO PREFIX lib) endif () if(PYLIB_INCLUDE_SONAME) if (VERBOSE) message(STATUS "Setting PyOIIO SOVERSION to: ${SOVERSION}") endif () set_target_properties(${target_name} PROPERTIES VERSION ${OIIO_VERSION_MAJOR}.${OIIO_VERSION_MINOR} SOVERSION ${SOVERSION} ) endif() if (WIN32) set_target_properties (${target_name} PROPERTIES DEBUG_POSTFIX "_d" SUFFIX ".pyd") endif() install (TARGETS ${target_name} RUNTIME DESTINATION ${PYTHON_SITE_DIR} COMPONENT user LIBRARY DESTINATION ${PYTHON_SITE_DIR} COMPONENT user)