allow to always build the C++-only parts of the MESONT package
This commit is contained in:
@ -265,7 +265,6 @@ set(STANDARD_PACKAGES
|
||||
MC
|
||||
MDI
|
||||
MEAM
|
||||
MESONT
|
||||
MGPT
|
||||
MISC
|
||||
ML-HDNNP
|
||||
@ -309,8 +308,9 @@ set(STANDARD_PACKAGES
|
||||
YAFF)
|
||||
|
||||
set(SUFFIX_PACKAGES CORESHELL GPU KOKKOS OPT INTEL OPENMP)
|
||||
set(EXTRA_PACKAGES MESONT)
|
||||
|
||||
foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
foreach(PKG ${STANDARD_PACKAGES} ${EXTRA_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
option(PKG_${PKG} "Build ${PKG} Package" OFF)
|
||||
endforeach()
|
||||
|
||||
@ -520,7 +520,7 @@ else()
|
||||
set(CUDA_REQUEST_PIC)
|
||||
endif()
|
||||
|
||||
foreach(PKG_WITH_INCL KSPACE PYTHON ML-IAP VORONOI COLVARS ML-HDNNP MDI MOLFILE NETCDF
|
||||
foreach(PKG_WITH_INCL KSPACE PYTHON ML-IAP VORONOI COLVARS ML-HDNNP MDI MOLFILE MESONT NETCDF
|
||||
PLUMED QMMM ML-QUIP SCAFACOS MACHDYN VTK KIM LATTE MSCG COMPRESS ML-PACE LEPTON)
|
||||
if(PKG_${PKG_WITH_INCL})
|
||||
include(Packages/${PKG_WITH_INCL})
|
||||
@ -566,7 +566,7 @@ RegisterStyles(${LAMMPS_SOURCE_DIR})
|
||||
########################################################
|
||||
# Fetch missing external files and archives for packages
|
||||
########################################################
|
||||
foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
foreach(PKG ${STANDARD_PACKAGES} ${EXTRA_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
if(PKG_${PKG})
|
||||
FetchPotentials(${LAMMPS_SOURCE_DIR}/${PKG} ${LAMMPS_POTENTIALS_DIR})
|
||||
endif()
|
||||
@ -618,18 +618,9 @@ endforeach()
|
||||
##############################################
|
||||
# add lib sources of (simple) enabled packages
|
||||
############################################
|
||||
foreach(PKG_LIB POEMS ATC AWPMD H5MD MESONT)
|
||||
foreach(PKG_LIB POEMS ATC AWPMD H5MD)
|
||||
if(PKG_${PKG_LIB})
|
||||
string(TOLOWER "${PKG_LIB}" PKG_LIB)
|
||||
if(PKG_LIB STREQUAL "mesont")
|
||||
enable_language(Fortran)
|
||||
file(GLOB_RECURSE ${PKG_LIB}_SOURCES ${CONFIGURE_DEPENDS}
|
||||
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.f90)
|
||||
else()
|
||||
file(GLOB_RECURSE ${PKG_LIB}_SOURCES ${CONFIGURE_DEPENDS}
|
||||
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.c
|
||||
${LAMMPS_LIB_SOURCE_DIR}/${PKG_LIB}/[^.]*.cpp)
|
||||
endif()
|
||||
add_library(${PKG_LIB} STATIC ${${PKG_LIB}_SOURCES})
|
||||
set_target_properties(${PKG_LIB} PROPERTIES OUTPUT_NAME lammps_${PKG_LIB}${LAMMPS_MACHINE})
|
||||
target_link_libraries(lammps PRIVATE ${PKG_LIB})
|
||||
@ -713,7 +704,7 @@ target_include_directories(lammps PRIVATE ${LAMMPS_STYLE_HEADERS_DIR})
|
||||
######################################
|
||||
set(temp "#ifndef LMP_INSTALLED_PKGS_H\n#define LMP_INSTALLED_PKGS_H\n")
|
||||
set(temp "${temp}const char * LAMMPS_NS::LAMMPS::installed_packages[] = {\n")
|
||||
set(temp_PKG_LIST ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
set(temp_PKG_LIST ${STANDARD_PACKAGES} ${EXTRA_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
list(SORT temp_PKG_LIST)
|
||||
foreach(PKG ${temp_PKG_LIST})
|
||||
if(PKG_${PKG})
|
||||
@ -917,7 +908,7 @@ message(STATUS "<<< Build configuration >>>
|
||||
# Print package summary
|
||||
###############################################################################
|
||||
set(ENABLED_PACKAGES)
|
||||
foreach(PKG ${STANDARD_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
foreach(PKG ${STANDARD_PACKAGES} ${EXTRA_PACKAGES} ${SUFFIX_PACKAGES})
|
||||
if(PKG_${PKG})
|
||||
list(APPEND ENABLED_PACKAGES ${PKG})
|
||||
endif()
|
||||
|
||||
73
cmake/Modules/Packages/MESONT.cmake
Normal file
73
cmake/Modules/Packages/MESONT.cmake
Normal file
@ -0,0 +1,73 @@
|
||||
|
||||
|
||||
set(MESONT_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/MESONT)
|
||||
include(StyleHeaderUtils)
|
||||
include(CheckLanguage)
|
||||
|
||||
# always include C++-only sources
|
||||
file(GLOB MESONT_SOURCES ${CONFIGURE_DEPENDS} ${MESONT_SOURCES_DIR}/[^.]*mesocnt*.cpp)
|
||||
file(GLOB MESONT_HEADERS ${CONFIGURE_DEPENDS} ${MESONT_SOURCES_DIR}/[^.]*mesocnt*.h)
|
||||
# remove derived class when base class is not available
|
||||
if(NOT PKG_MOLECULE)
|
||||
list(REMOVE_ITEM MESONT_SOURCES ${MESONT_SOURCES_DIR}/bond_mesocnt.cpp)
|
||||
list(REMOVE_ITEM MESONT_HEADERS ${MESONT_SOURCES_DIR}/bond_mesocnt.h)
|
||||
endif()
|
||||
|
||||
# include styles dependent on Fortran library only when Fortran is available.
|
||||
check_language(Fortran)
|
||||
if(CMAKE_Fortran_COMPILER)
|
||||
enable_language(Fortran)
|
||||
file(GLOB MESONT_LIB_SOURCES ${CONFIGURE_DEPENDS} ${LAMMPS_LIB_SOURCE_DIR}/mesont/[^.]*.f90)
|
||||
add_library(mesont STATIC ${MESONT_LIB_SOURCES})
|
||||
set_target_properties(mesont PROPERTIES OUTPUT_NAME lammps_mesont${LAMMPS_MACHINE})
|
||||
target_link_libraries(lammps PRIVATE mesont)
|
||||
|
||||
list(APPEND MESONT_SOURCES ${MESONT_SOURCES_DIR}/pair_mesont_tpm.cpp)
|
||||
list(APPEND MESONT_SOURCES ${MESONT_SOURCES_DIR}/atom_vec_mesont.cpp)
|
||||
list(APPEND MESONT_SOURCES ${MESONT_SOURCES_DIR}/compute_mesont.cpp)
|
||||
list(APPEND MESONT_HEADERS ${MESONT_SOURCES_DIR}/pair_mesont_tpm.h)
|
||||
list(APPEND MESONT_HEADERS ${MESONT_SOURCES_DIR}/atom_vec_mesont.h)
|
||||
list(APPEND MESONT_HEADERS ${MESONT_SOURCES_DIR}/compute_mesont.h)
|
||||
endif()
|
||||
|
||||
# check for package files in src directory due to old make system
|
||||
DetectBuildSystemConflict(${LAMMPS_SOURCE_DIR} ${MESONT_SOURCES} ${MESONT_HEADERS})
|
||||
|
||||
# manually register style headers
|
||||
get_property(alist GLOBAL PROPERTY ANGLE)
|
||||
get_property(blist GLOBAL PROPERTY BOND)
|
||||
get_property(clist GLOBAL PROPERTY COMPUTE)
|
||||
get_property(plist GLOBAL PROPERTY PAIR)
|
||||
get_property(vlist GLOBAL PROPERTY ATOM_VEC)
|
||||
foreach(fname ${MESONT_HEADERS})
|
||||
file(STRINGS ${fname} is_style LIMIT_COUNT 1 REGEX ANGLE_CLASS)
|
||||
if(is_style)
|
||||
list(APPEND alist ${fname})
|
||||
endif()
|
||||
file(STRINGS ${fname} is_style LIMIT_COUNT 1 REGEX BOND_CLASS)
|
||||
if(is_style)
|
||||
list(APPEND blist ${fname})
|
||||
endif()
|
||||
file(STRINGS ${fname} is_style LIMIT_COUNT 1 REGEX COMPUTE_CLASS)
|
||||
if(is_style)
|
||||
list(APPEND clist ${fname})
|
||||
endif()
|
||||
file(STRINGS ${fname} is_style LIMIT_COUNT 1 REGEX PAIR_CLASS)
|
||||
if(is_style)
|
||||
list(APPEND plist ${fname})
|
||||
endif()
|
||||
file(STRINGS ${fname} is_style LIMIT_COUNT 1 REGEX ATOM_CLASS)
|
||||
if(is_style)
|
||||
list(APPEND vlist ${fname})
|
||||
endif()
|
||||
endforeach()
|
||||
set_property(GLOBAL PROPERTY ANGLE "${alist}")
|
||||
set_property(GLOBAL PROPERTY BOND "${blist}")
|
||||
set_property(GLOBAL PROPERTY COMPUTE "${clist}")
|
||||
set_property(GLOBAL PROPERTY PAIR "${plist}")
|
||||
set_property(GLOBAL PROPERTY ATOM_VEC "${vlist}")
|
||||
|
||||
target_sources(lammps PRIVATE ${MESONT_SOURCES})
|
||||
target_include_directories(lammps PRIVATE ${MESONT_SOURCES_DIR})
|
||||
|
||||
RegisterPackages(${MESONT_SOURCES_DIR})
|
||||
Reference in New Issue
Block a user