Files
guru/sci-libs/mfem/mfem-4.4.ebuild
Alessandro Barbieri d61c7c0dea sci-libs/mfem: new package, add 4.4
Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
2022-05-24 19:36:38 +02:00

183 lines
5.0 KiB
Bash

# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake
DESCRIPTION="Lightweight, general, scalable C++ library for finite element methods"
HOMEPAGE="
http://mfem.org/
https://github.com/mfem/mfem/
"
SRC_URI="https://github.com/mfem/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
KEYWORDS="~amd64"
LICENSE="BSD"
SLOT="0"
IUSE_AMDGPU="
amdgpu_gfx600 amdgpu_gfx601 amdgpu_gfx602
amdgpu_gfx700 amdgpu_gfx701 amdgpu_gfx702 amdgpu_gfx703 amdgpu_gfx704 amdgpu_gfx705
amdgpu_gfx801 amdgpu_gfx802 amdgpu_gfx803 amdgpu_gfx805 amdgpu_gfx810
amdgpu_gfx900 amdgpu_gfx902 amdgpu_gfx904 amdgpu_gfx906 amdgpu_gfx908 amdgpu_gfx909 amdgpu_gfx90a amdgpu_gfx90c amdgpu_gfx940
amdgpu_gfx1010 amdgpu_gfx1011 amdgpu_gfx1012 amdgpu_gfx1013 amdgpu_gfx1030 amdgpu_gfx1031 amdgpu_gfx1032 amdgpu_gfx1033 amdgpu_gfx1034 amdgpu_gfx1035 amdgpu_gfx1036
amdgpu_gfx1100 amdgpu_gfx1101 amdgpu_gfx1102 amdgpu_gfx1103
"
cpuflags="
cpu_flags_x86_mmx cpu_flags_x86_mmxext cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3
cpu_flags_x86_ssse3 cpu_flags_x86_sse4a cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx
cpu_flags_x86_avx2 cpu_flags_x86_avx512dq cpu_flags_x86_avx512f cpu_flags_x86_avx512vl
cpu_flags_x86_3dnow cpu_flags_x86_3dnowext cpu_flags_ppc_vsx cpu_flags_ppc_vsx2 cpu_flags_ppc_vsx3
cpu_flags_ppc_altivec cpu_flags_arm_neon cpu_flags_arm_iwmmxt cpu_flags_arm_iwmmxt2 cpu_flags_arm_neon
"
IUSE="
${IUSE_AMDGPU}
${cpuflags}
benchmark codipack debug examples exceptions ginkgo hip lapack +metis mpfr mpi mumps netcdf openmp petsc slepc sparse ssl strumpack sundials superlu test threadsafe unwind zlib
"
# TODO: cuda mesquite gslib
RDEPEND="
benchmark? ( dev-cpp/benchmark )
codipack? ( sci-libs/CoDiPack )
ginkgo? ( sci-libs/ginkgo )
hip? (
sci-libs/hipSPARSE
dev-util/hip
)
lapack? (
virtual/blas
virtual/lapack
)
metis? ( sci-libs/metis )
mpfr? ( dev-libs/mpfr )
mpi? (
sci-libs/hypre[mpi]
virtual/mpi[cxx]
)
mumps? ( sci-libs/mumps[mpi] )
netcdf? ( sci-libs/netcdf )
petsc? ( sci-mathematics/petsc[mpi] )
slepc? ( sci-mathematics/slepc[mpi] )
sparse? (
sci-libs/amd
sci-libs/btf
sci-libs/camd
sci-libs/ccolamd
sci-libs/cholmod
sci-libs/colamd
sci-libs/klu
sci-libs/umfpack
)
ssl? ( net-libs/gnutls )
strumpack? ( sci-libs/STRUMPACK )
sundials? (
sci-libs/sundials
mpi? ( sci-libs/sundials[hypre,mpi] )
)
superlu? ( sci-libs/superlu_dist )
unwind? ( || ( sys-libs/libunwind sys-libs/llvm-libunwind ) )
zlib? ( sys-libs/zlib )
"
DEPEND="${RDEPEND}"
BDEPEND="app-doc/doxygen[dot]"
PATCHES=( "${FILESDIR}/${P}-bump-cmake-version.patch" )
RESTRICT="!test? ( test )"
DOCS=( README CHANGELOG CITATION.cff )
REQUIRED_USE="
hip? ( ^^ ( ${IUSE_AMDGPU/+/} ) )
mpi? ( metis )
mumps? ( mpi )
petsc? ( mpi )
slepc? ( petsc )
strumpack? ( mpi )
superlu? ( mpi )
"
#pumi? ( mpi )
#?? ( cuda hip )
src_prepare() {
sed -e "s|\"\${CMAKE_INSTALL_PREFIX}/lib\"|\"\${CMAKE_INSTALL_PREFIX}/$(get_libdir)\"|g" -i config/cmake/modules/MfemCmakeUtilities.cmake || die
cmake_src_prepare
}
src_configure() {
for u in ${IUSE_AMDGPU} ; do
if use ${u} ; then
export HIP_ARCH="${u/amdgpu_/}"
break
fi
done
local mycmakeargs=(
-DBUILD_SHARED_LIBS=ON
-DMFEM_ENABLE_MINIAPPS=ON
-DMFEM_USE_ADIOS2=NO
-DMFEM_USE_AMGX=NO
-DMFEM_USE_CALIPER=NO
-DMFEM_USE_CEED=NO
-DMFEM_USE_CONDUIT=NO
-DMFEM_USE_CUDA=NO
-DMFEM_USE_FMS=NO
-DMFEM_USE_GSLIB=NO
-DMFEM_USE_HIOP=NO
-DMFEM_USE_MKL_CPARDISO=NO
-DMFEM_USE_MOONOLITH=NO
-DMFEM_USE_OCCA=NO
-DMFEM_USE_PARELAG=NO
-DMFEM_USE_PUMI=NO
-DMFEM_USE_RAJA=NO
-DMFEM_USE_SIDRE=NO
-DMFEM_USE_UMPIRE=NO
-DMFEM_DEBUG=$(usex debug)
-DMFEM_ENABLE_EXAMPLES=$(usex examples)
-DMFEM_ENABLE_TESTING=$(usex test)
-DMFEM_THREAD_SAFE=$(usex threadsafe)
-DMFEM_USE_BENCHMARK=$(usex benchmark)
-DMFEM_USE_CODIPACK=$(usex codipack)
-DMFEM_USE_EXCEPTIONS=$(usex exceptions)
-DMFEM_USE_GINKGO=$(usex ginkgo)
-DMFEM_USE_GNUTLS=$(usex ssl)
-DMFEM_USE_HIP=$(usex hip)
-DMFEM_USE_LAPACK=$(usex lapack)
-DMFEM_USE_LIBUNWIND=$(usex unwind)
-DMFEM_USE_METIS=$(usex metis)
-DMFEM_USE_MPFR=$(usex mpfr)
-DMFEM_USE_MPI=$(usex mpi)
-DMFEM_USE_MUMPS=$(usex mumps)
-DMFEM_USE_NETCDF=$(usex netcdf)
-DMFEM_USE_OPENMP=$(usex openmp)
-DMFEM_USE_PETSC=$(usex petsc)
-DMFEM_USE_SLEPC=$(usex slepc)
-DMFEM_USE_STRUMPACK=$(usex strumpack)
-DMFEM_USE_SUITESPARSE=$(usex sparse)
-DMFEM_USE_SUPERLU=$(usex superlu)
-DMFEM_USE_ZLIB=$(usex zlib)
)
if use codipack; then
mycmakeargs+=( "-DCODIPACK_INCLUDE_DIRS=${EPREFIX}/usr/include/codi" )
fi
if use mpi; then
mycmakeargs+=( "-DHYPRE_INCLUDE_DIRS=${EPREFIX}/usr/include/hypre" )
fi
if use petsc; then
mycmakeargs+=( "-DPETSC_DIR=${EPREFIX}/usr/$(get_libdir)/petsc" )
mycmakeargs+=( "-DPETSC_ARCH=" )
fi
local simd=OFF
for f in ${cpuflags} ; do
if use ${f} ; then
simd=ON
break
fi
done
mycmakeargs+=( "-DMFEM_USE_SIMD=${simd}" )
cmake_src_configure
}
src_install() {
cmake_src_install
einstalldocs
}