From 6f92e7c1c483eccd5d1f7a973ac024e88d6e1233 Mon Sep 17 00:00:00 2001 From: Kyle Guinn Date: Tue, 15 Aug 2023 23:44:15 -0500 Subject: [PATCH 1/2] Don't install pkg-config files for unbuilt libraries The autotools build is configured to skip entire directories depending on the configuration. Each directory's Makefile is responsible for installing what it needs, and moving the .pc files to the toplevel broke that. In the pkg-config files, leave ${includedir} unmodified from how configure defines it. --- CHANGES | 3 +++ CMakeLists.txt | 10 +++++----- Makefile.am | 5 ----- PARPACK/SRC/MPI/Makefile.am | 5 +++++ {pkg-config => PARPACK/SRC/MPI}/parpack.pc.in | 4 ++-- SRC/Makefile.am | 5 +++++ {pkg-config => SRC}/arpack.pc.in | 4 ++-- configure.ac | 8 +++----- ...AutotoolsInstall.sh.in => tstAutotoolsInstall.sh.in | 0 9 files changed, 25 insertions(+), 19 deletions(-) rename {pkg-config => PARPACK/SRC/MPI}/parpack.pc.in (84%) rename {pkg-config => SRC}/arpack.pc.in (82%) rename pkg-config/tstAutotoolsInstall.sh.in => tstAutotoolsInstall.sh.in (100%) mode change 100755 => 100644 diff --git a/CHANGES b/CHANGES index 2ce7c42ff..06d2ec139 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ arpack-ng - 3.9.1 +[ Kyle Guinn ] + * [BUG FIX] Don't install pkg-config files for libraries that were not built. + [ Fabien Péan ] * [BUG FIX] Tests for PARPACK with C/C++ bindings icb_parpack_c and icb_parpack_cpp are now really parallel and split the problem across MPI processes. diff --git a/CMakeLists.txt b/CMakeLists.txt index 971570642..eaa809fb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -806,7 +806,7 @@ endif() set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix \${prefix}) set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) -set(includedir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}) +set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) set(PACKAGE_NAME ${PROJECT_NAME}) set(PACKAGE_VERSION ${arpack_ng_VERSION}) set(PACKAGE_URL "https://github.com/opencollab/arpack-ng/") @@ -829,15 +829,15 @@ foreach(lib ${LAPACK_LIBRARIES} ${MPI_Fortran_LIBRARIES}) endforeach() string(REPLACE ";" " " PARPACK_PC_LIBS_PRIVATE "${PARPACK_PC_LIBS_PRIVATE}") -configure_file(pkg-config/arpack.pc.in "${PROJECT_BINARY_DIR}/arpack${LIBSUFFIX}${ITF64SUFFIX}.pc" @ONLY) -configure_file(pkg-config/parpack.pc.in "${PROJECT_BINARY_DIR}/parpack${LIBSUFFIX}${ITF64SUFFIX}.pc" @ONLY) +configure_file(SRC/arpack.pc.in "${PROJECT_BINARY_DIR}/SRC/arpack${LIBSUFFIX}${ITF64SUFFIX}.pc" @ONLY) +configure_file(PARPACK/SRC/MPI/parpack.pc.in "${PROJECT_BINARY_DIR}/PARPACK/SRC/MPI/parpack${LIBSUFFIX}${ITF64SUFFIX}.pc" @ONLY) install(TARGETS arpack EXPORT arpackngTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES "${PROJECT_BINARY_DIR}/arpack${LIBSUFFIX}${ITF64SUFFIX}.pc" +install(FILES "${PROJECT_BINARY_DIR}/SRC/arpack${LIBSUFFIX}${ITF64SUFFIX}.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) if (MPI) @@ -846,7 +846,7 @@ if (MPI) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(FILES "${PROJECT_BINARY_DIR}/parpack${LIBSUFFIX}${ITF64SUFFIX}.pc" + install(FILES "${PROJECT_BINARY_DIR}/PARPACK/SRC/MPI/parpack${LIBSUFFIX}${ITF64SUFFIX}.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) endif () diff --git a/Makefile.am b/Makefile.am index 124c79146..215ca9ece 100644 --- a/Makefile.am +++ b/Makefile.am @@ -26,8 +26,3 @@ endif EXTRA_DIST = README.md PARPACK_CHANGES CHANGES DOCUMENTS VISUAL_STUDIO \ detect_arpack_bug.m4 CMakeLists.txt - -pkgconfig_DATA = arpack@LIBSUFFIX@@ITF64SUFFIX@.pc parpack@LIBSUFFIX@@ITF64SUFFIX@.pc - -# Due to the LIBSUFFIX/ITF64SUFFIX, configure doesn't automatically clean this file: -DISTCLEANFILES = arpack@LIBSUFFIX@@ITF64SUFFIX@.pc parpack@LIBSUFFIX@@ITF64SUFFIX@.pc diff --git a/PARPACK/SRC/MPI/Makefile.am b/PARPACK/SRC/MPI/Makefile.am index b574a8207..2dc044fa1 100644 --- a/PARPACK/SRC/MPI/Makefile.am +++ b/PARPACK/SRC/MPI/Makefile.am @@ -46,3 +46,8 @@ if ICB libparpack@LIBSUFFIX@@ITF64SUFFIX@_la_LIBADD += $(top_builddir)/ICB/libdbgicb.la $(top_builddir)/ICB/libstaicb.la libparpack@LIBSUFFIX@@ITF64SUFFIX@_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_builddir) endif + +pkgconfig_DATA = parpack@LIBSUFFIX@@ITF64SUFFIX@.pc + +# Due to the LIBSUFFIX/ITF64SUFFIX, configure doesn't automatically clean this file: +DISTCLEANFILES = parpack@LIBSUFFIX@@ITF64SUFFIX@.pc diff --git a/pkg-config/parpack.pc.in b/PARPACK/SRC/MPI/parpack.pc.in similarity index 84% rename from pkg-config/parpack.pc.in rename to PARPACK/SRC/MPI/parpack.pc.in index c115e2b6e..1ab7f3384 100644 --- a/pkg-config/parpack.pc.in +++ b/PARPACK/SRC/MPI/parpack.pc.in @@ -1,7 +1,7 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ -includedir=@includedir@/arpack@ITF64SUFFIX@ +includedir=@includedir@ Name: @PACKAGE_NAME@ Description: Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems @@ -10,4 +10,4 @@ URL: @PACKAGE_URL@ Requires.private: arpack@LIBSUFFIX@@ITF64SUFFIX@ Libs: -L${libdir} -lparpack@LIBSUFFIX@@ITF64SUFFIX@ Libs.private: @PARPACK_PC_LIBS_PRIVATE@ -Cflags: -I${includedir} +Cflags: -I${includedir}/arpack@ITF64SUFFIX@ diff --git a/SRC/Makefile.am b/SRC/Makefile.am index afc48c051..2d54544e1 100644 --- a/SRC/Makefile.am +++ b/SRC/Makefile.am @@ -33,3 +33,8 @@ if ICB libarpack@LIBSUFFIX@@ITF64SUFFIX@_la_LIBADD += $(top_builddir)/ICB/libdbgicb.la $(top_builddir)/ICB/libstaicb.la libarpack@LIBSUFFIX@@ITF64SUFFIX@_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_builddir) endif + +pkgconfig_DATA = arpack@LIBSUFFIX@@ITF64SUFFIX@.pc + +# Due to the LIBSUFFIX/ITF64SUFFIX, configure doesn't automatically clean this file: +DISTCLEANFILES = arpack@LIBSUFFIX@@ITF64SUFFIX@.pc diff --git a/pkg-config/arpack.pc.in b/SRC/arpack.pc.in similarity index 82% rename from pkg-config/arpack.pc.in rename to SRC/arpack.pc.in index 08abf6b06..b549928c2 100644 --- a/pkg-config/arpack.pc.in +++ b/SRC/arpack.pc.in @@ -1,7 +1,7 @@ prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ -includedir=@includedir@/arpack@ITF64SUFFIX@ +includedir=@includedir@ Name: @PACKAGE_NAME@ Description: Collection of Fortran77 subroutines designed to solve large scale eigenvalue problems @@ -9,4 +9,4 @@ Version: @PACKAGE_VERSION@ URL: @PACKAGE_URL@ Libs: -L${libdir} -larpack@LIBSUFFIX@@ITF64SUFFIX@ Libs.private: @ARPACK_PC_LIBS_PRIVATE@ -Cflags: -I${includedir} +Cflags: -I${includedir}/arpack@ITF64SUFFIX@ diff --git a/configure.ac b/configure.ac index 4c43bab51..74bd68eb9 100644 --- a/configure.ac +++ b/configure.ac @@ -347,14 +347,12 @@ 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([ - arpack$LIBSUFFIX$ITF64SUFFIX.pc:pkg-config/arpack.pc.in - parpack$LIBSUFFIX$ITF64SUFFIX.pc:pkg-config/parpack.pc.in + SRC/arpack$LIBSUFFIX$ITF64SUFFIX.pc:SRC/arpack.pc.in + PARPACK/SRC/MPI/parpack$LIBSUFFIX$ITF64SUFFIX.pc:PARPACK/SRC/MPI/parpack.pc.in ], [], [LIBSUFFIX="$LIBSUFFIX"; ITF64SUFFIX="$ITF64SUFFIX"]) dnl We do NOT want arpackng*.cmake files to be created: @MPI@ can not be replaced. -AC_CONFIG_FILES([ - tstAutotoolsInstall.sh:pkg-config/tstAutotoolsInstall.sh.in -], [], [abs_top_builddir="$abs_top_builddir"]) +AC_CONFIG_FILES([tstAutotoolsInstall.sh], [chmod +x tstAutotoolsInstall.sh], [abs_top_builddir="$abs_top_builddir"]) AC_CONFIG_FILES([ arpackdef.h diff --git a/pkg-config/tstAutotoolsInstall.sh.in b/tstAutotoolsInstall.sh.in old mode 100755 new mode 100644 similarity index 100% rename from pkg-config/tstAutotoolsInstall.sh.in rename to tstAutotoolsInstall.sh.in From afd8413934b32c3f19c697211cde2af4114954ab Mon Sep 17 00:00:00 2001 From: Franck HOUSSEN Date: Sun, 20 Aug 2023 12:26:50 +0200 Subject: [PATCH 2/2] Install arpackicb.h only when ICB is ON. --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eaa809fb2..3f9add20a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -879,8 +879,10 @@ endif() configure_file(arpackdef.h.in "${PROJECT_BINARY_DIR}/arpackdef.h" @ONLY) install(FILES "${PROJECT_BINARY_DIR}/arpackdef.h" DESTINATION ${ARPACK_INSTALL_INCLUDEDIR}) -configure_file(arpackicb.h.in "${PROJECT_BINARY_DIR}/arpackicb.h" @ONLY) -install(FILES "${PROJECT_BINARY_DIR}/arpackicb.h" DESTINATION ${ARPACK_INSTALL_INCLUDEDIR}) +if(ICB) + configure_file(arpackicb.h.in "${PROJECT_BINARY_DIR}/arpackicb.h" @ONLY) + install(FILES "${PROJECT_BINARY_DIR}/arpackicb.h" DESTINATION ${ARPACK_INSTALL_INCLUDEDIR}) +endif() install(EXPORT arpackngTargets DESTINATION "${ARPACK_INSTALL_CMAKEDIR}"