anchor.diff:  , gfortran
   , suitesparse
   , lapackSupport ? true
  -, kluSupport ? true }:
  -
  -assert (!blas.isILP64) && (!lapack.isILP64);
  +, kluSupport ? true
  +}:
   
   stdenv.mkDerivation rec {
     pname = "sundials";
  
positive.code:   cmakeFlags = [
      "-DEXAMPLES_INSTALL_PATH=${placeholder "out"}/share/examples"
    ] ++ stdenv.lib.optionals (lapackSupport) [
      "-DSUNDIALS_INDEX_TYPE=int32_t"
      "-DLAPACK_ENABLE=ON"
      "-DLAPACK_LIBRARIES=${lapack}/lib/liblapack${stdenv.hostPlatform.extensions.sharedLibrary}"
    ] ++ stdenv.lib.optionals (kluSupport) [
      "-DKLU_ENABLE=ON"
      "-DKLU_INCLUDE_DIR=${suitesparse.dev}/include"
      "-DKLU_LIBRARY_DIR=${suitesparse}/lib"
    ];
  
    doCheck = true;
    checkPhase = "make test";
  
    meta = with stdenv.lib; {
      description = "Suite of nonlinear differential/algebraic equation solvers";
  
negative.code: 
    buildInputs = [
      python
    ]
      ++ stdenv.lib.optionals (lapackSupport)
      # Check that the same index size is used for both libraries
      (assert (blas.isILP64 == lapack.isILP64); [
        gfortran
        blas
        lapack
      ])
    # KLU support is based on Suitesparse.
    # It is tested upstream according to the section 1.1.4 of
    # [INSTALL_GUIDE.pdf](https://raw.githubusercontent.com/LLNL/sundials/master/INSTALL_GUIDE.pdf)
  