## Debug builds? %bcond_with debug # # Enable pthread support %bcond_with pthread # %define _legacy_common_support 1 %define _lto_cflags %{nil} %global with_mpich 1 %global with_openmpi 1 ## BLAS ## %if 0%{?fedora} || 0%{?rhel} >= 9 %global blaslib flexiblas %global blasvar %{nil} %else %global blaslib openblas %global blasvar o %endif ########### %global with_hypre 1 %ifarch x86_64 %global with_openmpicheck 1 %global with_mpichcheck 0 %endif ########### %global with_sercheck 1 ## PETSc ## %global with_petsc 1 ########### ## SuperLUMT ## %global with_superlumt 1 ########### ## superlu_dist ## %global with_superludist 0 ########### %if 0%{?rhel} && 0%{?rhel} >= 9 # KLU support %global with_klu 1 %global with_klu64 1 ########## # Fortran %if 0%{?with_klu64} %global with_fortran 1 %endif %if 0%{?with_klu} %global with_fortran 0 %endif ########## %endif %if 0%{?fedora} %ifarch s390x x86_64 %{power64} aarch64 %global with_klu64 1 %global with_fortran 1 %endif %ifarch %{arm} %{ix86} %global with_klu 1 %global with_fortran 0 %endif %endif %if 0%{?rhel} && 0%{?rhel} == 8 %global with_klu 1 %global with_fortran 0 %endif ########## Summary: Suite of nonlinear solvers Name: sundials Version: 6.6.1 Release: %autorelease # SUNDIALS is licensed under BSD with some additional (but unrestrictive) clauses. # Check the file 'LICENSE' for details. License: BSD URL: https://computation.llnl.gov/projects/%{name}/ Source0: https://github.com/LLNL/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz # This patch rename superLUMT library Patch0: %{name}-5.5.0-set_superlumt_name.patch # This patch rename superLUMT64 library Patch1: %{name}-5.5.0-set_superlumt64_name.patch Patch2: %{name}-change_petsc_variable.patch Patch3: %{name}-klu64.patch BuildRequires: make %if 0%{?with_fortran} BuildRequires: gcc-gfortran %endif BuildRequires: python3-devel BuildRequires: gcc, gcc-c++ %if 0%{?epel} BuildRequires: epel-rpm-macros %endif BuildRequires: cmake >= 3.10 BuildRequires: %{blaslib}-devel %if 0%{?with_superlumt} %ifarch s390x x86_64 %{power64} aarch64 BuildRequires: SuperLUMT64-devel %endif %ifarch %{arm} %{ix86} BuildRequires: SuperLUMT-devel %endif %endif # KLU support %if 0%{?with_klu64} BuildRequires: suitesparse64-devel %endif %if 0%{?with_klu} BuildRequires: suitesparse-devel %endif ########## %if 0%{?with_fortran} Requires: gcc-gfortran%{?_isa} %endif %description SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. SUNDIALS was 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 were to require minimal information from the user, allow users to easily supply their own data structures underneath the solvers, and allow for easy incorporation of user-supplied linear solvers and preconditioners. %package devel Summary: Suite of nonlinear solvers (developer files) Requires: %{name}%{?_isa} = %{version}-%{release} Provides: %{name}-fortran-static = %{version}-%{release} %description devel SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. This package contains the developer files (.so file, header files). ############################################################################# ######### %if 0%{?with_openmpi} %package openmpi Summary: Suite of nonlinear solvers BuildRequires: openmpi-devel BuildRequires: hypre-openmpi-devel %if 0%{?with_petsc} BuildRequires: petsc-openmpi-devel >= 3.10 BuildRequires: scalapack-openmpi-devel BuildRequires: hdf5-openmpi-devel %endif %if 0%{?with_superludist} BuildRequires: superlu_dist-openmpi-devel %endif %if 0%{?with_fortran} Requires: gcc-gfortran%{?_isa} %endif %description openmpi SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. This package contains the Sundials Fortran parallel OpenMPI libraries. %package openmpi-devel Summary: Suite of nonlinear solvers Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Provides: %{name}-openmpi-fortran-static = %{version}-%{release} %description openmpi-devel SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. This package contains the Sundials parallel OpenMPI devel libraries and header files. %endif ###### ############################################################################### ###### %if 0%{?with_mpich} %package mpich Summary: Suite of nonlinear solvers BuildRequires: mpich-devel BuildRequires: hypre-mpich-devel %if 0%{?with_petsc} BuildRequires: petsc-mpich-devel >= 3.10 BuildRequires: scalapack-mpich-devel BuildRequires: hdf5-mpich-devel %endif %if 0%{?with_superludist} BuildRequires: superlu_dist-mpich-devel %endif %if 0%{?with_fortran} Requires: gcc-gfortran%{?_isa} %endif %description mpich SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. This package contains the Sundials parallel MPICH libraries. %package mpich-devel Summary: Suite of nonlinear solvers Requires: %{name}-mpich%{?_isa} = %{version}-%{release} Provides: %{name}-mpich-fortran-static = %{version}-%{release} %description mpich-devel SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. This package contains the Sundials parallel MPICH devel libraries and header files. %endif ###### ############################################################################# %package doc Summary: Suite of nonlinear solvers (documentation) BuildArch: noarch %description doc SUNDIALS is a SUite of Non-linear DIfferential/ALgebraic equation Solvers for use in writing mathematical software. This package contains the documentation files. %prep %setup -qc pushd %{name}-%{version} %ifarch s390x x86_64 %{power64} aarch64 %patch 1 -p0 -b .set_superlumt64_name %endif %ifarch %{arm} %{ix86} %patch 0 -p0 -b .set_superlumt_name %endif %if 0%{?with_klu64} %patch 3 -p1 -b .klu64 %endif mv src/arkode/README.md src/README-arkode.md mv src/cvode/README.md src/README-cvode.md mv src/cvodes/README.md src/README-cvodes.md mv src/ida/README.md src/README-ida.md mv src/idas/README.md src/README.idas.md mv src/kinsol/README.md src/README-kinsol.md popd %if 0%{?with_openmpi} cp -a sundials-%{version} buildopenmpi_dir %endif %if 0%{?with_mpich} cp -a sundials-%{version} buildmpich_dir %endif %build %global _smp_ncpus_max 1 mkdir -p sundials-%{version}/build export LIBBLASLINK=-l%{blaslib}%{blasvar} export INCBLAS=%{_includedir}/%{blaslib} %if 0%{?with_superlumt} %ifarch s390x x86_64 %{power64} aarch64 export LIBSUPERLUMTLINK=-lsuperlumt64_d %endif %ifarch %{arm} %{ix86} export LIBSUPERLUMTLINK=-lsuperlumt_d %endif %endif %if %{with debug} %undefine _hardened_build export CFLAGS=" " export FFLAGS=" " export FCFLAGS=" " %{_bindir}/cmake -B sundials-%{version}/build -S sundials-%{version} \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Debug \ -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_CXX_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} $LIBBLASLINK $LIBSUPERLUMTLINK" \ %else export CFLAGS="%{build_cflags}" export FFLAGS="%{build_fflags}" %cmake -B sundials-%{version}/build -S sundials-%{version} \ -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ %endif %if 0%{?with_klu64} -DSUNDIALS_INDEX_SIZE:STRING=64 \ -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu64.so \ -DAMD_LIBRARY=%{_libdir}/libamd64.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DBTF_LIBRARY=%{_libdir}/libbtf64.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ -DCOLAMD_LIBRARY=%{_libdir}/libcolamd64.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ %endif %if 0%{?with_klu} -DSUNDIALS_INDEX_SIZE:STRING=32 \ -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu.so \ -DAMD_LIBRARY=%{_libdir}/libamd.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DBTF_LIBRARY=%{_libdir}/libbtf.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ -DCOLAMD_LIBRARY=%{_libdir}/libcolamd.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ %endif -DSUNDIALS_BUILD_WITH_PROFILING:BOOL=OFF \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} $LIBBLASLINK $LIBSUPERLUMTLINK" \ -DCMAKE_INSTALL_INCLUDEDIR:PATH=%{_includedir} \ -DLAPACK_ENABLE:BOOL=OFF \ -DCMAKE_MODULE_LINKER_FLAGS:STRING="%{__global_ldflags}" \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DCMAKE_INSTALL_LIBDIR:PATH=%{_lib} \ -DPYTHON_EXECUTABLE:FILEPATH=%{__python3} \ -DEXAMPLES_ENABLE_CXX:BOOL=ON -DEXAMPLES_ENABLE_C:BOOL=ON \ -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_LIBS:BOOL=ON \ -DMPI_ENABLE:BOOL=OFF \ %if 0%{?with_fortran} -DF77_INTERFACE_ENABLE:BOOL=ON \ -DEXAMPLES_ENABLE_F77:BOOL=ON \ %if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 -DF2003_INTERFACE_ENABLE:BOOL=ON \ %endif -DEXAMPLES_ENABLE_F90:BOOL=ON \ -DFortran_INSTALL_MODDIR:PATH=%{_fmoddir}/%{name} \ %endif -DUSE_GENERIC_MATH:BOOL=ON \ -DOPENMP_ENABLE:BOOL=ON \ %if %{with pthread} -DPTHREAD_ENABLE:BOOL=ON \ %endif -DSUNDIALS_PRECISION:STRING=double \ %if 0%{?with_superlumt} -DSUPERLUMT_ENABLE:BOOL=ON \ -DSUPERLUMT_INCLUDE_DIR:PATH=%{_includedir}/SuperLUMT \ -DSUPERLUMT_LIBRARY_DIR:PATH=%{_libdir} \ -DSUPERLUMT_THREAD_TYPE:STRING=OpenMP \ %endif -DSUPERLUDIST_ENABLE:BOOL=OFF \ -DHYPRE_ENABLE:BOOL=OFF \ -DEXAMPLES_INSTALL:BOOL=OFF \ -DSUNDIALS_BUILD_WITH_MONITORING:BOOL=ON -Wno-dev %make_build V=1 -C sundials-%{version}/build ############################################################################# ####### %if 0%{?with_openmpi} mkdir -p buildopenmpi_dir/build %{_openmpi_load} ## Blas export LIBBLASLINK=-l%{blaslib}%{blasvar} export INCBLAS=%{_includedir}/%{blaslib} ## ## SuperLUMT %if 0%{?with_superlumt} %ifarch s390x x86_64 %{power64} aarch64 export LIBSUPERLUMTLINK=-lsuperlumt64_d %endif %ifarch %{arm} %{ix86} export LIBSUPERLUMTLINK=-lsuperlumt_d %endif %endif ## Hypre %if 0%{?with_hypre} export LIBHYPRELINK="-L$MPI_LIB -lHYPRE" %endif ## # Force MPI compilers export CC=$MPI_BIN/mpicc export CXX=$MPI_BIN/mpic++ %if 0%{?fedora} export FC=$MPI_BIN/mpifort %else export FC=$MPI_BIN/mpif77 %endif ## %if %{with debug} %undefine _hardened_build export CFLAGS=" " export FFLAGS=" " export FCFLAGS=" " %{_bindir}/cmake -B buildopenmpi_dir/build -S buildopenmpi_dir \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Debug \ -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_CXX_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \ %else export CFLAGS="%{build_cflags}" export FFLAGS="%{build_fflags}" %cmake -B buildopenmpi_dir/build -S buildopenmpi_dir \ -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ %endif %if 0%{?with_klu64} -DSUNDIALS_INDEX_SIZE:STRING=64 \ -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu64.so \ -DAMD_LIBRARY=%{_libdir}/libamd64.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DBTF_LIBRARY=%{_libdir}/libbtf64.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ -DCOLAMD_LIBRARY=%{_libdir}/libcolamd64.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ -DPETSC_ENABLE:BOOL=OFF \ %endif %if 0%{?with_klu} -DSUNDIALS_INDEX_SIZE:STRING=32 \ -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu.so \ -DAMD_LIBRARY=%{_libdir}/libamd.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DBTF_LIBRARY=%{_libdir}/libbtf.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ -DCOLAMD_LIBRARY=%{_libdir}/libcolamd.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ %if 0%{?with_petsc} -DPETSC_ENABLE:BOOL=ON \ -DPETSC_INCLUDES:PATH=$MPI_INCLUDE/petsc \ -DPETSC_LIBRARIES:PATH=$MPI_LIB/libpetsc.so \ -DPETSC_EXECUTABLE_RUNS:BOOL=ON \ %endif %endif -DSUNDIALS_BUILD_WITH_PROFILING:BOOL=OFF \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \ -DMPI_INCLUDE_PATH:PATH=$MPI_INCLUDE \ -DCMAKE_INSTALL_INCLUDEDIR:PATH=$MPI_INCLUDE \ -DLAPACK_ENABLE:BOOL=OFF \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DCMAKE_INSTALL_LIBDIR:PATH=%{_lib}/openmpi/lib \ -DPYTHON_EXECUTABLE:FILEPATH=%{__python3} \ -DEXAMPLES_ENABLE_CXX:BOOL=ON -DEXAMPLES_ENABLE_C:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_LIBS:BOOL=ON \ -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ -DMPI_ENABLE:BOOL=ON \ %if 0%{?with_fortran} %if 0%{?fedora} -DMPI_Fortran_COMPILER:STRING=$MPI_BIN/mpifort \ %else -DMPI_Fortran_COMPILER:STRING=$MPI_BIN/mpif77 \ %endif -DF77_INTERFACE_ENABLE:BOOL=ON \ -DEXAMPLES_ENABLE_F77:BOOL=ON \ %if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 -DF2003_INTERFACE_ENABLE:BOOL=ON \ %endif -DEXAMPLES_ENABLE_F90:BOOL=ON \ -DFortran_INSTALL_MODDIR:PATH=$MPI_FORTRAN_MOD_DIR/%{name} \ %endif -DUSE_GENERIC_MATH:BOOL=ON \ -DOPENMP_ENABLE:BOOL=ON \ %if %{with pthread} -DPTHREAD_ENABLE:BOOL=ON \ %endif %if 0%{?with_superlumt} -DSUPERLUMT_ENABLE:BOOL=ON \ -DSUPERLUMT_INCLUDE_DIR:PATH=%{_includedir}/SuperLUMT \ -DSUPERLUMT_LIBRARY_DIR:PATH=%{_libdir} \ -DSUPERLUMT_THREAD_TYPE:STRING=OpenMP \ %endif %if 0%{?with_superludist} -DSUPERLUDIST_ENABLE:BOOL=ON \ -DSUPERLUDIST_INCLUDE_DIR:PATH=$MPI_INCLUDE/superlu_dist \ -DSUPERLUDIST_LIBRARY_DIR:PATH=$MPI_LIB \ -DSUPERLUDIST_LIBRARIES:STRING=libsuperlu_dist.so \ %endif %if 0%{?with_hypre} -DHYPRE_ENABLE:BOOL=ON \ -DHYPRE_INCLUDE_DIR:PATH=$MPI_INCLUDE/hypre \ -DHYPRE_LIBRARY_DIR:PATH=$MPI_LIB \ %endif -DEXAMPLES_INSTALL:BOOL=OFF \ -DSUNDIALS_BUILD_WITH_MONITORING:BOOL=ON -Wno-dev %make_build V=1 -C buildopenmpi_dir/build %{_openmpi_unload} %endif ###### ########################################################################### %if 0%{?with_mpich} mkdir -p buildmpich_dir/build %{_mpich_load} ## Blas export LIBBLASLINK=-l%{blaslib}%{blasvar} export INCBLAS=%{_includedir}/%{blaslib} ## ## SuperLUMT %if 0%{?with_superlumt} %ifarch s390x x86_64 %{power64} aarch64 export LIBSUPERLUMTLINK=-lsuperlumt64_d %endif %ifarch %{arm} %{ix86} export LIBSUPERLUMTLINK=-lsuperlumt_d %endif %endif ## Hypre %if 0%{?with_hypre} export LIBHYPRELINK="-L$MPI_LIB -lHYPRE" %endif ## # Force MPI compilers export CC=$MPI_BIN/mpicc export CXX=$MPI_BIN/mpic++ %if 0%{?fedora} export FC=$MPI_BIN/mpifort %else export FC=$MPI_BIN/mpif77 %endif ## %if %{with debug} %undefine _hardened_build export CFLAGS=" " export FFLAGS=" " export FCFLAGS=" " %{_bindir}/cmake -B buildmpich_dir/build -S buildmpich_dir \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Debug \ -DCMAKE_C_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_Fortran_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_CXX_FLAGS_DEBUG:STRING="-O0 -g %{__global_ldflags} -I$INCBLAS" \ -DCMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING="%{__global_ldflags} $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \ %else export CFLAGS="%{build_cflags}" export FFLAGS="%{build_fflags}" %cmake -B buildmpich_dir/build -S buildmpich_dir \ -DCMAKE_C_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ -DCMAKE_Fortran_FLAGS_RELEASE:STRING="%{optflags} -I$INCBLAS" \ %endif %if 0%{?with_klu64} -DSUNDIALS_INDEX_SIZE:STRING=64 \ -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu64.so \ -DAMD_LIBRARY=%{_libdir}/libamd64.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DBTF_LIBRARY=%{_libdir}/libbtf64.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ -DCOLAMD_LIBRARY=%{_libdir}/libcolamd64.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ -DPETSC_ENABLE:BOOL=OFF \ %endif %if 0%{?with_klu} -DSUNDIALS_INDEX_SIZE:STRING=32 \ -DKLU_ENABLE=ON -DKLU_LIBRARY_DIR:PATH=%{_libdir} -DKLU_LIBRARY=%{_libdir}/libklu.so \ -DAMD_LIBRARY=%{_libdir}/libamd.so -DAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DBTF_LIBRARY=%{_libdir}/libbtf.so -DBTF_LIBRARY_DIR:PATH=%{_libdir} \ -DCOLAMD_LIBRARY=%{_libdir}/libcolamd.so -DCOLAMD_LIBRARY_DIR:PATH=%{_libdir} \ -DKLU_INCLUDE_DIR:PATH=%{_includedir}/suitesparse \ %if 0%{?with_petsc} -DPETSC_ENABLE:BOOL=ON \ -DPETSC_INCLUDES:PATH=$MPI_INCLUDE/petsc \ -DPETSC_LIBRARIES:PATH=$MPI_LIB/libpetsc.so \ -DPETSC_EXECUTABLE_RUNS:BOOL=ON \ %endif %endif -DSUNDIALS_BUILD_WITH_PROFILING:BOOL=OFF \ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING="%{__global_ldflags} $LIBBLASLINK $LIBSUPERLUMTLINK $LIBHYPRELINK" \ -DLAPACK_ENABLE:BOOL=OFF \ -DMPI_INCLUDE_PATH:PATH=$MPI_INCLUDE \ -DCMAKE_INSTALL_INCLUDEDIR:PATH=$MPI_INCLUDE \ -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} -DCMAKE_INSTALL_LIBDIR:PATH=%{_lib}/mpich/lib \ -DPYTHON_EXECUTABLE:FILEPATH=%{__python3} \ -DEXAMPLES_ENABLE_CXX:BOOL=ON -DEXAMPLES_ENABLE_C:BOOL=ON \ -DBUILD_SHARED_LIBS:BOOL=ON -DBUILD_STATIC_LIBS:BOOL=ON \ -DCMAKE_SKIP_RPATH:BOOL=YES -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \ -DMPI_ENABLE:BOOL=ON \ %if 0%{?with_fortran} %if 0%{?fedora} -DMPI_Fortran_COMPILER:STRING=$MPI_BIN/mpifort \ %else -DMPI_Fortran_COMPILER:STRING=$MPI_BIN/mpif77 \ %endif -DF77_INTERFACE_ENABLE:BOOL=ON \ -DEXAMPLES_ENABLE_F77:BOOL=ON \ %if %{?__isa_bits:%{__isa_bits}}%{!?__isa_bits:32} == 64 -DF2003_INTERFACE_ENABLE:BOOL=ON \ %endif -DEXAMPLES_ENABLE_F90:BOOL=ON \ -DFortran_INSTALL_MODDIR:PATH=$MPI_FORTRAN_MOD_DIR/%{name} \ %endif -DUSE_GENERIC_MATH:BOOL=ON \ -DOPENMP_ENABLE:BOOL=ON \ %if %{with pthread} -DPTHREAD_ENABLE:BOOL=ON \ %endif %if 0%{?with_superlumt} -DSUPERLUMT_ENABLE:BOOL=ON \ -DSUPERLUMT_INCLUDE_DIR:PATH=%{_includedir}/SuperLUMT \ -DSUPERLUMT_LIBRARY_DIR:PATH=%{_libdir} \ -DSUPERLUMT_THREAD_TYPE:STRING=OpenMP \ %endif %if 0%{?with_superludist} -DSUPERLUDIST_ENABLE:BOOL=ON \ -DSUPERLUDIST_INCLUDE_DIR:PATH=$MPI_INCLUDE/superlu_dist \ -DSUPERLUDIST_LIBRARY_DIR:PATH=$MPI_LIB \ -DSUPERLUDIST_LIBRARIES:STRING=libsuperlu_dist.so \ %endif %if 0%{?with_hypre} -DHYPRE_ENABLE:BOOL=ON \ -DHYPRE_INCLUDE_DIR:PATH=$MPI_INCLUDE/hypre \ -DHYPRE_LIBRARY_DIR:PATH=$MPI_LIB \ %endif -DEXAMPLES_INSTALL:BOOL=OFF \ -DSUNDIALS_BUILD_WITH_MONITORING:BOOL=ON -Wno-dev %make_build V=1 -C buildmpich_dir/build %{_mpich_unload} %endif ###### ############################################################################# %install %if 0%{?with_openmpi} %{_openmpi_load} %make_install -C buildopenmpi_dir/build rm -f %{buildroot}$MPI_INCLUDE/sundials/LICENSE rm -f %{buildroot}$MPI_INCLUDE/sundials/NOTICE %{_openmpi_unload} %endif %if 0%{?with_mpich} %{_mpich_load} %make_install -C buildmpich_dir/build rm -f %{buildroot}$MPI_INCLUDE/sundials/LICENSE rm -f %{buildroot}$MPI_INCLUDE/sundials/NOTICE %{_mpich_unload} %endif %make_install -C sundials-%{version}/build # Remove files in bad position rm -f %{buildroot}%{_prefix}/LICENSE rm -f %{buildroot}%{_includedir}/sundials/LICENSE rm -f %{buildroot}%{_includedir}/sundials/NOTICE %check %if 0%{?with_openmpi} %if 0%{?with_openmpicheck} %{_openmpi_load} %define _vpath_builddir buildopenmpi_dir/build %if %{with debug} export LD_LIBRARY_PATH=%{buildroot}$MPI_LIB:$MPI_LIB export OMPI_MCA_rmaps_base_oversubscribe=yes %ctest -- -VV --output-on-failure --debug %else export LD_LIBRARY_PATH=%{buildroot}$MPI_LIB:$MPI_LIB export OMPI_MCA_rmaps_base_oversubscribe=yes %ctest -- --output-on-failure -E 'test_sunlinsol_superlumt|test_fsunlinsol_dense_mod' %endif %{_openmpi_unload} %endif ## if with_openmpicheck %endif ## if with_openmpi %if 0%{?with_mpich} %if 0%{?with_mpichcheck} %{_mpich_load} %define _vpath_builddir buildmpich_dir/build %if %{with debug} export LD_LIBRARY_PATH=%{buildroot}$MPI_LIB:$MPI_LIB %ctest -- -VV --output-on-failure --debug %else export LD_LIBRARY_PATH=%{buildroot}$MPI_LIB:$MPI_LIB %ctest -- --output-on-failure -E 'test_sunlinsol_superlumt|test_fsunlinsol_dense_mod' %endif %{_mpich_unload} %endif ## if with_mpichcheck %endif ## if with_mpich %if 0%{?with_sercheck} %define _vpath_builddir sundials-%{version}/build %if %{with debug} export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:%{_libdir} %ctest -- -VV --output-on-failure --debug %else export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:%{_libdir} %ctest -- --output-on-failure -E 'test_sunlinsol_superlumt|test_fsunlinsol_dense_mod' %endif %endif ## if with_sercheck %files %license sundials-%{version}/LICENSE %doc sundials-%{version}/README.md %doc sundials-%{version}/src/README-arkode.md %doc sundials-%{version}/src/README-cvode.md %doc sundials-%{version}/src/README-cvodes.md %doc sundials-%{version}/src/README-ida.md %doc sundials-%{version}/src/README.idas.md %doc sundials-%{version}/src/README-kinsol.md %doc sundials-%{version}/NOTICE %{_libdir}/libsundials_generic.so.* %{_libdir}/libsundials_ida*.so.* %{_libdir}/libsundials_cvode*.so.* %{_libdir}/libsundials_arkode*.so.* %{_libdir}/libsundials_kinsol.so.* %{_libdir}/libsundials_nvecserial.so.* %{_libdir}/libsundials_nvecopenmp.so.* %{_libdir}/libsundials_nvecmanyvector.so.* %if %{with pthread} %{_libdir}/libsundials_nvecpthreads.so.* %endif %{_libdir}/libsundials_sunmatrix*.so.* %{_libdir}/libsundials_sunlinsol*.so.* %{_libdir}/libsundials_sunnonlinsol*.so.* %if 0%{?with_fortran} %{_libdir}/libsundials_f*[_mod].so.* %endif %files devel %{_libdir}/*.a %{_libdir}/libsundials_generic.so %{_libdir}/libsundials_ida*.so %{_libdir}/libsundials_cvode*.so %{_libdir}/libsundials_arkode*.so %{_libdir}/libsundials_kinsol.so %{_libdir}/libsundials_nvecserial.so %{_libdir}/libsundials_nvecopenmp.so %{_libdir}/libsundials_nvecmanyvector.so %{_libdir}/cmake/sundials/ %if %{with pthread} %{_libdir}/libsundials_nvecpthreads.so %endif %{_libdir}/libsundials_sunmatrix*.so %{_libdir}/libsundials_sunlinsol*.so %{_libdir}/libsundials_sunnonlinsol*.so %if 0%{?with_fortran} %{_libdir}/libsundials_f*[_mod].so %{_fmoddir}/%{name}/ %{_includedir}/sundials/sundials_futils.h %if %{with pthread} %{_libdir}/libsundials_fnvecpthreads.so %endif %if 0%{?with_superlumt} %{_libdir}/libsundials_sunlinsolsuperlumt.so %endif %endif %{_includedir}/nvector/ %{_includedir}/sunmatrix/ %{_includedir}/sunlinsol/ %{_includedir}/sunnonlinsol/ %{_includedir}/arkode/ %{_includedir}/cvode/ %{_includedir}/cvodes/ %{_includedir}/ida/ %{_includedir}/idas/ %{_includedir}/kinsol/ %dir %{_includedir}/sundials %{_includedir}/sundials/sundials_export.h %{_includedir}/sundials/sundials_band.h %{_includedir}/sundials/sundials_dense.h %{_includedir}/sundials/sundials_direct.h %{_includedir}/sundials/sundials_iterative.h %{_includedir}/sundials/sundials_linearsolver.h %{_includedir}/sundials/sundials_math.h %{_includedir}/sundials/sundials_matrix.h %{_includedir}/sundials/sundials_memory.h %{_includedir}/sundials/sundials_nonlinearsolver.h %{_includedir}/sundials/sundials_mpi_types.h %{_includedir}/sundials/sundials_nvector.h %{_includedir}/sundials/sundials_types.h %{_includedir}/sundials/sundials_version.h %{_includedir}/sundials/sundials_config.h %{_includedir}/sundials/sundials_base.hpp %{_includedir}/sundials/sundials_context.h %{_includedir}/sundials/sundials_context.hpp %{_includedir}/sundials/sundials_convertibleto.hpp %{_includedir}/sundials/sundials_linearsolver.hpp %{_includedir}/sundials/sundials_logger.h %{_includedir}/sundials/sundials_matrix.hpp %{_includedir}/sundials/sundials_memory.hpp %{_includedir}/sundials/sundials_nonlinearsolver.hpp %{_includedir}/sundials/sundials_nvector.hpp %{_includedir}/sundials/sundials_profiler.h %{_includedir}/sunmemory/sunmemory_system.h %if 0%{?with_openmpi} %files openmpi %license sundials-%{version}/LICENSE %doc sundials-%{version}/README.md %doc sundials-%{version}/src/README-arkode.md %doc sundials-%{version}/src/README-cvode.md %doc sundials-%{version}/src/README-cvodes.md %doc sundials-%{version}/src/README-ida.md %doc sundials-%{version}/src/README.idas.md %doc sundials-%{version}/src/README-kinsol.md %doc sundials-%{version}/NOTICE %{_libdir}/openmpi/lib/libsundials_generic.so.* %{_libdir}/openmpi/lib/libsundials_nvecparallel.so.* %{_libdir}/openmpi/lib/libsundials_nvecparhyp.so.* %if 0%{?fedora} %ifarch %{arm} %{ix86} %if 0%{?with_petsc} %{_libdir}/openmpi/lib/libsundials_nvecpetsc.so.* %{_libdir}/openmpi/lib/libsundials_sunnonlinsolpetscsnes.so.* %endif %endif %endif %if %{with pthread} %{_libdir}/openmpi/lib/libsundials_nvecmpipthreads.so.* %endif %{_libdir}/openmpi/lib/libsundials_nvecmpiplusx.so.* %{_libdir}/openmpi/lib/libsundials_kinsol.so.* %{_libdir}/openmpi/lib/libsundials_ida*.so.* %{_libdir}/openmpi/lib/libsundials_cvode*.so.* %{_libdir}/openmpi/lib/libsundials_arkode*.so.* %{_libdir}/openmpi/lib/libsundials_nvecserial.so.* %{_libdir}/openmpi/lib/libsundials_nvecopenmp.so.* %{_libdir}/openmpi/lib/libsundials_sunmatrix*.so.* %{_libdir}/openmpi/lib/libsundials_sunlinsol*.so.* %{_libdir}/openmpi/lib/libsundials_sunnonlinsol*.so.* %{_libdir}/openmpi/lib/libsundials_nvecmanyvector.so.* %{_libdir}/openmpi/lib/libsundials_nvecmpimanyvector.so.* %if %{with pthread} %{_libdir}/openmpi/lib/libsundials_nvecpthreads.so.* %endif %if 0%{?with_fortran} %{_libdir}/openmpi/lib/libsundials_f*[_mod].so.* %endif %files openmpi-devel %{_libdir}/openmpi/lib/*.a %{_includedir}/openmpi-%{_arch}/nvector/ %{_includedir}/openmpi-%{_arch}/sundials/ %{_includedir}/openmpi-%{_arch}/arkode/ %{_includedir}/openmpi-%{_arch}/cvode/ %{_includedir}/openmpi-%{_arch}/cvodes/ %{_includedir}/openmpi-%{_arch}/ida/ %{_includedir}/openmpi-%{_arch}/idas/ %{_includedir}/openmpi-%{_arch}/kinsol/ %{_includedir}/openmpi-%{_arch}/sunlinsol/ %{_includedir}/openmpi-%{_arch}/sunmatrix/ %{_includedir}/openmpi-%{_arch}/sunnonlinsol/ %{_includedir}/openmpi-%{_arch}/sunmemory/ %if 0%{?with_fortran} %{_fmoddir}/openmpi/%{name}/ %{_libdir}/openmpi/lib/libsundials_f*[_mod].so %endif %{_libdir}/openmpi/lib/libsundials_generic.so %{_libdir}/openmpi/lib/libsundials_nvecparallel.so %{_libdir}/openmpi/lib/libsundials_nvecparhyp.so %if 0%{?fedora} %ifarch %{arm} %{ix86} %if 0%{?with_petsc} %{_libdir}/openmpi/lib/libsundials_nvecpetsc.so %{_libdir}/openmpi/lib/libsundials_sunnonlinsolpetscsnes.so %endif %endif %endif %if %{with pthread} %{_libdir}/openmpi/lib/libsundials_nvecmpipthreads.so %{_libdir}/openmpi/lib/libsundials_nvecpthreads.so %endif %{_libdir}/openmpi/lib/libsundials_nvecmpiplusx.so %{_libdir}/openmpi/lib/libsundials_kinsol.so %{_libdir}/openmpi/lib/libsundials_ida*.so %{_libdir}/openmpi/lib/libsundials_cvode*.so %{_libdir}/openmpi/lib/libsundials_arkode*.so %{_libdir}/openmpi/lib/libsundials_nvecserial.so %{_libdir}/openmpi/lib/libsundials_nvecopenmp.so %{_libdir}/openmpi/lib/libsundials_sunmatrix*.so %{_libdir}/openmpi/lib/libsundials_sunlinsol*.so %{_libdir}/openmpi/lib/libsundials_sunnonlinsol*.so %{_libdir}/openmpi/lib/libsundials_nvecmanyvector.so %{_libdir}/openmpi/lib/libsundials_nvecmpimanyvector.so %{_libdir}/openmpi/lib/cmake/sundials/ %endif %if 0%{?with_mpich} %files mpich %license sundials-%{version}/LICENSE %doc sundials-%{version}/README.md %doc sundials-%{version}/src/README-arkode.md %doc sundials-%{version}/src/README-cvode.md %doc sundials-%{version}/src/README-cvodes.md %doc sundials-%{version}/src/README-ida.md %doc sundials-%{version}/src/README.idas.md %doc sundials-%{version}/src/README-kinsol.md %doc sundials-%{version}/NOTICE %{_libdir}/mpich/lib/libsundials_generic.so.* %{_libdir}/mpich/lib/libsundials_nvecparallel.so.* %{_libdir}/mpich/lib/libsundials_nvecparhyp.so.* %if 0%{?fedora} %ifarch %{arm} %{ix86} %if 0%{?with_petsc} %{_libdir}/mpich/lib/libsundials_nvecpetsc.so.* %{_libdir}/mpich/lib/libsundials_sunnonlinsolpetscsnes.so.* %endif %endif %endif %if %{with pthread} %{_libdir}/mpich/lib/libsundials_nvecmpipthreads.so.* %endif %{_libdir}/mpich/lib/libsundials_nvecmpiplusx.so.* %{_libdir}/mpich/lib/libsundials_kinsol.so.* %{_libdir}/mpich/lib/libsundials_ida*.so.* %{_libdir}/mpich/lib/libsundials_cvode*.so.* %{_libdir}/mpich/lib/libsundials_arkode*.so.* %{_libdir}/mpich/lib/libsundials_nvecserial.so.* %{_libdir}/mpich/lib/libsundials_nvecopenmp.so.* %{_libdir}/mpich/lib/libsundials_sunmatrix*.so.* %{_libdir}/mpich/lib/libsundials_sunlinsol*.so.* %{_libdir}/mpich/lib/libsundials_sunnonlinsol*.so.* %{_libdir}/mpich/lib/libsundials_nvecmanyvector.so.* %{_libdir}/mpich/lib/libsundials_nvecmpimanyvector.so.* %if %{with pthread} %{_libdir}/mpich/lib/libsundials_nvecpthreads.so.* %endif %if 0%{?with_fortran} %{_libdir}/mpich/lib/libsundials_f*[_mod].so.* %endif %files mpich-devel %{_includedir}/mpich-%{_arch}/nvector/ %{_includedir}/mpich-%{_arch}/sundials/ %{_includedir}/mpich-%{_arch}/arkode/ %{_includedir}/mpich-%{_arch}/cvode/ %{_includedir}/mpich-%{_arch}/cvodes/ %{_includedir}/mpich-%{_arch}/ida/ %{_includedir}/mpich-%{_arch}/idas/ %{_includedir}/mpich-%{_arch}/kinsol/ %{_includedir}/mpich-%{_arch}/sunlinsol/ %{_includedir}/mpich-%{_arch}/sunmatrix/ %{_includedir}/mpich-%{_arch}/sunnonlinsol/ %{_includedir}/mpich-%{_arch}/sunmemory/ %if 0%{?with_fortran} %{_fmoddir}/mpich/%{name}/ %{_libdir}/mpich/lib/libsundials_f*[_mod].so %endif %{_libdir}/mpich/lib/*.a %{_libdir}/mpich/lib/libsundials_generic.so %{_libdir}/mpich/lib/libsundials_nvecparallel.so %{_libdir}/mpich/lib/libsundials_nvecparhyp.so %if 0%{?fedora} %ifarch %{arm} %{ix86} %if 0%{?with_petsc} %{_libdir}/mpich/lib/libsundials_nvecpetsc.so %{_libdir}/mpich/lib/libsundials_sunnonlinsolpetscsnes.so %endif %endif %endif %if %{with pthread} %{_libdir}/mpich/lib/libsundials_nvecmpipthreads.so %{_libdir}/mpich/lib/libsundials_nvecpthreads.so %endif %{_libdir}/mpich/lib/libsundials_nvecmpiplusx.so %{_libdir}/mpich/lib/libsundials_kinsol.so %{_libdir}/mpich/lib/libsundials_ida*.so %{_libdir}/mpich/lib/libsundials_cvode*.so %{_libdir}/mpich/lib/libsundials_arkode*.so %{_libdir}/mpich/lib/libsundials_nvecserial.so %{_libdir}/mpich/lib/libsundials_nvecopenmp.so %{_libdir}/mpich/lib/libsundials_sunmatrix*.so %{_libdir}/mpich/lib/libsundials_sunlinsol*.so %{_libdir}/mpich/lib/libsundials_sunnonlinsol*.so %{_libdir}/mpich/lib/libsundials_nvecmanyvector.so %{_libdir}/mpich/lib/libsundials_nvecmpimanyvector.so %{_libdir}/mpich/lib/cmake/sundials/ %endif %files doc %license sundials-%{version}/LICENSE %doc sundials-%{version}/README.md %doc sundials-%{version}/NOTICE %doc sundials-%{version}/doc/arkode/* %changelog %autochangelog