From d513128421f97e7e46a911413d2d54e2126d6c7a Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sat, 29 Feb 2020 20:24:57 -0600 Subject: [PATCH 01/16] Update to latest versions of ax_blas.m4 and ax_lapack.m4 --- m4/ax_blas.m4 | 19 +++++++++++-------- m4/ax_lapack.m4 | 13 ++++++++----- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/m4/ax_blas.m4 b/m4/ax_blas.m4 index 821459d..9571905 100644 --- a/m4/ax_blas.m4 +++ b/m4/ax_blas.m4 @@ -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 +# Copyright (c) 2019 Geoffrey M. Oxberry # # 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 . +# with this program. If not, see . # # 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 diff --git a/m4/ax_lapack.m4 b/m4/ax_lapack.m4 index 6aa16aa..abaff9d 100644 --- a/m4/ax_lapack.m4 +++ b/m4/ax_lapack.m4 @@ -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 +# Copyright (c) 2019 Geoffrey M. Oxberry # # 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 . +# with this program. If not, see . # # 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 From 5fbe6161c22bf5b459491b5f5ba252f9947817a2 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sat, 29 Feb 2020 20:46:19 -0600 Subject: [PATCH 02/16] Switch back to the default pkg-config error text The original issue (#183) appears to be some sort of syntax error, likely from not having pkg-config installed at the time of generating the configure script. Specifying our own error text won't improve that problem. This reverts commit ad9f74b962f4748c8baff587955477d7db446d55. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index ee0338b..82589fd 100644 --- a/configure.ac +++ b/configure.ac @@ -86,7 +86,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 From f85e91fa994c2e077c4d80087667295f3f2cc68a Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sat, 29 Feb 2020 21:17:33 -0600 Subject: [PATCH 03/16] Remove SH_LOG_COMPILER SH_LOG_COMPILER has no effect since TEST_EXTENSIONS does not contain .sh The test driver runs the script directly and therefore uses its #! line to find the appropriate shell and its options. This partially reverts commit 8fe4734da848e78840082b5cd23f84bf60b54478. --- EXAMPLES/MATRIX_MARKET/Makefile.am | 1 - 1 file changed, 1 deletion(-) diff --git a/EXAMPLES/MATRIX_MARKET/Makefile.am b/EXAMPLES/MATRIX_MARKET/Makefile.am index 91e7892..b80c234 100644 --- a/EXAMPLES/MATRIX_MARKET/Makefile.am +++ b/EXAMPLES/MATRIX_MARKET/Makefile.am @@ -6,7 +6,6 @@ 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 From fd2fc43dbc2e293ce23bed17d0c320be8a55e0fe Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sat, 29 Feb 2020 23:30:04 -0600 Subject: [PATCH 04/16] Don't build static libs by default I believe many of the incorrect dependency problems are due to building static libs, which don't contain any dependency info. If needed, these can be enabled with --enable-static (for autotools) or -DBUILD_SHARED_LIBS=OFF (for cmake). --- CHANGES | 2 ++ CMakeLists.txt | 1 + configure.ac | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index d9413be..75fab0c 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,8 @@ 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). [ David Schwörer ] * Support of gfortran 10 diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b53d18..a321433 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,6 +15,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) diff --git a/configure.ac b/configure.ac index 82589fd..da35861 100644 --- a/configure.ac +++ b/configure.ac @@ -46,7 +46,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], From b42216cbb6ca07bfcd8df657d391b7ad79d35851 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 1 Mar 2020 00:30:32 -0600 Subject: [PATCH 05/16] Install arpackSolver.hpp alongside other headers --- EXAMPLES/MATRIX_MARKET/Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/EXAMPLES/MATRIX_MARKET/Makefile.am b/EXAMPLES/MATRIX_MARKET/Makefile.am index b80c234..b107837 100644 --- a/EXAMPLES/MATRIX_MARKET/Makefile.am +++ b/EXAMPLES/MATRIX_MARKET/Makefile.am @@ -1,6 +1,8 @@ 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 From 3914dcbe3b7435e0ba599ee2e6dce578cc85ae4d Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 1 Mar 2020 00:52:34 -0600 Subject: [PATCH 06/16] Remove Eigen3 from arpack.pc Eigen3 is only needed for arpackSolver.hpp, which is independent from the library. If desired, a separate pkg-config file should be created for the solver itself, which should contain something like: Requires: arpack, eigen3 >= 3.3 Also remove Eigen3 from arpack-ng-config.cmake since it serves the same purpose. --- CMakeLists.txt | 1 - arpack-ng-config.cmake.in | 2 +- arpack.pc.in | 2 +- configure.ac | 2 -- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a321433..6dc35dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -740,7 +740,6 @@ 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) diff --git a/arpack-ng-config.cmake.in b/arpack-ng-config.cmake.in index c5b6041..afc0eaa 100644 --- a/arpack-ng-config.cmake.in +++ b/arpack-ng-config.cmake.in @@ -13,7 +13,7 @@ # 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}") +set(arpack_ng_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@/arpack;${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") diff --git a/arpack.pc.in b/arpack.pc.in index 77044b4..714bcd3 100644 --- a/arpack.pc.in +++ b/arpack.pc.in @@ -8,4 +8,4 @@ Description: Collection of Fortran77 subroutines designed to solve large scale e Version: @PACKAGE_VERSION@ URL: @PACKAGE_URL@ Libs: -L${libdir} -larpack@LIBSUFFIX@ @LAPACK_LIBS@ @BLAS_LIBS@ -Cflags: -I${includedir}/arpack @EIGEN3_CFLAGS@ +Cflags: -I${includedir}/arpack diff --git a/configure.ac b/configure.ac index da35861..c6e88b9 100644 --- a/configure.ac +++ b/configure.ac @@ -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])]) @@ -261,7 +260,6 @@ AC_SUBST([CMAKE_INSTALL_FULL_LIBDIR], ["$libdir"]) # FIXME: need to recursively 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"]) From fd1a146fbe21b6c9194104e226abdf4ffbed0fd4 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 1 Mar 2020 01:00:08 -0600 Subject: [PATCH 07/16] Fix pkg-config fallback for Eigen3 Use QUIET to suppress warnings about missing FindEigen3.cmake. pkg_check_modules defines EIGEN3_INCLUDE_DIRS, not EIGEN3_INCLUDE_DIR, so define the latter as the former. --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6dc35dd..123abf9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,11 +74,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) From c06ad87196679e8db224024a8cbd9d55c4082525 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 22 Mar 2020 21:52:08 -0500 Subject: [PATCH 08/16] Attempt to make arpack.pc identical when generated by CMake --- CMakeLists.txt | 51 ++++++++++++++++++-------------- Makefile.am | 4 --- SRC/Makefile.am | 5 ++++ arpack.pc.in => SRC/arpack.pc.in | 2 +- configure.ac | 3 +- 5 files changed, 37 insertions(+), 28 deletions(-) rename arpack.pc.in => SRC/arpack.pc.in (81%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 123abf9..087c9f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 @@ -30,6 +35,8 @@ 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") @@ -671,10 +678,32 @@ 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. +# LAPACK_LIBRARIES contains transitive deps, no need to parse BLAS_LIBRARIES. +set(ARPACK_PC_LIBS) +foreach(lib ${LAPACK_LIBRARIES}) + get_filename_component(libname ${lib} NAME) + string(REGEX REPLACE "^lib([^.]+).*$" "-l\\1" libname ${libname}) + list(APPEND ARPACK_PC_LIBS "${libname}") +endforeach() +string(REPLACE ";" " " ARPACK_PC_LIBS "${ARPACK_PC_LIBS}") +configure_file(SRC/arpack.pc.in "${PROJECT_BINARY_DIR}/SRC/arpack${LIBSUFFIX}.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 @@ -716,10 +745,6 @@ 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}) 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) @@ -731,24 +756,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}") -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 diff --git a/Makefile.am b/Makefile.am index fe778e4..bcafa9b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -23,9 +23,5 @@ 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 -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 diff --git a/SRC/Makefile.am b/SRC/Makefile.am index 97b0e84..8471035 100644 --- a/SRC/Makefile.am +++ b/SRC/Makefile.am @@ -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 diff --git a/arpack.pc.in b/SRC/arpack.pc.in similarity index 81% rename from arpack.pc.in rename to SRC/arpack.pc.in index 714bcd3..59b4798 100644 --- a/arpack.pc.in +++ b/SRC/arpack.pc.in @@ -7,5 +7,5 @@ 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@ +Libs: -L${libdir} -larpack@LIBSUFFIX@ @ARPACK_PC_LIBS@ Cflags: -I${includedir}/arpack diff --git a/configure.ac b/configure.ac index c6e88b9..ae4ae78 100644 --- a/configure.ac +++ b/configure.ac @@ -254,7 +254,8 @@ 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([ARPACK_PC_LIBS], ["$LAPACK_LIBS $BLAS_LIBS"]) +AC_CONFIG_FILES([SRC/arpack$LIBSUFFIX.pc:SRC/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"]) From d1a29c2947e14477ba391c6c402f269de068520e Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 22 Mar 2020 19:39:34 -0500 Subject: [PATCH 09/16] Revert "[BUG FIX] fix cmake/pc files: enable linking from outside. (#216)" See discussion in #221. This reverts commit c43cb868546e8f987cf19b3c2613c56be3865ee3. --- CHANGES | 1 - CMakeLists.txt | 8 ++++---- SRC/arpack.pc.in | 3 ++- arpack-ng-config.cmake.in | 4 ++-- configure.ac | 4 +--- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/CHANGES b/CHANGES index 75fab0c..83dc3ae 100644 --- a/CHANGES +++ b/CHANGES @@ -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). diff --git a/CMakeLists.txt b/CMakeLists.txt index 087c9f9..8570371 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -686,15 +686,15 @@ 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. +# 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) +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 "${libname}") + list(APPEND ARPACK_PC_LIBS_PRIVATE "${libname}") endforeach() -string(REPLACE ";" " " ARPACK_PC_LIBS "${ARPACK_PC_LIBS}") +string(REPLACE ";" " " ARPACK_PC_LIBS_PRIVATE "${ARPACK_PC_LIBS_PRIVATE}") configure_file(SRC/arpack.pc.in "${PROJECT_BINARY_DIR}/SRC/arpack${LIBSUFFIX}.pc" @ONLY) diff --git a/SRC/arpack.pc.in b/SRC/arpack.pc.in index 59b4798..a5550ce 100644 --- a/SRC/arpack.pc.in +++ b/SRC/arpack.pc.in @@ -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@ @ARPACK_PC_LIBS@ +Libs: -L${libdir} -larpack@LIBSUFFIX@ +Libs.private: @ARPACK_PC_LIBS_PRIVATE@ Cflags: -I${includedir}/arpack diff --git a/arpack-ng-config.cmake.in b/arpack-ng-config.cmake.in index afc0eaa..4ed944e 100644 --- a/arpack-ng-config.cmake.in +++ b/arpack-ng-config.cmake.in @@ -15,9 +15,9 @@ # Create local variables. set(arpack_ng_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@/arpack;${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@") + set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.a") elseif(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so") - set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so;@LAPACK_LIBRARIES@;@BLAS_LIBRARIES@") + set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so") 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}") diff --git a/configure.ac b/configure.ac index ae4ae78..1fbab4c 100644 --- a/configure.ac +++ b/configure.ac @@ -254,13 +254,11 @@ 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_SUBST([ARPACK_PC_LIBS], ["$LAPACK_LIBS $BLAS_LIBS"]) +AC_SUBST([ARPACK_PC_LIBS_PRIVATE], ["$LAPACK_LIBS $BLAS_LIBS"]) AC_CONFIG_FILES([SRC/arpack$LIBSUFFIX.pc:SRC/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_CONFIG_FILES([arpack-ng-config.cmake]) AC_SUBST([arpack_ng_VERSION], ["$VERSION"]) From 1d84a81b8fe2377ccc76781fecb9f46765103a8f Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 22 Mar 2020 22:44:50 -0500 Subject: [PATCH 10/16] Attempt to make cmake files identical when generated by autotools --- arpack-ng-config-version.cmake.in | 2 +- arpack-ng-config.cmake.in | 25 ++++++++++++++++--------- configure.ac | 9 ++------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/arpack-ng-config-version.cmake.in b/arpack-ng-config-version.cmake.in index 1d3a8f0..f6e945c 100644 --- a/arpack-ng-config-version.cmake.in +++ b/arpack-ng-config-version.cmake.in @@ -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() diff --git a/arpack-ng-config.cmake.in b/arpack-ng-config.cmake.in index 4ed944e..594d88a 100644 --- a/arpack-ng-config.cmake.in +++ b/arpack-ng-config.cmake.in @@ -13,16 +13,23 @@ # target_link_libraries(main PARPACK::PARPACK) # Create local variables. -set(arpack_ng_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@/arpack;${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") -elseif(EXISTS "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so") - set(arpack_ng_LIBRARIES "@CMAKE_INSTALL_FULL_LIBDIR@/libarpack.so") +set(prefix "@prefix@") +set(exec_prefix "@exec_prefix@") +set(libdir "@libdir@") +set(includedir "@includedir@") + +set(arpack_ng_INCLUDE_DIRS "${includedir}/arpack;${MPI_Fortran_INCLUDE_DIRS};${MPI_C_INCLUDE_DIRS};${MPI_CXX_INCLUDE_DIRS}") + +if(EXISTS "${libdir}/libarpack.a") + set(arpack_ng_LIBRARIES "${libdir}/libarpack.a") +elseif(EXISTS "${libdir}/libarpack.so") + set(arpack_ng_LIBRARIES "${libdir}/libarpack.so") 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}") + +if(EXISTS "${libdir}/libparpack.a") + set(parpack_ng_LIBRARIES "${libdir}/libparpack.a;${arpack_ng_LIBRARIES};${MPI_Fortran_LIBRARIES};${MPI_C_LIBRARIES};${MPI_CXX_LIBRARIES}") +elseif(EXISTS "${libdir}/libparpack.so") + set(parpack_ng_LIBRARIES "${libdir}/libparpack.so;${arpack_ng_LIBRARIES};${MPI_Fortran_LIBRARIES};${MPI_C_LIBRARIES};${MPI_CXX_LIBRARIES}") endif() # Create arpack targets. diff --git a/configure.ac b/configure.ac index 1fbab4c..4486eaf 100644 --- a/configure.ac +++ b/configure.ac @@ -257,16 +257,11 @@ m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_SUBST([pkgconfigdir], [${libdir AC_SUBST([ARPACK_PC_LIBS_PRIVATE], ["$LAPACK_LIBS $BLAS_LIBS"]) AC_CONFIG_FILES([SRC/arpack$LIBSUFFIX.pc:SRC/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_CONFIG_FILES([arpack-ng-config.cmake]) - -AC_SUBST([arpack_ng_VERSION], ["$VERSION"]) -AC_CONFIG_FILES([arpack-ng-config-version.cmake]) - AC_CONFIG_FILES([ arpackdef.h arpackicb.h + arpack-ng-config-version.cmake + arpack-ng-config.cmake Makefile ICB/Makefile UTIL/Makefile From c5e7b021ddab63eb45a427f772e2845890bfacda Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 22 Mar 2020 22:10:19 -0500 Subject: [PATCH 11/16] Fix the cmake library directory --- CMakeLists.txt | 4 ++-- Makefile.am | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8570371..a782924 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -744,9 +744,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) +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}") diff --git a/Makefile.am b/Makefile.am index bcafa9b..28f257b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -21,7 +21,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 -cmkdir = $(prefix)/lib/cmake -cmk_DATA = 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 From 068a40817b2e56b4310dc422755f66bcf655d336 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Mon, 23 Mar 2020 22:02:22 -0500 Subject: [PATCH 12/16] Add parpack.pc --- .gitignore | 3 ++- CHANGES | 1 + CMakeLists.txt | 13 +++++++++++++ PARPACK/SRC/MPI/Makefile.am | 5 +++++ PARPACK/SRC/MPI/parpack.pc.in | 11 +++++++++++ configure.ac | 6 +++++- 6 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 PARPACK/SRC/MPI/parpack.pc.in diff --git a/.gitignore b/.gitignore index 3d5bc9b..ba5110d 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ config.status libtool .deps/ arpack.pc +parpack.pc arpackdef.h arpackicb.h arpack-ng-config.cmake @@ -77,4 +78,4 @@ VISUAL_STUDIO/bin/ # Temporary files *~ -\#*# \ No newline at end of file +\#*# diff --git a/CHANGES b/CHANGES index 83dc3ae..707d55b 100644 --- a/CHANGES +++ b/CHANGES @@ -32,6 +32,7 @@ arpack-ng - 3.8.0 * [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. [ David Schwörer ] * Support of gfortran 10 diff --git a/CMakeLists.txt b/CMakeLists.txt index a782924..b86205f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -686,6 +686,7 @@ 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) @@ -695,7 +696,17 @@ foreach(lib ${LAPACK_LIBRARIES}) 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) install(TARGETS arpack @@ -710,6 +721,8 @@ if (MPI) 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) diff --git a/PARPACK/SRC/MPI/Makefile.am b/PARPACK/SRC/MPI/Makefile.am index e5198d4..72b0a85 100644 --- a/PARPACK/SRC/MPI/Makefile.am +++ b/PARPACK/SRC/MPI/Makefile.am @@ -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 diff --git a/PARPACK/SRC/MPI/parpack.pc.in b/PARPACK/SRC/MPI/parpack.pc.in new file mode 100644 index 0000000..bbc75c7 --- /dev/null +++ b/PARPACK/SRC/MPI/parpack.pc.in @@ -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@ diff --git a/configure.ac b/configure.ac index 4486eaf..6772a65 100644 --- a/configure.ac +++ b/configure.ac @@ -255,7 +255,11 @@ AM_CONDITIONAL([ICBEXMM], [test x"$enable_icb_exmm" != x"no"]) m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], [AC_SUBST([pkgconfigdir], [${libdir}/pkgconfig])]) AC_SUBST([ARPACK_PC_LIBS_PRIVATE], ["$LAPACK_LIBS $BLAS_LIBS"]) -AC_CONFIG_FILES([SRC/arpack$LIBSUFFIX.pc:SRC/arpack.pc.in], [], [LIBSUFFIX="$LIBSUFFIX"]) +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([ arpackdef.h From 93a3016fc590942476e5233e40622c078145cf04 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Tue, 24 Mar 2020 19:29:47 -0500 Subject: [PATCH 13/16] Clean a few more files --- EXAMPLES/MATRIX_MARKET/Makefile.am | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/EXAMPLES/MATRIX_MARKET/Makefile.am b/EXAMPLES/MATRIX_MARKET/Makefile.am index b107837..fe9d74d 100644 --- a/EXAMPLES/MATRIX_MARKET/Makefile.am +++ b/EXAMPLES/MATRIX_MARKET/Makefile.am @@ -16,4 +16,9 @@ if ICBEXMM pkginclude_HEADERS = arpackSolver.hpp endif -CLEANFILES = arpackmm.resid.out arpackmm.v.out +CLEANFILES = \ + arpackmm.run.log \ + arpackmm.resid.out \ + arpackmm.v.out \ + arpackSolver.resid.out \ + arpackSolver.v.out From a583f7d6a508eaef4732733ae3234858d2bd0a45 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Sun, 22 Mar 2020 19:34:26 -0500 Subject: [PATCH 14/16] Add arpackSolver.pc --- .gitignore | 1 + CHANGES | 2 +- CMakeLists.txt | 2 ++ EXAMPLES/MATRIX_MARKET/Makefile.am | 1 + EXAMPLES/MATRIX_MARKET/arpackSolver.pc.in | 10 ++++++++++ Makefile.am | 3 +++ configure.ac | 1 + 7 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 EXAMPLES/MATRIX_MARKET/arpackSolver.pc.in diff --git a/.gitignore b/.gitignore index ba5110d..61eca04 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ libtool .deps/ arpack.pc parpack.pc +arpackSolver.pc arpackdef.h arpackicb.h arpack-ng-config.cmake diff --git a/CHANGES b/CHANGES index 707d55b..c3ef29c 100644 --- a/CHANGES +++ b/CHANGES @@ -32,7 +32,7 @@ arpack-ng - 3.8.0 * [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. + * Add parpack.pc and arpackSolver.pc. [ David Schwörer ] * Support of gfortran 10 diff --git a/CMakeLists.txt b/CMakeLists.txt index b86205f..65298dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -707,6 +707,7 @@ 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 @@ -734,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() diff --git a/EXAMPLES/MATRIX_MARKET/Makefile.am b/EXAMPLES/MATRIX_MARKET/Makefile.am index fe9d74d..cc2b7cc 100644 --- a/EXAMPLES/MATRIX_MARKET/Makefile.am +++ b/EXAMPLES/MATRIX_MARKET/Makefile.am @@ -14,6 +14,7 @@ arpackmm_SOURCES = arpackmm.cpp if ICBEXMM pkginclude_HEADERS = arpackSolver.hpp +pkgconfig_DATA = arpackSolver.pc endif CLEANFILES = \ diff --git a/EXAMPLES/MATRIX_MARKET/arpackSolver.pc.in b/EXAMPLES/MATRIX_MARKET/arpackSolver.pc.in new file mode 100644 index 0000000..5f92aeb --- /dev/null +++ b/EXAMPLES/MATRIX_MARKET/arpackSolver.pc.in @@ -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 diff --git a/Makefile.am b/Makefile.am index 28f257b..f71acd6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 diff --git a/configure.ac b/configure.ac index 6772a65..b197cbf 100644 --- a/configure.ac +++ b/configure.ac @@ -262,6 +262,7 @@ AC_CONFIG_FILES([ ], [], [LIBSUFFIX="$LIBSUFFIX"]) AC_CONFIG_FILES([ + EXAMPLES/MATRIX_MARKET/arpackSolver.pc arpackdef.h arpackicb.h arpack-ng-config-version.cmake From 1da025c2d3ec2b77c2121469aed195ae20d45a75 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Mon, 23 Nov 2020 22:22:30 -0600 Subject: [PATCH 15/16] Update arpack-ng-config.cmake to match pkgconfig files Removes the manual search for library files (where the static lib was preferred by default), instead passes the library name as a -l flag so the system can search for it in the preferred manner. MPI libraries and includes should not be part of PARPACK's interface, instead they belong in the equivalent of Libs.private/Requires.private in the pkgconfig files. Remove them. PARPACK has no header files of its own. Remove them from the target_include_directories stuff. --- arpack-ng-config.cmake.in | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/arpack-ng-config.cmake.in b/arpack-ng-config.cmake.in index 594d88a..b8c011b 100644 --- a/arpack-ng-config.cmake.in +++ b/arpack-ng-config.cmake.in @@ -3,13 +3,12 @@ # 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. @@ -18,24 +17,9 @@ set(exec_prefix "@exec_prefix@") set(libdir "@libdir@") set(includedir "@includedir@") -set(arpack_ng_INCLUDE_DIRS "${includedir}/arpack;${MPI_Fortran_INCLUDE_DIRS};${MPI_C_INCLUDE_DIRS};${MPI_CXX_INCLUDE_DIRS}") - -if(EXISTS "${libdir}/libarpack.a") - set(arpack_ng_LIBRARIES "${libdir}/libarpack.a") -elseif(EXISTS "${libdir}/libarpack.so") - set(arpack_ng_LIBRARIES "${libdir}/libarpack.so") -endif() - -if(EXISTS "${libdir}/libparpack.a") - set(parpack_ng_LIBRARIES "${libdir}/libparpack.a;${arpack_ng_LIBRARIES};${MPI_Fortran_LIBRARIES};${MPI_C_LIBRARIES};${MPI_CXX_LIBRARIES}") -elseif(EXISTS "${libdir}/libparpack.so") - set(parpack_ng_LIBRARIES "${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}") +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") From 4345d4af5156b2002300c4da86250750d3289ebf Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Mon, 23 Nov 2020 22:46:29 -0600 Subject: [PATCH 16/16] Fix variable name typo --- CMakeLists.txt | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 65298dd..fb7f922 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,7 +43,7 @@ if (COVERALLS) 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) @@ -58,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) @@ -307,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) @@ -529,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 ) @@ -537,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() @@ -578,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) @@ -591,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) @@ -662,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()