From ee8103bebc9cfc8a159538dc128d02acc4157ac1 Mon Sep 17 00:00:00 2001 From: Matt Peddie Date: Wed, 20 Sep 2023 15:50:24 +1000 Subject: [PATCH 1/2] Add suitesparse finder file --- Findsuitesparse.cmake | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Findsuitesparse.cmake diff --git a/Findsuitesparse.cmake b/Findsuitesparse.cmake new file mode 100644 index 0000000..b0ed529 --- /dev/null +++ b/Findsuitesparse.cmake @@ -0,0 +1,47 @@ +if (TARGET suitesparse::suitesparse) + return() +endif() + +include(FindPackageHandleStandardArgs) + +if (APPLE) + file(GLOB SUITESPARSE_DIRS + /usr/local/Cellar/suitesparse/* + /opt/homebrew/Cellar/suitesparse/* + /usr/local/Cellar/suite-sparse/* + /opt/homebrew/Cellar/suite-sparse/* + ) +else () + file(GLOB SUITESPARSE_DIRS + /usr/include/suitesparse/* + ) +endif() + +find_path(suitesparse_INCLUDE_DIR + NAMES SuiteSparseQR.hpp cholmod.h + HINTS ${SUITESPARSE_DIRS} + PATH_SUFFIXES include +) + +find_library(suitesparse_LIBRARY + NAMES spqr cholmod + HINTS ${SUITESPARSE_DIRS} + PATH_SUFFIXES lib +) + +find_package_handle_standard_args(suitesparse REQUIRED_VARS + suitesparse_LIBRARY + suitesparse_INCLUDE_DIR +) + +if (suitesparse_FOUND) + mark_as_advanced(suitesparse_LIBRARY) + mark_as_advanced(suitesparse_INCLUDE_DIR) + + add_library(suitesparse::suitesparse UNKNOWN IMPORTED) + set_target_properties(suitesparse::suitesparse + PROPERTIES + IMPORTED_LOCATION ${suitesparse_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${suitesparse_INCLUDE_DIR} + ) +endif () From 61295a067979faf36308762e31fa0ea51dd6afab Mon Sep 17 00:00:00 2001 From: Matt Peddie Date: Thu, 21 Sep 2023 11:27:18 +1000 Subject: [PATCH 2/2] Split spqr and cholmod lib components --- Findsuitesparse.cmake | 53 ++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/Findsuitesparse.cmake b/Findsuitesparse.cmake index b0ed529..ab99dec 100644 --- a/Findsuitesparse.cmake +++ b/Findsuitesparse.cmake @@ -1,4 +1,4 @@ -if (TARGET suitesparse::suitesparse) +if (TARGET suitesparse::cholmod OR TARGET suitesparse::spqr) return() endif() @@ -12,36 +12,57 @@ if (APPLE) /opt/homebrew/Cellar/suite-sparse/* ) else () - file(GLOB SUITESPARSE_DIRS - /usr/include/suitesparse/* - ) + set(SUITESPARSE_DIRS /usr/include/suitesparse) endif() -find_path(suitesparse_INCLUDE_DIR - NAMES SuiteSparseQR.hpp cholmod.h +find_path(suitesparse_cholmod_INCLUDE_DIR + NAMES cholmod.h HINTS ${SUITESPARSE_DIRS} PATH_SUFFIXES include ) -find_library(suitesparse_LIBRARY - NAMES spqr cholmod +find_path(suitesparse_spqr_INCLUDE_DIR + NAMES SuiteSparseQR.hpp + HINTS ${SUITESPARSE_DIRS} + PATH_SUFFIXES include +) + +find_library(suitesparse_cholmod_LIBRARY + NAMES cholmod + HINTS ${SUITESPARSE_DIRS} + PATH_SUFFIXES lib +) + +find_library(suitesparse_spqr_LIBRARY + NAMES spqr HINTS ${SUITESPARSE_DIRS} PATH_SUFFIXES lib ) find_package_handle_standard_args(suitesparse REQUIRED_VARS - suitesparse_LIBRARY - suitesparse_INCLUDE_DIR + suitesparse_cholmod_LIBRARY + suitesparse_spqr_LIBRARY + suitesparse_cholmod_INCLUDE_DIR + suitesparse_spqr_INCLUDE_DIR ) if (suitesparse_FOUND) - mark_as_advanced(suitesparse_LIBRARY) - mark_as_advanced(suitesparse_INCLUDE_DIR) + mark_as_advanced(suitesparse_cholmod_LIBRARY) + mark_as_advanced(suitesparse_cholmod_INCLUDE_DIR) + + add_library(suitesparse::cholmod UNKNOWN IMPORTED) + set_target_properties(suitesparse::cholmod + PROPERTIES + IMPORTED_LOCATION ${suitesparse_cholmod_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${suitesparse_cholmod_INCLUDE_DIR} + ) - add_library(suitesparse::suitesparse UNKNOWN IMPORTED) - set_target_properties(suitesparse::suitesparse + mark_as_advanced(suitesparse_spqr_LIBRARY) + mark_as_advanced(suitesparse_spqr_INCLUDE_DIR) + add_library(suitesparse::spqr UNKNOWN IMPORTED) + set_target_properties(suitesparse::spqr PROPERTIES - IMPORTED_LOCATION ${suitesparse_LIBRARY} - INTERFACE_INCLUDE_DIRECTORIES ${suitesparse_INCLUDE_DIR} + IMPORTED_LOCATION ${suitesparse_spqr_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES ${suitesparse_spqr_INCLUDE_DIR} ) endif ()