Merge pull request #259 from turboencabulator/buildfixes

Miscellaneous build fixes
This commit is contained in:
Sylvestre Ledru
2020-11-30 14:41:15 +01:00
committed by GitHub
15 changed files with 160 additions and 101 deletions
+3 -1
View File
@@ -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
*~
\#*#
\#*#
+3 -1
View File
@@ -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
View File
@@ -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
+9 -2
View File
@@ -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
+10
View File
@@ -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
View File
@@ -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
+5
View File
@@ -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
+11
View File
@@ -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@
+5
View File
@@ -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
+3 -2
View File
@@ -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 -1
View File
@@ -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()
+8 -17
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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