Unverified Commit 5951555d authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

Merge branch 'master' into next_lammps_version

parents 732ae970 c50e49fc
Loading
Loading
Loading
Loading
+69 −90
Original line number Original line Diff line number Diff line
@@ -81,51 +81,29 @@ endif()
########################################################################
########################################################################
# User input options                                                   #
# User input options                                                   #
########################################################################
########################################################################
option(BUILD_EXE "Build lmp binary" ON)
if(BUILD_EXE)
set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically")
set(LAMMPS_MACHINE "" CACHE STRING "Suffix to append to lmp binary (WON'T enable any features automatically")
mark_as_advanced(LAMMPS_MACHINE)
mark_as_advanced(LAMMPS_MACHINE)
if(LAMMPS_MACHINE)
if(LAMMPS_MACHINE)
  set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}")
  set(LAMMPS_MACHINE "_${LAMMPS_MACHINE}")
endif()
endif()
set(LAMMPS_BINARY lmp${LAMMPS_MACHINE})
set(LAMMPS_BINARY lmp${LAMMPS_MACHINE})
endif()


option(BUILD_LIB "Build LAMMPS library" OFF)
if(BUILD_LIB)
option(BUILD_SHARED_LIBS "Build shared library" OFF)
option(BUILD_SHARED_LIBS "Build shared library" OFF)
if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg
if(BUILD_SHARED_LIBS) # for all pkg libs, mpi_stubs and linalg
  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
  set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
endif()
  set(LAMMPS_LIB_SUFFIX "" CACHE STRING "Suffix to append to liblammps and pkg-config file")
  mark_as_advanced(LAMMPS_LIB_SUFFIX)
  if(LAMMPS_LIB_SUFFIX)
    set(LAMMPS_LIB_SUFFIX "_${LAMMPS_LIB_SUFFIX}")
  endif()
endif()


option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)
option(BUILD_TOOLS "Build and install LAMMPS tools (msi2lmp, binary2txt, chain)" OFF)


include(GNUInstallDirs)
include(GNUInstallDirs)
file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
file(GLOB ALL_SOURCES ${LAMMPS_SOURCE_DIR}/[^.]*.cpp)
if(BUILD_LIB)
file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp)
file(GLOB MAIN_SOURCES ${LAMMPS_SOURCE_DIR}/main.cpp)
list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES})
list(REMOVE_ITEM ALL_SOURCES ${MAIN_SOURCES})
add_library(lammps ${ALL_SOURCES})
add_library(lammps ${ALL_SOURCES})
  if(BUILD_EXE)
add_executable(lmp ${MAIN_SOURCES})
add_executable(lmp ${MAIN_SOURCES})
target_link_libraries(lmp PRIVATE lammps)
target_link_libraries(lmp PRIVATE lammps)
set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY})
set_target_properties(lmp PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY})
install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR})
install(TARGETS lmp EXPORT LAMMPS_Targets DESTINATION ${CMAKE_INSTALL_BINDIR})
  endif()
else()
  if(NOT BUILD_EXE)
    message(FATAL_ERROR "You need to at least enable one of two following options: BUILD_LIB or BUILD_EXE")
  endif()
  add_executable(lammps ${ALL_SOURCES})
  set_target_properties(lammps PROPERTIES OUTPUT_NAME ${LAMMPS_BINARY})
  install(TARGETS lammps DESTINATION ${CMAKE_INSTALL_BINDIR})
endif()


option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)
option(CMAKE_VERBOSE_MAKEFILE "Generate verbose Makefiles" OFF)


@@ -185,10 +163,10 @@ else()
  enable_language(C)
  enable_language(C)
  file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c)
  file(GLOB MPI_SOURCES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.c)
  add_library(mpi_stubs STATIC ${MPI_SOURCES})
  add_library(mpi_stubs STATIC ${MPI_SOURCES})
  if(BUILD_LIB AND NOT BUILD_SHARED_LIBS)
  if(NOT BUILD_SHARED_LIBS)
    install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
    install(TARGETS mpi_stubs EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
  endif()
  endif()
  set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_LIB_SUFFIX})
  set_target_properties(mpi_stubs PROPERTIES OUTPUT_NAME lammps_mpi_stubs${LAMMPS_MACHINE})
  target_include_directories(mpi_stubs PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/lammps/mpi>)
  target_include_directories(mpi_stubs PUBLIC $<BUILD_INTERFACE:${LAMMPS_SOURCE_DIR}/STUBS> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/lammps/mpi>)
  install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps/mpi)
  install(FILES ${LAMMPS_SOURCE_DIR}/STUBS/mpi.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/lammps/mpi)
  if(BUILD_SHARED_LIBS)
  if(BUILD_SHARED_LIBS)
@@ -274,10 +252,10 @@ if(PKG_MSCG OR PKG_USER-ATC OR PKG_USER-AWPMD OR PKG_USER-QUIP OR PKG_LATTE)
    enable_language(Fortran)
    enable_language(Fortran)
    file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF])
    file(GLOB LAPACK_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/linalg/[^.]*.[fF])
    add_library(linalg STATIC ${LAPACK_SOURCES})
    add_library(linalg STATIC ${LAPACK_SOURCES})
    if(BUILD_LIB AND NOT BUILD_SHARED_LIBS)
    if(NOT BUILD_SHARED_LIBS)
      install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
      install(TARGETS linalg EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
    endif()
    endif()
    set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_LIB_SUFFIX})
    set_target_properties(linalg PROPERTIES OUTPUT_NAME lammps_linalg${LAMMPS_MACHINE})
    set(BLAS_LIBRARIES "$<TARGET_FILE:linalg>")
    set(BLAS_LIBRARIES "$<TARGET_FILE:linalg>")
    set(LAPACK_LIBRARIES "$<TARGET_FILE:linalg>")
    set(LAPACK_LIBRARIES "$<TARGET_FILE:linalg>")
  else()
  else()
@@ -435,10 +413,10 @@ foreach(SIMPLE_LIB POEMS USER-ATC USER-AWPMD USER-H5MD)
      ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c
      ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c
      ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp)
      ${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp)
    add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES})
    add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES})
    if(BUILD_LIB AND NOT BUILD_SHARED_LIBS)
    if(NOT BUILD_SHARED_LIBS)
      install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
      install(TARGETS ${PKG_LIB} EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
    endif()
    endif()
    set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_LIB_SUFFIX})
    set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE})
    target_link_libraries(lammps PRIVATE ${PKG_LIB})
    target_link_libraries(lammps PRIVATE ${PKG_LIB})
    if(PKG_LIB STREQUAL awpmd)
    if(PKG_LIB STREQUAL awpmd)
      target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include)
      target_include_directories(awpmd PUBLIC ${LAMMPS_LIB_SOURCE_DIR}/awpmd/systems/interact ${LAMMPS_LIB_SOURCE_DIR}/awpmd/ivutils/include)
@@ -535,7 +513,6 @@ list (FIND LANGUAGES "Fortran" _index)
if (${_index} GREATER -1)
if (${_index} GREATER -1)
  target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
  target_link_libraries(lammps PRIVATE ${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES})
endif()
endif()
if(BUILD_LIB)
set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h
set(LAMMPS_CXX_HEADERS angle.h atom.h bond.h citeme.h comm.h compute.h dihedral.h domain.h error.h fix.h force.h group.h improper.h
  input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h
  input.h info.h kspace.h lammps.h lattice.h library.h lmppython.h lmptype.h memory.h modify.h neighbor.h neigh_list.h output.h
  pair.h pointers.h region.h timer.h universe.h update.h variable.h)
  pair.h pointers.h region.h timer.h universe.h update.h variable.h)
@@ -543,7 +520,7 @@ if(BUILD_LIB)
  list(APPEND LAMMPS_CXX_HEADERS exceptions.h)
  list(APPEND LAMMPS_CXX_HEADERS exceptions.h)
endif()
endif()


  set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_LIB_SUFFIX})
set_target_properties(lammps PROPERTIES OUTPUT_NAME lammps${LAMMPS_MACHINE})
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
set_target_properties(lammps PROPERTIES SOVERSION ${SOVERSION})
install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(TARGETS lammps EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
target_include_directories(lammps PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
target_include_directories(lammps PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
@@ -561,18 +538,16 @@ if(BUILD_LIB)
foreach(_DEF ${LAMMPS_DEFINES})
foreach(_DEF ${LAMMPS_DEFINES})
  set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}")
  set(LAMMPS_API_DEFINES "${LAMMPS_API_DEFINES} -D${_DEF}")
endforeach()
endforeach()
  configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc @ONLY)
configure_file(pkgconfig/liblammps.pc.in ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc @ONLY)
  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_LIB_SUFFIX}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/liblammps${LAMMPS_MACHINE}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
install(EXPORT LAMMPS_Targets FILE LAMMPS_Targets.cmake NAMESPACE LAMMPS:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
file(GLOB MODULE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/Modules/Find*.cmake)
install(FILES ${MODULE_FILES} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
include(CMakePackageConfigHelpers)
include(CMakePackageConfigHelpers)
configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY)
configure_file(LAMMPSConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake @ONLY)
write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion)
write_basic_package_version_file("LAMMPSConfigVersion.cmake" VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/LAMMPSConfigVersion.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/LAMMPS)
endif()

if(BUILD_EXE)
install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1)
install(FILES ${LAMMPS_DOC_DIR}/lammps.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 RENAME ${LAMMPS_BINARY}.1)
endif()


if(BUILD_TOOLS)
if(BUILD_TOOLS)
  add_executable(binary2txt ${LAMMPS_TOOLS_DIR}/binary2txt.cpp)
  add_executable(binary2txt ${LAMMPS_TOOLS_DIR}/binary2txt.cpp)
@@ -623,16 +598,19 @@ install(
# conventional build.  Only available, if a shared library is built.
# conventional build.  Only available, if a shared library is built.
# This is primarily for people that only want to use the Python wrapper.
# This is primarily for people that only want to use the Python wrapper.
###############################################################################
###############################################################################
if(BUILD_LIB AND BUILD_SHARED_LIBS)
if(BUILD_SHARED_LIBS)
  if(CMAKE_VERSION VERSION_LESS 3.12)
  if(CMAKE_VERSION VERSION_LESS 3.12)
    find_package(PythonInterp) # Deprecated since version 3.12
    find_package(PythonInterp) # Deprecated since version 3.12
    if(PYTHONINTERP_FOUND)
        set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
    endif()
  else()
  else()
    find_package(Python COMPONENTS Interpreter)
    find_package(Python COMPONENTS Interpreter)
  endif()
  endif()
  if (PYTHON_EXECUTABLE)
  if (Python_EXECUTABLE)
    add_custom_target(
    add_custom_target(
      install-python
      install-python
      ${PYTHON_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
      ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
      -m ${LAMMPS_PYTHON_DIR}/lammps.py
      -m ${LAMMPS_PYTHON_DIR}/lammps.py
      -l ${CMAKE_BINARY_DIR}/liblammps${CMAKE_SHARED_LIBRARY_SUFFIX}
      -l ${CMAKE_BINARY_DIR}/liblammps${CMAKE_SHARED_LIBRARY_SUFFIX}
      WORKING_DIRECTORY  ${LAMMPS_PYTHON_DIR}
      WORKING_DIRECTORY  ${LAMMPS_PYTHON_DIR}
@@ -653,14 +631,17 @@ endif()
# LAMMPS for package managers and with different prefix settings.
# LAMMPS for package managers and with different prefix settings.
# This requires either a shared library or that the PYTHON package is included.
# This requires either a shared library or that the PYTHON package is included.
###############################################################################
###############################################################################
if((BUILD_LIB AND BUILD_SHARED_LIBS) OR (PKG_PYTHON))
if(BUILD_SHARED_LIBS OR PKG_PYTHON)
  if(CMAKE_VERSION VERSION_LESS 3.12)
  if(CMAKE_VERSION VERSION_LESS 3.12)
    find_package(PythonInterp) # Deprecated since version 3.12
    find_package(PythonInterp) # Deprecated since version 3.12
    if(PYTHONINTERP_FOUND)
        set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
    endif()
  else()
  else()
    find_package(Python COMPONENTS Interpreter)
    find_package(Python COMPONENTS Interpreter)
  endif()
  endif()
  if (PYTHON_EXECUTABLE)
  if (Python_EXECUTABLE)
    execute_process(COMMAND ${PYTHON_EXECUTABLE}
    execute_process(COMMAND ${Python_EXECUTABLE}
      -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
      -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
      OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
      OUTPUT_VARIABLE PYTHON_DEFAULT_INSTDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
    set(PYTHON_INSTDIR ${PYTHON_DEFAULT_INSTDIR} CACHE PATH "Installation folder for LAMMPS Python module")
    set(PYTHON_INSTDIR ${PYTHON_DEFAULT_INSTDIR} CACHE PATH "Installation folder for LAMMPS Python module")
@@ -713,9 +694,7 @@ if (${_index} GREATER -1)
      C Flags:      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}")
      C Flags:      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BTYPE}}")
endif()
endif()
message(STATUS "<<< Linker flags: >>>")
message(STATUS "<<< Linker flags: >>>")
if(BUILD_EXE)
message(STATUS "Executable name:  ${LAMMPS_BINARY}")
message(STATUS "Executable name:  ${LAMMPS_BINARY}")
endif()
if(CMAKE_EXE_LINKER_FLAGS)
if(CMAKE_EXE_LINKER_FLAGS)
  message(STATUS "Executable linker flags: ${CMAKE_EXE_LINKER_FLAGS}")
  message(STATUS "Executable linker flags: ${CMAKE_EXE_LINKER_FLAGS}")
endif()
endif()
+39 −48
Original line number Original line Diff line number Diff line
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
include(CMakeFindDependencyMacro)
include(CMakeFindDependencyMacro)
if(@BUILD_MPI@)
if(@BUILD_MPI@)
  find_dependency(MPI REQUIRED CXX)
  find_dependency(MPI REQUIRED CXX)
endif()
endif()
if(@PKG_KSPACE@)
if(@PKG_KSPACE@)
  if(@FFT@ STREQUAL "FFTW3")
  if(@FFT@ STREQUAL "FFTW3")
    if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3)
    find_dependency(@FFTW@ REQUIRED MODULE)
      add_library(FFTW3::FFTW3 UNKNOWN IMPORTED)
      set_target_properties(FFTW3::FFTW3 PROPERTIES
        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
        IMPORTED_LOCATION "@FFTW3_LIBRARY@"
        INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_INCLUDE_DIRS@")
    endif()
    if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F)
      add_library(FFTW3F::FFTW3F UNKNOWN IMPORTED)
      set_target_properties(FFTW3F::FFTW3F PROPERTIES
        IMPORTED_LINK_INTERFACE_LANGUAGES "C"
        IMPORTED_LOCATION "@FFTW3F_LIBRARY@"
        INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_INCLUDE_DIRS@")
    endif()
  endif()
  endif()
endif()
endif()
if(NOT @BUILD_SHARED_LIBS@)
if(NOT @BUILD_SHARED_LIBS@)
  if(@BUILD_OMP@)
    find_dependency(OpenMP REQUIRED)
  endif()
  if(@WITH_JPEG@)
  if(@WITH_JPEG@)
    find_dependency(JPEG REQUIRED)
    find_dependency(JPEG REQUIRED)
  endif()
  endif()
@@ -28,36 +19,20 @@ if(NOT @BUILD_SHARED_LIBS@)
    find_dependency(PNG REQUIRED)
    find_dependency(PNG REQUIRED)
    find_dependency(ZLIB REQUIRED)
    find_dependency(ZLIB REQUIRED)
  endif()
  endif()
  if(@PKG_KIM@ AND NOT @DOWNLOAD_KIM@)
  if(@PKG_KIM@)
    find_dependency(PkgConfig REQUIRED)
    find_dependency(PkgConfig REQUIRED)
    pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@)
    pkg_check_modules(KIM-API REQUIRED IMPORTED_TARGET libkim-api>=@KIM-API_MIN_VERSION@)
    if(@CURL_FOUND@)
    if(@CURL_FOUND@)
      find_dependency(CURL REQUIRED)
      find_dependency(CURL REQUIRED)
    endif()
    endif()
  endif()
  endif()
  if(@PKG_USER-SMD@ AND NOT @DOWNLOAD_EIGEN3@)
  if(@PKG_USER-SMD@)
    find_dependency(Eigen3 NO_MODULE REQUIRED)
    find_dependency(Eigen3 NO_MODULE REQUIRED)
  endif()
  endif()
  if(@PKG_KSPACE@)
  if(@PKG_USER-SCAFACOS@)
    if(@FFT@ STREQUAL "FFTW3" AND @FFT_FFTW_THREADS@)
      if(@FFTW@ STREQUAL "FFTW3" AND NOT TARGET FFTW3::FFTW3_OMP)
        add_library(FFTW3::FFTW3_OMP UNKNOWN IMPORTED)
        set_target_properties(FFTW3::FFTW3_OMP PROPERTIES
          IMPORTED_LINK_INTERFACE_LANGUAGES "C"
          IMPORTED_LOCATION "@FFTW3_OMP_LIBRARY@"
          INTERFACE_INCLUDE_DIRECTORIES "@FFTW3_OMP_INCLUDE_DIRS@")
      endif()
      if(@FFTW@ STREQUAL "FFTW3F" AND NOT TARGET FFTW3F::FFTW3F_OMP)
        add_library(FFTW3F::FFTW3F_OMP UNKNOWN IMPORTED)
        set_target_properties(FFTW3F::FFTW3F_OMP PROPERTIES
          IMPORTED_LINK_INTERFACE_LANGUAGES "C"
          IMPORTED_LOCATION "@FFTW3F_OMP_LIBRARY@"
          INTERFACE_INCLUDE_DIRECTORIES "@FFTW3F_OMP_INCLUDE_DIRS@")
      endif()
    endif()
  endif()
  if(@PKG_USER-SCAFACOS@ AND NOT @DOWNLOAD_SCAFACOS@)
    find_dependency(PkgConfig REQUIRED)
    find_dependency(PkgConfig REQUIRED)
    find_ependency(GSL REQUIRED)
    find_dependency(MPI REQUIRED C Fortran)
    pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos)
    pkg_check_modules(SCAFACOS REQUIRED IMPORTED_TARGET scafacos)
  endif()
  endif()
  if(@PKG_PYTHON@ AND NOT CMAKE_VERSION VERSION_LESS 3.12)
  if(@PKG_PYTHON@ AND NOT CMAKE_VERSION VERSION_LESS 3.12)
@@ -71,26 +46,42 @@ if(NOT @BUILD_SHARED_LIBS@)
      find_dependency(Kokkos 3 REQUIRED)
      find_dependency(Kokkos 3 REQUIRED)
    endif()
    endif()
  endif()
  endif()
  if(@PKG_VORONOI@ AND NOT @DOWNLOAD_VORO@)
  if(@PKG_VORONOI@)
    if(NOT TARGET VORO::VORO)
    find_dependency(VORO REQUIRED)
      add_library(VORO::VORO UNKNOWN IMPORTED)
      set_target_properties(VORO::VORO PROPERTIES
        IMPORTED_LOCATION "@VORO_LIBRARY@"
        INTERFACE_INCLUDE_DIRECTORIES "@VORO_INCLUDE_DIR@")
    endif()
  endif()
  endif()
  if(@PKG_USER-INTEL@)
  if(@PKG_USER-INTEL@)
    if(@INTEL_LRT_MODE@ STREQUAL "THREADS")
    if(@INTEL_LRT_MODE@ STREQUAL "THREADS")
      find_dependency(Threads REQUIRED)
      find_dependency(Threads REQUIRED)
    endif()
    endif()
    if(@TBB_MALLOC_FOUND@)
    if(@TBB_MALLOC_FOUND@)
      if(NOT TARGET TBB::TBB_MALLOC)
      find_ependency(TBB_MALLOC REQUIRED)
        add_library(TBB::TBB_MALLOC UNKNOWN IMPORTED)
    endif()
        set_target_properties(TBB::TBB_MALLOC PROPERTIES
  endif()
          IMPORTED_LOCATION "@TBB_MALLOC_LIBRARY@"
  if(@PKG_USER-ADIOS@)
          INTERFACE_INCLUDE_DIRECTORIES "@TBB_MALLOC_INCLUDE_DIR@")
    find_ependency(ADIOS2 REQUIRED)
  endif()
  if(@PKG_LATTE@)
    find_ependency(LATTE REQUIRED)
  endif()
  if(@PKG_MESSAGE@)
    if(@MESSAGE_ZMQ@)
      find_ependency(ZMQ REQUIRED)
    endif()
  endif()
  if(@PKG_MSCG@)
    find_ependency(GSL REQUIRED)
    find_ependency(MSCG REQUIRED)
  endif()
  if(@USER-NETCDF@)
    if(@NETCDF_FOUND@)
      find_ependency(NetCDF REQUIRED)
    endif()
    if(@PNETCDF_FOUND@)
      find_ependency(PNetCDF REQUIRED)
    endif()
    endif()
  endif()
  endif()
  if(@PKG_QUIP@)
    find_ependency(QUIP REQUIRED)
  endif()
  endif()
endif()
endif()
include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/LAMMPS_Targets.cmake")
+37 −5
Original line number Original line Diff line number Diff line
###############################################################################
###############################################################################
# Build documentation
# Build documentation
###############################################################################
###############################################################################
option(BUILD_DOC "Build LAMMPS documentation" OFF)
option(BUILD_DOC "Build LAMMPS HTML documentation" OFF)
if(BUILD_DOC)
if(BUILD_DOC)
  include(ProcessorCount)
  ProcessorCount(NPROCS)
  find_package(PythonInterp 3 REQUIRED)
  find_package(PythonInterp 3 REQUIRED)


  set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
  set(VIRTUALENV ${PYTHON_EXECUTABLE} -m virtualenv)
@@ -26,15 +24,49 @@ if(BUILD_DOC)
    COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
    COMMAND ${DOCENV_BINARY_DIR}/pip install --upgrade ${LAMMPS_DOC_DIR}/utils/converters
  )
  )


  # download mathjax distribution and unpack to folder "mathjax"
  file(DOWNLOAD "https://github.com/mathjax/MathJax/archive/3.0.5.tar.gz"
    "${CMAKE_CURRENT_BINARY_DIR}/mathjax.tar.gz"
    EXPECTED_MD5 5d9d3799cce77a1a95eee6be04eb68e7)

  if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/mathjax)
    execute_process(COMMAND ${CMAKE_COMMAND} -E tar xzf mathjax.tar.gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
    file(GLOB MATHJAX_VERSION_DIR ${CMAKE_CURRENT_BINARY_DIR}/MathJax-*)
    execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${MATHJAX_VERSION_DIR} ${CMAKE_CURRENT_BINARY_DIR}/mathjax)
  endif()
  file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax)
  file(COPY ${CMAKE_CURRENT_BINARY_DIR}/mathjax/es5 DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html/_static/mathjax/)

  # note, this may run in parallel with other tasks, so we must not use multiple processes here
  add_custom_command(
  add_custom_command(
    OUTPUT html
    OUTPUT html
    DEPENDS ${DOC_SOURCES} docenv requirements.txt
    DEPENDS ${DOC_SOURCES} docenv requirements.txt
    COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -j ${NPROCS} -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html
    COMMAND ${DOCENV_BINARY_DIR}/sphinx-build -b html -c ${LAMMPS_DOC_DIR}/utils/sphinx-config -d ${CMAKE_BINARY_DIR}/doctrees ${LAMMPS_DOC_DIR}/src html
  )

  # copy selected image files to html output tree
  file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/html/JPG)
  set(HTML_EXTRA_IMAGES balance_nonuniform.jpg balance_rcb.jpg
    balance_uniform.jpg bow_tutorial_01.png bow_tutorial_02.png
    bow_tutorial_03.png bow_tutorial_04.png bow_tutorial_05.png
    dump1.jpg dump2.jpg examples_mdpd.gif gran_funnel.png gran_mixer.png
    hop1.jpg hop2.jpg saed_ewald_intersect.jpg saed_mesh.jpg
    screenshot_atomeye.jpg screenshot_gl.jpg screenshot_pymol.jpg
    screenshot_vmd.jpg sinusoid.jpg xrd_mesh.jpg)
  set(HTML_IMAGE_TARGETS "")
  foreach(_IMG ${HTML_EXTRA_IMAGES})
    string(PREPEND _IMG JPG/)
    list(APPEND HTML_IMAGE_TARGETS "html/${_IMG}")
    add_custom_command(
      OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/${_IMG}
      DEPENDS ${LAMMPS_DOC_DIR}/src/${_IMG} html/JPG
      COMMAND ${CMAKE_COMMAND} -E copy ${LAMMPS_DOC_DIR}/src/${_IMG} ${CMAKE_BINARY_DIR}/html/${_IMG}
    )
    )
  endforeach()


  add_custom_target(
  add_custom_target(
    doc ALL
    doc ALL
    DEPENDS html
    DEPENDS html html/_static/mathjax/es5 ${HTML_IMAGE_TARGETS}
    SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
    SOURCES ${LAMMPS_DOC_DIR}/utils/requirements.txt ${DOC_SOURCES}
  )
  )


+4 −6
Original line number Original line Diff line number Diff line
@@ -38,7 +38,7 @@ if(GPU_API STREQUAL "CUDA")
    set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
    set(GPU_CUDA_MPS_FLAGS "-DCUDA_PROXY")
  endif()
  endif()


  set(GPU_ARCH "sm_30" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")
  set(GPU_ARCH "sm_50" CACHE STRING "LAMMPS GPU CUDA SM primary architecture (e.g. sm_60)")


  file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
  file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu ${CMAKE_CURRENT_SOURCE_DIR}/gpu/[^.]*.cu)
  list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
  list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_pppm.cu)
@@ -96,7 +96,6 @@ if(GPU_API STREQUAL "CUDA")
  endforeach()
  endforeach()
  set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h")
  set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${LAMMPS_LIB_BINARY_DIR}/gpu/*_cubin.h")



  add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
  add_library(gpu STATIC ${GPU_LIB_SOURCES} ${GPU_LIB_CUDPP_SOURCES} ${GPU_OBJS})
  target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
  target_link_libraries(gpu PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
  target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
  target_include_directories(gpu PRIVATE ${LAMMPS_LIB_BINARY_DIR}/gpu ${CUDA_INCLUDE_DIRS})
@@ -113,7 +112,6 @@ if(GPU_API STREQUAL "CUDA")
  target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
  target_link_libraries(nvc_get_devices PRIVATE ${CUDA_LIBRARIES} ${CUDA_CUDA_LIBRARY})
  target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})
  target_include_directories(nvc_get_devices PRIVATE ${CUDA_INCLUDE_DIRS})



elseif(GPU_API STREQUAL "OPENCL")
elseif(GPU_API STREQUAL "OPENCL")
  if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
  if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
    # download and unpack support binaries for compilation of windows binaries.
    # download and unpack support binaries for compilation of windows binaries.
@@ -213,7 +211,7 @@ elseif(GPU_API STREQUAL "HIP")
    set(HIP_ARCH "gfx906" CACHE STRING "HIP target architecture")
    set(HIP_ARCH "gfx906" CACHE STRING "HIP target architecture")
  elseif(HIP_PLATFORM STREQUAL "nvcc")
  elseif(HIP_PLATFORM STREQUAL "nvcc")
    find_package(CUDA REQUIRED)
    find_package(CUDA REQUIRED)
    set(HIP_ARCH "sm_30" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)")
    set(HIP_ARCH "sm_50" CACHE STRING "HIP primary CUDA architecture (e.g. sm_60)")


    # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
    # build arch/gencode commands for nvcc based on CUDA toolkit version and use choice
    # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
    # --arch translates directly instead of JIT, so this should be for the preferred or most common architecture
@@ -356,10 +354,10 @@ RegisterStylesExt(${GPU_SOURCES_DIR} gpu GPU_SOURCES)
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)
get_property(GPU_SOURCES GLOBAL PROPERTY GPU_SOURCES)


target_link_libraries(gpu PRIVATE MPI::MPI_CXX)
target_link_libraries(gpu PRIVATE MPI::MPI_CXX)
if(BUILD_LIB AND NOT BUILD_SHARED_LIBS)
if(NOT BUILD_SHARED_LIBS)
  install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
  install(TARGETS gpu EXPORT LAMMPS_Targets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endif()
endif()
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
target_compile_definitions(gpu PRIVATE -DLAMMPS_${LAMMPS_SIZES})
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_LIB_SUFFIX})
set_target_properties(gpu PROPERTIES OUTPUT_NAME lammps_gpu${LAMMPS_MACHINE})
target_sources(lammps PRIVATE ${GPU_SOURCES})
target_sources(lammps PRIVATE ${GPU_SOURCES})
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
target_include_directories(lammps PRIVATE ${GPU_SOURCES_DIR})
+1 −1
Original line number Original line Diff line number Diff line
@@ -51,7 +51,7 @@ if(DOWNLOAD_KIM)
    INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api")
    INTERFACE_INCLUDE_DIRECTORIES "${INSTALL_DIR}/include/kim-api")
  target_link_libraries(lammps PRIVATE LAMMPS::KIM)
  target_link_libraries(lammps PRIVATE LAMMPS::KIM)
  add_dependencies(LAMMPS::KIM kim_build)
  add_dependencies(LAMMPS::KIM kim_build)
  if(BUILD_LIB AND NOT BUILD_SHARED_LIBS)
  if(NOT BUILD_SHARED_LIBS)
    install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")")
    install(CODE "MESSAGE(FATAL_ERROR \"Installing liblammps with downloaded libraries is currently not supported.\")")
  endif()
  endif()
else()
else()
Loading