1find_package(VORO) 2if(VORO_FOUND) 3 set(DOWNLOAD_VORO_DEFAULT OFF) 4else() 5 set(DOWNLOAD_VORO_DEFAULT ON) 6endif() 7option(DOWNLOAD_VORO "Download and compile the Voro++ library instead of using an already installed one" ${DOWNLOAD_VORO_DEFAULT}) 8if(DOWNLOAD_VORO) 9 message(STATUS "Voro++ download requested - we will build our own") 10 set(VORO_URL "${LAMMPS_THIRDPARTY_URL}/voro++-0.4.6.tar.gz" CACHE STRING "URL for Voro++ tarball") 11 set(VORO_MD5 "2338b824c3b7b25590e18e8df5d68af9" CACHE STRING "MD5 checksum for Voro++ tarball") 12 mark_as_advanced(VORO_URL) 13 mark_as_advanced(VORO_MD5) 14 15 include(ExternalProject) 16 17 if(BUILD_SHARED_LIBS) 18 set(VORO_BUILD_CFLAGS "${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}") 19 else() 20 set(VORO_BUILD_CFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${BTYPE}}") 21 endif() 22 if(APPLE) 23 get_filename_component(VORO_CXX ${CMAKE_CXX_COMPILER} NAME_WE) 24 set(VORO_BUILD_OPTIONS CXX=${VORO_CXX} CFLAGS=${VORO_BUILD_CFLAGS}) 25 else() 26 set(VORO_BUILD_OPTIONS CXX=${CMAKE_CXX_COMPILER} CFLAGS=${VORO_BUILD_CFLAGS}) 27 endif() 28 29 find_program(HAVE_PATCH patch) 30 if(NOT HAVE_PATCH) 31 message(FATAL_ERROR "The 'patch' program is required to build the voro++ library") 32 endif() 33 34 ExternalProject_Add(voro_build 35 URL ${VORO_URL} 36 URL_MD5 ${VORO_MD5} 37 PATCH_COMMAND patch -b -p0 < ${LAMMPS_LIB_SOURCE_DIR}/voronoi/voro-make.patch 38 CONFIGURE_COMMAND "" 39 BUILD_COMMAND make ${VORO_BUILD_OPTIONS} 40 BUILD_IN_SOURCE 1 41 INSTALL_COMMAND "" 42 BUILD_BYPRODUCTS <SOURCE_DIR>/src/libvoro++.a 43 ) 44 ExternalProject_get_property(voro_build SOURCE_DIR) 45 file(MAKE_DIRECTORY ${SOURCE_DIR}/src) 46 add_library(LAMMPS::VORO UNKNOWN IMPORTED) 47 set_target_properties(LAMMPS::VORO PROPERTIES 48 IMPORTED_LOCATION "${SOURCE_DIR}/src/libvoro++.a" 49 INTERFACE_INCLUDE_DIRECTORIES "${SOURCE_DIR}/src") 50 target_link_libraries(lammps PRIVATE LAMMPS::VORO) 51 add_dependencies(LAMMPS::VORO voro_build) 52else() 53 find_package(VORO) 54 if(NOT VORO_FOUND) 55 message(FATAL_ERROR "Voro++ library not found. Help CMake to find it by setting VORO_LIBRARY and VORO_INCLUDE_DIR, or set DOWNLOAD_VORO=ON to download it") 56 endif() 57 target_link_libraries(lammps PRIVATE VORO::VORO) 58endif() 59