diff --git a/cmake/Modules/FindN2P2.cmake b/cmake/Modules/FindN2P2.cmake index 6bf4da5a79..975f424a39 100644 --- a/cmake/Modules/FindN2P2.cmake +++ b/cmake/Modules/FindN2P2.cmake @@ -33,26 +33,28 @@ find_package_handle_standard_args(N2P2 DEFAULT_MSG N2P2_CMAKE_EXTRA) if(N2P2_FOUND) - add_library(N2P2::LIBNNP UNKNOWN IMPORTED) - set_target_properties(N2P2::LIBNNP PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${N2P2_INCLUDE_DIR} - IMPORTED_LOCATION ${N2P2_LIBNNP}) - add_library(N2P2::LIBNNPIF UNKNOWN IMPORTED) - set_target_properties(N2P2::LIBNNPIF PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES ${N2P2_INCLUDE_DIR} - IMPORTED_LOCATION ${N2P2_LIBNNPIF}) - add_library(N2P2::N2P2 INTERFACE IMPORTED) - set_property(TARGET N2P2::N2P2 PROPERTY - INTERFACE_LINK_LIBRARIES N2P2::LIBNNPIF N2P2::LIBNNP) - #set(N2P2_INCLUDE_DIRS ${N2P2_INCLUDE_DIR}) - #set(N2P2_LIBRARIES ${N2P2_LIBNNPIF} ${N2P2_LIBNNP}) - set(N2P2_CMAKE_EXTRAS ${N2P2_CMAKE_EXTRA}) - - mark_as_advanced( - N2P2_DIR - N2P2_INCLUDE_DIR - N2P2_LIBNNP - N2P2_LIBNNPIF - N2P2_CMAKE_EXTRA - ) + if (NOT TARGET N2P2::N2P2) + add_library(N2P2::LIBNNP UNKNOWN IMPORTED) + set_target_properties(N2P2::LIBNNP PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${N2P2_INCLUDE_DIR} + IMPORTED_LOCATION ${N2P2_LIBNNP}) + add_library(N2P2::LIBNNPIF UNKNOWN IMPORTED) + set_target_properties(N2P2::LIBNNPIF PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${N2P2_INCLUDE_DIR} + IMPORTED_LOCATION ${N2P2_LIBNNPIF}) + add_library(N2P2::N2P2 INTERFACE IMPORTED) + set_property(TARGET N2P2::N2P2 PROPERTY + INTERFACE_LINK_LIBRARIES N2P2::LIBNNPIF N2P2::LIBNNP) + #set(N2P2_INCLUDE_DIRS ${N2P2_INCLUDE_DIR}) + #set(N2P2_LIBRARIES ${N2P2_LIBNNPIF} ${N2P2_LIBNNP}) + set(N2P2_CMAKE_EXTRAS ${N2P2_CMAKE_EXTRA}) + endif() endif() + +mark_as_advanced( + N2P2_DIR + N2P2_INCLUDE_DIR + N2P2_LIBNNP + N2P2_LIBNNPIF + N2P2_CMAKE_EXTRA +) diff --git a/cmake/Modules/Packages/USER-HDNNP.cmake b/cmake/Modules/Packages/USER-HDNNP.cmake index 2d5fb406be..2517e3304d 100644 --- a/cmake/Modules/Packages/USER-HDNNP.cmake +++ b/cmake/Modules/Packages/USER-HDNNP.cmake @@ -1,42 +1,41 @@ -find_package(N2P2 REQUIRED) -#target_include_directories(lammps PRIVATE ${N2P2_INCLUDE_DIRS}) -#target_link_libraries(lammps PRIVATE ${N2P2_LIBRARIES}) -target_link_libraries(lammps PRIVATE N2P2::N2P2) -include(${N2P2_CMAKE_EXTRAS}) +find_package(N2P2 QUIET) +if(N2P2_FOUND) + set(DOWNLOAD_N2P2_DEFAULT OFF) +else() + set(DOWNLOAD_N2P2_DEFAULT ON) +endif() +option(DOWNLOAD_N2P2 "Download n2p2 library instead of using an already installed one)" ${DOWNLOAD_N2P2_DEFAULT}) +if(DOWNLOAD_N2P2) + set(N2P2_URL "https://github.com/CompPhysVienna/n2p2/archive/v2.1.2.tar.gz" CACHE STRING "URL for n2p2 tarball") + set(N2P2_MD5 "20cf194d14b1f1c72f38879bafda67e2" CACHE STRING "MD5 checksum of N2P2 tarball") + mark_as_advanced(N2P2_URL) + mark_as_advanced(N2P2_MD5) -#find_package(N2P2 QUIET) -#if(N2P2_FOUND) -# set(DOWNLOAD_N2P2_DEFAULT OFF) -#else() -# set(DOWNLOAD_N2P2_DEFAULT ON) -#endif() -#option(DOWNLOAD_N2P2 "Download n2p2 library instead of using an already installed one)" ${DOWNLOAD_N2P2_DEFAULT}) -#if(DOWNLOAD_N2P2) -# set(N2P2_URL "https://github.com/CompPhysVienna/n2p2/archive/v2.1.2.tar.gz" CACHE STRING "URL for n2p2 tarball") -# set(N2P2_MD5 "20cf194d14b1f1c72f38879bafda67e2" CACHE STRING "MD5 checksum of N2P2 tarball") -# mark_as_advanced(N2P2_URL) -# mark_as_advanced(N2P2_MD5) -# -# include(ExternalProject) -# ExternalProject_Add(n2p2_build -# URL ${N2P2_URL} -# URL_MD5 ${N2P2_MD5} -# SOURCE_SUBDIR src/ -# BUILD_COMMAND make libnnpif -# INSTALL_COMMAND "" -# BUILD_BYPRODUCTS /lib/libnnp.a /lib/libnnpif.a -# ) -# ExternalProject_get_property(n2p2_build INSTALL_DIR) -# add_library(LAMMPS::N2P2 UNKNOWN IMPORTED) -# set_target_properties(LAMMPS::N2P2 PROPERTIES -# IMPORTED_LOCATION "${INSTALL_DIR}/lib/libnnp.a" -# INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include") -# target_link_libraries(lammps PRIVATE LAMMPS::N2P2) -# add_dependencies(LAMMPS::N2P2 n2p2_build) -#else() -# find_package(N2P2) -# if(NOT N2P2_FOUND) -# message(FATAL_ERROR "n2p2 not found, help CMake to find it by setting N2P2_DIR, or set DOWNLOAD_N2P2=ON to download it") -# endif() -# target_link_libraries(lammps PRIVATE N2P2::N2P2) -#endif() + include(ExternalProject) + ExternalProject_Add(n2p2_build + DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} + URL ${N2P2_URL} + URL_MD5 ${N2P2_MD5} + UPDATE_COMMAND "" + SOURCE_SUBDIR src/ + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND "make libnnpif" + INSTALL_COMMAND "" + #BUILD_BYPRODUCTS /lib/libnnp.a /lib/libnnpif.a + ) + ExternalProject_get_property(n2p2_build INSTALL_DIR) + add_library(LAMMPS::N2P2 STATIC IMPORTED GLOBAL) + set_target_properties(LAMMPS::N2P2 PROPERTIES + IMPORTED_LOCATION "${INSTALL_DIR}/lib/libnnp.a" + INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include") + target_link_libraries(lammps PRIVATE LAMMPS::N2P2) + add_dependencies(LAMMPS::N2P2 n2p2_build) +else() + find_package(N2P2) + if(NOT N2P2_FOUND) + message(FATAL_ERROR "n2p2 not found, help CMake to find it by setting N2P2_DIR, or set DOWNLOAD_N2P2=ON to download it") + endif() + target_link_libraries(lammps PRIVATE N2P2::N2P2) + include(${N2P2_CMAKE_EXTRAS}) +endif()