linux_xanmod: 5.11.14 -> 5.11.15
[NixPkgs.git] / pkgs / development / libraries / sundials / default.nix
blob3536ebd586e474b53240dca707656ea3f88de8d9
1 { lib, stdenv
2 , cmake
3 , fetchurl
4 , python
5 , blas
6 , lapack
7 , gfortran
8 , suitesparse
9 , lapackSupport ? true
10 , kluSupport ? true
13 stdenv.mkDerivation rec {
14   pname = "sundials";
15   version = "5.7.0";
17   outputs = [ "out" "examples" ];
19   src = fetchurl {
20     url = "https://computation.llnl.gov/projects/${pname}/download/${pname}-${version}.tar.gz";
21     sha256 = "jW3QlP7Mu41uzEE0DsFqZfq6yC7UQVAj9tfBwjkOovM=";
22   };
24   nativeBuildInputs = [ cmake ];
26   buildInputs = [
27     python
28   ]
29     ++ lib.optionals (lapackSupport)
30     # Check that the same index size is used for both libraries
31     (assert (blas.isILP64 == lapack.isILP64); [
32       gfortran
33       blas
34       lapack
35     ])
36   # KLU support is based on Suitesparse.
37   # It is tested upstream according to the section 1.1.4 of
38   # [INSTALL_GUIDE.pdf](https://raw.githubusercontent.com/LLNL/sundials/master/INSTALL_GUIDE.pdf)
39   ++ lib.optionals (kluSupport) [
40     suitesparse
41   ];
43   cmakeFlags = [
44     "-DEXAMPLES_INSTALL_PATH=${placeholder "examples"}/share/examples"
45   ] ++ lib.optionals (lapackSupport) [
46     "-DENABLE_LAPACK=ON"
47     "-DLAPACK_LIBRARIES=${lapack}/lib/liblapack${stdenv.hostPlatform.extensions.sharedLibrary}"
48   ] ++ lib.optionals (kluSupport) [
49     "-DENABLE_KLU=ON"
50     "-DKLU_INCLUDE_DIR=${suitesparse.dev}/include"
51     "-DKLU_LIBRARY_DIR=${suitesparse}/lib"
52   ] ++ [(
53     # Use the correct index type according to lapack and blas used. They are
54     # already supposed to be compatible but we check both for extra safety. 64
55     # should be the default but we prefer to be explicit, for extra safety.
56     if blas.isILP64 then
57       "-DSUNDIALS_INDEX_SIZE=64"
58     else
59       "-DSUNDIALS_INDEX_SIZE=32"
60   )]
61   ;
63   doCheck = true;
64   checkTarget = "test";
66   meta = with lib; {
67     description = "Suite of nonlinear differential/algebraic equation solvers";
68     homepage    = "https://computation.llnl.gov/projects/sundials";
69     platforms   = platforms.all;
70     maintainers = with maintainers; [ idontgetoutmuch ];
71     license     = licenses.bsd3;
72   };