Extend superlu cmake script to check version

This commit is contained in:
Gael Guennebaud 2015-11-30 14:48:11 +01:00
parent afa11d646d
commit 6fcd316f23
3 changed files with 50 additions and 6 deletions

View File

@ -29,7 +29,7 @@ if(UMFPACK_FOUND AND BLAS_FOUND)
set(UMFPACK_ALL_LIBS ${UMFPACK_LIBRARIES} ${BLAS_LIBRARIES}) set(UMFPACK_ALL_LIBS ${UMFPACK_LIBRARIES} ${BLAS_LIBRARIES})
endif() endif()
find_package(SuperLU) find_package(SuperLU 4.0)
if(SUPERLU_FOUND AND BLAS_FOUND) if(SUPERLU_FOUND AND BLAS_FOUND)
add_definitions("-DEIGEN_SUPERLU_SUPPORT") add_definitions("-DEIGEN_SUPERLU_SUPPORT")
include_directories(${SUPERLU_INCLUDES}) include_directories(${SUPERLU_INCLUDES})

View File

@ -17,10 +17,54 @@ find_path(SUPERLU_INCLUDES
SRC SRC
) )
find_library(SUPERLU_LIBRARIES superlu PATHS $ENV{SUPERLUDIR} ${LIB_INSTALL_DIR} PATH_SUFFIXES lib) find_library(SUPERLU_LIBRARIES NAMES "superlu_4.3" "superlu_4.2" "superlu_4.1" "superlu_4.0" "superlu_3.1" "superlu_3.0" "superlu" PATHS $ENV{SUPERLUDIR} ${LIB_INSTALL_DIR} PATH_SUFFIXES lib)
if(SUPERLU_INCLUDES AND SUPERLU_LIBRARIES)
include(CheckCXXSourceCompiles)
include(CMakePushCheckState)
cmake_push_check_state()
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${SUPERLU_INCLUDES})
# check whether struct mem_usage_t is globally defined
check_cxx_source_compiles("
typedef int int_t;
#include <supermatrix.h>
#include <slu_util.h>
int main() {
mem_usage_t mem;
return 0;
}"
SUPERLU_HAS_GLOBAL_MEM_USAGE_T)
check_cxx_source_compiles("
typedef int int_t;
#include <supermatrix.h>
#include <superlu_enum_consts.h>
int main() {
return SLU_SINGLE;
}"
SUPERLU_HAS_CLEAN_ENUMS)
if(SUPERLU_HAS_CLEAN_ENUMS)
# at least 4.3
set(SUPERLU_VERSION_VAR "4.3")
elseif(SUPERLU_HAS_GLOBAL_MEM_USAGE_T)
# at least 4.3
set(SUPERLU_VERSION_VAR "4.0")
else()
set(SUPERLU_VERSION_VAR "3.0")
endif()
cmake_pop_check_state()
endif()
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SUPERLU DEFAULT_MSG find_package_handle_standard_args(SUPERLU
SUPERLU_INCLUDES SUPERLU_LIBRARIES) REQUIRED_VARS SUPERLU_INCLUDES SUPERLU_LIBRARIES
VERSION_VAR SUPERLU_VERSION_VAR)
mark_as_advanced(SUPERLU_INCLUDES SUPERLU_LIBRARIES) mark_as_advanced(SUPERLU_INCLUDES SUPERLU_LIBRARIES)

View File

@ -68,7 +68,7 @@ else()
ei_add_property(EIGEN_MISSING_BACKENDS "UmfPack, ") ei_add_property(EIGEN_MISSING_BACKENDS "UmfPack, ")
endif() endif()
find_package(SuperLU) find_package(SuperLU 4.0)
if(SUPERLU_FOUND) if(SUPERLU_FOUND)
add_definitions("-DEIGEN_SUPERLU_SUPPORT") add_definitions("-DEIGEN_SUPERLU_SUPPORT")
include_directories(${SUPERLU_INCLUDES}) include_directories(${SUPERLU_INCLUDES})