CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(PYMESH_THIRD_PARTY) # Set output directories SET(INSTALL_PATH ${PROJECT_SOURCE_DIR}/../python/pymesh/third_party) SET(LIBRARY_PATH ${INSTALL_PATH}/lib) SET(INCLUDE_PATH ${INSTALL_PATH}/include) MAKE_DIRECTORY(${INSTALL_PATH}) MAKE_DIRECTORY(${LIBRARY_PATH}) MAKE_DIRECTORY(${INCLUDE_PATH}) # Set install directory SET(CMAKE_INSTALL_PREFIX ${INSTALL_PATH}) SET(CMAKE_INSTALL_RPATH "${LIBRARY_PATH}:${LIBRARY_PATH}/../../lib:$ORIGIN:$ORIGIN/../../lib") # RPath SET(CMAKE_MACOSX_RPATH ON) # C++11 SET(CMAKE_CXX_STANDARD 11) # Set position independent build SET(CMAKE_POSITION_INDEPENDENT_CODE ON) # CCache support. FIND_PROGRAM(CCACHE_FOUND ccache) if(CCACHE_FOUND) SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) MESSAGE(STATUS "ccache enabled") endif(CCACHE_FOUND) IF (EXISTS ${PROJECT_SOURCE_DIR}/PyMeshDependencies) MESSAGE(STATUS "Loading binary dependencies...") ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/PyMeshDependencies/GMP) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/PyMeshDependencies/MPFR) INCLUDE(${PROJECT_SOURCE_DIR}/PyMeshDependencies/boost/UseBoost.cmake) INCLUDE(${PROJECT_SOURCE_DIR}/PyMeshDependencies/tbb/UseTBB.cmake) INCLUDE(${PROJECT_SOURCE_DIR}/PyMeshDependencies/cgal/UseCGAL.cmake) ENDIF (EXISTS ${PROJECT_SOURCE_DIR}/PyMeshDependencies) IF (NOT TBB_FOUND) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/tbb) TARGET_INCLUDE_DIRECTORIES(tbb PUBLIC tbb/include) ADD_LIBRARY(TBB::tbb ALIAS tbb) ADD_LIBRARY(TBB::tbbmalloc ALIAS tbbmalloc) ADD_LIBRARY(TBB::tbbmalloc_proxy ALIAS tbbmalloc_proxy) SET(TBB_FOUND TRUE) ENDIF (NOT TBB_FOUND) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/cork) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/carve) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/eigen) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/quartet) # Both eigen and qhull uses INCLUDE_INSTALL_DIR, unset to avoid collision. UNSET(INCLUDE_INSTALL_DIR CACHE) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/tetgen) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/triangle) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/qhull) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/Clipper/cpp) SET(BUILD_TESTING OFF CACHE BOOL "Enable/Disable continuous integration" FORCE) SET(LIBMMG2D_STATIC ON CACHE BOOL "Build static mmg2d library") SET(LIBMMGS_STATIC ON CACHE BOOL "Build static mmgs library") SET(LIBMMG3D_STATIC ON CACHE BOOL "Build static mmg3d library") SET(LIBMMG_STATIC ON CACHE BOOL "Build static mmg library") SET(LIBMMG2D_SHARED OFF CACHE BOOL "Build dynamic mmg2d library") SET(LIBMMGS_SHARED OFF CACHE BOOL "Build dynamic mmgs library") SET(LIBMMG3D_SHARED OFF CACHE BOOL "Build dynamic mmg3d library") SET(LIBMMG_SHARED OFF CACHE BOOL "Build dynamic mmg library") ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/mmg) IF (NOT CGAL_FOUND) SET(CGAL_HEADER_ONLY ON CACHE BOOL "Enable the header only version of CGAL") SET(WITH_examples OFF CACHE BOOL "No CGAL examples") SET(WITH_demos OFF CACHE BOOL "No CGAL demos") SET(WITH_tests OFF CACHE BOOL "No CGAL tests") SET(WITH_CGAL_Core OFF CACHE BOOL "No Core") SET(WITH_CGAL_Qt5 OFF CACHE BOOL "NO Qt") SET(WITH_CGAL_ImageIO OFF CACHE BOOL "NO CGAL Image") ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/cgal) ENDIF (NOT CGAL_FOUND) LIST(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) SET(THIRD_PARTY_DIR ${PROJECT_SOURCE_DIR}) INCLUDE(jigsaw) INCLUDE(geogram) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/draco) SET(CGAL_DIR ${PROJECT_BINARY_DIR}) INCLUDE(TetWild) ADD_SUBDIRECTORY(${PROJECT_SOURCE_DIR}/WindingNumber)