summaryrefslogtreecommitdiff
path: root/sci-physics/lammps/lammps-20230802-r1.ebuild
diff options
context:
space:
mode:
Diffstat (limited to 'sci-physics/lammps/lammps-20230802-r1.ebuild')
-rw-r--r--sci-physics/lammps/lammps-20230802-r1.ebuild175
1 files changed, 175 insertions, 0 deletions
diff --git a/sci-physics/lammps/lammps-20230802-r1.ebuild b/sci-physics/lammps/lammps-20230802-r1.ebuild
new file mode 100644
index 000000000000..3c3d57476605
--- /dev/null
+++ b/sci-physics/lammps/lammps-20230802-r1.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+DISTUTILS_OPTIONAL=1
+DISTUTILS_USE_PEP517=setuptools
+CMAKE_MAKEFILE_GENERATOR=emake
+# Doc building insists on fetching mathjax
+# DOCS_BUILDER="doxygen"
+# DOCS_DEPEND="
+# media-gfx/graphviz
+# dev-libs/mathjax
+# "
+
+inherit cmake fortran-2 distutils-r1 # docs
+
+convert_month() {
+ local months=( "" Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )
+ echo ${months[${1#0}]}
+}
+
+MY_PV="$((10#${PV:6:2}))$(convert_month ${PV:4:2})${PV:0:4}"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="Large-scale Atomic/Molecular Massively Parallel Simulator"
+HOMEPAGE="https://lammps.sandia.gov/"
+SRC_URI="https://download.lammps.org/tars/${MY_P}.tar.gz"
+S="${WORKDIR}/${MY_P}/cmake"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="cuda examples extra gzip hip lammps-memalign mpi opencl openmp python test"
+# Requires write access to /dev/dri/renderD...
+RESTRICT="test"
+
+RDEPEND="
+ app-arch/gzip
+ media-libs/libpng:0
+ sys-libs/zlib
+ mpi? (
+ virtual/mpi
+ sci-libs/hdf5:=[mpi]
+ )
+ python? ( ${PYTHON_DEPS} )
+ sci-libs/voro++
+ virtual/blas
+ virtual/lapack
+ sci-libs/fftw:3.0=
+ sci-libs/netcdf:=
+ cuda? ( >=dev-util/nvidia-cuda-toolkit-4.2.9-r1:= )
+ opencl? ( virtual/opencl )
+ hip? (
+ dev-util/hip:=
+ sci-libs/hipCUB:=
+ )
+ dev-cpp/eigen:3
+ "
+ # Kokkos-3.5 not in tree atm
+ # kokkos? ( dev-cpp/kokkos-3.5.* )
+BDEPEND="${DISTUTILS_DEPS}"
+DEPEND="${RDEPEND}
+ test? (
+ dev-cpp/gtest
+ )
+"
+
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ ?? ( cuda opencl hip )
+"
+
+src_prepare() {
+ cmake_src_prepare
+ if use python; then
+ pushd ../python || die
+ distutils-r1_src_prepare
+ popd || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
+ -DBUILD_SHARED_LIBS=ON
+ -DBUILD_MPI=$(usex mpi)
+ -DBUILD_DOC=OFF
+ #-DBUILD_DOC=$(usex doc)
+ -DENABLE_TESTING=$(usex test)
+ -DPKG_ASPHERE=ON
+ -DPKG_BODY=ON
+ -DPKG_CLASS2=ON
+ -DPKG_COLLOID=ON
+ -DPKG_COMPRESS=ON
+ -DPKG_CORESHELL=ON
+ -DPKG_DIPOLE=ON
+ -DPKG_EXTRA-COMPUTE=$(usex extra)
+ -DPKG_EXTRA-DUMP=$(usex extra)
+ -DPKG_EXTRA-FIX=$(usex extra)
+ -DPKG_EXTRA-MOLECULE=$(usex extra)
+ -DPKG_EXTRA-PAIR=$(usex extra)
+ -DPKG_GRANULAR=ON
+ -DPKG_KSPACE=ON
+ -DFFT=FFTW3
+ -DPKG_KOKKOS=OFF
+ #-DPKG_KOKKOS=$(usex kokkos)
+ #$(use kokkos && echo -DEXTERNAL_KOKKOS=ON)
+ -DPKG_MANYBODY=ON
+ -DPKG_MC=ON
+ -DPKG_MEAM=ON
+ -DPKG_MISC=ON
+ -DPKG_MOLECULE=ON
+ -DPKG_OPENMP=$(usex openmp)
+ -DPKG_PERI=ON
+ -DPKG_QEQ=ON
+ -DPKG_REPLICA=ON
+ -DPKG_RIGID=ON
+ -DPKG_SHOCK=ON
+ -DPKG_SRD=ON
+ -DPKG_PYTHON=$(usex python)
+ -DPKG_MPIIO=$(usex mpi)
+ -DPKG_VORONOI=ON
+ )
+ if use cuda || use opencl || use hip; then
+ mycmakeargs+=( -DPKG_GPU=ON )
+ use cuda && mycmakeargs+=( -DGPU_API=cuda )
+ use opencl && mycmakeargs+=( -DGPU_API=opencl -DUSE_STATIC_OPENCL_LOADER=OFF )
+ use hip && mycmakeargs+=( -DGPU_API=hip -DHIP_PATH="${EPREFIX}/usr" )
+ else
+ mycmakeargs+=( -DPKG_GPU=OFF )
+ fi
+ cmake_src_configure
+ if use python; then
+ pushd ../python || die
+ distutils-r1_src_configure
+ popd || die
+ fi
+}
+
+src_compile() {
+ cmake_src_compile
+ if use python; then
+ pushd ../python || die
+ distutils-r1_src_compile
+ popd || die
+ fi
+}
+
+src_test() {
+ cmake_src_test
+ if use python; then
+ pushd ../python || die
+ distutils-r1_src_test
+ popd || die
+ fi
+}
+
+src_install() {
+ cmake_src_install
+ if use python; then
+ pushd ../python || die
+ distutils-r1_src_install
+ popd || die
+ fi
+
+ if use examples; then
+ for d in examples bench; do
+ local LAMMPS_EXAMPLES="/usr/share/${PN}/${d}"
+ insinto "${LAMMPS_EXAMPLES}"
+ doins -r "${S}"/../${d}/*
+ done
+ fi
+}