diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 485e2df91c1d0c00a351f9dbdb149c84ae8da9e3..671b9341d524834e6e9ef8c0ee30a674818eaacb 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -154,14 +154,15 @@ if(ENABLE_TESTING) enable_testing() endif(ENABLE_TESTING) -set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANULAR - KSPACE MANYBODY MC MEAM MISC MOLECULE PERI QEQ REAX REPLICA RIGID SHOCK SPIN SNAP +set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS DIPOLE GRANULAR + KSPACE MANYBODY MC MEAM MISC MOLECULE PERI REAX REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI POEMS LATTE USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-QTB USER-REAXC USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM) set(ACCEL_PACKAGES USER-OMP KOKKOS OPT USER-INTEL GPU) +set(OTHER_PACKAGES CORESHELL QEQ) foreach(PKG ${DEFAULT_PACKAGES}) option(PKG_${PKG} "Build ${PKG} Package" OFF) endforeach() @@ -175,13 +176,13 @@ macro(pkg_depends PKG1 PKG2) endif() endmacro() +# "hard" dependencies between packages resulting +# in an error instead of skipping over files pkg_depends(MPIIO MPI) -pkg_depends(QEQ MANYBODY) pkg_depends(USER-ATC MANYBODY) pkg_depends(USER-LB MPI) pkg_depends(USER-MISC MANYBODY) pkg_depends(USER-PHONON KSPACE) -pkg_depends(CORESHELL KSPACE) ###################################################### # packages with special compiler needs or external libs @@ -575,6 +576,41 @@ endif() # packages which selectively include variants based on enabled styles # e.g. accelerator packages ###################################################################### +if(PKG_CORESHELL) + set(CORESHELL_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/CORESHELL) + set(CORESHELL_SOURCES) + set_property(GLOBAL PROPERTY "CORESHELL_SOURCES" "${CORESHELL_SOURCES}") + + # detects styles which have a CORESHELL version + RegisterStylesExt(${CORESHELL_SOURCES_DIR} cs CORESHELL_SOURCES) + + get_property(CORESHELL_SOURCES GLOBAL PROPERTY CORESHELL_SOURCES) + + list(APPEND LIB_SOURCES ${CORESHELL_SOURCES}) + include_directories(${CORESHELL_SOURCES_DIR}) +endif() + +# Fix qeq/fire requires MANYBODY (i.e. COMB and COMB3) to be installed +if(PKG_QEQ) + set(QEQ_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/QEQ) + file(GLOB QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix*.h) + file(GLOB QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix*.cpp) + + if(NOT PKG_MANYBODY) + list(REMOVE_ITEM QEQ_HEADERS ${QEQ_SOURCES_DIR}/fix_qeq_fire.h) + list(REMOVE_ITEM QEQ_SOURCES ${QEQ_SOURCES_DIR}/fix_qeq_fire.cpp) + endif() + set_property(GLOBAL PROPERTY "QEQ_SOURCES" "${QEQ_SOURCES}") + + foreach(MY_HEADER ${QEQ_HEADERS}) + AddStyleHeader(${MY_HEADER} FIX) + endforeach() + + get_property(QEQ_SOURCES GLOBAL PROPERTY QEQ_SOURCES) + list(APPEND LIB_SOURCES ${QEQ_SOURCES}) + include_directories(${QEQ_SOURCES_DIR}) +endif() + if(PKG_USER-OMP) set(USER-OMP_SOURCES_DIR ${LAMMPS_SOURCE_DIR}/USER-OMP) set(USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/thr_data.cpp @@ -586,8 +622,27 @@ if(PKG_USER-OMP) # detects styles which have USER-OMP version RegisterStylesExt(${USER-OMP_SOURCES_DIR} omp OMP_SOURCES) + get_property(USER-OMP_SOURCES GLOBAL PROPERTY OMP_SOURCES) + # manually add package dependent source files from USER-OMP that do not provide styles + + if(PKG_RIGID) + list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/fix_rigid_nh_omp.cpp) + endif() + + if(PKG_USER-REAXC) + list(APPEND USER-OMP_SOURCES ${USER-OMP_SOURCES_DIR}/reaxc_bond_orders_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_hydrogen_bonds_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_nonbonded_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_bonds_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_init_md_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_torsion_angles_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_forces_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_multi_body_omp.cpp + ${USER-OMP_SOURCES_DIR}/reaxc_valence_angles_omp.cpp) + endif() + list(APPEND LIB_SOURCES ${USER-OMP_SOURCES}) include_directories(${USER-OMP_SOURCES_DIR}) endif()