0% found this document useful (0 votes)
31 views14 pages

CMake Lists

Uploaded by

ycnian
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views14 pages

CMake Lists

Uploaded by

ycnian
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 14

#!

---------------------------------------------------------------------------------
----------------!
#! CP2K: A general program to perform molecular dynamics simulations
!
#! Copyright 2000-2022 CP2K developers group <https://cp2k.org>
!
#!
!
#! SPDX-License-Identifier: GPL-2.0-or-later
!
#!---------------------------------------------------------------------------------
----------------!

cmake_minimum_required(VERSION 3.22)

# include our cmake snippets


set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

#
===================================================================================
==============
# REQUIRE OUT-OF-SOURCE BUILDS
file(TO_CMAKE_PATH "${PROJECT_BINARY_DIR}/CMakeLists.txt" LOC_PATH)
if(EXISTS "${LOC_PATH}")
message(
FATAL_ERROR
"You cannot build in a source directory (or any directory with a
CMakeLists.txt file). Please make a build subdirectory."
)
endif()

#
===================================================================================
==============
# PROJECT AND VERSION
include(CMakeDependentOption)
cmake_policy(SET CMP0048 NEW)

set(VERSION_MAJOR 22)
# anything above 12 is to indicate that it is devel-branch. The git hash commit
# is the only important information to give. It is retrieved few lines below.
set(VERSION_MINOR 99)
set(VERSION_PATCH 00)

project(
cp2k
DESCRIPTION "CP2K"
HOMEPAGE_URL "https://www.cp2k.org"
VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}
LANGUAGES Fortran C CXX)

set(cp2k_APIVERSION ${cp2k_VERSION_MAJOR}.${cp2k_VERSION_MINOR})

if(NOT DEFINED CMAKE_CUDA_STANDARD)


set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()

# set language and standard


set(CMAKE_CXX_STANDARD 11)

find_package(PkgConfig)

# ##############################################################################
# Define the paths for static libraries and executables
# ##############################################################################
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
${cp2k_BINARY_DIR}/lib
CACHE PATH "Single output directory for building all libraries.")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
${cp2k_BINARY_DIR}/bin
CACHE PATH "Single output directory for building all executables.")

# Search for rocm in common locations


foreach(__var ROCM_ROOT CRAY_ROCM_ROOT ORNL_ROCM_ROOT CRAY_ROCM_PREFIX
ROCM_PREFIX CRAY_ROCM_DIR)
if($ENV{${__var}})
list(APPEND CMAKE_PREFIX_PATH $ENV{__var})
set(ROCM_PATH
$ENV{__var}
CACHE PATH "Path to ROCm installation")
endif()
endforeach()

#
===================================================================================
==============
# OPTIONS

option(CMAKE_POSITION_INDEPENDENT_CODE "Enable position independent code" ON)


option(CP2K_DEBUG_MODE "Enable several additional options for debugging cp2k."
OFF)
option(CP2K_USE_SIRIUS "Enable plane wave dft calculations with sirius" OFF)
option(CP2K_USE_FFTW3 "Use fftw3 for the calculating fast fourier transforms"
ON)
option(CP2K_USE_ELPA "Enable elpa support" OFF)
option(CP2K_USE_PEXSI "Enable pexsi support" OFF)
option(CP2K_USE_SUPERLU "Enable superlu support" OFF)
option(CP2K_USE_COSMA "COSMA is a drop in replacement of scalapack dgemm" ON)
option(CP2K_USE_LIBINT2 "Enable libint2 support" ON)
option(CP2K_USE_PLUMED "Enable plumed2 support" OFF)
option(CP2K_USE_VORI "Enable libvori support" OFF)
option(CP2K_USE_PEXSI "Enable pexsi support" OFF)
option(CP2K_USE_QUIP "Enable quip support" OFF)
option(CP2K_USE_SPGLIB "Enable spglib support" ON)
option(CP2K_USE_LIBXC "Enable libxc support" ON)
option(CP2K_USE_LIBTORCH "Enable libtorch support" OFF)
option(CP2K_USE_STATIC_BLAS "Link against static version of BLAS/LAPACK" OFF)
option(CP2K_USE_SPLA
"Use SPLA offloading gemm feature to the GPU if it is beneficial. " OFF)
option(CP2K_USE_METIS "enable metis library support" OFF)
option(CP2K_USE_LIBXSMM "Use libxsmm for small gemms (supports x86 platforms)"
ON)

cmake_dependent_option(CP2K_ENABLE_ELPA_OPENMP_SUPPORT
"Enable elpa openmp support" OFF "CP2K_USE_ELPA" OFF)
cmake_dependent_option(CP2K_ENABLE_FFTW3_OPENMP_SUPPORT
"Enable FFTW openmp support" ON "CP2K_USE_FFTW3" OFF)
cmake_dependent_option(CP2K_ENABLE_FFTW3_THREADS_SUPPORT
"Enable FFTW THREADS support" OFF "CP2K_USE_FFTW3" OFF)

set(CP2K_SCALAPACK_VENDOR_LIST "MKL" "SCI" "GENERIC")


set(CP2K_SCALAPACK_VENDOR
"GENERIC"
CACHE STRING "scalapack vendor/generic backend")
set_property(CACHE CP2K_SCALAPACK_VENDOR PROPERTY STRINGS
${CP2K_SCALAPACK_VENDOR_LIST})

if(NOT ${CP2K_SCALAPACK_VENDOR} IN_LIST CP2K_SCALAPACK_VENDOR_LIST)


message(FATAL_ERROR "Invalid scalapack vendor backend")
endif()

# ##############################################################################
# # gpu related options # #
# ##############################################################################

set(CP2K_SUPPORTED_ACCELERATION_TARGETS CUDA HIP NONE)


set(CP2K_SUPPORTED_CUDA_ARCHITECTURES K20X K40 K80 P100 V100 A100)
set(CP2K_SUPPORTED_HIP_ARCHITECTURES
Mi50
Mi100
Mi210
Mi250X
K20X
K40
K80
P100
V100
A100)

set(CP2K_WITH_GPU
"P100"
CACHE STRING
"Set the CUDA GPU architecture if HIP is enabled (default: P100)")

set_property(
CACHE CP2K_WITH_GPU PROPERTY STRINGS ${CP2K_SUPPORTED_CUDA_ARCHITECTURES}
${CP2K_SUPPORTED_HIP_ARCHITECTURES})

set(CP2K_USE_ACCEL
"NONE"
CACHE STRING "Set hardware acceleartion support: CUDA, HIP")

set_property(CACHE CP2K_USE_ACCEL
PROPERTY STRINGS ${CP2K_SUPPORTED_ACCELERATION_TARGETS})

cmake_dependent_option(
CP2K_USE_SPLA_GEMM_OFFLOADING ON
"Enable SPLA dgemm offloading (only valid with gpu support on)"
"(NOT CP2K_USE_ACCEL MATCHES \"NONE\") AND (CP2K_USE_SPLA)" OFF)

# ##############################################################################
#
# GPU debug options
#
# ##############################################################################
cmake_dependent_option(
CP2K_DISABLE_GRID_GPU
OFF
"disable the hardware accelerated backend for grid related functions. It is only
effective when general gpu support is enabled."
"CP2K_DEBUG_MODE"
OFF)

cmake_dependent_option(
CP2K_DISABLE_PW_GPU
OFF
"disable the ffts accelerated (mostly GPU) backend. It is only effective when
general gpu support is enabled."
"CP2K_DEBUG_MODE"
OFF)
cmake_dependent_option(
CP2K_DISABLE_DBM_GPU
OFF
"disable the dbm accelerated (mostly GPU) backend. It is only effective when
general gpu support is enabled."
"CP2K_DEBUG_MODE"
OFF)
cmake_dependent_option(
CP2K_DBCSR_CPU_ONLY "Use DBCSR compiled without GPU support." OFF
"CP2K_DEBUG_MODE" OFF)

# Python
#
# this module looks preferably for version 3 of Python. If not found, version 2
# is searched. In CMake 3.15, if a python virtual environment is activated, it
# will search the virtual environment for a python interpreter before searching
# elsewhere in the system. In CMake <3.15, the system is searched before the
# virtual environment.

if(NOT Python_EXECUTABLE)
# If the python interpreter isn't specified as a command line option, look for
# it:
find_package(
Python
COMPONENTS Interpreter
REQUIRED)
endif()

# get the git hash Get the latest abbreviated commit hash of the working branch
execute_process(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE CP2K_GIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)

execute_process(
COMMAND hostnamectl --transient
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
OUTPUT_VARIABLE CP2K_HOST_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE)

add_custom_target(
AlwaysCheckGit
COMMAND
${CMAKE_COMMAND} -DRUN_CHECK_GIT_VERSION=1
-Dpre_configure_dir=${pre_configure_dir}
-Dpost_configure_file=${post_configure_dir}
-DGIT_HASH_CACHE=${GIT_HASH_CACHE} -P ${CURRENT_LIST_DIR}/CheckGit.cmake
BYPRODUCTS ${post_configure_file})

# MPI

get_property(REQUIRED_MPI_COMPONENTS GLOBAL PROPERTY ENABLED_LANGUAGES)


list(REMOVE_ITEM REQUIRED_MPI_COMPONENTS CUDA) # CUDA does not have an MPI
# component
if(NOT CMAKE_CROSSCOMPILING) # when cross compiling, assume the users know
# what they are doing
set(MPI_DETERMINE_LIBRARY_VERSION TRUE)
endif()
find_package(
MPI
COMPONENTS ${REQUIRED_MPI_COMPONENTS}
REQUIRED)

if(NOT MPI_Fortran_HAVE_F90_MODULE)
message(
FATAL_ERROR
"\
The listed MPI implementation does not provide the required mpi.mod interface. \
When using the GNU compiler in combination with Intel MPI, please use the \
Intel MPI compiler wrappers. Check the INSTALL.md for more information.")
endif()
if("${MPI_Fortran_LIBRARY_VERSION_STRING}" MATCHES "Open MPI v2.1"
OR "${MPI_Fortran_LIBRARY_VERSION_STRING}" MATCHES "Open MPI v3.1")
message(
WARNING
"RMA with ${MPI_Fortran_LIBRARY_VERSION_STRING} is not supported due to
issues with its implementation."
" Please use a newer version of OpenMPI or switch to MPICH if you plan on
using MPI-RMA."
)
endif()

# BLAS & LAPACK, PkgConfig


find_package(Lapack REQUIRED) # also calls find_package(BLAS)

# SMM (Small Matrix-Matrix multiplication)


if(CP2K_USE_LIBXSMM)
find_package(LibXSMM REQUIRED)
message(STATUS "-- Using libxsmm for Small Matrix Multiplication")
endif()

# in practice it is always for any decent configuration. But I add a flags to


# turn it off
find_package(SCALAPACK REQUIRED)

# CUDA / ROCM easy for cuda a moving target for hip

if((CP2K_USE_ACCEL MATCHES CUDA) OR (CP2K_USE_ACCEL MATCHES HIP))


set(CP2K_GPU_ARCH_NUMBER_K20X 35)
set(CP2K_GPU_ARCH_NUMBER_K40 35)
set(CP2K_GPU_ARCH_NUMBER_K80 37)
set(CP2K_GPU_ARCH_NUMBER_P100 60)
set(CP2K_GPU_ARCH_NUMBER_V100 70)
set(CP2K_GPU_ARCH_NUMBER_A100 80)
set(CP2K_GPU_ARCH_NUMBER_Mi50 gfx906)
set(CP2K_GPU_ARCH_NUMBER_Mi100 gfx908)
set(CP2K_GPU_ARCH_NUMBER_Mi200 gfx90a)
set(CP2K_GPU_ARCH_NUMBER_Mi250X gfx90a)
endif()

set(CP2K_USE_HIP OFF)
set(CP2K_USE_CUDA OFF)

if(CP2K_USE_ACCEL MATCHES "CUDA")


# P100 is the default target.
set(CMAKE_CUDA_ARCHITECTURES 60)

# allow for unsupported compilers (gcc/cuda version mismatch)


set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -allow-unsupported-compiler")

enable_language(CUDA)
find_package(CUDAToolkit REQUIRED)

list(FIND CP2K_SUPPORTED_CUDA_ARCHITECTURES ${CP2K_WITH_GPU}


CP2K_GPU_SUPPORTED)

if(CP2K_GPU_SUPPORTED EQUAL -1)


message(
FATAL_ERROR
"GPU architecture (${CP2K_WITH_GPU}) is not supported. Please choose from:
${CP2K_SUPPORTED_CUDA_ARCHITECTURES}"
)
endif()

# set cuda architecture number and compilation flags. Taken from dbcsr
set(CP2K_ACC_ARCH_NUMBER ${CP2K_GPU_ARCH_NUMBER_${CP2K_WITH_GPU}})
set(CMAKE_CUDA_ARCHITECTURES ${CP2K_ACC_ARCH_NUMBER})
set(CUDA_ARCHITECTURES ${CP2K_ACC_ARCH_NUMBER})

message(STATUS "GPU target architecture: " ${CP2K_WITH_GPU})


message(STATUS "GPU architecture number: " ${CP2K_ACC_ARCH_NUMBER})
message(STATUS "GPU profiling enabled: " ${CP2K_WITH_CUDA_PROFILING})

if(WITH_CUDA_PROFILING)
find_library(
CUDA_NVTOOLSEXT nvToolsExt
PATHS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}
DOC "Building with CUDA profiling requires the nvToolsExt CUDA library"
REQUIRED)
message(STATUS "Found nvToolsExt: ${CUDA_NVTOOLSEXT}")
endif()

set(CP2K_USE_CUDA ON)
message(STATUS ``"-- CUDA compiler and libraries found")
elseif(CP2K_USE_ACCEL MATCHES "HIP")
enable_language(HIP)
# Find hip
find_package(hip REQUIRED IMPORTED CONFIG)
find_package(hipfft REQUIRED IMPORTED CONFIG)
find_package(hipblas REQUIRED IMPORTED CONFIG)
set(CMAKE_HIP_ARCHITECTURES gfx801 gfx900 gfx90a)
if(NOT CMAKE_BUILD_TYPE)
set(HIP_RELEASE_OPTIONS "-O3 -g -DNDEBUG")
elseif(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
set(HIP_RELEASE_OPTIONS "-O3 -g -DNDEBUG")
elseif(${CMAKE_BUILD_TYPE} STREQUAL "Release")
set(HIP_RELEASE_OPTIONS "-O3 -DNDEBUG")
elseif(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
set(HIP_RELEASE_OPTIONS "-O0 -g")
endif()

set(CP2K_ACC_ARCH_NUMBER ${CP2K_GPU_ARCH_NUMBER_${CP2K_WITH_GPU}})
set(CP2K_USE_HIP ON)
endif()

find_package(DBCSR 2.2.0 REQUIRED)

#
===================================================================================
==============
# PACKAGE DISCOVERY (compiler configuration can impact package discovery)

find_package(OpenMP REQUIRED COMPONENTS Fortran C CXX)

# ==================================
if(CP2K_USE_ELPA)
find_package(Elpa REQUIRED)
endif()

if(CP2K_USE_LIBXC)
find_package(LibXC 6.0.0 REQUIRED)
endif()

if(CP2K_USE_COSMA)
find_package(cosma REQUIRED HINTS "${COSMA_ROOT}" "$ENV(COSMA_ROOT)")
get_target_property(COSMA_INCLUDE_DIRS cosma::cosma
INTERFACE_INCLUDE_DIRECTORIES)
if(NOT COSMA_INCLUDE_DIRS)
set(COSMA_INCLUDE_DIRS "/usr/include;/usr/include/cosma")
endif()

# check that cosma::cosma_pxgemm and cosma::cosma_prefixed_pxgemm exist


if(NOT TARGET cosma::cosma_pxgemm OR NOT TARGET cosma::cosma_prefixed_pxgemm)
message(ERROR_ERROR
" COSMA needs tor be build with scalapack offloading support")
message(
FATAL_ERROR
" COSTA_SCALAPACK and COSMA_SCALAPACK should probably be set properly")
endif()
endif()

if(CP2K_USE_VORI)
find_package(LibVORI REQUIRED)
endif()

# FFTW3

if(CP2K_USE_FFTW3)
find_package(Fftw REQUIRED)
if(CP2K_ENABLE_FFTW3_THREADS_SUPPORT AND CP2K_ENABLE_FFTW3_OPENMP_SUPPORT)
message(
FATAL_ERROR
"Fftw3 threads and openmp supports can not be used at the same time")
endif()

if((CP2K_ENABLE_FFTW3_THREADS_SUPPORT) AND (NOT TARGET


CP2K_FFTW3::fftw3_threads))
message(
FATAL_ERROR
"fftw3 was compiled without multithreading support (--enable-threads option
in fftw build system)."
)
endif()

if((CP2K_ENABLE_FFTW3_OPENMP_SUPPORT) AND (NOT TARGET CP2K_FFTW3::fftw3_omp))


message(
FATAL_ERROR
"fftw3 was compiled without openmp support (--enable-openmp option in fftw
build system)."
)
endif()
endif()

# QUIP
if(CP2K_USE_QUIP)
find_package(Quip REQUIRED)
endif()

# libint

if(CP2K_USE_LIBINT2)
find_package(Libint2 REQUIRED)
endif()

# spglib

if(CP2K_USE_SPGLIB)
find_package(LibSPG REQUIRED)
endif()

if(CP2K_USE_SPLA)
find_package(SPLA REQUIRED)
get_target_property(SPLA_INCLUDE_DIRS SPLA::spla
INTERFACE_INCLUDE_DIRECTORIES)
if(NOT SPLA_INCLUDE_DIRS)
set(SPLA_INCLUDE_DIRS "/usr/include;/usr/include/spla")
endif()

if(NOT SPLA_GPU_BACKEND AND CP2K_USE_GEMM_OFFLOADING)


set(CP2K_USE_GEMM_OFFLOADING OFF)
message(
FATAL_ERROR
"SPLA should be compiled with GPU support if the gemm offloading is
requested. Use -DCP2K_USE_GEMM_OFFLOADING=OFF otherwise"
)
endif()
endif()
# SIRIUS
if(CP2K_USE_SIRIUS)
find_package(sirius REQUIRED)
get_target_property(SIRIUS_INCLUDE_DIRS sirius::sirius
INTERFACE_INCLUDE_DIRECTORIES)
if(NOT SIRIUS_INCLUDE_DIRS)
set(SIRIUS_INCLUDE_DIRS "/usr/include;/usr/include/sirius")
endif()
endif()

if(CP2K_USE_SUPERLU)
find_package(SuperLU REQUIRED)
endif()

if(CP2K_USE_PARMETIS)
find_package(Metis)
endif()

if(CP2K_USE_PTSCOTCH)
find_package(Ptscotch REQUIRED)
endif()

if(CP2K_USE_PEXSI)
# PEXSI 1.2 uses cmake as build system
find_package(PEXSI REQUIRED)
endif()

if(CP2K_USE_PLUMED)
find_package(Plumed REQUIRED)
endif()

if(CP2K_USE_LIBTORCH)
find_package(Torch REQUIRED)
endif()

# OPTION HANDLING

# make sure that the default build type is RELEASE


set(default_build_type "Release")

if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)


message(
STATUS
"Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE
"${default_build_type}"
CACHE STRING
"Choose the type of build, options are: Debug Release Coverage."
FORCE)
# set the possible values of build type for cmake-gui
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"Coverage")
endif()

# compiler configuration could have impacted package discovery (above)


include(CompilerConfiguration)
include(CheckCompilerSupport)

# subdirectories
add_subdirectory(src)

include(CustomTargets)

include(GNUInstallDirs)

get_target_property(CP2K_LIBS cp2k_link_libs INTERFACE_LINK_LIBRARIES)


configure_file(cp2k.pc.in cp2k.pc @ONLY)

message(
STATUS "--------------------------------------------------------------------")
message(
STATUS "- -")
message(
STATUS "- Summary of enabled dependencies -")
message(
STATUS "- -")
message(
STATUS "--------------------------------------------------------------------")

message(STATUS " ")


message(STATUS "- BLAS AND LAPACK")
message(STATUS " ")

message(STATUS " - vendor : " ${CP2K_BLAS_VENDOR})


message(STATUS " - include directories : " ${CP2K_BLAS_INCLUDE_DIRS}
${LAPACK_INCLUDE_DIR})
message(STATUS " - libraries : " ${CP2K_BLAS_LINK_LIBRARIES} " "
${CP2K_LAPACK_LINK_LIBRARIES})

message(STATUS " ")


message(STATUS "- MPI")
message(STATUS " - include directories : " ${MPI_INCLUDE_DIRS})
message(STATUS " - libraries : " ${MPI_LIBRARIES})

message(STATUS " ")


message(STATUS "- SCALAPACK:")
message(STATUS " - libraries : " ${CP2K_SCALAPACK_LINK_LIBRARIES})

message(STATUS " - Hardware Acceleration:")


message(STATUS " ")
if(CP2K_USE_ACCEL MATCHES "CUDA")
message(STATUS " ")
message(STATUS "- CUDA:")
message(STATUS " - GPU target architecture : " ${CP2K_WITH_GPU})
message(STATUS " - GPU architecture number : " ${CP2K_ACC_ARCH_NUMBER})
message(STATUS " - GPU profiling enabled : "
${CP2K_WITH_CUDA_PROFILING})
endif()

if(CP2K_USE_ACCEL MATCHES "HIP")


message(STATUS " ")
message(STATUS "- HIP:")
message(STATUS " - GPU target architecture : " ${CP2K_WITH_GPU})
message(STATUS " - GPU architecture number : " ${CP2K_ACC_ARCH_NUMBER})
endif()

if((CP2K_USE_ACCEL MATCHES "CUDA") OR (CP2K_USE_ACCEL MATCHES "HIP"))


message(STATUS " ")
message(
STATUS
" Note : Enabling hardware acceleration enable acceleration of the grid, pw,
and dbm modules by default"
)
message(STATUS " - GRID module : " ${CP2K_USE_GRID_GPU})
message(STATUS " - PW module : " ${CP2K_USE_PW_GPU})
message(STATUS " - DBM module : " ${CP2K_USE_DBM_GPU})
endif()

if(CP2K_USE_LIBXC)
message(STATUS " ")
message(
STATUS
"- LIBXC (note to package managers : libxc can be build with cmake as well)"
)
message(STATUS " - include directories : " ${CP2K_LIBXC_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_LIBXC_LINK_LIBRARIES})
endif()

if(CP2K_USE_LIBTORCH)
message(STATUS " ")
message(STATUS "- LIBTORCH")
message(STATUS " - libraries : " ${CP2K_LIBTORCH_LIBRARIES})
endif()

if(CP2K_USE_FFTW3)
message(STATUS " ")
message(STATUS "- FFTW3")
message(STATUS " - include directories : " ${CP2K_FFTW3_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_FFTW3_LINK_LIBRARIES})
endif()

if(CP2K_USE_LIBXSMM)
message(STATUS " ")
message(STATUS "- libxsmm")
message(STATUS " - include directories : " ${CP2K_LIBXSMM_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_LIBXSMM_LINK_LIBRARIES})
endif()

if(CP2K_USE_SPLA)
message(STATUS " ")
message(STATUS "- SPLA :")
message(STATUS " - include directories : " ${SPLA_INCLUDE_DIRS})
message(STATUS " - lbraries : " "${SPLA_LIBRARIES}")
endif()

if(CP2K_USE_SIRIUS)
message(STATUS " ")
message(STATUS "- SIRIUS :")
message(STATUS " - include directories : " ${SIRIUS_INCLUDE_DIRS})
message(STATUS " - libraries : " ${SIRIUS_LIBRARIES})

message(STATUS " - dependencies : ")


message(STATUS " - spla")
message(STATUS " - SpFFT")
message(STATUS " - SPGLIB")
message(STATUS " - LibXC")
message(STATUS " - fftw3")
message(STATUS " - hdf5")
message(STATUS " - GSL")
if(CP2K_USE_VDWXC)
message(STATUS " - VDWXC")
endif()
endif()

if(CP2K_USE_COSMA)
message(STATUS " ")
message(STATUS "- COSMA")
message(STATUS " - include directories : " ${COSMA_INCLUDE_DIRS})
message(STATUS " - libraries : " ${COSMA_LIBRARIES})
endif()

if(CP2K_USE_QUIP)
message(STATUS " ")
message(STATUS "- QUIP")
message(STATUS " - include directories : " ${CP2K_LIBQUIP_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_LIBQUIP_LINK_LIBRARIES})
endif()

if(CP2K_USE_PEXSI)
message(STATUS " ")
message(STATUS "- PEXSI")
endif()

if(CP2K_USE_LIBINT2)
message(STATUS " ")
message(STATUS "- libint2")
message(STATUS " - include directories : " ${CP2K_LIBINT2_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_LIBINT2_LINK_LIBRARIES})
endif()

if(CP2K_USE_VORI)
message(STATUS " ")
message(STATUS "- libvori")
message(STATUS " - include directories : " ${CP2K_LIBVORI_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_LIBVORI_LINK_LIBRARIES})
endif()

if(CP2K_USE_SPGLIB)
message(STATUS " ")
message(STATUS "- spglib")
message(STATUS " - include directories : " ${CP2K_LIBSPG_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_LIBSPG_LINK_LIBRARIES})
endif()

if(CP2K_USE_ELPA)
message(STATUS "- ELPA")
message(STATUS " - include directories : " ${CP2K_ELPA_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_ELPA_LINK_LIBRARIES})
endif()

if(CP2K_USE_SUPERLU)
message(STATUS " ")
message(STATUS "- superlu")
message(STATUS " - include directories : " ${CP2K_SUPERLU_INCLUDE_DIRS})
message(STATUS " - libraries : " ${CP2K_SUPERLU_LINK_LIBRARIES})
endif()
message(STATUS " ")
message(
STATUS "--------------------------------------------------------------------")
message(
STATUS "- -")
message(
STATUS "- List of dependencies not included in this build -")
message(
STATUS "- -")
message(
STATUS "--------------------------------------------------------------------")

message(STATUS " List of dependencies not included in this build :")

if(NOT CP2K_USE_SIRIUS)
message(STATUS " - SIRIUS")
endif()

if(NOT CP2K_USE_SPGLIB)
message(STATUS " - SPGLIB")
endif()

if(NOT CP2K_USE_COSMA)
message(STATUS " - COSMA")
endif()

if(NOT CP2K_USE_SPLA)
message(STATUS " - SPLA")
endif()

if(${CP2K_USE_ACCEL} MATCHES "NONE")


message(STATUS " - GPU acceleration is disabled")
endif()

if(NOT CP2K_USE_ELPA)
message(STATUS " - ELPA")
endif()

if(NOT CP2K_USE_PLUMMED)
message(STATUS " - PLUMMED")
endif()

if(NOT CP2K_USE_QUIP)
message(STATUS " - QUIP")
endif()

if(NOT CP2K_USE_LIBXSMM)
message(STATUS " - LIBXSMM")
endif()

if(NOT CP2K_USE_LIBINT2)
message(STATUS " - LIBINT2")
endif()

if(NOT CP2K_USE_LIBXC)
message(STATUS " - LIBXC")
endif()
if(NOT CP2K_USE_VORI)
message(STATUS " - LIBVORI")
endif()

if(NOT CP2K_USE_FFTW3)
message(STATUS " - FFTW3")
endif()

if(NOT CP2K_USE_PEXSI)
message(STATUS " - PEXSI")
endif()

if(NOT CP2K_USE_SUPERLU)
message(STATUS " - SUPERLU")
endif()

if(NOT CP2K_USE_LIBTORCH)
message(STATUS " - libtorch")
endif()

message(
STATUS " ")
message(
STATUS " ")

You might also like