diff --git a/cmake/modules/AddSuiteSparseFlags.cmake b/cmake/modules/AddSuiteSparseFlags.cmake
index 178b01598767c3ec308d2b14b3c1de27b9847404..06064c11754cf5decfe7ae7f52c653d5d35dfa48 100644
--- a/cmake/modules/AddSuiteSparseFlags.cmake
+++ b/cmake/modules/AddSuiteSparseFlags.cmake
@@ -20,9 +20,14 @@ set(HAVE_UMFPACK ${SuiteSparse_UMFPACK_FOUND})
 
 # register all SuiteSparse related flags
 if(SuiteSparse_FOUND)
+  set(HAVE_SUITESPARSE_FLAGS)
+  foreach(_component ${SuiteSparse_FOUND_COMPONENTS})
+    list(APPEND HAVE_SUITESPARSE_FLAGS "HAVE_SUITESPARSE_${_component}=1")
+  endforeach(_component)
   dune_register_package_flags(
-    COMPILE_DEFINITIONS "ENABLE_SUITESPARSE=1"
+    COMPILE_DEFINITIONS ${HAVE_SUITESPARSE_FLAGS}
     LIBRARIES SuiteSparse::SuiteSparse)
+  unset(HAVE_SUITESPARSE_FLAGS)
 endif()
 
 # Provide function to set target properties for linking to SuiteSparse
@@ -30,7 +35,9 @@ function(add_dune_suitesparse_flags _targets)
   if(SuiteSparse_FOUND)
     foreach(_target ${_targets})
       target_link_libraries(${_target} PUBLIC SuiteSparse::SuiteSparse)
-      target_compile_definitions(${_target} PUBLIC ENABLE_SUITESPARSE=1)
+      foreach(_component ${SuiteSparse_FOUND_COMPONENTS})
+        target_compile_definitions(${_target} PUBLIC HAVE_SUITESPARSE_${_component}=1)
+      endforeach(_component)
     endforeach(_target)
   endif()
 endfunction(add_dune_suitesparse_flags)
diff --git a/cmake/modules/FindSuiteSparse.cmake b/cmake/modules/FindSuiteSparse.cmake
index 46d9c0ba05f81abb62de1ba6c9033f356d5ff78e..0a34c961ca356fdebd400a92d805c13378037deb 100644
--- a/cmake/modules/FindSuiteSparse.cmake
+++ b/cmake/modules/FindSuiteSparse.cmake
@@ -216,6 +216,9 @@ find_package_handle_standard_args("SuiteSparse"
   HANDLE_COMPONENTS
 )
 
+# list to indicate which components are found
+set(SuiteSparse_FOUND_COMPONENTS)
+
 # if both headers and library for all required components are found,
 # then create imported targets for all components
 if(SuiteSparse_FOUND)
@@ -241,6 +244,9 @@ if(SuiteSparse_FOUND)
 
   foreach(_component ${SUITESPARSE_COMPONENTS})
     if(TARGET SuiteSparse::${_component})
+      # add component in the list of found components
+      list(APPEND SuiteSparse_FOUND_COMPONENTS ${_component})
+
       # Link required dependencies
       foreach(_dependency ${SUITESPARSE_${_component}_REQUIRED_DEPENDENCIES})
         target_link_libraries(SuiteSparse::${_component}
diff --git a/config.h.cmake b/config.h.cmake
index 057f1fd680bbc5a8e72e0e370452d8aad2ed59b8..ef4fef4a6ee1c5a61783a91bea22c43400fdbe06 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -95,48 +95,9 @@
 /* old feature support macros which were tested until 2.9, kept around for one more release */
 #define DUNE_HAVE_CXX_EXPERIMENTAL_MAKE_ARRAY 0
 
-/* Define to ENABLE_UMFPACK if the UMFPack library is available */
-#cmakedefine HAVE_UMFPACK ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse library is available */
-#cmakedefine HAVE_SUITESPARSE ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's AMD library is available */
-#cmakedefine HAVE_SUITESPARSE_AMD ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's BTF library is available */
-#cmakedefine HAVE_SUITESPARSE_BTF ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's CAMD library is available */
-#cmakedefine HAVE_SUITESPARSE_CAMD ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's CCOLAMD library is available */
-#cmakedefine HAVE_SUITESPARSE_CCOLAMD ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's CHOLMOD library is available */
-#cmakedefine HAVE_SUITESPARSE_CHOLMOD ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's COLAMD library is available */
-#cmakedefine HAVE_SUITESPARSE_COLAMD ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's CXSPARSE library is available */
-#cmakedefine HAVE_SUITESPARSE_CXSPARSE ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's KLU library is available */
-#cmakedefine HAVE_SUITESPARSE_KLU ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's LDL library is available */
-#cmakedefine HAVE_SUITESPARSE_LDL ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's RBIO library is available */
-#cmakedefine HAVE_SUITESPARSE_RBIO ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's SPQR library is available
-   and if it's version is at least 4.3 */
-#cmakedefine HAVE_SUITESPARSE_SPQR ENABLE_SUITESPARSE
-
-/* Define to ENABLE_SUITESPARSE if the SuiteSparse's UMFPACK library is available */
-#cmakedefine HAVE_SUITESPARSE_UMFPACK ENABLE_SUITESPARSE
+/* Define to ENABLE_UMFPACK if the UMFPack library is available. */
+/// \deprecated Use HAVE_SUITESPARSE_UMFPACK instead
+#define HAVE_UMFPACK HAVE_SUITESPARSE_UMFPACK
 
 /* Define to 1 if METIS is available */
 #cmakedefine HAVE_METIS ENABLE_METIS