Simplify spack recipe for libfci (#5562)

This commit is contained in:
Matthias Krack 2026-07-09 16:58:20 +02:00 committed by GitHub
parent f7216f7eed
commit b7af1c16c0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 47 additions and 33 deletions

View file

@ -837,7 +837,7 @@ if(CP2K_USE_LIBGINT)
endif()
if(CP2K_USE_LIBFCI)
find_package(libfci REQUIRED)
find_package(LibFCI REQUIRED)
endif()
# Spglib
@ -1208,9 +1208,7 @@ if(CP2K_USE_LIBGINT)
endif()
if(CP2K_USE_LIBFCI)
message(" - LibFCI\n"
" - Include directories: ${CP2K_LIBFCI_INCLUDE_DIRS}\n"
" - Libraries: ${CP2K_LIBFCI_LINK_LIBRARIES}\n")
message(" - LibFCI\n" " - Libraries: ${CP2K_LIBFCI_LINK_LIBRARIES}\n")
endif()
if(CP2K_USE_VORI)

View file

@ -0,0 +1,37 @@
#!-------------------------------------------------------------------------------------------------!
#! CP2K: A general program to perform molecular dynamics simulations !
#! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
#! !
#! SPDX-License-Identifier: GPL-2.0-or-later !
#!-------------------------------------------------------------------------------------------------!
include(FindPackageHandleStandardArgs)
include(cp2k_utils)
cp2k_set_default_paths(LIBFCI "LibFCI")
cp2k_find_libraries(LIBFCI "fci")
if(CP2K_LIBFCI_INCLUDE_DIRS)
find_package_handle_standard_args(
LibFCI DEFAULT_MSG CP2K_LIBFCI_LINK_LIBRARIES CP2K_LIBFCI_INCLUDE_DIRS)
else()
find_package_handle_standard_args(LibFCI DEFAULT_MSG
CP2K_LIBFCI_LINK_LIBRARIES)
endif()
if(LibFCI_FOUND)
if(NOT TARGET libfci::fci)
add_library(libfci::fci INTERFACE IMPORTED)
set_target_properties(
libfci::fci PROPERTIES INTERFACE_LINK_LIBRARIES
"${CP2K_LIBFCI_LINK_LIBRARIES}")
if(CP2K_LIBFCI_INCLUDE_DIRS)
set_target_properties(
libfci::fci PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${CP2K_LIBFCI_INCLUDE_DIRS}")
endif()
endif()
endif()
mark_as_advanced(CP2K_LIBFCI_ROOT CP2K_LIBFCI_INCLUDE_DIRS
CP2K_LIBFCI_LINK_LIBRARIES CP2K_LIBFCI_LIBRARIES)

View file

@ -243,10 +243,10 @@ while [[ $# -gt 0 ]]; do
case "${CP2K_VERSION}" in
ssmp-static)
CMAKE_FEATURE_FLAG_ALL="-DCP2K_USE_EVERYTHING=ON"
for package in libint2 libxc libxs spglib vori tblite; do
for package in libfci libint2 libxc libxs spglib vori tblite; do
CMAKE_FEATURE_FLAGS+=" -DCP2K_USE_${package^^}=ON"
done
for package in ace deepmd gauxc greenx hdf5 libfci libgint libtorch pexsi trexio; do
for package in ace deepmd gauxc greenx hdf5 libgint libtorch pexsi trexio; do
CMAKE_FEATURE_FLAGS+=" -DCP2K_USE_${package^^}=OFF"
done
;;

View file

@ -76,6 +76,10 @@ spack:
- "+fortran"
- "~shared"
libfci:
require:
- "~shared"
libint:
require:
- "+fortran"

View file

@ -19,7 +19,7 @@ class Libfci(CMakePackage):
maintainers("mkrack")
homepage = "https://github.com/DCM-Uni-Paderborn/libfci"
url = "https://www.cp2k.org/static/downloads/libfci-0.1.0.tar.gz"
url = "https://www.cp2k.org/static/downloads/libfci-0.0.0.tar.gz"
git = "https://github.com/DCM-Uni-Paderborn/libfci.git"
license("LicenseRef-Knizia-Permissive", checked_by="mkrack")
@ -28,8 +28,7 @@ class Libfci(CMakePackage):
version("0.1.0", sha256="63e8bd632e55f4b99dbaa3e905cdcd3c5dbc17aefdca1391b855f34a792bb29a")
variant("openmp", default=True, description="Build with OpenMP parallelisation support")
variant("pic", default=True, description="Build position independent code")
variant("shared", default=False, description="Build shared libraries (otherwise static)")
variant("shared", default=True, description="Build shared libraries (otherwise static)")
depends_on("cmake@3.16:", type="build")
depends_on("cxx", type="build")
@ -38,32 +37,8 @@ class Libfci(CMakePackage):
depends_on("lapack")
def cmake_args(self):
spec = self.spec
args = [
self.define_from_variant("LIBFCI_USE_OPENMP", "openmp"),
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
self.define("BLA_STATIC", True),
]
# Force BLAS manually for static linking
if not spec.satisfies("+shared"):
blas = spec["blas"]
# Get actual static libraries
blas_libs = []
for lib in blas.libs.libraries:
if lib.endswith(".a"):
blas_libs.append(lib)
# Fallback if .a not explicitly listed
if not blas_libs:
blas_libs = blas.libs.libraries
full = blas_libs + ["-lpthread", "-lm", "-ldl"]
args.append(self.define("BLAS_LIBRARIES", ";".join(full)))
args.append(self.define("LAPACK_LIBRARIES", ";".join(full)))
return args