diff --git a/cmake/modules/DuneIstlMacros.cmake b/cmake/modules/DuneIstlMacros.cmake
index fa3850ba9cb7accd6e6c58ed04a626937169e531..25777996ff239b6f7838b4de0be84666b640fc77 100644
--- a/cmake/modules/DuneIstlMacros.cmake
+++ b/cmake/modules/DuneIstlMacros.cmake
@@ -12,3 +12,5 @@ find_package(SuiteSparse OPTIONAL_COMPONENTS UMFPACK)
 include(AddSuiteSparseFlags)
 find_package(ARPACKPP)
 include(AddARPACKPPFlags)
+find_package(SuiteSparse OPTIONAL_COMPONENTS LDL SPQR)
+include(AddSuiteSparseFlags)
diff --git a/dune/istl/ldl.hh b/dune/istl/ldl.hh
index eaca1f2b0c16895b95ae0c8d9fb8259aec2645fe..ecb1d6061c64d59d215f48942c5a6cdac2efbcfb 100644
--- a/dune/istl/ldl.hh
+++ b/dune/istl/ldl.hh
@@ -3,7 +3,7 @@
 #ifndef DUNE_ISTL_LDL_HH
 #define DUNE_ISTL_LDL_HH
 
-#if HAVE_LDL || defined DOXYGEN
+#if HAVE_SUITESPARSE_LDL || defined DOXYGEN
 
 #include <iostream>
 #include <type_traits>
@@ -337,5 +337,5 @@ namespace Dune {
 
 }
 
-#endif //HAVE_LDL
+#endif //HAVE_SUITESPARSE_LDL
 #endif //DUNE_ISTL_LDL_HH
diff --git a/dune/istl/spqr.hh b/dune/istl/spqr.hh
index 8819d5d946c72ae002a16ccfccee74fb15c0300d..64cf9a8fa0240d28b1a504d86e0be2203c826cee 100644
--- a/dune/istl/spqr.hh
+++ b/dune/istl/spqr.hh
@@ -3,7 +3,7 @@
 #ifndef DUNE_ISTL_SPQR_HH
 #define DUNE_ISTL_SPQR_HH
 
-#if HAVE_SPQR || defined DOXYGEN
+#if HAVE_SUITESPARSE_SPQR || defined DOXYGEN
 
 #include <complex>
 #include <type_traits>
@@ -287,5 +287,5 @@ namespace Dune {
 
 }
 
-#endif //HAVE_SPQR
+#endif //HAVE_SUITESPARSE_SPQR
 #endif //DUNE_ISTL_SPQR_HH
diff --git a/dune/istl/test/ldltest.cc b/dune/istl/test/ldltest.cc
index af0784f37aaf66b73987a7ed7488441cdc0fa356..2abb4abd13316e8b3c439c2eff03c2709e3f49bf 100644
--- a/dune/istl/test/ldltest.cc
+++ b/dune/istl/test/ldltest.cc
@@ -14,7 +14,7 @@
 
 int main(int argc, char** argv)
 {
-#if HAVE_LDL
+#if HAVE_SUITESPARSE_LDL
   try
   {
     typedef double FIELD_TYPE;
@@ -81,8 +81,8 @@ int main(int argc, char** argv)
   {
     std::cerr << "Unknown exception" << std::endl;
   }
-#else // #if HAVE_LDL
+#else // HAVE_SUITESPARSE_LDL
   std::cerr << "You need SuiteSparse's LDL to run this test." << std::endl;
   return 77;
-#endif // #if HAVE_LDL
+#endif // HAVE_SUITESPARSE_LDL
 }
diff --git a/dune/istl/test/spqrtest.cc b/dune/istl/test/spqrtest.cc
index 43d0202415a8630d0499c946ce47e304ef47a0d5..14f8e13ca52a0ee45c8bc1d8e28af94f5f1e127b 100644
--- a/dune/istl/test/spqrtest.cc
+++ b/dune/istl/test/spqrtest.cc
@@ -15,7 +15,7 @@
 
 int main(int argc, char** argv)
 {
-#if HAVE_SPQR
+#if HAVE_SUITESPARSE_SPQR
   try
   {
     typedef double FIELD_TYPE;
@@ -82,8 +82,8 @@ int main(int argc, char** argv)
   {
     std::cerr << "Unknown exception" << std::endl;
   }
-#else // #if HAVE_SPQR
-  std::cerr << "You need SuiteSparse's LDL to run this test." << std::endl;
+#else // HAVE_SUITESPARSE_SPQR
+  std::cerr << "You need SuiteSparse's SPQR to run this test." << std::endl;
   return 77;
-#endif // #if HAVE_SPQR
+#endif // HAVE_SUITESPARSE_SPQR
 }