changeset 22899:31bd8a50d44c

Add Sundials library support * build-aux/subst-config-vals.in.sh: Add configuration variables for sundials_ida, sundials_nvecserial and klu libraries. * build-aux/subst-cross-config-vals.in.sh: Add configuration variables for sundials_ida, sundials_nvecserial and klu libraries. * configure.ac: Check for sundials_ida, sundials_nvecserial and klu headers and functions. Check whether sundials_ida has been configured with double precision. Set configuration variables and flags. * libinterp/build-env.h: Add variables to build_env namespace. * libinterp/build-env.in.cc: Add variables to build_env namespace. * m4/acinclude.m4: Add macro to test whether sundials_ida has been configured with double precision. * src/mkoctfile.in.cc: Get variables in order to generate oct-file.
author Francesco Faccio <francesco.faccio@mail.polimi.it>
date Tue, 23 Aug 2016 02:13:28 +0200
parents 9baa19102908
children ee1c77705fcd
files build-aux/subst-config-vals.in.sh build-aux/subst-cross-config-vals.in.sh configure.ac libinterp/build-env.h libinterp/build-env.in.cc m4/acinclude.m4 src/mkoctfile.in.cc
diffstat 7 files changed, 146 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/build-aux/subst-config-vals.in.sh	Fri Dec 16 00:10:27 2016 -0500
+++ b/build-aux/subst-config-vals.in.sh	Tue Aug 23 02:13:28 2016 +0200
@@ -95,6 +95,9 @@
 HDF5_LDFLAGS="@HDF5_LDFLAGS@"
 HDF5_LIBS="@HDF5_LIBS@"
 includedir="@includedir@"
+KLU_CPPFLAGS="@KLU_CPPFLAGS@"
+KLU_LDFLAGS="@KLU_LDFLAGS@"
+KLU_LIBS="@KLU_LIBS@"
 LAPACK_LIBS="@LAPACK_LIBS@"
 LD_CXX="@LD_CXX@"
 LDFLAGS="@LDFLAGS@"
@@ -249,6 +252,9 @@
   $SED -e "s|%OCTAVE_CONF_HDF5_LDFLAGS%|\"${HDF5_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_HDF5_LIBS%|\"${HDF5_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_INCLUDEDIR%|\"${includedir}\"|" \
+  -e "s|%OCTAVE_CONF_KLU_CPPFLAGS%|\"${KLU_CPPFLAGS}\"|" \
+  -e "s|%OCTAVE_CONF_KLU_LDFLAGS%|\"${KLU_LDFLAGS}\"|" \
+  -e "s|%OCTAVE_CONF_KLU_LIBS%|\"${KLU_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_LAPACK_LIBS%|\"${LAPACK_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_LD_CXX%|\"${LD_CXX}\"|" \
   -e "s|%OCTAVE_CONF_LDFLAGS%|\"${LDFLAGS}\"|" \
--- a/build-aux/subst-cross-config-vals.in.sh	Fri Dec 16 00:10:27 2016 -0500
+++ b/build-aux/subst-cross-config-vals.in.sh	Tue Aug 23 02:13:28 2016 +0200
@@ -107,6 +107,9 @@
 HDF5_LDFLAGS="@HDF5_LDFLAGS@"
 HDF5_LIBS="@HDF5_LIBS@"
 includedir="@includedir@"
+KLU_CPPFLAGS="@KLU_CPPFLAGS@"
+KLU_LDFLAGS="@KLU_LDFLAGS@"
+KLU_LIBS="@KLU_LIBS@"
 LAPACK_LIBS="@LAPACK_LIBS@"
 LD_CXX="@LD_CXX@"
 LDFLAGS="@LDFLAGS@"
@@ -158,6 +161,12 @@
 SH_LDFLAGS="@SH_LDFLAGS@"
 STATIC_LIBS="@STATIC_LIBS@"
 SUITESPARSE_CONFIG_LIBS="@SUITESPARSE_CONFIG_LIBS@"
+SUNDIALS_IDA_CPPFLAGS="@SUNDIALS_IDA_CPPFLAGS@"
+SUNDIALS_IDA_LDFLAGS="@SUNDIALS_IDA_LDFLAGS@"
+SUNDIALS_IDA_LIBS="@SUNDIALS_IDA_LIBS@"
+SUNDIALS_NVECSERIAL_CPPFLAGS="@SUNDIALS_NVECSERIAL_CPPFLAGS@"
+SUNDIALS_NVECSERIAL_LDFLAGS="@SUNDIALS_NVECSERIAL_LDFLAGS@"
+SUNDIALS_NVECSERIAL_LIBS="@SUNDIALS_NVECSERIAL_LIBS@"
 TERM_LIBS="@TERM_LIBS@"
 UMFPACK_CPPFLAGS="@UMFPACK_CPPFLAGS@"
 UMFPACK_LDFLAGS="@UMFPACK_LDFLAGS@"
@@ -253,6 +262,9 @@
   $SED -e "s|%OCTAVE_CONF_HDF5_LDFLAGS%|\"${HDF5_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_HDF5_LIBS%|\"${HDF5_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_INCLUDEDIR%|\"${includedir}\"|" \
+    -e "s|%OCTAVE_CONF_KLU_CPPFLAGS%|\"${KLU_CPPFLAGS}\"|" \
+    -e "s|%OCTAVE_CONF_KLU_LDFLAGS%|\"${KLU_LDFLAGS}\"|" \
+    -e "s|%OCTAVE_CONF_KLU_LIBS%|\"${KLU_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_LAPACK_LIBS%|\"${LAPACK_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_LD_CXX%|\"${LD_CXX}\"|" \
   -e "s|%OCTAVE_CONF_LDFLAGS%|\"${LDFLAGS}\"|" \
@@ -312,6 +324,12 @@
   -e "s|%OCTAVE_CONF_SH_LDFLAGS%|\"${SH_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_STATIC_LIBS%|\"${STATIC_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_SUITESPARSE_CONFIG_LIBS%|\"${SUITESPARSE_CONFIG_LIBS}\"|" \
+    -e "s|%OCTAVE_CONF_SUNDIALS_IDA_CPPFLAGS%|\"${SUNDIALS_IDA_CPPFLAGS}\"|" \
+    -e "s|%OCTAVE_CONF_SUNDIALS_IDA_LDFLAGS%|\"${SUNDIALS_IDA_LDFLAGS}\"|" \
+    -e "s|%OCTAVE_CONF_SUNDIALS_IDA_LIBS%|\"${SUNDIALS_IDA_LIBS}\"|" \
+    -e "s|%OCTAVE_CONF_SUNDIALS_NVECSERIAL_CPPFLAGS%|\"${SUNDIALS_NVECSERIAL_CPPFLAGS}\"|" \
+    -e "s|%OCTAVE_CONF_SUNDIALS_NVECSERIAL_LDFLAGS%|\"${SUNDIALS_NVECSERIAL_LDFLAGS}\"|" \
+    -e "s|%OCTAVE_CONF_SUNDIALS_NVECSERIAL_LIBS%|\"${SUNDIALS_NVECSERIAL_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_TERM_LIBS%|\"${TERM_LIBS}\"|" \
   -e "s|%OCTAVE_CONF_UMFPACK_CPPFLAGS%|\"${UMFPACK_CPPFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_UMFPACK_LDFLAGS%|\"${UMFPACK_LDFLAGS}\"|" \
--- a/configure.ac	Fri Dec 16 00:10:27 2016 -0500
+++ b/configure.ac	Tue Aug 23 02:13:28 2016 +0200
@@ -1478,6 +1478,34 @@
 FFT_DIR="fftpack"
 AC_SUBST(FFT_DIR)
 
+### Check for KLU library and header.
+OCTAVE_CHECK_LIB(klu, KLU,
+  [KLU library not found.  This will result in some lack of functionality for sparse matrices],
+  [suitesparse/klu.h ufsparse/klu.h klu/klu.h klu.h], [klu_solve],
+  [], [don't use KLU library, disable some sparse matrix functionality])
+
+### Check for SUNDIALS_IDA library and header.
+save_CPPFLAGS="$CPPFLAGS"
+save_LIBS="$LIBS"
+CPPFLAGS="$KLU_CPPFLAGS $CPPFLAGS"
+LIBS="$KLU_LDFLAGS $KLU_LIBS $LIBS"
+OCTAVE_CHECK_LIB(sundials_ida, SUNDIALS_IDA,
+  [SUNDIALS_IDA library configured with klu not found. Solvers ode15i and ode15s will be disabled.],
+  [ida/ida.h ida.h], [IDAKLU], [], [],
+  [warn_sundials_ida=
+   OCTAVE_CHECK_SIZEOF_SUNDIALS_IDA_REALTYPE])
+LIBS="$save_LIBS"
+CPPFLAGS="$save_CPPFLAGS"
+
+## Additional check for sundials_nvecserial library
+OCTAVE_CHECK_LIB(sundials_nvecserial, SUNDIALS_NVECSERIAL,
+  [SUNDIALS_NVECSERIAL library not found. Solvers ode15i and ode15s will be disabled.],
+  [nvector/nvector_serial.h nvector_serial.h ], [N_VNew_Serial],[],[],[])
+
+if test -n "$SUNDIALS_IDA_LIBS" && test -n "$SUNDIALS_NVECSERIAL_LIBS" && test $octave_cv_sizeof_ida_double = yes; then
+  AC_DEFINE(HAVE_SUNDIALS, 1, [Define if you have both sundials_ida and sundials_nvecserial libraries.])
+fi
+
 ### Check for GLPK library and header.
 
 save_CPPFLAGS="$CPPFLAGS"
@@ -2951,6 +2979,12 @@
 
 FFTW_XLIBS="$FFTW3_LIBS $FFTW3F_LIBS"
 
+SUNDIALS_XCPPFLAGS="$SUNDIALS_IDA_CPPFLAGS $SUNDIALS_NVECSERIAL_CPPFLAGS $KLU_CPPFLAGS"
+
+SUNDIALS_XLDFLAGS="$SUNDIALS_IDA_LDFLAGS $SUNDIALS_NVECSERIAL_LDFLAGS $KLU_LDFLAGS"
+
+SUNDIALS_XLIBS="$SUNDIALS_IDA_LIBS $SUNDIALS_NVECSERIAL_LIBS $KLU_LIBS"
+
 SPARSE_XCPPFLAGS="$CHOLMOD_CPPFLAGS $UMFPACK_CPPFLAGS $AMD_CPPFLAGS $CAMD_CPPFLAGS $COLAMD_CPPFLAGS $CCOLAMD_CPPFLAGS $CXSPARSE_CPPFLAGS"
 
 SPARSE_XLDFLAGS="$CHOLMOD_LDFLAGS $UMFPACK_LDFLAGS $AMD_LDFLAGS $CAMD_LDFLAGS $COLAMD_LDFLAGS  $CCOLAMD_LDFLAGS $CXSPARSE_LDFLAGS"
@@ -2961,6 +2995,10 @@
 AC_SUBST(FFTW_XLDFLAGS)
 AC_SUBST(FFTW_XLIBS)
 
+AC_SUBST(SUNDIALS_XCPPFLAGS)
+AC_SUBST(SUNDIALS_XLDFLAGS)
+AC_SUBST(SUNDIALS_XLIBS)
+
 AC_SUBST(SPARSE_XCPPFLAGS)
 AC_SUBST(SPARSE_XLDFLAGS)
 AC_SUBST(SPARSE_XLIBS)
@@ -2969,9 +3007,9 @@
 
 AC_SUBST(GNULIB_LINK_DEPS)
 
-LIBOCTAVE_LINK_DEPS="$GNULIB_LINK_DEPS $CURL_LIBS $SPARSE_XLIBS $ARPACK_LIBS $QRUPDATE_LIBS $FFTW_XLIBS $LAPACK_LIBS $BLAS_LIBS $READLINE_LIBS $TERM_LIBS $LIBGLOB $PCRE_LIBS $DL_LIBS $PTHREAD_LIBS $FLIBS $LIBS"
-
-LIBOCTAVE_LINK_OPTS="$CURL_LDFLAGS $SPARSE_XLDFLAGS $ARPACK_LDFLAGS $QRUPDATE_LDFLAGS $FFTW_XLDFLAGS"
+LIBOCTAVE_LINK_DEPS="$GNULIB_LINK_DEPS $CURL_LIBS $SPARSE_XLIBS $ARPACK_LIBS $QRUPDATE_LIBS $FFTW_XLIBS $SUNDIALS_XLIBS $LAPACK_LIBS $BLAS_LIBS $READLINE_LIBS $TERM_LIBS $LIBGLOB $PCRE_LIBS $DL_LIBS $PTHREAD_LIBS $FLIBS $LIBS"
+
+LIBOCTAVE_LINK_OPTS="$CURL_LDFLAGS $SPARSE_XLDFLAGS $ARPACK_LDFLAGS $QRUPDATE_LDFLAGS $FFTW_XLDFLAGS $SUNDIALS_XLDFLAGS"
 
 AC_SUBST(LIBOCTAVE_LINK_DEPS)
 AC_SUBST(LIBOCTAVE_LINK_OPTS)
@@ -2982,9 +3020,9 @@
   LIBOCTINTERP_LINK_DEPS="$DLDFCN_LIBS"
 fi
 
-LIBOCTINTERP_LINK_DEPS="$LIBOCTINTERP_LINK_DEPS $FT2_LIBS $HDF5_LIBS $MAGICK_LIBS $Z_LIBS $FFTW_XLIBS $OPENGL_LIBS $FONTCONFIG_LIBS $FREETYPE_LIBS $X11_LIBS $CARBON_LIBS $GL2PS_LIBS $LLVM_LIBS $JAVA_LIBS $LAPACK_LIBS"
-
-LIBOCTINTERP_LINK_OPTS="$FT2_LDFLAGS $HDF5_LDFLAGS $MAGICK_LDFLAGS $Z_LDFLAGS $FFTW_XLDFLAGS $LLVM_LDFLAGS"
+LIBOCTINTERP_LINK_DEPS="$LIBOCTINTERP_LINK_DEPS $FT2_LIBS $HDF5_LIBS $MAGICK_LIBS $Z_LIBS $FFTW_XLIBS $SUNDIALS_XLIBS $OPENGL_LIBS $FONTCONFIG_LIBS $FREETYPE_LIBS $X11_LIBS $CARBON_LIBS $GL2PS_LIBS $LLVM_LIBS $JAVA_LIBS $LAPACK_LIBS"
+
+LIBOCTINTERP_LINK_OPTS="$FT2_LDFLAGS $HDF5_LDFLAGS $MAGICK_LDFLAGS $Z_LDFLAGS $FFTW_XLDFLAGS $SUNDIALS_XLDFLAGS $LLVM_LDFLAGS"
 
 OCTAVE_LINK_DEPS=""
 OCTAVE_LINK_OPTS=""
@@ -3255,6 +3293,9 @@
   Java JVM path:                 $JAVA_LDPATH
   Java CPPFLAGS:                 $JAVA_CPPFLAGS
   Java libraries:                $JAVA_LIBS
+  KLU CPPFLAGS:                $KLU_CPPFLAGS
+  KLU LDFLAGS:                 $KLU_LDFLAGS
+  KLU libraries:               $KLU_LIBS
   LAPACK libraries:              $LAPACK_LIBS
   LLVM CPPFLAGS:                 $LLVM_CPPFLAGS
   LLVM LDFLAGS:                  $LLVM_LDFLAGS
@@ -3291,6 +3332,12 @@
   Sndfile LDFLAGS:               $SNDFILE_LDFLAGS
   Sndfile libraries:             $SNDFILE_LIBS
   SuiteSparse config libraries:  $SUITESPARSE_CONFIG_LIBS
+  SUNDIALS_IDA CPPFLAGS:       $SUNDIALS_IDA_CPPFLAGS
+  SUNDIALS_IDA LDFLAGS:        $SUNDIALS_IDA_LDFLAGS
+  SUNDIALS_IDA libraries:      $SUNDIALS_IDA_LIBS
+  SUNDIALS_NVECSERIAL CPPFLAGS: $SUNDIALS_NVECSERIAL_CPPFLAGS
+  SUNDIALS_NVECSERIAL LDFLAGS: $SUNDIALS_NVECSERIAL_LDFLAGS
+  SUNDIALS_NVECSERIAL libraries: $SUNDIALS_NVECSERIAL_LIBS
   TERM libraries:                $TERM_LIBS
   UMFPACK CPPFLAGS:              $UMFPACK_CPPFLAGS
   UMFPACK LDFLAGS:               $UMFPACK_LDFLAGS
--- a/libinterp/build-env.h	Fri Dec 16 00:10:27 2016 -0500
+++ b/libinterp/build-env.h	Tue Aug 23 02:13:28 2016 +0200
@@ -104,6 +104,9 @@
     extern const char *HDF5_LDFLAGS;
     extern const char *HDF5_LIBS;
     extern const char *INCLUDEDIR;
+    extern const char *KLU_CPPFLAGS;
+    extern const char *KLU_LDFLAGS;
+    extern const char *KLU_LIBS;
     extern const char *LAPACK_LIBS;
     extern const char *LDFLAGS;
     extern const char *LD_CXX;
@@ -155,6 +158,12 @@
     extern const char *SH_LDFLAGS;
     extern const char *STATIC_LIBS;
     extern const char *SUITESPARSE_CONFIG_LIBS;
+    extern const char *SUNDIALS_IDA_CPPFLAGS;
+    extern const char *SUNDIALS_IDA_LDFLAGS;
+    extern const char *SUNDIALS_IDA_LIBS;
+    extern const char *SUNDIALS_NVECSERIAL_CPPFLAGS;
+    extern const char *SUNDIALS_NVECSERIAL_LDFLAGS;
+    extern const char *SUNDIALS_NVECSERIAL_LIBS;
     extern const char *TERM_LIBS;
     extern const char *UMFPACK_CPPFLAGS;
     extern const char *UMFPACK_LDFLAGS;
--- a/libinterp/build-env.in.cc	Fri Dec 16 00:10:27 2016 -0500
+++ b/libinterp/build-env.in.cc	Tue Aug 23 02:13:28 2016 +0200
@@ -173,6 +173,12 @@
 
     const char *INCLUDEDIR = %OCTAVE_CONF_INCLUDEDIR%;
 
+    const char *KLU_CPPFLAGS = %OCTAVE_CONF_KLU_CPPFLAGS%;
+
+    const char *KLU_LDFLAGS = %OCTAVE_CONF_KLU_LDFLAGS%;
+
+    const char *KLU_LIBS = %OCTAVE_CONF_KLU_LIBS%;
+
     const char *LAPACK_LIBS = %OCTAVE_CONF_LAPACK_LIBS%;
 
     const char *LDFLAGS = %OCTAVE_CONF_LDFLAGS%;
@@ -275,6 +281,18 @@
 
     const char *SUITESPARSE_CONFIG_LIBS = %OCTAVE_CONF_SUITESPARSE_CONFIG_LIBS%;
 
+    const char *SUNDIALS_IDA_CPPFLAGS = %OCTAVE_CONF_SUNDIALS_IDA_CPPFLAGS%;
+
+    const char *SUNDIALS_IDA_LDFLAGS = %OCTAVE_CONF_SUNDIALS_IDA_LDFLAGS%;
+
+    const char *SUNDIALS_IDA_LIBS = %OCTAVE_CONF_SUNDIALS_IDA_LIBS%;
+
+    const char *SUNDIALS_NVECSERIAL_CPPFLAGS = %OCTAVE_CONF_SUNDIALS_NVECSERIAL_CPPFLAGS%;
+
+    const char *SUNDIALS_NVECSERIAL_LDFLAGS = %OCTAVE_CONF_SUNDIALS_NVECSERIAL_LDFLAGS%;
+
+    const char *SUNDIALS_NVECSERIAL_LIBS = %OCTAVE_CONF_SUNDIALS_NVECSERIAL_LIBS%;
+
     const char *TERM_LIBS = %OCTAVE_CONF_TERM_LIBS%;
 
     const char *UMFPACK_CPPFLAGS = %OCTAVE_CONF_UMFPACK_CPPFLAGS%;
--- a/m4/acinclude.m4	Fri Dec 16 00:10:27 2016 -0500
+++ b/m4/acinclude.m4	Tue Aug 23 02:13:28 2016 +0200
@@ -1698,6 +1698,32 @@
   ])
 ])
 dnl
+dnl Check whether sundials_ida library is configured with double precision realtype
+dnl
+AC_DEFUN([OCTAVE_CHECK_SIZEOF_SUNDIALS_IDA_REALTYPE], [
+  AC_CACHE_CHECK([whether sundials_ida is configured with double precision realtype],
+    [octave_cv_sizeof_ida_double],
+    [AC_RUN_IFELSE([AC_LANG_PROGRAM([[
+        #if defined (HAVE_IDA_IDA_H)
+        #include <ida/ida.h>
+        #else
+        #include <ida.h>
+        #endif
+        #include <assert.h>
+        ]], [[
+        assert (sizeof (double) == sizeof (realtype));
+      ]])],
+      octave_cv_sizeof_ida_double=yes,
+      octave_cv_sizeof_ida_double=no)
+  ])
+  if test $octave_cv_sizeof_ida_double = yes; then
+    AC_DEFINE(HAVE_SUNDIALS_IDA_DOUBLE, 1,
+      [Define to 1 if sundials_ida is configured with realtype as double.])
+  else
+    warn_sundials_ida="sundials_ida library found, but it's not configured with double precision realtype; function ode15i and ode15s will be disabled"
+  fi
+])
+dnl
 dnl Add warning to final summary.
 dnl
 AC_DEFUN([OCTAVE_CONFIGURE_WARNING], [
--- a/src/mkoctfile.in.cc	Fri Dec 16 00:10:27 2016 -0500
+++ b/src/mkoctfile.in.cc	Tue Aug 23 02:13:28 2016 +0200
@@ -33,6 +33,7 @@
 #include <iostream>
 #include <fstream>
 #include <sstream>
+#include <vector>
 #include <cstdlib>
 
 #if defined (CROSS)
@@ -222,7 +223,9 @@
                                          %OCTAVE_CONF_FFTW3F_LDFLAGS%);
 
   vars["FFTW3F_LIBS"] = get_variable ("FFTW3F_LIBS", %OCTAVE_CONF_FFTW3F_LIBS%);
-
+  vars["KLU_LDFLAGS"] = get_variable ("KLU_LDFLAGS",
+                                        %OCTAVE_CONF_KLU_LDFLAGS%);
+  vars["KLU_LIBS"] = get_variable ("KLU_LIBS", %OCTAVE_CONF_KLU_LIBS%);
   vars["LIBS"] = get_variable ("LIBS", %OCTAVE_CONF_LIBS%);
 
   vars["FLIBS"] = get_variable ("FLIBS", %OCTAVE_CONF_FLIBS%);
@@ -250,6 +253,12 @@
 
   vars["F77_INTEGER8_FLAG"] = get_variable ("F77_INTEGER8_FLAG",
                                             %OCTAVE_CONF_F77_INTEGER_8_FLAG%);
+  vars["SUNDIALS_IDA_LDFLAGS"] = get_variable ("SUNDIALS_IDA_LDFLAGS",
+                                        %OCTAVE_CONF_SUNDIALS_IDA_LDFLAGS%);
+  vars["SUNDIALS_IDA_LIBS"] = get_variable ("SUNDIALS_IDA_LIBS", %OCTAVE_CONF_SUNDIALS_IDA_LIBS%);
+  vars["SUNDIALS_NVECSERIAL_LDFLAGS"] = get_variable ("SUNDIALS_NVECSERIAL_LDFLAGS",
+                                        %OCTAVE_CONF_SUNDIALS_NVECSERIAL_LDFLAGS%);
+  vars["SUNDIALS_NVECSERIAL_LIBS"] = get_variable ("SUNDIALS_NVECSERIAL_LIBS", %OCTAVE_CONF_SUNDIALS_NVECSERIAL_LIBS%);
 
   vars["ALL_FFLAGS"] = vars["FFLAGS"] + " " + vars["F77_INTEGER8_FLAG"];
 
@@ -266,9 +275,12 @@
     = (vars["LIBOCTINTERP"] + " " + vars["LIBOCTAVE"] + " "
        + vars["SPECIAL_MATH_LIB"]);
 
-  vars["FFTW_LIBS"]
-    = (vars["FFTW3_LDFLAGS"] + " " + vars["FFTW3_LIBS"] + " "
-       + vars["FFTW3F_LDFLAGS"] + " " + vars["FFTW3F_LIBS"]);
+  vars["FFTW_LIBS"] = vars["FFTW3_LDFLAGS"] + " " + vars["FFTW3_LIBS"] + " "
+                      + vars["FFTW3F_LDFLAGS"] + " " + vars["FFTW3F_LIBS"];
+
+  vars["SUNDIALS_LIBS"] = vars["SUNDIALS_IDA_LDFLAGS"] + " " + vars["SUNDIALS_IDA_LIBS"] + " "
+                          + vars["KLU_LDFLAGS"] + " " + vars["KLU_LIBS"] + " "
+                          + vars["SUNDIALS_NVECSERIAL_LDFLAGS"] + " " + vars["SUNDIALS_NVECSERIAL_LIBS"];
 }
 
 static std::string usage_msg = "usage: mkoctfile [options] file ...";