# CMake script for finding CHOLMOD
# Thomas Zwinger, CSC - IT Center for Science Ltd.
# 2024/01
#
# CHOLMOD_INCLUDE_DIR - user modifiable choice of where to CHOLMOD include dir
# CHOLMOD_LIBRARY - user modifiable choice of where CHOLMOD library is
# his module returns these variables for the rest of the project to use.
#
# CHOLMOD_FOUND - True if CHOLMOD found
# CHOLMOD_INCLUDE_DIR - CHOLMOD include dir.
# CHOLMOD_LIBRARIES - needed cuda libraries
# If CHOLMOD libraries are already defined, do nothing
IF(CHOLMOD_LIBRARIES AND CHOLMOD_INCLUDE_DIR)
SET(CHOLMOD_FOUND TRUE)
RETURN()
ENDIF()
# Try to find with CMake config file of upstream UMFPACK.
FIND_PACKAGE(CHOLMOD CONFIG)
IF(UMFPACK_LIBRARIES AND UMFPACK_INCLUDE_DIR)
RETURN()
ENDIF()
# Fall back to manual search
INCLUDE(FindPackageHandleStandardArgs)
SET(CHOLMOD_FOUND FALSE)
MESSAGE(STATUS "Finding CHOLMOD")
SET(CHOLMODINCLUDE
"${CHOLMODROOT}/include"
"$ENV{CHOLMODROOT}/include"
"${CHOLMODROOT}/include/suitesparse"
"$ENV{CHOLMODROOT}/include/suitesparse"
"${CHOLMOD_ROOT}/include"
"$ENV{CHOLMOD_ROOT}/include"
"${CHOLMOD_ROOT}/include/suitesparse"
"$ENV{CHOLMOD_ROOT}/include/suitesparse"
"${CMAKE_SOURCE_DIR}/cholmod/include"
INTERNAL
)
# Try to find CHOLMOD
FIND_PATH(CHOLMOD_INCLUDE_DIR
cholmod.h
HINTS
${CHOLMODINCLUDE}
)
SET(CHOLMODLIB
"${CHOLMODROOT}/lib"
"$ENV{CHOLMODROOT}/lib"
"${CHOLMODROOT}/lib64"
"$ENV{CHOLMODROOT}/lib64"
"${CHOLMOD_ROOT}/lib"
"$ENV{CHOLMOD_ROOT}/lib"
"${CHOLMOD_ROOT}/lib64"
"$ENV{CHOLMOD_ROOT}/lib64"
"${CMAKE_SOURCE_DIR}/cholmod/lib"
INTERNAL)
FIND_LIBRARY(CHOLMOD_LIB cholmod HINTS ${CHOLMODLIB})
IF (CHOLMOD_INCLUDE_DIR AND CHOLMOD_LIB)
UNSET(CHOLMOD_FAILMSG)
SET(CHOLMODLIBS_FOUND TRUE)
SET(CHOLMOD_LIBRARIES ${CHOLMOD_LIB})
ELSE()
SET(CHOLMOD_FAILMSG "CHOLMOD library not found.")
ENDIF()
IF (NOT CHOLMOD_FAILMSG)
SET(CHOLMOD_FOUND TRUE)
ENDIF()
IF (CHOLMOD_FOUND)
IF (NOT CHOLMOD_FIND_QUIETLY)
MESSAGE(STATUS "A library with CHOLMOD API found.")
MESSAGE(STATUS "CHOLMOD include dir: ${CHOLMOD_INCLUDE_DIR}")
MESSAGE(STATUS "CHOLMOD libraries: ${CHOLMOD_LIBRARIES}")
ENDIF()
ELSE()
IF (CHOLMOD_FIND_REQUIRED)
MESSAGE(FATAL_ERROR ${CHOLMOD_FAILMSG})
ENDIF()
ENDIF()
MARK_AS_ADVANCED(
CHOLMODINCLUDE
CHOLMODLIB
CHOLMOD_FAILMSG
CHOLMOD_FOUND
CHOLMOD_INCLUDE_DIR
CHOLMOD_LIBRARIES)