diff --git a/MathLib/CMakeLists.txt b/MathLib/CMakeLists.txt
index 47b12d73e5b7f08e55261e5f249fc17bfe6c2e5e..bf640b887abedb211dfcf22c823f7264f1fba27c 100644
--- a/MathLib/CMakeLists.txt
+++ b/MathLib/CMakeLists.txt
@@ -65,10 +65,12 @@ set_target_properties(MathLib PROPERTIES LINKER_LANGUAGE CXX)
 
 target_link_libraries(MathLib
     AssemblerLib
-    sundials_cvode
-    sundials_nvecserial
 )
 
+if (CVODE_FOUND)
+	target_link_libraries(MathLib ${CVODE_LIBRARIES})
+endif()
+
 if(METIS_FOUND)
     target_link_libraries(MathLib ${METIS_LIBRARIES})
 endif()
diff --git a/MathLib/ODE/CVodeSolver.cpp b/MathLib/ODE/CVodeSolver.cpp
index 5e4c584b3123ee5e930fa278f46e5eb1d734aa02..5217b904c389ed20cfd19d84d7426e8108373796 100644
--- a/MathLib/ODE/CVodeSolver.cpp
+++ b/MathLib/ODE/CVodeSolver.cpp
@@ -6,7 +6,9 @@
  *              http://www.opengeosys.org/project/license
  *
  */
- 
+
+#ifdef CVODE_FOUND
+
 #include "CVodeSolver.h"
 
 #include <cassert>
@@ -346,3 +348,5 @@ double CVodeSolver::getTime() const
 CVodeSolver::~CVodeSolver() = default;
 
 }  // namespace MathLib
+
+#endif  // CVODE_FOUND
diff --git a/MathLib/ODE/ConcreteOdeSolver.h b/MathLib/ODE/ConcreteOdeSolver.h
index 891f7bafd9d3d813a2e656a55fd481950f015fd0..af5a69bc8834f07c3be08e591eb6a4a7b2347aa0 100644
--- a/MathLib/ODE/ConcreteOdeSolver.h
+++ b/MathLib/ODE/ConcreteOdeSolver.h
@@ -17,7 +17,9 @@
 #include "OdeSolver.h"
 #include "Handles.h"
 
+#ifdef CVODE_FOUND
 #include "CVodeSolver.h"
+#endif
 
 namespace MathLib
 {
@@ -117,9 +119,13 @@ template <unsigned NumEquations, typename... FunctionArguments>
 std::unique_ptr<OdeSolver<NumEquations, FunctionArguments...>> createOdeSolver(
     BaseLib::ConfigTree const& config)
 {
+#ifdef CVODE_FOUND
 	return std::unique_ptr<OdeSolver<NumEquations, FunctionArguments...>>(
 	    new ConcreteOdeSolver<NumEquations, CVodeSolver, FunctionArguments...>(
 	        config));
+#else
+	return nullptr;
+#endif  // CVODE_FOUND
 }
 
 }  // namespace MathLib
diff --git a/Tests/MathLib/TestCVode.cpp b/Tests/MathLib/TestCVode.cpp
index 46f6ac01022651a19ae30a6254cb2dc8473abdce..16be0e062e8e9665c0d5b0b6b1c0d998bd4bf5be 100644
--- a/Tests/MathLib/TestCVode.cpp
+++ b/Tests/MathLib/TestCVode.cpp
@@ -7,6 +7,8 @@
  *
  */
 
+#ifdef CVODE_FOUND
+
 #include <gtest/gtest.h>
 
 #include "MathLib/ODE/CVodeSolver.h"
@@ -235,3 +237,5 @@ TEST(MathLibCVodeTest, ExponentialWithJacobianNewton)
 		// std::printf("time: %g\n", time_reached);
 	}
 }
+
+#endif  // CVODE_FOUND
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 7bd6def3dba1d2639582dbd0ba22dc45699ae2ef..84d163bdf6d2695f7b34232def9002c375b72c20 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -149,3 +149,6 @@ endif()
 
 ## Sundials cvode ode-solver library
 find_package(CVODE)
+if(CVODE_FOUND)
+    add_definitions(-DCVODE_FOUND)
+endif() # CVODE_FOUND
diff --git a/scripts/cmake/cmake/FindCVODE.cmake b/scripts/cmake/cmake/FindCVODE.cmake
index 2d6f3ea01af990d69f51abf88d195442af6cc32d..78d4b50965400c75d07848a46eac42d83e288067 100644
--- a/scripts/cmake/cmake/FindCVODE.cmake
+++ b/scripts/cmake/cmake/FindCVODE.cmake
@@ -20,15 +20,26 @@ find_path(CVODE_INCLUDE_DIRS sundials_types.h
 	PATH_SUFFIXES include include/sundials
 )
 
-find_library(CVODE_LIBRARIES
+find_library(CVODE_LIBRARY
 	NAMES sundials_cvode
 	ENV CVODE_ROOT
 	PATH_SUFFIXES lib Lib
 )
 
+find_library(CVODE_NVECSERIAL
+	NAMES sundials_nvecserial
+	ENV CVODE_ROOT
+	PATH_SUFFIXES lib Lib
+)
+
 find_package_handle_standard_args(CVODE DEFAULT_MSG
-	CVODE_LIBRARIES
+	CVODE_LIBRARY
+	CVODE_NVECSERIAL
 	CVODE_INCLUDE_DIRS
 )
 
-mark_as_advanced(CVODE_INCLUDE_DIRS CVODE_LIBRARIES)
+if(CVODE_FOUND)
+	set(CVODE_LIBRARIES sundials_cvode sundials_nvecserial)
+endif()
+
+mark_as_advanced(CVODE_INCLUDE_DIRS CVODE_LIBRARY CVODE_NVECSERIAL)