mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-21 06:25:15 -04:00
Simplify spack recipe for libfci (#5562)
This commit is contained in:
parent
f7216f7eed
commit
b7af1c16c0
5 changed files with 47 additions and 33 deletions
|
|
@ -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)
|
||||
|
|
|
|||
37
cmake/modules/FindLibFCI.cmake
Normal file
37
cmake/modules/FindLibFCI.cmake
Normal 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)
|
||||
|
|
@ -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
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -76,6 +76,10 @@ spack:
|
|||
- "+fortran"
|
||||
- "~shared"
|
||||
|
||||
libfci:
|
||||
require:
|
||||
- "~shared"
|
||||
|
||||
libint:
|
||||
require:
|
||||
- "+fortran"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue