Merge pull request #259 from turboencabulator/buildfixes
Miscellaneous build fixes
This commit is contained in:
+3
-1
@@ -16,6 +16,8 @@ config.status
|
||||
libtool
|
||||
.deps/
|
||||
arpack.pc
|
||||
parpack.pc
|
||||
arpackSolver.pc
|
||||
arpackdef.h
|
||||
arpackicb.h
|
||||
arpack-ng-config.cmake
|
||||
@@ -77,4 +79,4 @@ VISUAL_STUDIO/bin/
|
||||
|
||||
# Temporary files
|
||||
*~
|
||||
\#*#
|
||||
\#*#
|
||||
|
||||
@@ -20,7 +20,6 @@ arpack-ng - 3.8.0
|
||||
* [BUG FIX] ICB using rvec/select: rvec/select turned to integer
|
||||
bool should be, but, is not always supported (depend on compiler, options).
|
||||
* extract arpackSolver.hpp from arpakmm.cpp.
|
||||
* [BUG FIX] fix cmake/pc files: enable linking from outside (add blas, lapack, eigen).
|
||||
* arpackmm: add --slvItrPC option (PC: Jacobi, ILU).
|
||||
* arpackmm: add --slv LLT LDLT (for SPD matrices).
|
||||
* arpackmm: add --simplePrec option (to enable use of s*upd).
|
||||
@@ -31,6 +30,9 @@ arpack-ng - 3.8.0
|
||||
|
||||
[ Kyle Guinn ]
|
||||
* [BUG FIX]: fix 'eval: Syntax error: "(" unexpected' error at build time.
|
||||
* Only build shared libraries by default. To build static libraries, use
|
||||
--enable-static (autotools) or -DBUILD_SHARED_LIBS=OFF (cmake).
|
||||
* Add parpack.pc and arpackSolver.pc.
|
||||
|
||||
[ David Schwörer ]
|
||||
* Support of gfortran 10
|
||||
|
||||
+66
-43
@@ -6,6 +6,11 @@ endif ()
|
||||
|
||||
project(arpack C Fortran)
|
||||
|
||||
set(arpack_ng_MAJOR_VERSION 3)
|
||||
set(arpack_ng_MINOR_VERSION 7)
|
||||
set(arpack_ng_PATCH_VERSION 0)
|
||||
set(arpack_ng_VERSION ${arpack_ng_MAJOR_VERSION}.${arpack_ng_MINOR_VERSION}.${arpack_ng_PATCH_VERSION})
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
|
||||
|
||||
# Adopted from https://github.com/feymark/arpack.git
|
||||
@@ -15,6 +20,7 @@ if (POLICY CMP0042)
|
||||
cmake_policy (SET CMP0042 NEW)
|
||||
endif ()
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries instead of static libraries" ON)
|
||||
option(MPI "Enable parallel support" OFF)
|
||||
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)
|
||||
@@ -29,13 +35,15 @@ option(INTERFACE64 "use the 64-bit integer interface (ILP64) for ARPACK, BLAS an
|
||||
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||
|
||||
# We don't want this to run on every build.
|
||||
option(COVERALLS "Generate coveralls data" OFF)
|
||||
if (COVERALLS)
|
||||
include(Coveralls)
|
||||
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage")
|
||||
# The no space is by design: issue in cmake. See CMP0004.
|
||||
set(EXTRA_LDLAGS "${EXTRA_LDLAGS}-lgcov")
|
||||
set(EXTRA_LDFLAGS "${EXTRA_LDFLAGS}-lgcov")
|
||||
endif()
|
||||
|
||||
function(prefixlist list_name prefix)
|
||||
@@ -50,7 +58,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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(${lwe} arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
add_test(NAME "${lwe}_ex" COMMAND ${lwe} WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
endforeach()
|
||||
endfunction(examples)
|
||||
@@ -73,11 +81,12 @@ if (PYTHON3)
|
||||
endif ()
|
||||
|
||||
if (ICBEXMM)
|
||||
find_package(Eigen3 3.3)
|
||||
find_package(Eigen3 3.3 QUIET)
|
||||
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 REQUIRED)
|
||||
pkg_check_modules(EIGEN3 REQUIRED eigen3>=3.3)
|
||||
set(EIGEN3_INCLUDE_DIR ${EIGEN3_INCLUDE_DIRS})
|
||||
endif ()
|
||||
find_program (BASH_PROGRAM bash)
|
||||
|
||||
@@ -298,7 +307,7 @@ endif()
|
||||
add_library(arpack ${arpackutil_STAT_SRCS} ${arpacksrc_STAT_SRCS} ${arpacksrc_ICB})
|
||||
|
||||
target_link_libraries(arpack BLAS::BLAS)
|
||||
target_link_libraries(arpack LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(arpack LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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)
|
||||
@@ -520,7 +529,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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(dnsimp_test arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
add_custom_command(TARGET dnsimp_test POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/TESTS/testA.mtx testA.mtx
|
||||
)
|
||||
@@ -528,39 +537,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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_1315_single arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_1315_double arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_1323 arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_58_double arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_79_double_complex arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_142 arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(bug_142_gen arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(issue46 parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
add_test(issue46_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/issue46)
|
||||
endif()
|
||||
|
||||
@@ -569,12 +578,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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(icb_arpack_c arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(icb_arpack_cpp arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
add_test(icb_arpack_cpp_tst ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/icb_arpack_cpp)
|
||||
|
||||
if (ICBEXMM)
|
||||
@@ -582,7 +591,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::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS})
|
||||
target_link_libraries(arpackmm arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS})
|
||||
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)
|
||||
@@ -653,12 +662,12 @@ if(ICB)
|
||||
|
||||
add_executable(icb_parpack_c PARPACK/TESTS/MPI/icb_parpack_c.c)
|
||||
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)
|
||||
target_link_libraries(icb_parpack_c parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS} 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::MPI_CXX) # Get parpack.hpp mpi.h
|
||||
target_link_libraries(icb_parpack_cpp parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDLAGS} MPI::MPI_CXX)
|
||||
target_link_libraries(icb_parpack_cpp parpack arpack BLAS::BLAS LAPACK::LAPACK ${EXTRA_LDFLAGS} MPI::MPI_CXX)
|
||||
add_test(icb_parpack_cpp_tst mpirun -n 2 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/icb_parpack_cpp)
|
||||
endif()
|
||||
endif()
|
||||
@@ -669,16 +678,52 @@ endif()
|
||||
# 'make install' to the correct location
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Convert variable names to those expected by the .pc file.
|
||||
set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
set(exec_prefix \${prefix})
|
||||
set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR})
|
||||
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/")
|
||||
|
||||
# Convert (LAPACK|BLAS)_LIBRARIES to -l flags, store in ARPACK_PC_LIBS_PRIVATE.
|
||||
# LAPACK_LIBRARIES contains transitive deps, no need to parse BLAS_LIBRARIES.
|
||||
set(ARPACK_PC_LIBS_PRIVATE)
|
||||
foreach(lib ${LAPACK_LIBRARIES})
|
||||
get_filename_component(libname ${lib} NAME)
|
||||
string(REGEX REPLACE "^lib([^.]+).*$" "-l\\1" libname ${libname})
|
||||
list(APPEND ARPACK_PC_LIBS_PRIVATE "${libname}")
|
||||
endforeach()
|
||||
string(REPLACE ";" " " ARPACK_PC_LIBS_PRIVATE "${ARPACK_PC_LIBS_PRIVATE}")
|
||||
|
||||
set(PARPACK_PC_LIBS_PRIVATE)
|
||||
foreach(lib ${LAPACK_LIBRARIES} ${MPI_Fortran_LIBRARIES})
|
||||
get_filename_component(libname ${lib} NAME)
|
||||
string(REGEX REPLACE "^lib([^.]+).*$" "-l\\1" libname ${libname})
|
||||
list(APPEND PARPACK_PC_LIBS_PRIVATE "${libname}")
|
||||
endforeach()
|
||||
string(REPLACE ";" " " PARPACK_PC_LIBS_PRIVATE "${PARPACK_PC_LIBS_PRIVATE}")
|
||||
|
||||
configure_file(SRC/arpack.pc.in "${PROJECT_BINARY_DIR}/SRC/arpack${LIBSUFFIX}.pc" @ONLY)
|
||||
configure_file(PARPACK/SRC/MPI/parpack.pc.in "${PROJECT_BINARY_DIR}/PARPACK/SRC/MPI/parpack${LIBSUFFIX}.pc" @ONLY)
|
||||
configure_file(EXAMPLES/MATRIX_MARKET/arpackSolver.pc.in "${PROJECT_BINARY_DIR}/EXAMPLES/MATRIX_MARKET/arpackSolver.pc" @ONLY)
|
||||
|
||||
|
||||
install(TARGETS arpack
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(FILES "${PROJECT_BINARY_DIR}/SRC/arpack${LIBSUFFIX}.pc"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
|
||||
if (MPI)
|
||||
install(TARGETS parpack
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||
install(FILES "${PROJECT_BINARY_DIR}/PARPACK/SRC/MPI/parpack${LIBSUFFIX}.pc"
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
endif ()
|
||||
|
||||
if(ICB)
|
||||
@@ -690,6 +735,7 @@ if(ICB)
|
||||
endif()
|
||||
if (ICBEXMM)
|
||||
install(FILES EXAMPLES/MATRIX_MARKET/arpackSolver.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/arpack)
|
||||
install(FILES "${PROJECT_BINARY_DIR}/EXAMPLES/MATRIX_MARKET/arpackSolver.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -713,13 +759,9 @@ install(FILES "${PROJECT_BINARY_DIR}/arpackicb.h" DESTINATION ${CMAKE_INSTALL_IN
|
||||
|
||||
# Provide find_package for arpack-ng to users.
|
||||
configure_file(arpack-ng-config.cmake.in "${PROJECT_BINARY_DIR}/arpack-ng-config.cmake" @ONLY)
|
||||
install(FILES "${PROJECT_BINARY_DIR}/arpack-ng-config.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) # find_package(arpack-ng)
|
||||
set(arpack_ng_MAJOR_VERSION 3)
|
||||
set(arpack_ng_MINOR_VERSION 7)
|
||||
set(arpack_ng_PATCH_VERSION 0)
|
||||
set(arpack_ng_VERSION ${arpack_ng_MAJOR_VERSION}.${arpack_ng_MINOR_VERSION}.${arpack_ng_PATCH_VERSION})
|
||||
install(FILES "${PROJECT_BINARY_DIR}/arpack-ng-config.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/arpack-ng) # find_package(arpack-ng)
|
||||
configure_file(arpack-ng-config-version.cmake.in "${PROJECT_BINARY_DIR}/arpack-ng-config-version.cmake" @ONLY)
|
||||
install(FILES "${PROJECT_BINARY_DIR}/arpack-ng-config-version.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
|
||||
install(FILES "${PROJECT_BINARY_DIR}/arpack-ng-config-version.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/arpack-ng)
|
||||
|
||||
# Packaging: ease arpack-ng distribution (precompiled binaries and sources tarballs).
|
||||
set(CPACK_VERSION_MAJOR "${arpack_ng_MAJOR_VERSION}")
|
||||
@@ -729,25 +771,6 @@ set(CPACK_SOURCE_IGNORE_FILES "/BUILD/" "/Build/" "/build/" "/local/") # Do not
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "arpack-ng-${CPACK_VERSION_MAJOR}.${CPACK_VERSION_MINOR}.${CPACK_VERSION_PATCH}")
|
||||
include(CPack)
|
||||
|
||||
# Convert variable names to those expected by the .pc file.
|
||||
set(prefix ${CMAKE_INSTALL_PREFIX})
|
||||
set(exec_prefix \${prefix})
|
||||
set(libdir \${exec_prefix}/${CMAKE_INSTALL_LIBDIR})
|
||||
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(EIGEN3_CFLAGS "-I${EIGEN3_INCLUDE_DIR}")
|
||||
configure_file(arpack.pc.in arpack${LIBSUFFIX}.pc @ONLY)
|
||||
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)
|
||||
|
||||
|
||||
if (COVERALLS)
|
||||
set(arpack_TST_SRC
|
||||
${arpack_SOURCE_DIR}/TESTS/bug_1323.f
|
||||
|
||||
@@ -1,18 +1,25 @@
|
||||
LDADD = $(top_builddir)/SRC/libarpack$(LIBSUFFIX).la
|
||||
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)/ICB $(EIGEN3_CFLAGS)
|
||||
|
||||
pkgincludedir = $(includedir)/arpack
|
||||
|
||||
EXTRA_DIST = README
|
||||
|
||||
check_PROGRAMS = arpackmm
|
||||
dist_check_SCRIPTS = arpackmm.sh
|
||||
dist_check_DATA = An.mtx As.mtx Az.mtx B.mtx Bz.mtx
|
||||
SH_LOG_COMPILER = bash
|
||||
TESTS = arpackmm.sh
|
||||
|
||||
arpackmm_SOURCES = arpackmm.cpp
|
||||
|
||||
if ICBEXMM
|
||||
pkginclude_HEADERS = arpackSolver.hpp
|
||||
pkgconfig_DATA = arpackSolver.pc
|
||||
endif
|
||||
|
||||
CLEANFILES = arpackmm.resid.out arpackmm.v.out
|
||||
CLEANFILES = \
|
||||
arpackmm.run.log \
|
||||
arpackmm.resid.out \
|
||||
arpackmm.v.out \
|
||||
arpackSolver.resid.out \
|
||||
arpackSolver.v.out
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: arpackSolver
|
||||
Description: Utility to test arpack with matrix market files
|
||||
Version: @PACKAGE_VERSION@
|
||||
URL: @PACKAGE_URL@
|
||||
Requires: arpack, eigen3 >= 3.3
|
||||
Cflags: -I${includedir}/arpack
|
||||
+6
-7
@@ -10,6 +10,9 @@ endif
|
||||
if ICB
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS += --enable-icb
|
||||
endif
|
||||
if ICBEXMM
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS += --enable-icb-exmm
|
||||
endif
|
||||
|
||||
SUBDIRS = .
|
||||
if ICB
|
||||
@@ -21,11 +24,7 @@ SUBDIRS += PARPACK
|
||||
endif
|
||||
|
||||
EXTRA_DIST = README.md PARPACK_CHANGES CHANGES DOCUMENTS VISUAL_STUDIO \
|
||||
detect_arpack_bug.m4 CMakeLists.txt arpack-ng-config.cmake.in arpack-ng-config-version.cmake.in
|
||||
detect_arpack_bug.m4 CMakeLists.txt
|
||||
|
||||
pkgconfig_DATA = arpack@LIBSUFFIX@.pc
|
||||
|
||||
cmkdir = $(prefix)/lib/cmake
|
||||
cmk_DATA = arpack-ng-config.cmake arpack-ng-config-version.cmake
|
||||
|
||||
DISTCLEANFILES = $(pkgconfig_DATA) arpackdef.h arpack-ng-config.cmake arpack-ng-config-version.cmake
|
||||
cmakedir = $(libdir)/cmake/arpack-ng
|
||||
cmake_DATA = arpack-ng-config.cmake arpack-ng-config-version.cmake
|
||||
|
||||
@@ -46,3 +46,8 @@ if ICB
|
||||
libparpack@LIBSUFFIX@_la_LIBADD += $(top_builddir)/ICB/libdbgicb.la $(top_builddir)/ICB/libstaicb.la
|
||||
libparpack@LIBSUFFIX@_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_builddir)
|
||||
endif
|
||||
|
||||
pkgconfig_DATA = parpack@LIBSUFFIX@.pc
|
||||
|
||||
# Due to the LIBSUFFIX, configure doesn't automatically clean this file:
|
||||
DISTCLEANFILES = parpack@LIBSUFFIX@.pc
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
|
||||
Name: @PACKAGE_NAME@
|
||||
Description: Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems
|
||||
Version: @PACKAGE_VERSION@
|
||||
URL: @PACKAGE_URL@
|
||||
Requires.private: arpack@LIBSUFFIX@
|
||||
Libs: -L${libdir} -lparpack@LIBSUFFIX@
|
||||
Libs.private: @PARPACK_PC_LIBS_PRIVATE@
|
||||
@@ -33,3 +33,8 @@ if ICB
|
||||
libarpack@LIBSUFFIX@_la_LIBADD += $(top_builddir)/ICB/libdbgicb.la $(top_builddir)/ICB/libstaicb.la
|
||||
libarpack@LIBSUFFIX@_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_builddir)
|
||||
endif
|
||||
|
||||
pkgconfig_DATA = arpack@LIBSUFFIX@.pc
|
||||
|
||||
# Due to the LIBSUFFIX, configure doesn't automatically clean this file:
|
||||
DISTCLEANFILES = arpack@LIBSUFFIX@.pc
|
||||
|
||||
@@ -7,5 +7,6 @@ Name: @PACKAGE_NAME@
|
||||
Description: Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems
|
||||
Version: @PACKAGE_VERSION@
|
||||
URL: @PACKAGE_URL@
|
||||
Libs: -L${libdir} -larpack@LIBSUFFIX@ @LAPACK_LIBS@ @BLAS_LIBS@
|
||||
Cflags: -I${includedir}/arpack @EIGEN3_CFLAGS@
|
||||
Libs: -L${libdir} -larpack@LIBSUFFIX@
|
||||
Libs.private: @ARPACK_PC_LIBS_PRIVATE@
|
||||
Cflags: -I${includedir}/arpack
|
||||
@@ -1,5 +1,5 @@
|
||||
# Check whether the requested PACKAGE_FIND_VERSION is compatible
|
||||
set(PACKAGE_VERSION "@arpack_ng_VERSION@")
|
||||
set(PACKAGE_VERSION "@PACKAGE_VERSION@")
|
||||
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
|
||||
@@ -3,32 +3,23 @@
|
||||
# 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_include_directories(main PRIVATE 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@")
|
||||
elseif(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so")
|
||||
set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so;@LAPACK_LIBRARIES@;@BLAS_LIBRARIES@")
|
||||
endif()
|
||||
if(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.a")
|
||||
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(parpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libparpack.so;${arpack_ng_LIBRARIES};${MPI_Fortran_LIBRARIES};${MPI_C_LIBRARIES};${MPI_CXX_LIBRARIES}")
|
||||
endif()
|
||||
set(prefix "@prefix@")
|
||||
set(exec_prefix "@exec_prefix@")
|
||||
set(libdir "@libdir@")
|
||||
set(includedir "@includedir@")
|
||||
|
||||
# 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}")
|
||||
set_target_properties(ARPACK::ARPACK PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${includedir}/arpack")
|
||||
set_target_properties(ARPACK::ARPACK PROPERTIES INTERFACE_LINK_LIBRARIES "arpack")
|
||||
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}")
|
||||
set_target_properties(PARPACK::PARPACK PROPERTIES INTERFACE_LINK_LIBRARIES "parpack")
|
||||
|
||||
+11
-14
@@ -12,7 +12,6 @@ AC_PROG_FC
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
PKG_PROG_PKG_CONFIG
|
||||
AC_PROG_SED
|
||||
|
||||
dnl Check for BLAS libraries
|
||||
AX_BLAS([], [AC_MSG_ERROR([cannot find BLAS libraries])])
|
||||
@@ -46,7 +45,7 @@ ifdef([LT_INIT], [], [
|
||||
m4exit([1])])
|
||||
|
||||
LT_PREREQ([2.4.2])
|
||||
LT_INIT([win32-dll])
|
||||
LT_INIT([win32-dll disable-static])
|
||||
|
||||
dnl See if compiling parpack
|
||||
AC_ARG_ENABLE([mpi],
|
||||
@@ -86,7 +85,7 @@ AC_ARG_ENABLE([icb-exmm],
|
||||
[AS_VAR_SET([enable_icb_exmm], [no])])
|
||||
|
||||
if test x"$enable_icb_exmm" != x"no"; then
|
||||
PKG_CHECK_MODULES([EIGEN3], [eigen3 >= 3.3], [], [AC_MSG_ERROR([Eigen not found. Give hints with PKG_CONFIG_PATH. Disable the need of this dependency using --disable-icb-exmm])])
|
||||
PKG_CHECK_MODULES([EIGEN3], [eigen3 >= 3.3])
|
||||
AC_LANG_PUSH([C++])
|
||||
CPPFLAGS_SAVE=$CPPFLAGS
|
||||
CPPFLAGS=$EIGEN3_CFLAGS
|
||||
@@ -255,21 +254,19 @@ AM_CONDITIONAL([ICB], [test x"$enable_icb" != x"no"])
|
||||
AM_CONDITIONAL([ICBEXMM], [test x"$enable_icb_exmm" != x"no"])
|
||||
|
||||
m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_SUBST([pkgconfigdir], [${libdir}/pkgconfig])])
|
||||
AC_CONFIG_FILES([arpack$LIBSUFFIX.pc:arpack.pc.in], [], [LIBSUFFIX="$LIBSUFFIX"])
|
||||
|
||||
AC_SUBST([CMAKE_INSTALL_FULL_LIBDIR], ["$libdir"]) # FIXME: need to recursively expand these
|
||||
AC_SUBST([CMAKE_INSTALL_FULL_INCLUDEDIR], ["$includedir"])
|
||||
AC_SUBST([BLAS_LIBRARIES], ["$BLAS_LIBS"]) # FIXME: need a filename, not a -l flag
|
||||
AC_SUBST([LAPACK_LIBRARIES], ["$LAPACK_LIBS"])
|
||||
AC_SUBST([EIGEN3_INCLUDE_DIR], [`echo "$EIGEN3_CFLAGS" | sed -e s/-I//`])
|
||||
AC_CONFIG_FILES([arpack-ng-config.cmake])
|
||||
|
||||
AC_SUBST([arpack_ng_VERSION], ["$VERSION"])
|
||||
AC_CONFIG_FILES([arpack-ng-config-version.cmake])
|
||||
AC_SUBST([ARPACK_PC_LIBS_PRIVATE], ["$LAPACK_LIBS $BLAS_LIBS"])
|
||||
AC_SUBST([PARPACK_PC_LIBS_PRIVATE], ["$LAPACK_LIBS $BLAS_LIBS $MPI_Fortran_LIBS"])
|
||||
AC_CONFIG_FILES([
|
||||
SRC/arpack$LIBSUFFIX.pc:SRC/arpack.pc.in
|
||||
PARPACK/SRC/MPI/parpack$LIBSUFFIX.pc:PARPACK/SRC/MPI/parpack.pc.in
|
||||
], [], [LIBSUFFIX="$LIBSUFFIX"])
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
EXAMPLES/MATRIX_MARKET/arpackSolver.pc
|
||||
arpackdef.h
|
||||
arpackicb.h
|
||||
arpack-ng-config-version.cmake
|
||||
arpack-ng-config.cmake
|
||||
Makefile
|
||||
ICB/Makefile
|
||||
UTIL/Makefile
|
||||
|
||||
+11
-8
@@ -1,5 +1,5 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_blas.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_blas.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
@@ -36,6 +36,7 @@
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2019 Geoffrey M. Oxberry <goxberry@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
@@ -48,7 +49,7 @@
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
@@ -63,11 +64,11 @@
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 14
|
||||
#serial 17
|
||||
|
||||
AU_ALIAS([ACX_BLAS], [AX_BLAS])
|
||||
AC_DEFUN([AX_BLAS], [
|
||||
AC_PREREQ(2.50)
|
||||
AC_PREREQ([2.55])
|
||||
AC_REQUIRE([AC_F77_LIBRARY_LDFLAGS])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
ax_blas_ok=no
|
||||
@@ -77,7 +78,9 @@ AC_ARG_WITH(blas,
|
||||
case $with_blas in
|
||||
yes | "") ;;
|
||||
no) ax_blas_ok=disable ;;
|
||||
-* | */* | *.a | *.so | *.so.* | *.o) BLAS_LIBS="$with_blas" ;;
|
||||
-* | */* | *.a | *.so | *.so.* | *.dylib | *.dylib.* | *.o)
|
||||
BLAS_LIBS="$with_blas"
|
||||
;;
|
||||
*) BLAS_LIBS="-l$with_blas" ;;
|
||||
esac
|
||||
|
||||
@@ -93,7 +96,7 @@ if test $ax_blas_ok = no; then
|
||||
if test "x$BLAS_LIBS" != x; then
|
||||
save_LIBS="$LIBS"; LIBS="$BLAS_LIBS $LIBS"
|
||||
AC_MSG_CHECKING([for $sgemm in $BLAS_LIBS])
|
||||
AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes], [BLAS_LIBS=""])
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [$sgemm])], [ax_blas_ok=yes], [BLAS_LIBS=""])
|
||||
AC_MSG_RESULT($ax_blas_ok)
|
||||
LIBS="$save_LIBS"
|
||||
fi
|
||||
@@ -103,7 +106,7 @@ fi
|
||||
if test $ax_blas_ok = no; then
|
||||
save_LIBS="$LIBS"; LIBS="$LIBS"
|
||||
AC_MSG_CHECKING([if $sgemm is being linked in already])
|
||||
AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes])
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [$sgemm])], [ax_blas_ok=yes])
|
||||
AC_MSG_RESULT($ax_blas_ok)
|
||||
LIBS="$save_LIBS"
|
||||
fi
|
||||
@@ -174,7 +177,7 @@ fi
|
||||
if test $ax_blas_ok = no; then
|
||||
save_LIBS="$LIBS"; LIBS="-framework vecLib $LIBS"
|
||||
AC_MSG_CHECKING([for $sgemm in -framework vecLib])
|
||||
AC_TRY_LINK_FUNC($sgemm, [ax_blas_ok=yes;BLAS_LIBS="-framework vecLib"])
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [$sgemm])], [ax_blas_ok=yes;BLAS_LIBS="-framework vecLib"])
|
||||
AC_MSG_RESULT($ax_blas_ok)
|
||||
LIBS="$save_LIBS"
|
||||
fi
|
||||
|
||||
+8
-5
@@ -1,5 +1,5 @@
|
||||
# ===========================================================================
|
||||
# http://www.gnu.org/software/autoconf-archive/ax_lapack.html
|
||||
# https://www.gnu.org/software/autoconf-archive/ax_lapack.html
|
||||
# ===========================================================================
|
||||
#
|
||||
# SYNOPSIS
|
||||
@@ -37,6 +37,7 @@
|
||||
# LICENSE
|
||||
#
|
||||
# Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
|
||||
# Copyright (c) 2019 Geoffrey M. Oxberry <goxberry@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
@@ -49,7 +50,7 @@
|
||||
# Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception, the respective Autoconf Macro's copyright owner
|
||||
# gives unlimited permission to copy, distribute and modify the configure
|
||||
@@ -64,7 +65,7 @@
|
||||
# modified version of the Autoconf Macro, you may extend this special
|
||||
# exception to the GPL to apply to your modified version as well.
|
||||
|
||||
#serial 7
|
||||
#serial 10
|
||||
|
||||
AU_ALIAS([ACX_LAPACK], [AX_LAPACK])
|
||||
AC_DEFUN([AX_LAPACK], [
|
||||
@@ -76,7 +77,9 @@ AC_ARG_WITH(lapack,
|
||||
case $with_lapack in
|
||||
yes | "") ;;
|
||||
no) ax_lapack_ok=disable ;;
|
||||
-* | */* | *.a | *.so | *.so.* | *.o) LAPACK_LIBS="$with_lapack" ;;
|
||||
-* | */* | *.a | *.so | *.so.* | *.dylib | *.dylib.* | *.o)
|
||||
LAPACK_LIBS="$with_lapack"
|
||||
;;
|
||||
*) LAPACK_LIBS="-l$with_lapack" ;;
|
||||
esac
|
||||
|
||||
@@ -93,7 +96,7 @@ fi
|
||||
if test "x$LAPACK_LIBS" != x; then
|
||||
save_LIBS="$LIBS"; LIBS="$LAPACK_LIBS $BLAS_LIBS $LIBS $FLIBS"
|
||||
AC_MSG_CHECKING([for $cheev in $LAPACK_LIBS])
|
||||
AC_TRY_LINK_FUNC($cheev, [ax_lapack_ok=yes], [LAPACK_LIBS=""])
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [$cheev])], [ax_lapack_ok=yes], [LAPACK_LIBS=""])
|
||||
AC_MSG_RESULT($ax_lapack_ok)
|
||||
LIBS="$save_LIBS"
|
||||
if test $ax_lapack_ok = no; then
|
||||
|
||||
Reference in New Issue
Block a user