[CMake] Use targets following "modern CMake".
This commit is contained in:
+75
-59
@@ -20,8 +20,6 @@ option(ICB "Enable support for *[ae]upd_c with ISO_C_BINDING" OFF)
|
||||
option(ICBEXMM "Enable support for matrix market example based on ICB" OFF)
|
||||
option(PYTHON3 "Enable python3 support" OFF)
|
||||
set(BOOST_PYTHON_LIBSUFFIX "" CACHE STRING "suffix to add to custom boost python libs")
|
||||
#option(SYSTEM_BLAS "Use system BLAS" ON)
|
||||
#option(SYSTEM_LAPACK "Use system LAPACK" ON)
|
||||
option(EXAMPLES "Compile ARPACK examples" OFF)
|
||||
set(LIBSUFFIX ""
|
||||
CACHE STRING "suffix to add to ARPACK libraries names")
|
||||
@@ -52,7 +50,7 @@ function(examples list_name)
|
||||
foreach(l ${${list_name}})
|
||||
get_filename_component(lwe ${l} NAME_WE)
|
||||
add_executable(${lwe} ${arpackexample_DIR}/${l} ${examples_EXTRA_SRCS})
|
||||
target_link_libraries(${lwe} arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(${lwe} arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(NAME "${lwe}_ex" COMMAND ${lwe} WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
endforeach()
|
||||
endfunction(examples)
|
||||
@@ -61,7 +59,7 @@ function(pexamples list_name)
|
||||
foreach(l ${${list_name}})
|
||||
get_filename_component(lwe ${l} NAME_WE)
|
||||
add_executable(${lwe} ${parpackexample_DIR}/${l} )
|
||||
target_link_libraries(${lwe} parpack arpack ${MPI_Fortran_LIBRARIES})
|
||||
target_link_libraries(${lwe} parpack arpack MPI::MPI_Fortran)
|
||||
add_test(NAME "${lwe}_ex" COMMAND mpirun -n 2 ./${lwe} WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
endforeach()
|
||||
endfunction(pexamples)
|
||||
@@ -197,49 +195,74 @@ else()
|
||||
FortranCInterface_VERIFY()
|
||||
endif ()
|
||||
|
||||
#if (SYSTEM_BLAS)
|
||||
if (NOT TARGET BLAS::BLAS) # Search only if not already found by upper CMakeLists.txt
|
||||
find_package(BLAS REQUIRED)
|
||||
#endif()
|
||||
#if (BLAS_LIBRARIES)
|
||||
# set(SYSTEM_BLAS ON)
|
||||
#endif()
|
||||
|
||||
# BLAS::BLAS target was already created at this point by FindBLAS.cmake if cmake version >= 3.18
|
||||
if (NOT TARGET BLAS::BLAS) # Create target "at hand" to ensure compatibility if cmake version < 3.18
|
||||
add_library(BLAS::BLAS INTERFACE IMPORTED)
|
||||
set_target_properties(BLAS::BLAS PROPERTIES INTERFACE_LINK_LIBRARIES "${BLAS_LIBRARIES}")
|
||||
endif()
|
||||
endif()
|
||||
get_target_property(BLAS_LIBRARIES BLAS::BLAS INTERFACE_LINK_LIBRARIES) # Get variables from target (*.pc/cmake, msg).
|
||||
|
||||
if (MPI)
|
||||
include(FindMPI)
|
||||
find_package(MPI REQUIRED)
|
||||
include_directories(${MPI_Fortran_INCLUDE_PATH})
|
||||
if (NOT TARGET MPI::MPI_Fortran) # Search only if not already found by upper CMakeLists.txt
|
||||
include(FindMPI)
|
||||
find_package(MPI REQUIRED)
|
||||
|
||||
# MPI::MPI_* target was already created at this point by FindMPI.cmake if cmake version >= 3.9
|
||||
if (NOT TARGET MPI::MPI_Fortran) # Create target "at hand" to ensure compatibility if cmake version < 3.9
|
||||
add_library(MPI::MPI_Fortran INTERFACE IMPORTED)
|
||||
set_target_properties(MPI::MPI_Fortran PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MPI_Fortran_INCLUDE_DIRS}")
|
||||
set_target_properties(MPI::MPI_Fortran PROPERTIES INTERFACE_LINK_LIBRARIES "${MPI_Fortran_LIBRARIES}")
|
||||
endif()
|
||||
if (NOT TARGET MPI::MPI_C) # Create target "at hand" to ensure compatibility if cmake version < 3.9
|
||||
add_library(MPI::MPI_C INTERFACE IMPORTED)
|
||||
set_target_properties(MPI::MPI_C PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MPI_C_INCLUDE_DIRS}")
|
||||
set_target_properties(MPI::MPI_C PROPERTIES INTERFACE_LINK_LIBRARIES "${MPI_C_LIBRARIES}")
|
||||
endif()
|
||||
if (NOT TARGET MPI::MPI_CXX) # Create target "at hand" to ensure compatibility if cmake version < 3.9
|
||||
add_library(MPI::MPI_CXX INTERFACE IMPORTED)
|
||||
set_target_properties(MPI::MPI_CXX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${MPI_CXX_INCLUDE_DIRS}")
|
||||
set_target_properties(MPI::MPI_CXX PROPERTIES INTERFACE_LINK_LIBRARIES "${MPI_CXX_LIBRARIES}")
|
||||
endif()
|
||||
endif()
|
||||
get_target_property(MPI_Fortran_INCLUDE_DIRS MPI::MPI_Fortran INTERFACE_INCLUDE_DIRECTORIES) # Get variables from target (*.pc/cmake, msg).
|
||||
get_target_property(MPI_Fortran_LIBRARIES MPI::MPI_Fortran INTERFACE_LINK_LIBRARIES) # Get variables from target (*.pc/cmake, msg).
|
||||
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${MPI_Fortran_COMPILE_FLAG}")
|
||||
|
||||
if(ICB)
|
||||
include_directories(${MPI_C_INCLUDE_PATH})
|
||||
include_directories(${MPI_CXX_INCLUDE_PATH})
|
||||
get_target_property(MPI_C_INCLUDE_DIRS MPI::MPI_C INTERFACE_INCLUDE_DIRECTORIES) # Get variables from target (*.pc/cmake, msg).
|
||||
get_target_property(MPI_C_LIBRARIES MPI::MPI_C INTERFACE_LINK_LIBRARIES) # Get variables from target (*.pc/cmake, msg).
|
||||
get_target_property(MPI_CXX_INCLUDE_DIRS MPI::MPI_CXX INTERFACE_INCLUDE_DIRECTORIES) # Get variables from target (*.pc/cmake, msg).
|
||||
get_target_property(MPI_CXX_LIBRARIES MPI::MPI_CXX INTERFACE_LINK_LIBRARIES) # Get variables from target (*.pc/cmake, msg).
|
||||
|
||||
include(CheckSymbolExists)
|
||||
check_symbol_exists(MPI_Comm_c2f "${MPI_C_INCLUDE_PATH}/mpi.h" MPI_Comm_c2f_FOUND)
|
||||
check_symbol_exists(MPI_Comm_c2f "${MPI_C_INCLUDE_DIRS}/mpi.h" MPI_Comm_c2f_FOUND)
|
||||
if(NOT ${MPI_Comm_c2f_FOUND})
|
||||
message(FATAL_ERROR "symbol MPI_Comm_c2f does not exist")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#if (SYSTEM_LAPACK)
|
||||
if (NOT TARGET LAPACK::LAPACK) # Search only if not already found by upper CMakeLists.txt
|
||||
find_package(LAPACK REQUIRED)
|
||||
#endif()
|
||||
#if (BLAS_LIBRARIES)
|
||||
# set(SYSTEM_LAPACK ON)
|
||||
#endif()
|
||||
|
||||
# LAPACK::LAPACK target was already created at this point by FindLAPACK.cmake if cmake version >= 3.18
|
||||
if (NOT TARGET LAPACK::LAPACK) # Create target "at hand" to ensure compatibility if cmake version < 3.18
|
||||
add_library(LAPACK::LAPACK INTERFACE IMPORTED)
|
||||
set_target_properties(LAPACK::LAPACK PROPERTIES INTERFACE_LINK_LIBRARIES "${LAPACK_LIBRARIES}")
|
||||
endif()
|
||||
endif()
|
||||
get_target_property(LAPACK_LIBRARIES LAPACK::LAPACK INTERFACE_LINK_LIBRARIES) # Get variables from target (*.pc/cmake, msg).
|
||||
|
||||
if (MPI)
|
||||
set(parpackutil_DIR ${arpack_SOURCE_DIR}/PARPACK/UTIL/)
|
||||
set(parpacksrc_DIR ${arpack_SOURCE_DIR}/PARPACK/SRC/)
|
||||
endif()
|
||||
|
||||
#if (NOT SYSTEM_BLAS)
|
||||
# file(GLOB arpackblas_STAT_SRCS blas/*.f)
|
||||
#endif()
|
||||
#if (NOT SYSTEM_LAPACK)
|
||||
# file(GLOB arpacklapack_STAT_SRCS lapack/*.f)
|
||||
#endif()
|
||||
#file(GLOB arpackutil_STAT_SRCS util/*.f)
|
||||
file(GLOB arpacksrc_STAT_SRCS ${arpack_SOURCE_DIR}/dbgini.f ${arpack_SOURCE_DIR}/staini.f ${arpack_SOURCE_DIR}/SRC/*.f)
|
||||
|
||||
set(arpacksrc_ICB "")
|
||||
@@ -274,8 +297,8 @@ endif()
|
||||
# use -DBUILD_SHARED_LIBS=ON|OFF to control static/shared
|
||||
add_library(arpack ${arpackutil_STAT_SRCS} ${arpacksrc_STAT_SRCS} ${arpacksrc_ICB})
|
||||
|
||||
target_link_libraries(arpack ${BLAS_LIBRARIES})
|
||||
target_link_libraries(arpack ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(arpack BLAS::BLAS)
|
||||
target_link_libraries(arpack LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
set_target_properties(arpack PROPERTIES OUTPUT_NAME arpack${LIBSUFFIX})
|
||||
set_target_properties(arpack PROPERTIES VERSION 2.1.0)
|
||||
set_target_properties(arpack PROPERTIES SOVERSION 2)
|
||||
@@ -284,14 +307,7 @@ if (MPI)
|
||||
# use -DBUILD_SHARED_LIBS=ON|OFF to control static/shared
|
||||
add_library(parpack ${parpacksrc_STAT_SRCS} ${parpackutil_STAT_SRCS} ${parpacksrc_ICB})
|
||||
|
||||
if (ICB)
|
||||
target_include_directories(parpack PUBLIC ${MPI_C_INCLUDE_DIRS})
|
||||
target_include_directories(parpack PUBLIC ${MPI_CXX_INCLUDE_DIRS})
|
||||
target_link_libraries(parpack ${MPI_C_LIBRARIES})
|
||||
target_link_libraries(parpack ${MPI_CXX_LIBRARIES})
|
||||
endif()
|
||||
target_include_directories(parpack PUBLIC ${MPI_Fortran_INCLUDE_DIRS})
|
||||
target_link_libraries(parpack ${MPI_Fortran_LIBRARIES})
|
||||
target_link_libraries(parpack MPI::MPI_Fortran)
|
||||
target_link_libraries(parpack arpack)
|
||||
set_target_properties(parpack PROPERTIES OUTPUT_NAME parpack${LIBSUFFIX})
|
||||
set_target_properties(parpack PROPERTIES VERSION 2.1.0)
|
||||
@@ -504,7 +520,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/TESTS)
|
||||
|
||||
add_executable(dnsimp_test TESTS/dnsimp.f TESTS/mmio.f TESTS/debug.h)
|
||||
set_target_properties( dnsimp_test PROPERTIES OUTPUT_NAME dnsimp )
|
||||
target_link_libraries(dnsimp_test arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(dnsimp_test arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_custom_command(TARGET dnsimp_test POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/TESTS/testA.mtx testA.mtx
|
||||
)
|
||||
@@ -512,39 +528,39 @@ add_test(dnsimp_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/dnsimp)
|
||||
|
||||
if (NOT ICB)
|
||||
add_executable(bug_1315_single TESTS/bug_1315_single.c)
|
||||
target_link_libraries(bug_1315_single arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_1315_single arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_1315_single_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_1315_single)
|
||||
|
||||
add_executable(bug_1315_double TESTS/bug_1315_double.c)
|
||||
target_link_libraries(bug_1315_double arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_1315_double arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_1315_double_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_1315_double)
|
||||
endif()
|
||||
|
||||
add_executable(bug_1323 TESTS/bug_1323.f)
|
||||
target_link_libraries(bug_1323 arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_1323 arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_1323_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_1323)
|
||||
|
||||
add_executable(bug_58_double TESTS/bug_58_double.f)
|
||||
target_link_libraries(bug_58_double arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_58_double arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_58_double_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_58_double)
|
||||
|
||||
add_executable(bug_79_double_complex TESTS/bug_79_double_complex.f)
|
||||
target_link_libraries(bug_79_double_complex arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_79_double_complex arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_79_double_complex_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_79_double_complex)
|
||||
|
||||
add_executable(bug_142 TESTS/bug_142.f)
|
||||
target_link_libraries(bug_142 arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_142 arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_142_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_142)
|
||||
|
||||
add_executable(bug_142_gen TESTS/bug_142_gen.f)
|
||||
target_link_libraries(bug_142_gen arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_142_gen arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(bug_142_gen_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bug_142_gen)
|
||||
|
||||
if(MPI)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/PARPACK/TESTS/MPI)
|
||||
|
||||
add_executable(issue46 PARPACK/TESTS/MPI/issue46.f)
|
||||
target_link_libraries(issue46 parpack arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(issue46 parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(issue46_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/issue46)
|
||||
endif()
|
||||
|
||||
@@ -553,12 +569,12 @@ if(ICB)
|
||||
|
||||
add_executable(icb_arpack_c TESTS/icb_arpack_c.c)
|
||||
target_include_directories(icb_arpack_c PUBLIC ${PROJECT_SOURCE_DIR}/ICB) # Get arpack.h
|
||||
target_link_libraries(icb_arpack_c arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(icb_arpack_c arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(icb_arpack_c_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/icb_arpack_c)
|
||||
|
||||
add_executable(icb_arpack_cpp TESTS/icb_arpack_cpp.cpp)
|
||||
target_include_directories(icb_arpack_cpp PUBLIC ${PROJECT_SOURCE_DIR}/ICB) # Get arpack.hpp
|
||||
target_link_libraries(icb_arpack_cpp arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS})
|
||||
target_link_libraries(icb_arpack_cpp arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
add_test(icb_arpack_cpp_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/icb_arpack_cpp)
|
||||
|
||||
if (ICBEXMM)
|
||||
@@ -566,7 +582,7 @@ if(ICB)
|
||||
|
||||
add_executable(arpackmm EXAMPLES/MATRIX_MARKET/arpackmm.cpp)
|
||||
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})
|
||||
target_link_libraries(arpackmm arpack BLAS::BLAS LAPACK::LAPACK ${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)
|
||||
configure_file(EXAMPLES/MATRIX_MARKET/Az.mtx ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Az.mtx)
|
||||
@@ -581,7 +597,7 @@ if(ICB)
|
||||
target_compile_definitions(pyarpack PRIVATE PY_MAJOR_VERSION="3")
|
||||
set(pyarpack_HDR ${PROJECT_SOURCE_DIR}/ICB ${PROJECT_SOURCE_DIR}/EXAMPLES/MATRIX_MARKET ${PROJECT_SOURCE_DIR}/EXAMPLES/PYARPACK)
|
||||
target_include_directories(pyarpack PUBLIC ${pyarpack_HDR} ${EIGEN3_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
|
||||
target_link_libraries(pyarpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
|
||||
target_link_libraries(pyarpack BLAS::BLAS LAPACK::LAPACK ${Boost_LIBRARIES} ${PYTHON_LIBRARIES})
|
||||
install(TARGETS pyarpack
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/pyarpack
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/pyarpack)
|
||||
@@ -636,13 +652,13 @@ if(ICB)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/PARPACK/TESTS/MPI)
|
||||
|
||||
add_executable(icb_parpack_c PARPACK/TESTS/MPI/icb_parpack_c.c)
|
||||
target_include_directories(icb_parpack_c PUBLIC ${PROJECT_SOURCE_DIR}/ICB ${MPI_C_INCLUDE_DIRS}) # Get parpack.h mpi.h
|
||||
target_link_libraries(icb_parpack_c parpack arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS} ${MPI_C_LIBRARIES})
|
||||
target_include_directories(icb_parpack_c PUBLIC ${PROJECT_SOURCE_DIR}/ICB MPI::MPI_C) # Get parpack.h mpi.h
|
||||
target_link_libraries(icb_parpack_c parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS} MPI::MPI_C)
|
||||
add_test(icb_parpack_c_tst mpirun -n 2 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/icb_parpack_c)
|
||||
|
||||
add_executable(icb_parpack_cpp PARPACK/TESTS/MPI/icb_parpack_cpp.cpp)
|
||||
target_include_directories(icb_parpack_cpp PUBLIC ${PROJECT_SOURCE_DIR}/ICB ${MPI_CXX_INCLUDE_DIRS}) # Get parpack.hpp mpi.h
|
||||
target_link_libraries(icb_parpack_cpp parpack arpack ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} ${EXTRA_LDLAGS} ${MPI_CXX_LIBRARIES})
|
||||
target_include_directories(icb_parpack_cpp PUBLIC ${PROJECT_SOURCE_DIR}/ICB MPI::MPI_CXX) # Get parpack.hpp mpi.h
|
||||
target_link_libraries(icb_parpack_cpp parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS} MPI::MPI_CXX)
|
||||
add_test(icb_parpack_cpp_tst mpirun -n 2 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/icb_parpack_cpp)
|
||||
endif()
|
||||
endif()
|
||||
@@ -721,8 +737,8 @@ 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/")
|
||||
set(LAPACK_LIBS ${LAPACK_LIBRARIES})
|
||||
set(BLAS_LIBS ${BLAS_LIBRARIES})
|
||||
set(LAPACK_LIBS "${LAPACK_LIBRARIES}")
|
||||
set(BLAS_LIBS "${BLAS_LIBRARIES}")
|
||||
set(EIGEN3_CFLAGS "-I${EIGEN3_INCLUDE_DIR}")
|
||||
configure_file(arpack.pc.in arpack${LIBSUFFIX}.pc @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/arpack${LIBSUFFIX}.pc
|
||||
@@ -816,10 +832,10 @@ if (ICB)
|
||||
"${CMAKE_CXX_FLAGS}")
|
||||
endif()
|
||||
if (MPI)
|
||||
libsummary("MPIFC" "${MPI_Fortran_INCLUDE_PATH}" "${MPI_Fortran_LIBRARIES}")
|
||||
libsummary("MPIFC" "${MPI_Fortran_INCLUDE_DIRS}" "${MPI_Fortran_LIBRARIES}")
|
||||
if (ICB)
|
||||
libsummary("MPICC" "${MPI_C_INCLUDE_PATH}" "${MPI_C_LIBRARIES}")
|
||||
libsummary("MPICXX" "${MPI_CXX_INCLUDE_PATH}" "${MPI_CXX_LIBRARIES}")
|
||||
libsummary("MPICC" "${MPI_C_INCLUDE_DIRS}" "${MPI_C_LIBRARIES}")
|
||||
libsummary("MPICXX" "${MPI_CXX_INCLUDE_DIRS}" "${MPI_CXX_LIBRARIES}")
|
||||
endif()
|
||||
endif()
|
||||
libsummary("BLAS" "" "${BLAS_LIBRARIES}")
|
||||
|
||||
@@ -117,6 +117,20 @@ Furthermore, ARPACK-NG now provides CMake functionality:
|
||||
$ make install
|
||||
builds everything including examples and parallel support (with MPI).
|
||||
|
||||
To use arpack from CMake, use ARPACK::ARPACK target:
|
||||
|
||||
find_package(arpack-ng)
|
||||
add_executable(main main.f)
|
||||
target_include_directories(main PUBLIC ARPACK::ARPACK)
|
||||
target_link_libraries(main ARPACK::ARPACK)
|
||||
|
||||
To use parpack from CMake, use PARPACK::PARPACK target:
|
||||
|
||||
find_package(arpack-ng)
|
||||
add_executable(main main.f)
|
||||
target_include_directories(main PUBLIC PARPACK::PARPACK)
|
||||
target_link_libraries(main PARPACK::PARPACK)
|
||||
|
||||
On mac OS, with GNU compilers, you may need to customize options:
|
||||
|
||||
$ LIBS="-framework Accelerate" FFLAGS="-ff2c -fno-second-underscore" FCFLAGS="-ff2c -fno-second-underscore" ./configure
|
||||
|
||||
@@ -1,14 +1,34 @@
|
||||
# Config file for the arpack-ng package. It defines the following variables:
|
||||
# - arpack_ng_INCLUDE_DIRS - include directories
|
||||
# - arpack_ng_LIBRARIES - libraries to link against
|
||||
set(arpack_ng_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@/arpack;@EIGEN3_INCLUDE_DIR@" CACHE PATH "arpack-ng: include directories" FORCE)
|
||||
# Config file for the arpack-ng package.
|
||||
#
|
||||
# To use arpack from CMake, use ARPACK::ARPACK target:
|
||||
# find_package(arpack-ng)
|
||||
# add_executable(main main.f)
|
||||
# target_include_directories(main PUBLIC ARPACK::ARPACK)
|
||||
# target_link_libraries(main ARPACK::ARPACK)
|
||||
#
|
||||
# To use parpack from CMake, use PARPACK::PARPACK target:
|
||||
# find_package(arpack-ng)
|
||||
# add_executable(main main.f)
|
||||
# target_include_directories(main PUBLIC PARPACK::PARPACK)
|
||||
# target_link_libraries(main PARPACK::PARPACK)
|
||||
|
||||
# Create local variables.
|
||||
set(arpack_ng_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@/arpack;@EIGEN3_INCLUDE_DIR@;${MPI_Fortran_INCLUDE_DIRS};${MPI_C_INCLUDE_DIRS};${MPI_CXX_INCLUDE_DIRS}")
|
||||
if(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.a")
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.a;@LAPACK_LIBRARIES@;@BLAS_LIBRARIES@" CACHE FILEPATH "arpack-ng: libraries" FORCE)
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.a;@LAPACK_LIBRARIES@;@BLAS_LIBRARIES@")
|
||||
elseif(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so")
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so;@LAPACK_LIBRARIES@;@BLAS_LIBRARIES@" CACHE FILEPATH "arpack-ng: libraries" FORCE)
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so;@LAPACK_LIBRARIES@;@BLAS_LIBRARIES@")
|
||||
endif()
|
||||
if(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.a")
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.a;${arpack_ng_LIBRARIES}" CACHE FILEPATH "arpack-ng: libraries" FORCE)
|
||||
set(parpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.a;${arpack_ng_LIBRARIES};${MPI_Fortran_LIBRARIES};${MPI_C_LIBRARIES};${MPI_CXX_LIBRARIES}")
|
||||
elseif(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.so")
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.so;${arpack_ng_LIBRARIES}" CACHE FILEPATH "arpack-ng: libraries" FORCE)
|
||||
set(parpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.so;${arpack_ng_LIBRARIES};${MPI_Fortran_LIBRARIES};${MPI_C_LIBRARIES};${MPI_CXX_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
# Create arpack targets.
|
||||
add_library(ARPACK::ARPACK INTERFACE IMPORTED)
|
||||
set_target_properties(ARPACK::ARPACK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${arpack_ng_INCLUDE_DIRS}")
|
||||
set_target_properties(ARPACK::ARPACK PROPERTIES INTERFACE_LINK_LIBRARIES "${arpack_ng_LIBRARIES}")
|
||||
add_library(PARPACK::PARPACK INTERFACE IMPORTED)
|
||||
set_target_properties(PARPACK::PARPACK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${arpack_ng_INCLUDE_DIRS}")
|
||||
set_target_properties(PARPACK::PARPACK PROPERTIES INTERFACE_LINK_LIBRARIES "${parpack_ng_LIBRARIES}")
|
||||
|
||||
Reference in New Issue
Block a user