##-***************************************************************************** ## ## Copyright (c) 2009-2016, ## Sony Pictures Imageworks Inc. and ## Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd. ## ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following conditions are ## met: ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above ## copyright notice, this list of conditions and the following disclaimer ## in the documentation and/or other materials provided with the ## distribution. ## * Neither the name of Industrial Light & Magic nor the names of ## its contributors may be used to endorse or promote products derived ## from this software without specific prior written permission. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## ##-***************************************************************************** SET(Boost_USE_STATIC_LIBS ${USE_STATIC_BOOST}) # disables linking to -mt variants on osx IF (APPLE) SET(Boost_USE_MULTITHREADED OFF) ENDIF() # require 1.53+ since we need std::shared_ptr supported in the wrapper FIND_PACKAGE(Boost 1.53.0 COMPONENTS "python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}") # find via . instead, i.e. python2.7 IF (NOT Boost_FOUND) FIND_PACKAGE(Boost 1.53.0 COMPONENTS "python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") ENDIF() # hit a weird case where boost python released seperately from the other boost modules in 1.70 could # not find it unless it was optional, so fall back on this IF (NOT Boost_FOUND) FIND_PACKAGE(Boost 1.53.0 OPTIONAL_COMPONENTS "python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR}") ENDIF() IF (Boost_FOUND) IF (Boost_VERSION_MACRO LESS 105300) MESSAGE(FATAL_ERROR "Boost VERSION IS TOO OLD.") ENDIF() MESSAGE(STATUS "BOOST INCLUDE DIRS: ${Boost_INCLUDE_DIRS}") MESSAGE(STATUS "BOOST LIBRARIES: ${Boost_LIBRARIES}") ELSE() MESSAGE(FATAL_ERROR "Boost not found.") ENDIF() INCLUDE("../../cmake/AlembicPyIlmBase.cmake") # lots of warnings coming from unused local typedefs inside boost python IF (NOT WINDOWS) ADD_DEFINITIONS(-Wno-unused-local-typedefs) ENDIF() SET(CPP_FILES PyAbcCoreLayer.cpp PyAbcGeomTypes.cpp PyAbcTypes.cpp PyArchiveBounds.cpp PyArchiveInfo.cpp PyCameraSample.cpp PyCoreAbstractTypes.cpp PyFilmBackXformOp.cpp PyIArchive.cpp PyIArrayProperty.cpp PyICamera.cpp PyICollections.cpp PyICompoundProperty.cpp PyICurves.cpp PyIFaceSet.cpp PyIGeomBase.cpp PyIGeomParam.cpp PyIGeomParamPOD.cpp PyIGeomParamVertexPoint.cpp PyIGeomParamBox.cpp PyIGeomParamMatrixQuadColorNormal.cpp PyILight.cpp PyIMaterial.cpp PyINuPatch.cpp PyIObject.cpp PyIPoints.cpp PyIPolyMesh.cpp PyISampleSelector.cpp PyIScalarProperty.cpp PyISubD.cpp PyITypedArrayProperty.cpp PyITypedScalarProperty.cpp PyIXform.cpp PyMaterialFlatten.cpp PyMaterialAssignment.cpp PyOArchive.cpp PyOArrayProperty.cpp PyOCamera.cpp PyOCollections.cpp PyOCompoundProperty.cpp PyOCurves.cpp PyOFaceSet.cpp PyOGeomParam.cpp PyOGeomParamPOD.cpp PyOGeomParamVertexPoint.cpp PyOGeomParamBox.cpp PyOGeomParamMatrixQuadColorNormal.cpp PyOLight.cpp PyOMaterial.cpp PyONuPatch.cpp PyOObject.cpp PyOPoints.cpp PyOPolyMesh.cpp PyOScalarProperty.cpp PyOSubD.cpp PyOTypedArrayProperty.cpp PyOTypedScalarProperty.cpp PyOXform.cpp PyTypedArraySampleConverter.cpp PyTypedPropertyTraits.cpp PyUtilTypes.cpp PyVisibility.cpp PyXformOp.cpp PyXformSample.cpp main.cpp ) IF (1900 VERSION_EQUAL MSVC_VERSION) IF ((19.00.24213.1 VERSION_LESS_EQUAL CMAKE_CXX_COMPILER_VERSION) AND (19.00.24234.1 VERSION_GREATER_EQUAL CMAKE_CXX_COMPILER_VERSION)) list(APPEND CPP_FILES "msvc14fixes.cpp") ENDIF () ENDIF () INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib" "${PROJECT_SOURCE_DIR}/python/PyAlembic") ADD_LIBRARY(alembic SHARED ${CPP_FILES}) TARGET_LINK_LIBRARIES(alembic LINK_PUBLIC Alembic::Alembic Python${PYTHON_VERSION_MAJOR}::Python ${Boost_LIBRARIES} ${ALEMBIC_PYIMATH_LIB} ) SET( ALEMBIC_PYTHON_INSTALL_DIR lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages CACHE PATH "Alembic's python bindings install directory" ) INSTALL (TARGETS alembic DESTINATION ${ALEMBIC_PYTHON_INSTALL_DIR} ) # Not sure about the best way to find the Imath python bindings for Mac IF (USE_TESTS AND NOT APPLE) ADD_SUBDIRECTORY(Tests) ENDIF() # For the python libs Mac looks for .so, .dylib didnt work SET (EXT ".so") IF (WIN32) SET (EXT ".pyd") ENDIF () # dont add any wacky lib prefix, as python doesnt like this set_target_properties(alembic PROPERTIES PREFIX "" SUFFIX ${EXT})