mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-21 06:25:15 -04:00
217 lines
6 KiB
CMake
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()
|