Files

190 lines
7.2 KiB
Tcl

# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
PortSystem 1.0
PortGroup cmake 1.1
PortGroup github 1.0
PortGroup mpi 1.0
github.setup LLNL sundials 2.7.0 v
name sundials2
revision 7
categories math devel
license BSD
platforms darwin
maintainers nomaintainer
description SUite of Nonlinear and DIfferential/ALgebraic equation Solvers
long_description SUNDIALS consists of the following five solvers: CVODE\
solves initial value problems for ordinary differential\
equation (ODE) systems. CVODES solves ODE systems and\
includes sensitivity analysis capabilities (forward and\
adjoint). IDA solves initial value problems for\
differential-algebraic equation (DAE) systems. IDAS solves\
DAE systems and includes sensitivity analysis capabilities\
(forward and adjoint). KINSOL solves nonlinear algebraic\
systems.
homepage https://computing.llnl.gov/projects/sundials
github.tarball_from releases
dist_subdir sundials
checksums rmd160 7bbbff19828c8235422497e11891d07fe02e4021 \
sha256 d39fcac7175d701398e4eb209f7e92a5b30a78358d4a0c0fcc23db23c11ba104 \
size 12258093
#------------------------------------------------------------------------------
# Path-Related Variables - START
#------------------------------------------------------------------------------
# The "install name," meaning, the subdirectory name for this port.
# Should correspond to the major version.
set port_install_name \
${subport}
# Define all of our base paths up-front
set port_install_prefix \
${prefix}/libexec/${port_install_name}
set port_install_cmake \
${port_install_prefix}/cmake
set port_install_include \
${port_install_prefix}/include
set port_install_lib \
${port_install_prefix}/lib
set port_install_doc \
${prefix}/share/doc/${port_install_name}
set port_install_examples \
${prefix}/share/examples/${port_install_name}
# Populate CMake options currently available
cmake.install_prefix \
${port_install_prefix}
cmake_share_module_dir \
${port_install_cmake}
cmake.install_rpath \
${port_install_lib}
configure.args-append \
-DCMAKE_INSTALL_LIBEXECDIR=${port_install_prefix} \
-DCMAKE_INSTALL_BINDIR=${port_install_prefix}/bin \
-DCMAKE_INSTALL_SBINDIR=${port_install_prefix}/sbin \
-DCMAKE_INSTALL_SHAREDIR=${port_install_prefix}/share \
-DCMAKE_INSTALL_INCLUDEDIR=${port_install_include} \
-DCMAKE_INSTALL_LIBDIR=${port_install_lib} \
-DCMAKE_INSTALL_NAME_DIR=${port_install_lib}
#------------------------------------------------------------------------------
# Path-Related Variables - END
#------------------------------------------------------------------------------
# use default cmake behavior to find Lapack
patchfiles-append \
patch-find_lapack.diff
mpi.setup \
default \
require_fortran
depends_lib-append \
port:SuiteSparse_KLU
configure.args-append \
-DMPI_ENABLE=OFF \
-DCXX_ENABLE=ON \
-DF90_ENABLE=ON \
-DFCMIX_ENABLE=ON \
-DKLU_ENABLE=ON \
-DLAPACK_ENABLE=ON \
-DEXAMPLES_ENABLE=OFF \
-DKLU_INCLUDE_DIR=${prefix}/include \
-DKLU_LIBRARY_DIR=${prefix}/lib
pre-configure {
if {[mpi_variant_isset]} {
configure.args-replace \
-DMPI_ENABLE=OFF \
-DMPI_ENABLE=ON
configure.args-append \
-DMPI_MPICC=${prefix}/bin/${mpi.cc} \
-DMPI_MPICXX=${prefix}/bin/${mpi.cxx} \
-DMPI_MPIF77=${prefix}/bin/${mpi.f77} \
-DMPI_MPIF90=${prefix}/bin/${mpi.f90} \
-DMPI_RUN_COMMAND=${prefix}/bin/${mpi.exec}
}
}
# without this, previously installed sundials headers are found first
# this can cause problem when upgrading
# see https://cmake.org/cmake/help/latest/variable/CMAKE_INCLUDE_DIRECTORIES_BEFORE.html
configure.args-append \
-DCMAKE_INCLUDE_DIRECTORIES_BEFORE=ON
# cmake files (e.g. config/SundialsFortran.cmake) create CMakeLists.txt files
# to test for functionality (e.g. a Fortran compiler).
# CMAKE_OSX_SYSROOT is not passed to the functionality test.
# Because CMAKE_OSX_DEPLOYMENT_TARGET is set as an environment variable,
# -isysroot is added to the compiler flags.
# Only Apple Clang compilers support tbd files.
# See https://trac.macports.org/ticket/53151
# See https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_SYSROOT.html
configure.env-append \
SDKROOT=/
variant examples description {Install Examples} {
configure.args-replace \
-DEXAMPLES_ENABLE=OFF \
-DEXAMPLES_ENABLE=ON
configure.args-append \
-DEXAMPLES_INSTALL_PATH=${port_install_examples}
}
variant accelerate conflicts atlas openblas description {Use Apple Accelerate Libraries} {
configure.args-append \
-DBLA_VENDOR=Apple
}
variant atlas conflicts accelerate openblas description {Use MacPorts ATLAS Libraries} {
depends_lib-append \
port:atlas
configure.args-append \
-DBLA_VENDOR=ATLAS
# FindBLAS.cmake and FindLAPACK.cmake do not seem to find MacPorts Atlas properly
configure.args-append \
-DBLAS_LIBRARIES=satlas \
-DLAPACK_LIBRARIES=satlas
}
variant openblas conflicts atlas accelerate description {Use MacPorts OpenBLAS Libraries} {
depends_lib-append \
path:lib/libopenblas.dylib:OpenBLAS
require_active_variants \
path:lib/libopenblas.dylib:OpenBLAS lapack
configure.args-append \
-DBLA_VENDOR=OpenBLAS
}
if {![variant_isset accelerate] && ![variant_isset atlas] && ![variant_isset openblas]} {
default_variants-append +accelerate
}
pre-fetch {
if {![variant_isset accelerate] && ![variant_isset openblas] && ![variant_isset atlas] } {
ui_error "You must select either the +accelerate, +atlas, or +openblas variant for linear algebra."
return -code error "No linear-algebra variant selected."
}
}
set port_doc_dir ${destroot}${port_install_doc}
variant doc description {install pdf documentation} {
post-destroot {
xinstall -d ${port_doc_dir}
foreach f [glob ${worksrcpath}/doc/*] {
xinstall -m 0644 ${f} ${port_doc_dir}/
}
}
}
# this version is too old to work with the default livecheck from github PG
livecheck.url https://computing.llnl.gov/projects/sundials/sundials-software
livecheck.regex {/v(2(?:\.\d+)*)}