eigen/cmake/FindSuperLU.cmake
Hans Johnson 6fb3e5f176 STYLE: Remove CMake-language block-end command arguments
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the block.
This is no longer the preferred style.
2019-10-31 11:36:27 -05:00

98 lines
2.2 KiB
CMake

# Umfpack lib usually requires linking to a blas library.
# It is up to the user of this module to find a BLAS and link to it.
if (SUPERLU_INCLUDES AND SUPERLU_LIBRARIES)
set(SUPERLU_FIND_QUIETLY TRUE)
endif ()
find_path(SUPERLU_INCLUDES
NAMES
supermatrix.h
PATHS
$ENV{SUPERLUDIR}
${INCLUDE_INSTALL_DIR}
PATH_SUFFIXES
superlu
SRC
)
find_library(SUPERLU_LIBRARIES
NAMES "superlu_5.2.1" "superlu_5.2" "superlu_5.1.1" "superlu_5.1" "superlu_5.0" "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)
check_cxx_source_compiles("
typedef int int_t;
#include <supermatrix.h>
#include <slu_util.h>
int main(void)
{
GlobalLU_t glu;
return 0;
}"
SUPERLU_HAS_GLOBALLU_T)
if(SUPERLU_HAS_GLOBALLU_T)
# at least 5.0
set(SUPERLU_VERSION_VAR "5.0")
elseif(SUPERLU_HAS_CLEAN_ENUMS)
# at least 4.3
set(SUPERLU_VERSION_VAR "4.3")
elseif(SUPERLU_HAS_GLOBAL_MEM_USAGE_T)
# at least 4.0
set(SUPERLU_VERSION_VAR "4.0")
else()
set(SUPERLU_VERSION_VAR "3.0")
endif()
cmake_pop_check_state()
if(SuperLU_FIND_VERSION)
if(${SUPERLU_VERSION_VAR} VERSION_LESS ${SuperLU_FIND_VERSION})
set(SUPERLU_VERSION_OK FALSE)
else()
set(SUPERLU_VERSION_OK TRUE)
endif()
else()
set(SUPERLU_VERSION_OK TRUE)
endif()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(SUPERLU
REQUIRED_VARS SUPERLU_INCLUDES SUPERLU_LIBRARIES SUPERLU_VERSION_OK
VERSION_VAR SUPERLU_VERSION_VAR)
mark_as_advanced(SUPERLU_INCLUDES SUPERLU_LIBRARIES)