Files
haikuports/sci-libs/sundials/sundials-6.5.1.recipe
2023-04-21 12:07:40 +02:00

231 lines
13 KiB
Bash

SUMMARY="Suite of nonlinear solvers"
DESCRIPTION="SUNDIALS is a family of software packages implemented with the \
goal of providing robust time integrators and nonlinear solvers that can \
easily be incorporated into existing simulation codes. The primary design \
goals are to require minimal information from the user, allow users to easily \
supply their own data structures underneath the packages, and allow for easy \
incorporation of user-supplied linear solvers and preconditioners. The \
various packages share many subordinate modules and are organized as a \
family with a directory structure that exploits sharing common functionality."
HOMEPAGE="https://computation.llnl.gov/projects/sundials"
COPYRIGHT="2002-2019, Lawrence Livermore National Security and Southern Methodist University"
LICENSE="BSD (3-clause)"
REVISION="1"
SOURCE_URI="https://github.com/LLNL/sundials/archive/refs/tags/v$portVersion.tar.gz"
CHECKSUM_SHA256="30f3deb6a59d840eb9b91fa77e9a4a7c6026ba1bb63fd65e9d57c786d1c8725c"
SOURCE_FILENAME="sundials-v$portVersion.tar.gz"
ARCHITECTURES="all !x86_gcc2 ?x86"
SECONDARY_ARCHITECTURES="x86"
libsundials_arkodeVersion="5.5.1"
libsundials_arkodeVersionCompat="$libsundials_arkodeVersion compat >= ${libsundials_arkodeVersion%%.*}"
libsundials_cvodesVersion="$portVersion"
libsundials_cvodesVersionCompat="$libsundials_cvodesVersion compat >= ${libsundials_cvodesVersion%%.*}"
libsundials_cvodeVersion="$portVersion"
libsundials_cvodeVersionCompat="$libsundials_cvodeVersion compat >= ${libsundials_cvodeVersion%%.*}"
libsundials_genericVersion="$portVersion"
libsundials_genericVersionCompat="$libsundials_genericVersion compat >= ${libsundials_genericVersion%%.*}"
libsundials_idasVersion="5.5.1"
libsundials_idasVersionCompat="$libsundials_idasVersion compat >= ${libsundials_idasVersion%%.*}"
libsundials_idaVersion="$portVersion"
libsundials_idaVersionCompat="$libsundials_idaVersion compat >= ${libsundials_idaVersion%%.*}"
libsundials_kinsolVersion="$portVersion"
libsundials_kinsolVersionCompat="$libsundials_kinsolVersion compat >= ${libsundials_kinsolVersion%%.*}"
libsundials_nvecmanyvectorVersion="$portVersion"
libsundials_nvecmanyvectorVersionCompat="$libsundials_nvecmanyvectorVersion compat >= ${libsundials_nvecmanyvectorVersion%%.*}"
libsundials_nvecpthreadsVersion="6.5.1"
libsundials_nvecpthreadsVersionCompat="$libsundials_nvecpthreadsVersion compat >= ${libsundials_nvecpthreadsVersion%%.*}"
libsundials_nvecserialVersion="$portVersion"
libsundials_nvecserialVersionCompat="$libsundials_nvecserialVersion compat >= ${libsundials_nvecserialVersion%%.*}"
libsundials_sunlinsolbandVersion="4.5.1"
libsundials_sunlinsolbandVersionCompat="$libsundials_sunlinsolbandVersion compat >= ${libsundials_sunlinsolbandVersion%%.*}"
libsundials_sunlinsoldenseVersion="4.5.1"
libsundials_sunlinsoldenseVersionCompat="$libsundials_sunlinsoldenseVersion compat >= ${libsundials_sunlinsoldenseVersion%%.*}"
libsundials_sunlinsollapackbandVersion="4.5.1"
libsundials_sunlinsollapackbandVersionCompat="$libsundials_sunlinsollapackbandVersion compat >= ${libsundials_sunlinsollapackbandVersion%%.*}"
libsundials_sunlinsollapackdenseVersion="4.5.1"
libsundials_sunlinsollapackdenseVersionCompat="$libsundials_sunlinsollapackdenseVersion compat >= ${libsundials_sunlinsollapackdenseVersion%%.*}"
libsundials_sunlinsolpcgVersion="4.5.1"
libsundials_sunlinsolpcgVersionCompat="$libsundials_sunlinsolpcgVersion compat >= ${libsundials_sunlinsolpcgVersion%%.*}"
libsundials_sunlinsolspbcgsVersion="4.5.1"
libsundials_sunlinsolspbcgsVersionCompat="$libsundials_sunlinsolspbcgsVersion compat >= ${libsundials_sunlinsolspbcgsVersion%%.*}"
libsundials_sunlinsolspfgmrVersion="4.5.1"
libsundials_sunlinsolspfgmrVersionCompat="$libsundials_sunlinsolspfgmrVersion compat >= ${libsundials_sunlinsolspfgmrVersion%%.*}"
libsundials_sunlinsolspgmrVersion="4.5.1"
libsundials_sunlinsolspgmrVersionCompat="$libsundials_sunlinsolspgmrVersion compat >= ${libsundials_sunlinsolspgmrVersion%%.*}"
libsundials_sunlinsolsptfqmrVersion="4.5.1"
libsundials_sunlinsolsptfqmrVersionCompat="$libsundials_sunlinsolsptfqmrVersion compat >= ${libsundials_sunlinsolsptfqmrVersion%%.*}"
libsundials_sunmatrixbandVersion="4.5.1"
libsundials_sunmatrixbandVersionCompat="$libsundials_sunmatrixbandVersion compat >= ${libsundials_sunmatrixbandVersion%%.*}"
libsundials_sunmatrixdenseVersion="4.5.1"
libsundials_sunmatrixdenseVersionCompat="$libsundials_sunmatrixdenseVersion compat >= ${libsundials_sunmatrixdenseVersion%%.*}"
libsundials_sunmatrixsparseVersion="4.5.1"
libsundials_sunmatrixsparseVersionCompat="$libsundials_sunmatrixsparseVersion compat >= ${libsundials_sunmatrixsparseVersion%%.*}"
libsundials_sunnonlinsolfixedpointVersion="3.5.1"
libsundials_sunnonlinsolfixedpointVersionCompat="$libsundials_sunnonlinsolfixedpointVersion compat >= ${libsundials_sunnonlinsolfixedpointVersion%%.*}"
libsundials_sunnonlinsolnewtonVersion="3.5.1"
libsundials_sunnonlinsolnewtonVersionCompat="$libsundials_sunnonlinsolnewtonVersion compat >= ${libsundials_sunnonlinsolnewtonVersion%%.*}"
PROVIDES="
sundials$secondaryArchSuffix = $portVersion
lib:libsundials_arkode$secondaryArchSuffix = $libsundials_arkodeVersionCompat
lib:libsundials_cvode$secondaryArchSuffix = $libsundials_cvodeVersionCompat
lib:libsundials_cvodes$secondaryArchSuffix = $libsundials_cvodesVersionCompat
lib:libsundials_generic$secondaryArchSuffix = $libsundials_genericVersionCompat
lib:libsundials_ida$secondaryArchSuffix = $libsundials_idaVersionCompat
lib:libsundials_idas$secondaryArchSuffix = $libsundials_idasVersionCompat
lib:libsundials_kinsol$secondaryArchSuffix = $libsundials_kinsolVersionCompat
lib:libsundials_nvecmanyvector$secondaryArchSuffix = $libsundials_nvecmanyvectorVersionCompat
lib:libsundials_nvecpthreads$secondaryArchSuffix = $libsundials_nvecpthreadsVersionCompat
lib:libsundials_nvecserial$secondaryArchSuffix = $libsundials_nvecserialVersionCompat
lib:libsundials_sunlinsolband$secondaryArchSuffix = $libsundials_sunlinsolbandVersionCompat
lib:libsundials_sunlinsoldense$secondaryArchSuffix = $libsundials_sunlinsoldenseVersionCompat
lib:libsundials_sunlinsollapackband$secondaryArchSuffix = $libsundials_sunlinsollapackbandVersionCompat
lib:libsundials_sunlinsollapackdense$secondaryArchSuffix = $libsundials_sunlinsollapackdenseVersionCompat
lib:libsundials_sunlinsolpcg$secondaryArchSuffix = $libsundials_sunlinsolpcgVersionCompat
lib:libsundials_sunlinsolspbcgs$secondaryArchSuffix = $libsundials_sunlinsolspbcgsVersionCompat
lib:libsundials_sunlinsolspfgmr$secondaryArchSuffix = $libsundials_sunlinsolspfgmrVersionCompat
lib:libsundials_sunlinsolspgmr$secondaryArchSuffix = $libsundials_sunlinsolspgmrVersionCompat
lib:libsundials_sunlinsolsptfqmr$secondaryArchSuffix = $libsundials_sunlinsolsptfqmrVersionCompat
lib:libsundials_sunmatrixband$secondaryArchSuffix = $libsundials_sunmatrixbandVersionCompat
lib:libsundials_sunmatrixdense$secondaryArchSuffix = $libsundials_sunmatrixdenseVersionCompat
lib:libsundials_sunmatrixsparse$secondaryArchSuffix = $libsundials_sunmatrixsparseVersionCompat
lib:libsundials_sunnonlinsolfixedpoint$secondaryArchSuffix = $libsundials_sunnonlinsolfixedpointVersionCompat
lib:libsundials_sunnonlinsolnewton$secondaryArchSuffix = $libsundials_sunnonlinsolnewtonVersionCompat
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libgfortran$secondaryArchSuffix
lib:liblapack$secondaryArchSuffix
lib:libopenblas$secondaryArchSuffix
"
PROVIDES_devel="
sundials${secondaryArchSuffix}_devel = $portVersion
devel:libsundials_arkode$secondaryArchSuffix = $libsundials_arkodeVersionCompat
devel:libsundials_cvode$secondaryArchSuffix = $libsundials_cvodeVersionCompat
devel:libsundials_cvodes$secondaryArchSuffix = $libsundials_cvodesVersionCompat
devel:libsundials_generic$secondaryArchSuffix = $libsundials_genericVersionCompat
devel:libsundials_ida$secondaryArchSuffix = $libsundials_idaVersionCompat
devel:libsundials_idas$secondaryArchSuffix = $libsundials_idasVersionCompat
devel:libsundials_kinsol$secondaryArchSuffix = $libsundials_kinsolVersionCompat
devel:libsundials_nvecmanyvector$secondaryArchSuffix = $libsundials_nvecmanyvectorVersionCompat
devel:libsundials_nvecpthreads$secondaryArchSuffix = $libsundials_nvecpthreadsVersionCompat
devel:libsundials_nvecserial$secondaryArchSuffix = $libsundials_nvecserialVersionCompat
devel:libsundials_sunlinsolband$secondaryArchSuffix = $libsundials_sunlinsolbandVersionCompat
devel:libsundials_sunlinsoldense$secondaryArchSuffix = $libsundials_sunlinsoldenseVersionCompat
devel:libsundials_sunlinsollapackband$secondaryArchSuffix = $libsundials_sunlinsollapackbandVersionCompat
devel:libsundials_sunlinsollapackdense$secondaryArchSuffix = $libsundials_sunlinsollapackdenseVersionCompat
devel:libsundials_sunlinsolpcg$secondaryArchSuffix = $libsundials_sunlinsolpcgVersionCompat
devel:libsundials_sunlinsolspbcgs$secondaryArchSuffix = $libsundials_sunlinsolspbcgsVersionCompat
devel:libsundials_sunlinsolspfgmr$secondaryArchSuffix = $libsundials_sunlinsolspfgmrVersionCompat
devel:libsundials_sunlinsolspgmr$secondaryArchSuffix = $libsundials_sunlinsolspgmrVersionCompat
devel:libsundials_sunlinsolsptfqmr$secondaryArchSuffix = $libsundials_sunlinsolsptfqmrVersionCompat
devel:libsundials_sunmatrixband$secondaryArchSuffix = $libsundials_sunmatrixbandVersionCompat
devel:libsundials_sunmatrixdense$secondaryArchSuffix = $libsundials_sunmatrixdenseVersionCompat
devel:libsundials_sunmatrixsparse$secondaryArchSuffix = $libsundials_sunmatrixsparseVersionCompat
devel:libsundials_sunnonlinsolfixedpoint$secondaryArchSuffix = $libsundials_sunnonlinsolfixedpointVersionCompat
devel:libsundials_sunnonlinsolnewton$secondaryArchSuffix = $libsundials_sunnonlinsolnewtonVersionCompat
"
REQUIRES_devel="
sundials$secondaryArchSuffix == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libgfortran$secondaryArchSuffix
devel:liblapack$secondaryArchSuffix
devel:libopenblas$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:gfortran$secondaryArchSuffix
cmd:g++$secondaryArchSuffix
cmd:make
cmd:pkg_config$secondaryArchSuffix
"
defineDebugInfoPackage sundials$secondaryArchSuffix \
"$libDir"/libsundials_arkode.so.$libsundials_arkodeVersion \
"$libDir"/libsundials_cvode.so.$libsundials_cvodeVersion \
"$libDir"/libsundials_cvodes.so.$libsundials_cvodesVersion \
"$libDir"/libsundials_generic.so.$libsundials_genericVersion \
"$libDir"/libsundials_ida.so.$libsundials_idaVersion \
"$libDir"/libsundials_idas.so.$libsundials_idasVersion \
"$libDir"/libsundials_kinsol.so.$libsundials_kinsolVersion \
"$libDir"/libsundials_nvecmanyvector.so.$libsundials_nvecmanyvectorVersion \
"$libDir"/libsundials_nvecpthreads.so.$libsundials_nvecpthreadsVersion \
"$libDir"/libsundials_nvecserial.so.$libsundials_nvecserialVersion \
"$libDir"/libsundials_sunlinsolband.so.$libsundials_sunlinsolbandVersion \
"$libDir"/libsundials_sunlinsoldense.so.$libsundials_sunlinsoldenseVersion \
"$libDir"/libsundials_sunlinsollapackband.so.$libsundials_sunlinsollapackbandVersion \
"$libDir"/libsundials_sunlinsollapackdense.so.$libsundials_sunlinsollapackdenseVersion \
"$libDir"/libsundials_sunlinsolpcg.so.$libsundials_sunlinsolpcgVersion \
"$libDir"/libsundials_sunlinsolspbcgs.so.$libsundials_sunlinsolspbcgsVersion \
"$libDir"/libsundials_sunlinsolspfgmr.so.$libsundials_sunlinsolspfgmrVersion \
"$libDir"/libsundials_sunlinsolspgmr.so.$libsundials_sunlinsolspgmrVersion \
"$libDir"/libsundials_sunlinsolsptfqmr.so.$libsundials_sunlinsolsptfqmrVersion \
"$libDir"/libsundials_sunmatrixband.so.$libsundials_sunmatrixbandVersion \
"$libDir"/libsundials_sunmatrixdense.so.$libsundials_sunmatrixdenseVersion \
"$libDir"/libsundials_sunmatrixsparse.so.$libsundials_sunmatrixsparseVersion \
"$libDir"/libsundials_sunnonlinsolfixedpoint.so.$libsundials_sunnonlinsolfixedpointVersion \
"$libDir"/libsundials_sunnonlinsolnewton.so.$libsundials_sunnonlinsolnewtonVersion
BUILD()
{
cmake -Bbuild -S. -DCMAKE_BUILD_TYPE=Release \
-DEXAMPLES_ENABLED=OFF \
-DF77_INTERFACE_ENABLE=ON \
-DPTHREAD_ENABLE=ON \
-DLAPACK_ENABLE=ON \
$cmakeDirArgs
make -C build $jobArgs
}
INSTALL()
{
make -C build install
# remove static libraries
rm -f $libDir/*.a
mkdir -p $developDocDir
mv $prefix/examples/* $developDocDir
rmdir $prefix/examples/
prepareInstalledDevelLibs libsundials_arkode \
libsundials_cvode \
libsundials_cvodes \
libsundials_ida \
libsundials_generic \
libsundials_idas \
libsundials_kinsol \
libsundials_nvecmanyvector \
libsundials_nvecpthreads \
libsundials_nvecserial \
libsundials_sunlinsolband \
libsundials_sunlinsoldense \
libsundials_sunlinsollapackband \
libsundials_sunlinsollapackdense \
libsundials_sunlinsolpcg \
libsundials_sunlinsolspbcgs \
libsundials_sunlinsolspfgmr \
libsundials_sunlinsolspgmr \
libsundials_sunlinsolsptfqmr \
libsundials_sunmatrixband \
libsundials_sunmatrixdense \
libsundials_sunmatrixsparse \
libsundials_sunnonlinsolfixedpoint \
libsundials_sunnonlinsolnewton
packageEntries devel \
$developDir \
$libDir/cmake
}
TEST()
{
make -C build test
}