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