cp2k/cmake/cp2kConfig.cmake.in

217 lines
6 KiB
CMake

#!-------------------------------------------------------------------------------------------------!
#! 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 !
#!-------------------------------------------------------------------------------------------------!
if(CMAKE_VERSION VERSION_LESS "3.24")
message(FATAL_ERROR "CP2K requires CMake 3.24 or newer.")
endif()
include(CMakeFindDependencyMacro)
if(NOT TARGET cp2k::cp2k)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/modules"
${CMAKE_MODULE_PATH})
# Store CXX compiler id used in MKL package
set(CP2K_CXX_COMPILER_ID @CMAKE_CXX_COMPILER_ID@)
if(NOT CMAKE_CXX_COMPILER_ID)
set(CMAKE_CXX_COMPILER_ID ${CP2K_CXX_COMPILER_ID})
endif()
# Define LAPACK and BLAS TARGETS
set(CP2K_BLAS_VENDOR @CP2K_BLAS_VENDOR@)
set(CP2K_SCALAPACK_VENDOR @CP2K_SCALAPACK_VENDOR@)
set(CP2K_BLAS_LINK_LIBRARIES @CP2K_BLAS_LINK_LIBRARIES@)
set(CP2K_LAPACK_LINK_LIBRARIES @CP2K_LAPACK_LINK_LIBRARIES@)
set(CP2K_SCALAPACK_LINK_LIBRARIES @CP2K_SCALAPACK_LINK_LIBRARIES@)
set(CP2K_CONFIG_PACKAGE ON)
find_dependency(Lapack REQUIRED)
set(CP2K_USE_MPI @CP2K_USE_MPI@)
if(CP2K_USE_MPI)
find_dependency(MPI REQUIRED)
find_dependency(SCALAPACK REQUIRED)
endif()
unset(CP2K_CONFIG_PACKAGE)
set(cp2k_VERSION @cp2k_VERSION@)
find_dependency(DBCSR 2.8 REQUIRED)
set(CP2K_USE_LIBXS @CP2K_USE_LIBXS@)
set(CP2K_USE_LIBXSMM @CP2K_USE_LIBXSMM@)
if(CP2K_USE_LIBXS)
find_dependency(libxs REQUIRED)
if(CP2K_USE_LIBXSMM)
find_dependency(libxsmm REQUIRED)
endif()
endif()
set(CP2K_USE_OPENCL @CP2K_USE_OPENCL@)
if(CP2K_USE_OPENCL)
find_dependency(OpenCL REQUIRED)
find_dependency(libxstream REQUIRED)
endif()
set(CP2K_USE_HIP @CP2K_USE_HIP@)
if(CP2K_USE_HIP)
# Find HIP
find_dependency(hipfft REQUIRED IMPORTED CONFIG)
find_dependency(hipblas REQUIRED IMPORTED CONFIG)
endif()
set(CP2K_USE_CUDA @CP2K_USE_CUDA@)
if(CP2K_USE_CUDA)
find_dependency(CUDAToolkit REQUIRED)
endif()
set(CP2K_USE_ELPA @CP2K_USE_ELPA@)
if(CP2K_USE_ELPA)
find_dependency(Elpa REQUIRED)
endif()
set(CP2K_USE_DLAF @CP2K_USE_DLAF@)
if(CP2K_USE_DLAF)
find_dependency(DLAFFortran 0.4.0 REQUIRED)
endif()
set(CP2K_USE_LIBXC @CP2K_USE_LIBXC@)
if(CP2K_USE_LIBXC)
find_dependency(Libxc 7 REQUIRED CONFIG)
endif()
set(CP2K_USE_GAUXC @CP2K_USE_GAUXC@)
if(CP2K_USE_GAUXC)
find_dependency(gauxc REQUIRED CONFIG)
endif()
set(CP2K_USE_COSMA @CP2K_USE_COSMA@)
if(CP2K_USE_COSMA)
find_dependency(cosma REQUIRED)
if(NOT TARGET cp2k::cosma)
add_library(cp2k::cosma INTERFACE IMPORTED)
target_link_libraries(cp2k::cosma INTERFACE cosma::cosma_prefixed_pxgemm
cosma::cosma)
endif()
endif()
set(CP2K_USE_FFTW3 @CP2K_USE_FFTW3@)
if(CP2K_USE_FFTW3)
find_dependency(Fftw REQUIRED)
endif()
set(CP2K_USE_LIBINT2 @CP2K_USE_LIBINT2@)
if(CP2K_USE_LIBINT2)
find_dependency(Libint2 REQUIRED)
endif()
set(CP2K_USE_LIBFCI @CP2K_USE_LIBFCI@)
if(CP2K_USE_LIBFCI)
find_dependency(libfci REQUIRED)
endif()
set(CP2K_USE_SPGLIB @CP2K_USE_SPGLIB@)
if(CP2K_USE_SPGLIB)
find_dependency(Spglib REQUIRED CONFIG)
endif()
set(CP2K_USE_SPLA @CP2K_USE_SPLA@)
if(CP2K_USE_SPLA)
find_dependency(SPLA REQUIRED CONFIG)
endif()
set(CP2K_USE_SIRIUS @CP2K_USE_SIRIUS@)
if(CP2K_USE_SIRIUS)
find_dependency(sirius 7.7.0 REQUIRED)
endif()
set(CP2K_USE_PLUMED @CP2K_USE_PLUMED@)
if(CP2K_USE_PLUMED)
find_dependency(Plumed REQUIRED)
endif()
set(CP2K_USE_LIBTORCH @CP2K_USE_LIBTORCH@)
if(CP2K_USE_LIBTORCH)
find_dependency(Torch REQUIRED)
endif()
set(CP2K_USE_HDF5 @CP2K_USE_HDF5@)
if(CP2K_USE_HDF5)
find_dependency(HDF5 REQUIRED COMPONENTS C Fortran)
endif()
set(CP2K_USE_DFTD4 @CP2K_USE_DFTD4@)
if(CP2K_USE_DFTD4)
find_dependency(dftd4 REQUIRED)
endif()
set(CP2K_USE_DEEPMD @CP2K_USE_DEEPMD@)
if(CP2K_USE_DEEPMD)
find_dependency(DeePMD REQUIRED CONFIG)
endif()
set(CP2K_USE_PEXSI @CP2K_USE_PEXSI@)
if(CP2K_USE_PEXSI)
find_dependency(PEXSI REQUIRED CONFIG)
endif()
set(CP2K_USE_ACE @CP2K_USE_ACE@)
if(CP2K_USE_ACE)
find_dependency(pace REQUIRED)
endif()
set(CP2K_USE_LIBSMEAGOL @CP2K_USE_LIBSMEAGOL@)
if(CP2K_USE_LIBSMEAGOL)
find_dependency(libsmeagol REQUIRED)
endif()
set(CP2K_USE_MIMIC @CP2K_USE_MIMIC@)
if(CP2K_USE_MIMIC)
find_dependency(MiMiC REQUIRED)
endif()
set(CP2K_USE_OPENPMD @CP2K_USE_OPENPMD@)
if(CP2K_USE_OPENPMD)
find_dependency(openPMD 0.16.1 REQUIRED)
endif()
set(CP2K_USE_VORI @CP2K_USE_VORI@)
if(CP2K_USE_VORI)
find_dependency(LibVORI REQUIRED)
endif()
set(CP2K_USE_GREENX @CP2K_USE_GREENX@)
if(CP2K_USE_GREENX)
find_dependency(greenX REQUIRED CONFIG)
if(NOT TARGET cp2k::greenx)
add_library(cp2k::greenx INTERFACE IMPORTED)
target_link_libraries(cp2k::greenx INTERFACE greenX::GXCommon
greenX::LibGXAC
greenX::LibGXMiniMax)
endif()
endif()
set(CP2K_USE_TBLITE @CP2K_USE_TBLITE@)
if(CP2K_USE_TBLITE)
find_dependency(tblite REQUIRED)
if(NOT TARGET cp2k::tblite)
add_library(cp2k::tblite INTERFACE IMPORTED)
target_link_libraries(
cp2k::tblite INTERFACE tblite::tblite mctc-lib::mctc-lib dftd4::dftd4
toml-f::toml-f s-dftd3::s-dftd3)
endif()
endif()
set(CP2K_USE_TREXIO @CP2K_USE_TREXIO@)
if(CP2K_USE_TREXIO)
find_dependency(TrexIO REQUIRED)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/cp2kTargets.cmake")
# Clean-up module path
list(REMOVE_ITEM CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/modules")
endif()