From 92787d9bcca34c5f1dac305a2bcd0d9861b81cd3 Mon Sep 17 00:00:00 2001 From: Franck HOUSSEN Date: Thu, 23 May 2019 22:55:46 +0200 Subject: [PATCH] Issue63 (#213) * Generate arpack.pc when configuring with cmake * Fix detection using pkg-config * Use correct cmake variable names --- CMakeLists.txt | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0ad229..15f9bb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,47 +66,47 @@ endfunction(pexamples) if (ICBEXMM) find_package(Eigen3) - if (NOT Eigen3_FOUND) # If not found, piggy-back pkg-config files. + if (NOT EIGEN3_FOUND) # If not found, piggy-back pkg-config files. message(WARNING "CMake didn't find the Eigen3 package. Try to look for pkg-config file...") - find_package(PkgConfig 3.2 REQUIRED) + find_package(PkgConfig REQUIRED) pkg_check_modules(EIGEN3 REQUIRED eigen3>=3.2) endif () find_program (BASH_PROGRAM bash) # Look for headers. - find_path(EIGEN3_SPARSE_DIR NAMES Sparse PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) - if (NOT EIGEN3_SPARSE_DIR) - message(FATAL_ERROR "-- Eigen/Sparse header not found.") - endif () - find_path(EIGEN3_ITERATIVE_SOLVER_DIR NAMES IterativeLinearSolvers PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_ITERATIVE_SOLVER_DIR NAMES IterativeLinearSolvers PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_ITERATIVE_SOLVER_DIR) message(FATAL_ERROR "-- Eigen/IterativeLinearSolvers header not found.") endif () - find_path(EIGEN3_SPARSELU_SOLVER_DIR NAMES SparseLU PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_SPARSE_DIR NAMES Sparse PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) + if (NOT EIGEN3_SPARSE_DIR) + message(FATAL_ERROR "-- Eigen/Sparse header not found.") + endif () + find_path(EIGEN3_SPARSELU_SOLVER_DIR NAMES SparseLU PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_SPARSELU_SOLVER_DIR) message(FATAL_ERROR "-- Eigen/SparseLU header not found.") endif () - find_path(EIGEN3_SPARSEQR_SOLVER_DIR NAMES SparseQR PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_SPARSEQR_SOLVER_DIR NAMES SparseQR PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_SPARSEQR_SOLVER_DIR) message(FATAL_ERROR "-- Eigen/SparseQR header not found.") endif () - find_path(EIGEN3_SPARSECHOLESKY_SOLVER_DIR NAMES SparseCholesky PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_SPARSECHOLESKY_SOLVER_DIR NAMES SparseCholesky PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_SPARSECHOLESKY_SOLVER_DIR) message(FATAL_ERROR "-- Eigen/SparseCholesky header not found.") endif () - find_path(EIGEN3_DENSE_DIR NAMES Dense PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_DENSE_DIR NAMES Dense PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_DENSE_DIR) message(FATAL_ERROR "-- Eigen/Dense header not found.") endif () - find_path(EIGEN3_DENSELU_DIR NAMES LU PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_DENSELU_DIR NAMES LU PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_DENSELU_DIR) message(FATAL_ERROR "-- Eigen/LU header not found.") endif () - find_path(EIGEN3_DENSEQR_DIR NAMES QR PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_DENSEQR_DIR NAMES QR PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_DENSEQR_DIR) message(FATAL_ERROR "-- Eigen/QR header not found.") endif () - find_path(EIGEN3_DENSECHOLESKY_DIR NAMES Cholesky PATHS ${EIGEN3_INCLUDE_DIRS} PATH_SUFFIXES Eigen) + find_path(EIGEN3_DENSECHOLESKY_DIR NAMES Cholesky PATHS ${EIGEN3_INCLUDE_DIR} PATH_SUFFIXES Eigen) if (NOT EIGEN3_DENSECHOLESKY_DIR) message(FATAL_ERROR "-- Eigen/Cholesky header not found.") endif () @@ -578,7 +578,7 @@ if(ICB) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/EXAMPLES/MATRIX_MARKET) add_executable(arpackmm EXAMPLES/MATRIX_MARKET/arpackmm.cpp) - target_include_directories(arpackmm PUBLIC ${PROJECT_SOURCE_DIR}/ICB ${EIGEN3_INCLUDE_DIRS}) # Get arpack.h + eigen + target_include_directories(arpackmm PUBLIC ${PROJECT_SOURCE_DIR}/ICB ${EIGEN3_INCLUDE_DIR}) # Get arpack.h + eigen target_link_libraries(arpackmm arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS}) configure_file(EXAMPLES/MATRIX_MARKET/As.mtx ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/As.mtx) configure_file(EXAMPLES/MATRIX_MARKET/An.mtx ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/An.mtx) @@ -648,13 +648,11 @@ set(includedir \${prefix}/${CMAKE_INSTALL_INCLUDEDIR}) set(PACKAGE_NAME ${PROJECT_NAME}) set(PACKAGE_VERSION ${arpack_ng_VERSION}) set(PACKAGE_URL "https://github.com/opencollab/arpack-ng/") -# TODO: Fill these in with something appropriate. -#set(LAPACK_LIBS) -#set(BLAS_LIBS) +set(LAPACK_LIBS ${LAPACK_LIBRARIES}) +set(BLAS_LIBS ${BLAS_LIBRARIES}) configure_file(arpack.pc.in arpack${LIBSUFFIX}.pc @ONLY) -#install(FILES ${CMAKE_CURRENT_BINARY_DIR}/arpack${LIBSUFFIX}.pc -# DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/arpack${LIBSUFFIX}.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) # We don't want this to run on every build. option(COVERALLS "Generate coveralls data" OFF) @@ -753,5 +751,5 @@ endif() libsummary("BLAS" "" "${BLAS_LIBRARIES}") libsummary("LAPACK" "" "${LAPACK_LIBRARIES}") if (ICBEXMM) - libsummary("EIGEN3" "${EIGEN3_INCLUDE_DIRS}" "") + libsummary("EIGEN3" "${EIGEN3_INCLUDE_DIR}" "") endif()