mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-28 14:15:19 -04:00
More cmake updates (#2570)
* More work on cmake * Fix funky libxsmm library order * Fix naming conventions * fix namespace name * Fix libxc include (#6) * Fix cosma * make pretty * Add MPI08 support. Minor cleanups --------- Co-authored-by: Rocco Meli <r.meli@bluemail.ch>
This commit is contained in:
parent
d4636021b7
commit
685d0dbee4
29 changed files with 396 additions and 323 deletions
153
CMakeLists.txt
153
CMakeLists.txt
|
|
@ -80,6 +80,7 @@ option(CP2K_DEBUG_MODE "Enable several additional options for debugging cp2k."
|
|||
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_MPI "Enable MPI support" 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)
|
||||
|
|
@ -105,6 +106,8 @@ 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)
|
||||
cmake_dependent_option(CP2K_ENABLE_F08_MPI "Enable MPI Fortran 2008 interface"
|
||||
OFF "CP2K_USE_MPI" OFF)
|
||||
|
||||
set(CP2K_SCALAPACK_VENDOR_LIST "MKL" "SCI" "GENERIC")
|
||||
set(CP2K_SCALAPACK_VENDOR
|
||||
|
|
@ -226,33 +229,64 @@ add_custom_target(
|
|||
|
||||
# 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(CP2K_USE_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
|
||||
"\
|
||||
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()
|
||||
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()
|
||||
else()
|
||||
if(CP2K_USE_SIRIUS
|
||||
OR CP2K_USE_COSMA
|
||||
OR CP2K_USE_SPLA
|
||||
OR CP2K_USE_ELPA
|
||||
OR CP2K_USE_METIS
|
||||
OR CP2K_USE_PLUMED
|
||||
OR CP2K_USE_PEXSI
|
||||
OR CP2K_USE_QUIP)
|
||||
message(
|
||||
WARNING
|
||||
"SIRIUS, COSMA, SPLA, ELPA, METIS, PLUMED, PEXSI and QUIP require MPI support. Either change -DCP2K_USE_MPI to ON or turn the following dependencies off"
|
||||
)
|
||||
foreach(
|
||||
__libs
|
||||
SIRIUS
|
||||
COSMA
|
||||
SPLA
|
||||
ELPA
|
||||
METIS
|
||||
PLUMED
|
||||
PEXSI
|
||||
QUIP)
|
||||
if(CP2K_USE_${__libs})
|
||||
message(WARNING " - ${__libs}")
|
||||
endif()
|
||||
endforeach()
|
||||
message(FATAL_ERROR " -- ")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# BLAS & LAPACK, PkgConfig
|
||||
|
|
@ -266,7 +300,9 @@ endif()
|
|||
|
||||
# in practice it is always for any decent configuration. But I add a flags to
|
||||
# turn it off
|
||||
find_package(SCALAPACK REQUIRED)
|
||||
if(CP2K_USE_MPI)
|
||||
find_package(SCALAPACK REQUIRED)
|
||||
endif()
|
||||
|
||||
# CUDA / ROCM easy for cuda a moving target for hip
|
||||
|
||||
|
|
@ -335,20 +371,20 @@ elseif(CP2K_USE_ACCEL MATCHES "HIP")
|
|||
|
||||
set(CMAKE_HIP_ARCHITECTURES gfx801 gfx900 gfx90a)
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(HIP_RELEASE_OPTIONS "-O3 -g -DNDEBUG")
|
||||
set(HIP_RELEASE_OPTIONS "-O3 -g -DNDEBUG --std=c++11")
|
||||
elseif(${CMAKE_BUILD_TYPE} STREQUAL "RelWithDebInfo")
|
||||
set(HIP_RELEASE_OPTIONS "-O3 -g -DNDEBUG")
|
||||
set(HIP_RELEASE_OPTIONS "-O3 -g -DNDEBUG --std=c++11")
|
||||
elseif(${CMAKE_BUILD_TYPE} STREQUAL "Release")
|
||||
set(HIP_RELEASE_OPTIONS "-O3 -DNDEBUG")
|
||||
set(HIP_RELEASE_OPTIONS "-O3 -DNDEBUG --std=c++11")
|
||||
elseif(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||
set(HIP_RELEASE_OPTIONS "-O0 -g")
|
||||
set(HIP_RELEASE_OPTIONS "-O0 -g --std=c++11")
|
||||
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)
|
||||
find_package(DBCSR 2.4 REQUIRED)
|
||||
|
||||
# =================================================================================================
|
||||
# PACKAGE DISCOVERY (compiler configuration can impact package discovery)
|
||||
|
|
@ -365,20 +401,14 @@ if(CP2K_USE_LIBXC)
|
|||
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()
|
||||
find_package(cosma REQUIRED)
|
||||
|
||||
# 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 to be build with scalapack offloading support")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
" COSTA_SCALAPACK and COSMA_SCALAPACK should probably be set properly")
|
||||
" COSMA needs to be build with scalapack offloading support. COSTA_SCALAPACK and COSMA_SCALAPACK should probably be set properly"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
@ -397,14 +427,14 @@ if(CP2K_USE_FFTW3)
|
|||
endif()
|
||||
|
||||
if((CP2K_ENABLE_FFTW3_THREADS_SUPPORT) AND (NOT TARGET
|
||||
CP2K_FFTW3::fftw3_threads))
|
||||
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))
|
||||
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)."
|
||||
|
|
@ -481,6 +511,13 @@ if(CP2K_USE_LIBTORCH)
|
|||
find_package(Torch REQUIRED)
|
||||
endif()
|
||||
|
||||
if(CP2K_USE_MPI_F08 AND NOT MPI_Fortran_HAVE_F08_MODULE)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"The Fortran 2008 interface is not supported by the MPI implementation found by cmake."
|
||||
)
|
||||
endif()
|
||||
|
||||
# OPTION HANDLING
|
||||
|
||||
# make sure that the default build type is RELEASE
|
||||
|
|
@ -535,14 +572,27 @@ message(STATUS " - include directories : " ${CP2K_BLAS_INCLUDE_DIRS}
|
|||
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})
|
||||
if(CP2K_USE_MPI)
|
||||
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})
|
||||
if(CP2K_USE_MPI_F08)
|
||||
message(STATUS " - MPI_08 : ON")
|
||||
endif()
|
||||
|
||||
if(MPI_Fortran_HAVE_F08_MODULE AND NOT CP2K_USE_MPI_F08)
|
||||
message(
|
||||
STATUS
|
||||
" - MPI_08 is supposed by MPI but turned off by default. To use it add -DCP2K_USE_MPI_F08=ON to cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
message(STATUS " ")
|
||||
message(STATUS "- SCALAPACK:")
|
||||
message(STATUS " - libraries : " ${CP2K_SCALAPACK_LINK_LIBRARIES})
|
||||
endif()
|
||||
|
||||
message(STATUS " - Hardware Acceleration:")
|
||||
message(STATUS " ")
|
||||
|
|
@ -600,7 +650,10 @@ if(CP2K_USE_LIBXSMM)
|
|||
message(STATUS " ")
|
||||
message(STATUS "- libxsmm")
|
||||
message(STATUS " - include directories : " ${CP2K_LIBXSMM_INCLUDE_DIRS})
|
||||
message(STATUS " - libraries : " ${CP2K_LIBXSMM_LINK_LIBRARIES})
|
||||
message(
|
||||
STATUS
|
||||
" - libraries : ${CP2K_LIBXSMMEXT_LINK_LIBRARIES};${CP2K_LIBXSMMF_LINK_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CP2K_USE_SPLA)
|
||||
|
|
@ -696,6 +749,10 @@ message(
|
|||
|
||||
message(STATUS " List of dependencies not included in this build :")
|
||||
|
||||
if(NOT CP2K_USE_MPI)
|
||||
message(STATUS " - MPI")
|
||||
endif()
|
||||
|
||||
if(NOT CP2K_USE_SIRIUS)
|
||||
message(STATUS " - SIRIUS")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
|
||||
set(CMAKE_Fortran_FLAGS
|
||||
"-ffree-line-length-512 -ffree-form -std=f2008ts -fimplicit-none -Werror=aliasing -Werror=ampersand -Werror=c-binding-type -Werror=intrinsic-shadow -Werror=intrinsics-std -Werror=tabs -Werror=target-lifetime -Werror=underflow -Werror=unused-but-set-variable -Werror=unused-variable -Werror=conversion -Werror=zerotrip -Wuninitialized -Wno-maybe-uninitialized -Wunused-parameter"
|
||||
"-mtune=native -ffree-line-length-512 -ffree-form -std=f2008 -fimplicit-none -Werror=aliasing -Werror=ampersand -Werror=c-binding-type -Werror=intrinsic-shadow -Werror=intrinsics-std -Werror=tabs -Werror=target-lifetime -Werror=underflow -Werror=unused-but-set-variable -Werror=unused-variable -Werror=conversion -Werror=zerotrip -Wuninitialized -Wno-maybe-uninitialized -Wunused-parameter"
|
||||
)
|
||||
|
||||
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER 10)
|
||||
|
|
@ -20,7 +20,7 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
|
|||
"-O0 -g --coverage -fno-omit-frame-pointer -fcheck=all -ffpe-trap=invalid,zero,overflow -fbacktrace -finit-real=snan -finit-integer=-42 -finit-derived -Werror=realloc-lhs -finline-matmul-limit=0"
|
||||
)
|
||||
set(CMAKE_Fortran_FLAGS_DEBUG
|
||||
"-O2 -ggdb -fno-omit-frame-pointer -fcheck=all -ffpe-trap=invalid,zero,overflow -fbacktrace -finit-real=snan -finit-integer=-42 -finit-derived -finline-matmul-limit=0 -fsanitize=undefined -fsanitize=address -fsanitize-recover=all -Wall -Wextra -Werror=realloc-lhs -Wno-error=array-temporaries -Wno-error=compare-reals -Wno-error=function-elimination -Wno-error=surprising"
|
||||
"-fbacktrace -ffree-form -fimplicit-none -std=f2008 -fsanitize=leak -fcheck=all,no-array-temps -ffpe-trap=invalid,zero,overflow -finit-derived -finit-real=snan -finit-integer=-42 -Werror=realloc-lhs -finline-matmul-limit=0"
|
||||
)
|
||||
if((NOT (USE_MPI)) OR (NOT ("${MPI_Fortran_LIBRARY_VERSION_STRING}" MATCHES
|
||||
"Open MPI")))
|
||||
|
|
@ -75,7 +75,7 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
|||
set(CMAKE_C_FLAGS_RELEASE "-O3 -g -funroll-loops -Wall")
|
||||
set(CMAKE_C_FLAGS_COVERAGE "-O0 -g --coverage -Wall")
|
||||
set(CMAKE_C_FLAGS_DEBUG
|
||||
"-O2 -ggdb -Wall -fsanitize=undefined -fsanitize=address -fsanitize-recover=all"
|
||||
"-O2 -ggdb -Wall -fsanitize=undefined -fsanitize=address -fsanitize-recover=all -Wall -Wextra -Werror -Wno-vla-parameter -Wno-deprecated-declarations"
|
||||
)
|
||||
if((NOT (USE_MPI)) OR (NOT ("${MPI_Fortran_LIBRARY_VERSION_STRING}" MATCHES
|
||||
"Open MPI")))
|
||||
|
|
@ -85,7 +85,7 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
|||
elseif(CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -funroll-loops")
|
||||
set(CMAKE_C_FLAGS_COVERAGE "-O0 -g --coverage")
|
||||
set(CMAKE_C_FLAGS_DEBUG "-O0 -g")
|
||||
set(CMAKE_C_FLAGS_DEBUG "-O1 -g -fno-omit-frame-pointer")
|
||||
elseif(CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
|
||||
set(CMAKE_C_FLAGS_RELEASE "-O3 -funroll-loops")
|
||||
set(CMAKE_C_FLAGS_COVERAGE "-O0 -g --coverage")
|
||||
|
|
|
|||
|
|
@ -37,33 +37,42 @@ endif()
|
|||
|
||||
# check if found
|
||||
find_package_handle_standard_args(
|
||||
Armpl REQUIRED_VARS CP2K_ARMPL_INCLUDE_DIRS CP2K_ARMPL_LP64_LIBRARIES
|
||||
CP2K_ARMPL_LP64_MP_LIBRARIES)
|
||||
Armpl
|
||||
REQUIRED_VARS
|
||||
CP2K_ARMPL_INCLUDE_DIRS CP2K_ARMPL_LP64_LIBRARIES
|
||||
CP2K_ARMPL_LP64_MP_LIBRARIES CP2K_ARMPL_ILP64_LIBRARIES
|
||||
CP2K_ARMPL_ILP64_MP_LIBRARIES)
|
||||
|
||||
# add target to link against
|
||||
if(CP2K_ARMPL_LP64_FOUND AND NOT TARGET ARMPL::armpl)
|
||||
add_library(CP2K_ARMPL::armpl INTERFACE IMPORTED)
|
||||
foreach(_var armpl_ilp64 armpl_lp64 armpl_ilp64_mp armpl_lp64_mp)
|
||||
string(TOUPPER "CP2K_${_var}_LINK_LIBRARIES" _var_up)
|
||||
if(_var_up)
|
||||
add_library(CP2K_ARMPL::${_var} INTERFACE IMPORTED)
|
||||
set_property(TARGET ARMPL::${_var} PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_ARMPL_INCLUDE_DIRS})
|
||||
set_property(TARGET ARMPL::${_var} PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
" ${${_var_up}}")
|
||||
endif()
|
||||
endforeach()
|
||||
if(CP2K_ARMPL_LP64_FOUND)
|
||||
|
||||
# check that what version of the library we want actually exists
|
||||
if(NOT TARGET CP2K_ARMPL::${CP2K_BLAS_armpl_LIB})
|
||||
message(
|
||||
FATAL
|
||||
"ARMPL installation is incomplete. Some of the components are missing.")
|
||||
if(NOT TARGET Armpl::armpl)
|
||||
add_library(CP2K::BLAS::Armpl::armpl INTERFACE IMPORTED)
|
||||
# now define an alias to the target library
|
||||
add_library(CP2K::BLAS::Armpl::blas ALIAS CP2K::BLAS::Armpl::armpl)
|
||||
endif()
|
||||
|
||||
# now define an alias to the target library
|
||||
add_library(CP2K_ARMPL::blas INTERFACE ARMPL::${CP2K_BLAS_armpl_LIB})
|
||||
# we need to iniitialize the targets of each individual libraries only once.
|
||||
if(NOT TARGET CP2K::BLAS::Armpl::${_var})
|
||||
foreach(_var armpl_ilp64 armpl_lp64 armpl_ilp64_mp armpl_lp64_mp)
|
||||
string(TOUPPER "CP2K_${_var}_LINK_LIBRARIES" _var_up)
|
||||
add_library(CP2K::BLAS::Armpl::${_var} INTERFACE IMPORTED)
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::Armpl::${_var} PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_ARMPL_INCLUDE_DIRS})
|
||||
set_property(TARGET CP2K::BLAS::Armpl::${_var}
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES "${${_var_up}}")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::Armpl::armpl PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_ARMPL_INCLUDE_DIRS})
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::Armpl::armpl
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
"CP2K_${CP2K_BLAS_armpl_LIB}_LINK_LIBRARIES")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_ARMPL_FOUND CP2K_ARMPL_LINK_LIBRARIES
|
||||
|
|
|
|||
|
|
@ -22,13 +22,14 @@ find_package_handle_standard_args(Atlas REQUIRED_VARS CP2K_ATLAS_INCLUDE_DIRS
|
|||
|
||||
# add target to link against
|
||||
if(CP2K_ATLAS_FOUND AND NOT TARGET CP2K_ATLAS::atlas)
|
||||
if(NOT TARGET CP2K_ATLAS::atlas)
|
||||
add_library(CP2K_ATLAS::atlas INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::BLAS::ATLAS::atlas)
|
||||
add_library(CP2K::BLAS::ATLAS::atlas INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_property(TARGET CP2K_ATLAS::atlas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_ATLAS_LINK_LIBRARIES})
|
||||
set_property(TARGET CP2K_ATLAS::atlas PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_ATLAS_INCLUDE_DIRS})
|
||||
set_property(TARGET CP2K::BLAS::ATLAS::atlas
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES ${CP2K_ATLAS_LINK_LIBRARIES})
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::ATLAS::atlas PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_ATLAS_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
# prevent clutter in cache
|
||||
|
|
|
|||
|
|
@ -78,22 +78,24 @@ set(CP2K_BLAS_FOUND FALSE)
|
|||
|
||||
if(NOT CP2K_BLAS_VENDOR MATCHES "auto")
|
||||
find_package(${CP2K_BLAS_VENDOR} REQUIRED)
|
||||
if(TARGET CP2K_${CP2K_BLAS_VENDOR}::blas)
|
||||
get_target_property(CP2K_BLAS_INCLUDE_DIRS CP2K_${CP2K_BLAS_VENDOR}::blas
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(CP2K_BLAS_LINK_LIBRARIES CP2K_${CP2K_BLAS_VENDOR}::blas
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
if(TARGET CP2K::BLAS::${CP2K_BLAS_VENDOR}::blas)
|
||||
get_target_property(
|
||||
CP2K_BLAS_INCLUDE_DIRS CP2K::BLAS::${CP2K_BLAS_VENDOR}::blas
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(
|
||||
CP2K_BLAS_LINK_LIBRARIES CP2K::BLAS::${CP2K_BLAS_VENDOR}::blas
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
set(CP2K_BLAS_FOUND TRUE)
|
||||
endif()
|
||||
else()
|
||||
# search for any blas implementation
|
||||
# search for any blas implementation and exit imediately if one is found
|
||||
foreach(_libs ${__BLAS_VENDOR_LIST})
|
||||
# i exclude the first item of the list
|
||||
find_package(${_libs})
|
||||
if(TARGET CP2K_${_libs}::blas)
|
||||
get_target_property(CP2K_BLAS_INCLUDE_DIRS CP2K_${_libs}::blas
|
||||
if(TARGET CP2K::BLAS::${_libs}::blas)
|
||||
get_target_property(CP2K_BLAS_INCLUDE_DIRS CP2K::BLAS::${_libs}::blas
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(CP2K_BLAS_LINK_LIBRARIES CP2K_${_libs}::blas
|
||||
get_target_property(CP2K_BLAS_LINK_LIBRARIES CP2K::BLAS::${_libs}::blas
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
set(CP2K_BLAS_VENDOR "${_libs}")
|
||||
set(CP2K_BLAS_FOUND TRUE)
|
||||
|
|
@ -111,16 +113,17 @@ else()
|
|||
CP2K_BLAS_VENDOR)
|
||||
endif()
|
||||
|
||||
if(NOT TARGET CP2K_BLAS::blas)
|
||||
add_library(CP2K_BLAS::blas INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::BLAS::blas)
|
||||
add_library(CP2K::BLAS::blas INTERFACE IMPORTED)
|
||||
endif()
|
||||
|
||||
set_target_properties(CP2K_BLAS::blas PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_BLAS_LINK_LIBRARIES}")
|
||||
set_target_properties(CP2K::BLAS::blas PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_BLAS_LINK_LIBRARIES}")
|
||||
|
||||
if(CP2K_BLAS_INCLUDE_DIRS)
|
||||
set_target_properties(CP2K_BLAS::blas PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_BLAS_INCLUDE_DIRS}")
|
||||
set_target_properties(
|
||||
CP2K::BLAS::blas PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_BLAS_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_BLAS_INCLUDE_DIRS)
|
||||
|
|
|
|||
|
|
@ -38,21 +38,25 @@ if(CP2K_BLIS_INCLUDE_DIRS)
|
|||
BLIS REQUIRED_VARS CP2K_BLIS_FOUND CP2K_BLIS_INCLUDE_DIRS
|
||||
CP2K_BLIS_LINK_LIBRARIES)
|
||||
else()
|
||||
find_package_handle_standard_args(BLIS REQUIRED_VARS CP2K_BLIS_FOUND
|
||||
find_package_handle_standard_args(Blis REQUIRED_VARS CP2K_BLIS_FOUND
|
||||
CP2K_BLIS_LINK_LIBRARIES)
|
||||
endif()
|
||||
|
||||
# add target to link against
|
||||
if(CP2K_BLIS_FOUND AND NOT TARGET CP2K_BLIS::blis)
|
||||
add_library(CP2K_BLIS::blis INTERFACE IMPORTED)
|
||||
endif()
|
||||
if(CP2K_BLIS_FOUND)
|
||||
if(NOT TARGET CP2K::BLAS::Blis::blis)
|
||||
add_library(CP2K::BLAS::Blis::blis INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::Blis::blas alias CP2K::BLAS::Blis::blis)
|
||||
endif()
|
||||
|
||||
set_property(TARGET CP2K_BLIS::blis PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_BLIS_LINK_LIBRARIES})
|
||||
set_property(TARGET CP2K::BLAS::Blis::blis
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES ${CP2K_BLIS_LINK_LIBRARIES})
|
||||
|
||||
if(BLIS_INCLUDE_DIRS)
|
||||
set_property(TARGET CP2K_BLIS::blis PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_BLIS_INCLUDE_DIRS})
|
||||
if(BLIS_INCLUDE_DIRS)
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::Blis::blis PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_BLIS_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# prevent clutter in cache
|
||||
|
|
|
|||
|
|
@ -31,15 +31,15 @@ find_package_handle_standard_args(Elpa "DEFAULT_MSG" CP2K_ELPA_LINK_LIBRARIES
|
|||
CP2K_ELPA_INCLUDE_DIRS)
|
||||
|
||||
if(CP2K_ELPA_FOUND)
|
||||
if(NOT TARGET CP2K_elpa::elpa)
|
||||
add_library(CP2K_ELPA::elpa INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::ELPA::elpa)
|
||||
add_library(CP2K::ELPA::elpa INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_target_properties(
|
||||
CP2K_ELPA::elpa PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_ELPA_LINK_LIBRARIES}")
|
||||
CP2K::ELPA::elpa PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_ELPA_LINK_LIBRARIES}")
|
||||
if(CP2K_ELPA_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_ELPA::elpa
|
||||
CP2K::ELPA::elpa
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_ELPA_INCLUDE_DIRS};${CP2K_ELPA_INCLUDE_DIRS}/modules")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -60,30 +60,30 @@ foreach(lib_name "fftw3" "fftw3l" "fftw3q" "fftw3f")
|
|||
string(TOUPPER "${lib_name}" __lib_name_up)
|
||||
|
||||
if(CP2K_${__lib_name_up}_FOUND)
|
||||
if(NOT TARGET CP2K_FFTW3::${lib_name})
|
||||
add_library(CP2K_FFTW3::${lib_name} INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::FFTW3::${lib_name})
|
||||
add_library(CP2K::FFTW3::${lib_name} INTERFACE IMPORTED)
|
||||
endif()
|
||||
# we do not recheck if the libraries are found when pkg_config is
|
||||
# successful.
|
||||
set_target_properties(
|
||||
CP2K_FFTW3::${lib_name}
|
||||
CP2K::FFTW3::${lib_name}
|
||||
PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_${__lib_name_up}_LINK_LIBRARIES}")
|
||||
|
||||
if(CP2K_FFTW3_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_FFTW3::${lib_name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_FFTW3_INCLUDE_DIRS}")
|
||||
CP2K::FFTW3::${lib_name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_FFTW3_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
foreach(sub_type "threads" "mpi" "omp")
|
||||
string(TOUPPER "${lib_name}_${sub_type}" __libs)
|
||||
if(CP2K_${__libs}_FOUND)
|
||||
if(NOT TARGET CP2K_FFTW3::${lib_name}_${sub_type})
|
||||
add_library(CP2K_FFTW3::${lib_name}_${sub_type} INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::FFTW3::${lib_name}_${sub_type})
|
||||
add_library(CP2K::FFTW3::${lib_name}_${sub_type} INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_target_properties(
|
||||
CP2K_FFTW3::${lib_name}_${sub_type}
|
||||
CP2K::FFTW3::${lib_name}_${sub_type}
|
||||
PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_${__libs}_LINK_LIBRARIES}")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ endif()
|
|||
|
||||
# search for include directories anyway
|
||||
if(NOT CP2K_FLEXIBLAS_INCLUDE_DIRS)
|
||||
cp2k_include_dirs(FFTW3 "flexiblas.h")
|
||||
cp2k_include_dirs(FLEXIBLAS "flexiblas.h")
|
||||
endif()
|
||||
|
||||
find_package_handle_standard_args(
|
||||
|
|
@ -39,18 +39,21 @@ if(NOT CP2K_FLEXIBLAS_FOUND)
|
|||
set(CP2K_BLAS_VENDOR "FlexiBLAS")
|
||||
endif()
|
||||
|
||||
if(CP2K_FLEXIBLAS_FOUND AND NOT TARGET CP2K_FlexiBLAS::flexiblas)
|
||||
add_library(CP2K_FlexiBLAS::flexiblas INTERFACE IMPORTED)
|
||||
add_library(CP2K_FlexiBLAS::blas ALIAS CP2K_FlexiBLAS::flexiblas)
|
||||
if(CP2K_FLEXIBLAS_FOUND)
|
||||
if(NOT TARGET CP2K::BLAS::FlexiBLAS::flexiblas)
|
||||
add_library(CP2K::BLAS::FlexiBLAS::flexiblas INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::FlexiBLAS::blas ALIAS
|
||||
CP2K::BLAS::FlexiBLAS::flexiblas)
|
||||
endif()
|
||||
set_target_properties(
|
||||
CP2K_FlexiBLAS::flexiblas PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_FLEXIBLAS_LINK_LIBRARIES}")
|
||||
CP2K::BLAS::FlexiBLAS::flexiblas
|
||||
PROPERTIES INTERFACE_LINK_LIBRARIES "${CP2K_FLEXIBLAS_LINK_LIBRARIES}")
|
||||
if(CP2K_FLEXIBLAS_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_FlexiBLAS::flexiblas PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_FLEXIBLAS_INCLUDE_DIRS}")
|
||||
CP2K::BLAS::FlexiBLAS::flexiblas
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_FLEXIBLAS_INCLUDE_DIRS}")
|
||||
endif()
|
||||
set(CP2K_BLAS_VENDOR "flexiblas")
|
||||
set(CP2K_BLAS_VENDOR "FlexiBLAS")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_FLEXIBLAS_FOUND CP2K_FLEXIBLAS_INCLUDE_DIRS
|
||||
|
|
|
|||
|
|
@ -43,14 +43,15 @@ endif()
|
|||
|
||||
# add target to link against
|
||||
if(GenericBLAS_FOUND)
|
||||
if(NOT TARGET CP2K_GenericBLAS::blas)
|
||||
add_library(CP2K_GenericBLAS::blas INTERFACE IMPORTED)
|
||||
|
||||
if(NOT TARGET CP2K::BLAS::GenericBLAS::blas)
|
||||
add_library(CP2K::BLAS::GenericBLAS::blas INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_property(TARGET CP2K_GenericBLAS::blas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${GenericBLAS_LIBRARIES})
|
||||
set_property(TARGET CP2K::BLAS::GenericBLAS::blas
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES ${GenericBLAS_LIBRARIES})
|
||||
set_property(
|
||||
TARGET CP2K_GenericBLAS::blas PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${GenericBLAS_INCLUDE_DIRS})
|
||||
TARGET CP2K::BLAS::GenericBLAS::blas PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${GenericBLAS_INCLUDE_DIRS})
|
||||
endif()
|
||||
|
||||
# prevent clutter in cache
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ if(CP2K_BLAS_FOUND)
|
|||
OR CP2K_BLAS_VENDOR MATCHES "FlexiBLAS")
|
||||
# we just need to create the interface that's all
|
||||
set(CP2K_LAPACK_FOUND TRUE)
|
||||
get_target_property(CP2K_LAPACK_INCLUDE_DIRS CP2K_BLAS::blas
|
||||
get_target_property(CP2K_LAPACK_INCLUDE_DIRS CP2K::BLAS::blas
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(CP2K_LAPACK_LIBRARIES CP2K_BLAS::blas
|
||||
get_target_property(CP2K_LAPACK_LIBRARIES CP2K::BLAS::blas
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
else()
|
||||
|
||||
|
|
@ -53,16 +53,16 @@ endif()
|
|||
find_package_handle_standard_args(Lapack REQUIRED_VARS CP2K_LAPACK_LIBRARIES)
|
||||
|
||||
if(CP2K_LAPACK_FOUND)
|
||||
if(NOT TARGET CP2K_LAPACK::lapack)
|
||||
add_library(CP2K_LAPACK::lapack INTERFACE IMPORTED)
|
||||
set_property(TARGET CP2K_LAPACK::lapack PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LAPACK_LIBRARIES})
|
||||
if(CP2K_LAPACK_INCLUDE_DIRS)
|
||||
set_property(
|
||||
TARGET CP2K_LAPACK::lapack PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_LAPACK_INCLUDE_DIRS})
|
||||
endif()
|
||||
add_library(CP2K_LAPACK::LAPACK ALIAS CP2K_LAPACK::lapack)
|
||||
if(NOT TARGET CP2K::LAPACK::lapack)
|
||||
add_library(CP2K::LAPACK::lapack INTERFACE IMPORTED)
|
||||
add_library(CP2K::LAPACK::LAPACK ALIAS CP2K::LAPACK::lapack)
|
||||
endif()
|
||||
set_property(TARGET CP2K::LAPACK::lapack PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LAPACK_LIBRARIES})
|
||||
if(CP2K_LAPACK_INCLUDE_DIRS)
|
||||
set_property(
|
||||
TARGET CP2K::LAPACK::lapack PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_LAPACK_INCLUDE_DIRS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -36,15 +36,15 @@ else()
|
|||
CP2K_LIBSPG_LINK_LIBRARIES)
|
||||
endif()
|
||||
|
||||
if(CP2K_LIBSPG_FOUND AND NOT TARGET CP2K_LIBSPG::libspg)
|
||||
add_library(CP2K_LIBSPG::libspg INTERFACE IMPORTED)
|
||||
if(CP2K_LIBSPG_FOUND AND NOT TARGET CP2K::LIBSPG::libspg)
|
||||
add_library(CP2K::LIBSPG::libspg INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_LIBSPG::libspg PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_LIBSPG_LINK_LIBRARIES}")
|
||||
CP2K::LIBSPG::libspg PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_LIBSPG_LINK_LIBRARIES}")
|
||||
if(CP2K_LIBSPG_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_LIBSPG::libspg PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSPG_INCLUDE_DIRS}")
|
||||
CP2K::LIBSPG::libspg PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSPG_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,10 @@ check_symbol_exists(vdwxc_init_mpi "${CP2K_LIBVDWXC_INCLUDE_DIRS}/vdwxc_mpi.h"
|
|||
find_package_handle_standard_args(
|
||||
LibVDWXC DEFAULT_MSG CP2K_LIBVDWXC_LINK_LIBRARIES CP2K_LIBVDWXC_INCLUDE_DIRS)
|
||||
|
||||
if(LibVDWXC_FOUND AND NOT TARGET CP2K_libvdwxc::libvdwxc)
|
||||
add_library(CP2K_libvdwxc::libvdwxc INTERFACE IMPORTED)
|
||||
if(LibVDWXC_FOUND AND NOT TARGET CP2K::libvdwxc::libvdwxc)
|
||||
add_library(CP2K::libvdwxc::libvdwxc INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_libvdwxc::libvdwxc
|
||||
CP2K::libvdwxc::libvdwxc
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_LIBVDWXC_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${CP2K_LIBVDWXC_LINK_LIBRARIES}")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -24,15 +24,15 @@ else()
|
|||
CP2K_LIBVORI_LINK_LIBRARIES)
|
||||
endif()
|
||||
|
||||
if(NOT TARGET CP2K_VORI::vori)
|
||||
add_library(CP2K_VORI::vori INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::VORI::vori)
|
||||
add_library(CP2K::VORI::vori INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_VORI::vori PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_LIBVORI_LINK_LIBRARIES}")
|
||||
CP2K::VORI::vori PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_LIBVORI_LINK_LIBRARIES}")
|
||||
if(CP2K_LIBVORI_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_VORI::vori PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBVORI_INCLUDE_DIRS}")
|
||||
CP2K::VORI::vori PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBVORI_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -46,16 +46,16 @@ else()
|
|||
CP2K_LIBXC_LINK_LIBRARIES)
|
||||
endif()
|
||||
if(CP2K_LIBXC_FOUND)
|
||||
if(NOT TARGET CP2K_CP2K_Libxc::xc)
|
||||
add_library(CP2K_Libxc::xc INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::Libxc::xc)
|
||||
add_library(CP2K::Libxc::xc INTERFACE IMPORTED)
|
||||
endif()
|
||||
|
||||
if(LIBXC_INCLUDE_DIRS)
|
||||
if(CP2K_LIBXC_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_Libxc::xc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBXC_INCLUDE_DIRS}")
|
||||
CP2K::Libxc::xc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBXC_INCLUDE_DIRS}")
|
||||
endif()
|
||||
target_link_libraries(CP2K_Libxc::xc INTERFACE ${CP2K_LIBXC_LINK_LIBRARIES})
|
||||
target_link_libraries(CP2K::Libxc::xc INTERFACE ${CP2K_LIBXC_LINK_LIBRARIES})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_LIBXC_FOUND CP2K_LIBXC_LINK_LIBRARIES
|
||||
|
|
|
|||
|
|
@ -31,15 +31,6 @@ if(NOT CP2K_LIBXSMM_FOUND)
|
|||
endforeach()
|
||||
endif()
|
||||
|
||||
if(CP2K_LIBXSMM_FOUND
|
||||
AND CP2K_LIBXSMMF_FOUND
|
||||
AND CP2K_LIBXSMMEXT_FOUND
|
||||
AND CP2K_LIBXSMMNOBLAS_FOUND)
|
||||
set(CP2K_LIBXSMM_LINK_LIBRARIES
|
||||
"${CP2K_LIBXSMM_LIBRARIES};${CP2K_LIBXSMMF_LIBRARIES};${CP2K_LIBXSMMEXT_LIBRARIES};${CP2K_LIBXSMMNOBLAS_LIBRARIES}"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT CP2K_LIBXSMM_INCLUDE_DIRS)
|
||||
cp2k_include_dirs(LIBXSMM "libxsmm.h;include/libxsmm.h")
|
||||
endif()
|
||||
|
|
@ -60,20 +51,20 @@ else()
|
|||
CP2K_LIBXSMM_LINK_LIBRARIES)
|
||||
endif()
|
||||
|
||||
if(NOT TARGET CP2K_LibXSMM::libxsmm)
|
||||
if(NOT TARGET CP2K::LibXSMM::libxsmm)
|
||||
foreach(__lib libxsmm libxsmmf libxsmmext libxsmmnoblas)
|
||||
string(TOUPPER "CP2K_${__lib}" __lib_search_up)
|
||||
if(${__lib_search_up}_FOUND AND NOT TARGET CP2K_LibXSMM::${__lib})
|
||||
add_library(CP2K_LibXSMM::${__lib} INTERFACE IMPORTED)
|
||||
if(${__lib_search_up}_FOUND AND NOT TARGET CP2K::LibXSMM::${__lib})
|
||||
add_library(CP2K::LibXSMM::${__lib} INTERFACE IMPORTED)
|
||||
endif()
|
||||
|
||||
set_target_properties(
|
||||
CP2K_LibXSMM::${__lib} PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${${__lib_search_up}_LINK_LIBRARIES}")
|
||||
CP2K::LibXSMM::${__lib} PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${${__lib_search_up}_LINK_LIBRARIES}")
|
||||
|
||||
if(CP2K_LIBXSMM_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_LibXSMM::${__lib}
|
||||
CP2K::LibXSMM::${__lib}
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBXSMM_INCLUDE_DIRS};${CP2K_LIBXSMM_PREFIX}/include"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -42,19 +42,19 @@ find_package_handle_standard_args(
|
|||
CP2K_LIBINT2_LINK_LIBRARIES)
|
||||
|
||||
if(CP2K_LIBINT2_FOUND)
|
||||
if(NOT TARGET CP2K_Libint2::int2)
|
||||
add_library(CP2K_Libint2::int2 INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::Libint2::int2)
|
||||
add_library(CP2K::Libint2::int2 INTERFACE IMPORTED)
|
||||
endif()
|
||||
|
||||
if(CP2K_LIBINT2_INCLUDE_DIRS)
|
||||
set_target_properties(
|
||||
CP2K_Libint2::int2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBINT2_INCLUDE_DIRS}")
|
||||
CP2K::Libint2::int2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBINT2_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
set_target_properties(
|
||||
CP2K_Libint2::int2 PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LIBINT2_LINK_LIBRARIES})
|
||||
CP2K::Libint2::int2 PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LIBINT2_LINK_LIBRARIES})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_LIBINT2_FOUND CP2K_LIBINT2_LINK_LIBRARIES
|
||||
|
|
|
|||
|
|
@ -291,7 +291,7 @@ foreach(_libtype "ST" "DYN")
|
|||
|
||||
string(TOLOWER "${_iface}_${_bits}_${_threading}_${_libtype}"
|
||||
_tgt_config)
|
||||
set(_mkl_tgt CP2K_MKL::${_tgt_config})
|
||||
set(_mkl_tgt CP2K::BLAS::MKL::${_tgt_config})
|
||||
|
||||
if(MKL_FOUND
|
||||
AND _mkl_interface_lib
|
||||
|
|
@ -321,12 +321,12 @@ foreach(_libtype "ST" "DYN")
|
|||
TOLOWER "${_mpi_impl}_${_iface}_${_bits}_${_threading}_${_libtype}"
|
||||
_tgt_config)
|
||||
|
||||
set(_scalapack_tgt CP2K_MKL::scalapack_${_tgt_config})
|
||||
set(_scalapack_tgt CP2K::BLAS::MKL::scalapack_${_tgt_config})
|
||||
|
||||
if(_mkl_blacs_lib
|
||||
AND TARGET ${_mkl_tgt}
|
||||
AND TARGET MPI::MPI_CXX
|
||||
AND NOT TARGET CP2K_MKL::blacs_${_tgt_config})
|
||||
AND NOT TARGET CP2K::BLAS::MKL::blacs_${_tgt_config})
|
||||
set(_blacs_libs
|
||||
"${_mkl_linker_pre_flags_${_libtype}}"
|
||||
"${_mkl_interface_lib}"
|
||||
|
|
@ -337,20 +337,22 @@ foreach(_libtype "ST" "DYN")
|
|||
"MPI::MPI_CXX"
|
||||
"${_mkl_dep_${_threading}}"
|
||||
"Threads::Threads")
|
||||
add_library(CP2K_MKL::blacs_${_tgt_config} INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::MKL::blacs_${_tgt_config} INTERFACE
|
||||
IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_MKL::blacs_${_tgt_config}
|
||||
CP2K::BLAS::MKL::blacs_${_tgt_config}
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_MKL_INCLUDE_DIRS}" INTERFACE_LINK_LIBRARIES
|
||||
"${_mkl_blacs_lib}")
|
||||
endif()
|
||||
|
||||
if(_mkl_scalapack_lib AND NOT TARGET
|
||||
CP2K_MKL::scalapack_${_tgt_config})
|
||||
CP2K::BLAS::MKL::scalapack_${_tgt_config})
|
||||
set(_scalapack_libs "${_mkl_scalapack_lib}" "${_blacs_tgt}")
|
||||
add_library(CP2K_MKL::scalapack_${_tgt_config} INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::MKL::scalapack_${_tgt_config} INTERFACE
|
||||
IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_MKL::scalapack_${_tgt_config}
|
||||
CP2K::BLAS::MKL::scalapack_${_tgt_config}
|
||||
PROPERTIES INTERFACE_LINK_LIBRARIES "${_scalapack_libs}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
|
@ -359,7 +361,7 @@ foreach(_libtype "ST" "DYN")
|
|||
endforeach()
|
||||
endforeach()
|
||||
|
||||
if(MKL_FOUND AND NOT TARGET CP2K_MKL::blas)
|
||||
if(MKL_FOUND)
|
||||
# BLAS in the Intel MKL 10+ library?
|
||||
|
||||
# the findMKL package finds all possible combination and define target for
|
||||
|
|
@ -373,8 +375,7 @@ if(MKL_FOUND AND NOT TARGET CP2K_MKL::blas)
|
|||
set(BLAS_mkl_INTFACE "intel")
|
||||
endif()
|
||||
|
||||
if(CP2K_BLAS_THREADING MATCHES "thread" OR CP2K_BLAS_THREADING MATCHES
|
||||
"gnu-thread")
|
||||
if(CP2K_BLAS_THREADING MATCHES "thread|gnu-thread")
|
||||
set(BLAS_mkl_thread__ "omp")
|
||||
endif()
|
||||
|
||||
|
|
@ -398,24 +399,20 @@ if(MKL_FOUND AND NOT TARGET CP2K_MKL::blas)
|
|||
|
||||
get_target_property(
|
||||
MKL_BLAS_INCLUDE_DIRS
|
||||
CP2K_MKL::${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
CP2K::BLAS::MKL::${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(
|
||||
MKL_BLAS_LIBRARIES
|
||||
CP2K_MKL::${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
CP2K::BLAS::MKL::${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
if(NOT TARGET CP2K_MKL::blas)
|
||||
add_library(CP2K_MKL::blas INTERFACE IMPORTED)
|
||||
add_library(CP2K_MKL::MKL INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::BLAS::MKL::blas)
|
||||
add_library(CP2K::BLAS::MKL::MKL INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::MKL::blas ALIAS CP2K::BLAS::MKL::MKL)
|
||||
# create a empty lapack
|
||||
add_library(CP2K_MKL::lapack INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::MKL::lapack INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_target_properties(
|
||||
CP2K_MKL::blas
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_MKL_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${MKL_BLAS_LIBRARIES}")
|
||||
set_target_properties(
|
||||
CP2K_MKL::MKL
|
||||
CP2K::BLAS::MKL::MKL
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_MKL_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${MKL_BLAS_LIBRARIES}")
|
||||
|
||||
|
|
@ -427,24 +424,24 @@ if(MKL_FOUND AND NOT TARGET CP2K_MKL::blas)
|
|||
|
||||
get_target_property(
|
||||
__mkl_scalapack_inc
|
||||
CP2K_MKL::scalapack_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
CP2K::BLAS::MKL::scalapack_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(
|
||||
__mkl_scalapack_lib
|
||||
CP2K_MKL::scalapack_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
CP2K::BLAS::MKL::scalapack_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
get_target_property(
|
||||
__mkl_blacs_inc
|
||||
CP2K_MKL::blacs_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
CP2K::BLAS::MKL::blacs_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(
|
||||
__mkl_blacs_lib
|
||||
CP2K_MKL::blacs_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
CP2K::BLAS::MKL::blacs_${__mkl_mpi_ver_}_${BLAS_mkl_INTFACE}_${BLAS_mkl_ILP_MODE}_${BLAS_mkl_thread__}_dyn
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
if(NOT TARGET CP2K_MKL::scalapack_link)
|
||||
add_library(CP2K_MKL::scalapack_link INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::BLAS::MKL::scalapack_link)
|
||||
add_library(CP2K::BLAS::MKL::scalapack_link INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_MKL::scalapack_link
|
||||
CP2K::BLAS::MKL::scalapack_link
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${__mkl_scalapack_inc}"
|
||||
INTERFACE_LINK_LIBRARIES
|
||||
"${__mkl_scalapack_lib};${__mkl_blacs_lib}")
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ cp2k_include_dirs(FFTW3 "metis.h")
|
|||
find_package_handle_standard_args(Metis DEFAULT_MSG CP2K_METIS_LINK_LIBRARIES
|
||||
CP2K_METIS_INCLUDE_DIRS CP2K_METIS_FOUND)
|
||||
|
||||
if(CP2K_METIS_FOUND AND NOT TARGET CP2K_metis::metis)
|
||||
add_library(CP2K_metis::metis INTERFACE IMPORTED)
|
||||
if(CP2K_METIS_FOUND AND NOT TARGET CP2K::metis::metis)
|
||||
add_library(CP2K::metis::metis INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_metis::metis
|
||||
CP2K::metis::metis
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_METIS_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${CP2K_METIS_LINK_LIBRARIES}")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -46,18 +46,20 @@ endif()
|
|||
|
||||
# add target to link against
|
||||
if(CP2K_OPENBLAS_FOUND)
|
||||
if(NOT TARGET CP2K_OpenBLAS::openblas)
|
||||
add_library(CP2K_OpenBLAS::openblas INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::BLAS::OpenBLAS::openblas)
|
||||
add_library(CP2K::BLAS::OpenBLAS::openblas INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_property(
|
||||
TARGET CP2K_OpenBLAS::openblas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_OPENBLAS_LINK_LIBRARIES})
|
||||
TARGET CP2K::BLAS::OpenBLAS::openblas
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES ${CP2K_OPENBLAS_LINK_LIBRARIES})
|
||||
if(CP2K_OPENBLAS_INCLUDE_DIRS)
|
||||
set_property(
|
||||
TARGET CP2K_OpenBLAS::openblas PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
${CP2K_OPENBLAS_INCLUDE_DIRS})
|
||||
TARGET CP2K::BLAS::OpenBLAS::openblas
|
||||
PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${CP2K_OPENBLAS_INCLUDE_DIRS})
|
||||
endif()
|
||||
if(NOT TARGET CP2K::BLAS::OpenBLAS::blas)
|
||||
add_library(CP2K::BLAS::OpenBLAS::blas ALIAS CP2K::BLAS::OpenBLAS::openblas)
|
||||
endif()
|
||||
add_library(CP2K_OpenBLAS::blas ALIAS CP2K_OpenBLAS::openblas)
|
||||
set(CP2K_BLAS_VENDOR "OpenBLAS")
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -32,13 +32,13 @@ endif()
|
|||
find_package_handle_standard_args(PEXSI DEFAULT_MSG CP2K_PEXSI_INCLUDE_DIRS
|
||||
CP2K_PEXSI_LINK_LIBRARIES)
|
||||
|
||||
if(CP2K_PEXSI_FOUND AND NOT TARGET CP2K_PEXSI::pexsi)
|
||||
add_library(CP2K_PEXSI::pexsi INTERFACE IMPORTED)
|
||||
set_target_properties(CP2K_PEXSI PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_PEXSI_LINK_LIBRARIES}")
|
||||
if(CP2K_PEXSI_FOUND AND NOT TARGET CP2K::PEXSI::pexsi)
|
||||
add_library(CP2K::PEXSI::pexsi INTERFACE IMPORTED)
|
||||
set_target_properties(CP2K::PEXSI PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_PEXSI_LINK_LIBRARIES}")
|
||||
if(DEFINED CP2K_PEXSI_INCLUDE_DIRS)
|
||||
set_target_properties(CP2K_PEXSI PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_PEXSI_INCLUDE_DIRS}")
|
||||
set_target_properties(CP2K::PEXSI PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_PEXSI_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
|||
|
|
@ -35,11 +35,11 @@ else()
|
|||
endif()
|
||||
|
||||
if(CP2K_PLUMED_FOUND)
|
||||
if(NOT TARGET CP2K_plumed::plumed)
|
||||
add_library(CP2K_plumed::plumed INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::plumed::plumed)
|
||||
add_library(CP2K::plumed::plumed INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_target_properties(
|
||||
CP2K_plumed::plumed
|
||||
CP2K::plumed::plumed
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_PLUMED_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${CP2K_PLUMED_LINK_LIBRARIES}")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -51,10 +51,10 @@ find_package_handle_standard_args(
|
|||
CP2K_SCOTCHERR_LINK_LIBRARIES
|
||||
CP2K_PTESMUMPS_LINK_LIBRARIES)
|
||||
|
||||
if(CP2K_PTSCOTCH_FOUND AND NOT TARGET CP2K_ptscotch::ptscotch)
|
||||
add_library(CP2K_ptscotch::ptscotch INTERFACE IMPORTED)
|
||||
if(CP2K_PTSCOTCH_FOUND AND NOT TARGET CP2K::ptscotch::ptscotch)
|
||||
add_library(CP2K::ptscotch::ptscotch INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_ptscotch::ptscotch
|
||||
CP2K::ptscotch::ptscotch
|
||||
PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PTSCOTCH_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ endif()
|
|||
find_package_handle_standard_args(Quip DEFAULT_MSG CP2K_LIBQUIP_INCLUDE_DIRS
|
||||
CP2K_QUIP_LINK_LIBRARIES)
|
||||
|
||||
if(CP2K_LIBQUIP_FOUND AND NOT TARGET CP2K_quip::quip)
|
||||
add_library(CP2K_quip::quip INTERFACE IMPORTED)
|
||||
if(CP2K_LIBQUIP_FOUND AND NOT TARGET CP2K::quip::quip)
|
||||
add_library(CP2K::quip::quip INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
CP2K_quip::quip
|
||||
CP2K::quip::quip
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_LIBQUIP_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${CP2K_LIBQUIP_LINK_LIBRARIES}")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ cp2k_set_default_paths(SCALAPACK "SCALAPACK")
|
|||
# distro if found
|
||||
|
||||
if(CP2K_SCALAPACK_VENDOR STREQUAL "GENERIC")
|
||||
if(TARGET CP2K_MKL::scalapack_link)
|
||||
if(TARGET CP2K::BLAS::MKL::scalapack_link)
|
||||
message("-----------------------------------------------------------------")
|
||||
message("- FindScalapack warning -")
|
||||
message("-----------------------------------------------------------------")
|
||||
|
|
@ -29,7 +29,7 @@ if(CP2K_SCALAPACK_VENDOR STREQUAL "GENERIC")
|
|||
)
|
||||
endif()
|
||||
|
||||
if(TARGET CP2K_SCI::scalapack_link)
|
||||
if(TARGET CP2K::BLAS::SCI::scalapack_link)
|
||||
message("-----------------------------------------------------------------")
|
||||
message("- FindScalapack warning -")
|
||||
message("-----------------------------------------------------------------")
|
||||
|
|
@ -45,7 +45,7 @@ if(CP2K_SCALAPACK_VENDOR STREQUAL "GENERIC")
|
|||
# try to detect location with pkgconfig
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(CP2K_SCALAPACK "scalapack")
|
||||
pkg_check_modules(CP2K_SCALAPACK IMPORTED_TARGET GLOBAL "scalapack")
|
||||
endif()
|
||||
|
||||
# this should be enough for detecting scalapack compiled by hand. If scalapack
|
||||
|
|
@ -56,15 +56,15 @@ if(CP2K_SCALAPACK_VENDOR STREQUAL "GENERIC")
|
|||
if(NOT CP2K_SCALAPACK_FOUND)
|
||||
cp2k_find_libraries(SCALAPACK "scalapack")
|
||||
endif()
|
||||
elseif(TARGET CP2K_MKL::scalapack_link)
|
||||
elseif(TARGET CP2K::BLAS::MKL::scalapack_link)
|
||||
# we have mkl check for the different mkl target
|
||||
get_target_property(CP2K_SCALAPACK_LINK_LIBRARIES CP2K_MKL::scalapack_link
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
get_target_property(CP2K_SCALAPACK_LINK_LIBRARIES
|
||||
CP2K::BLAS::MKL::scalapack_link INTERFACE_LINK_LIBRARIES)
|
||||
set(CP2K_SCALAPACK_FOUND yes)
|
||||
elseif(TARGET CP2K_SCI::scalapack_link)
|
||||
elseif(TARGET CP2K::BLAS::SCI::scalapack_link)
|
||||
# we have mkl check for the different mkl target
|
||||
get_target_property(CP2K_SCALAPACK_LINK_LIBRARIES CP2K_SCI::scalapack_link
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
get_target_property(CP2K_SCALAPACK_LINK_LIBRARIES
|
||||
CP2K::BLAS::SCI::scalapack_link INTERFACE_LINK_LIBRARIES)
|
||||
set(CP2K_SCALAPACK_FOUND yes)
|
||||
endif()
|
||||
|
||||
|
|
@ -76,12 +76,12 @@ find_package_handle_standard_args(SCALAPACK
|
|||
# add target to link against
|
||||
if(CP2K_SCALAPACK_FOUND)
|
||||
|
||||
if(NOT TARGET CP2K_SCALAPACK::scalapack)
|
||||
add_library(CP2K_SCALAPACK::scalapack INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::SCALAPACK::scalapack)
|
||||
add_library(CP2K::SCALAPACK::scalapack INTERFACE IMPORTED)
|
||||
endif()
|
||||
|
||||
set_property(
|
||||
TARGET CP2K_SCALAPACK::scalapack PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_SCALAPACK_LINK_LIBRARIES})
|
||||
TARGET CP2K::SCALAPACK::scalapack PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_SCALAPACK_LINK_LIBRARIES})
|
||||
endif()
|
||||
mark_as_advanced(CP2K_SCALAPACK_FOUND CP2K_SCALAPACK_LINK_LIBRARIES)
|
||||
|
|
|
|||
|
|
@ -43,56 +43,58 @@ find_package_handle_standard_args(SCI REQUIRED_VARS CP2K_LIBSCI_INCLUDE_DIRS
|
|||
|
||||
# add target to link against
|
||||
if(CP2K_LIBSCI_FOUND)
|
||||
if(NOT TARGET CP2K_SCI::sci)
|
||||
add_library(CP2K_SCI::sci INTERFACE IMPORTED)
|
||||
add_library(CP2K_SCI::sci_mpi INTERFACE IMPORTED)
|
||||
add_library(CP2K_SCI::sci_mp INTERFACE IMPORTED)
|
||||
add_library(CP2K_SCI::sci_mpi_mp INTERFACE IMPORTED)
|
||||
add_library(CP2K_SCI::scalapack_link INTERFACE IMPORTED)
|
||||
add_library(CP2K_SCI::blas INTERFACE IMPORTED)
|
||||
if(NOT TARGET CP2K::BLAS::SCI::sci)
|
||||
add_library(CP2K::BLAS::SCI::sci INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::SCI::sci_mpi INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::SCI::sci_mp INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::SCI::sci_mpi_mp INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::SCI::scalapack_link INTERFACE IMPORTED)
|
||||
add_library(CP2K::BLAS::SCI::blas INTERFACE IMPORTED)
|
||||
|
||||
if(CP2K_LIBSCI_INCLUDE_DIRS)
|
||||
set_property(TARGET CP2K_SCI::sci PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::SCI::sci PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::SCI::sci_mp PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::SCI::sci_mpi PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
set_property(
|
||||
TARGET CP2K_SCI::sci_mp PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
set_property(
|
||||
TARGET CP2K_SCI::sci_mpi PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
set_property(
|
||||
TARGET CP2K_SCI::sci_mpi_mp PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
TARGET CP2K::BLAS::SCI::sci_mpi_mp
|
||||
PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
set_property(TARGET CP2K_SCI::sci PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LIBSCI_LINK_LIBRARIES})
|
||||
set_property(
|
||||
TARGET CP2K_SCI::sci_mp PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LIBSCI_MP_LINK_LIBRARIES})
|
||||
TARGET CP2K::BLAS::SCI::sci PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LIBSCI_LINK_LIBRARIES})
|
||||
set_property(
|
||||
TARGET CP2K_SCI::sci_mpi
|
||||
TARGET CP2K::BLAS::SCI::sci_mp PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
${CP2K_LIBSCI_MP_LINK_LIBRARIES})
|
||||
set_property(
|
||||
TARGET CP2K::BLAS::SCI::sci_mpi
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES ${CP2K_LIBSCI_MPI_LINK_LIBRARIES}
|
||||
CP2K_SCI::sci)
|
||||
CP2K::BLAS::SCI::sci)
|
||||
set_property(
|
||||
TARGET CP2K_SCI::sci_mpi_mp
|
||||
TARGET CP2K::BLAS::SCI::sci_mpi_mp
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES ${CP2K_LIBSCI_MPI_MP_LINK_LIBRARIES}
|
||||
CP2K_SCI::sci_mp)
|
||||
CP2K::BLAS::SCI::sci_mp)
|
||||
set_property(
|
||||
TARGET CP2K_SCI::scalapack_link PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
TARGET CP2K::BLAS::SCI::scalapack_link
|
||||
PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CP2K_LIBSCI_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
if(CP2K_BLAS_THREADING MATCHES "sequential")
|
||||
set_property(TARGET CP2K_SCI::blas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
CP2K_SCI::sci)
|
||||
set_property(TARGET CP2K_SCI::scalapack_link
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES CP2K_SCI::sci_mpi)
|
||||
set_property(TARGET CP2K::BLAS::SCI::blas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
CP2K::BLAS::SCI::sci)
|
||||
set_property(TARGET CP2K::BLAS::SCI::scalapack_link
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES CP2K::BLAS::SCI::sci_mpi)
|
||||
else()
|
||||
set_property(TARGET CP2K_SCI::blas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
CP2K_SCI::sci_mp)
|
||||
set_property(TARGET CP2K_SCI::scalapack_link
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES CP2K_SCI::sci_mpi_mp)
|
||||
set_property(TARGET CP2K::BLAS::SCI::blas PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
CP2K::BLAS::SCI::sci_mp)
|
||||
set_property(TARGET CP2K::BLAS::SCI::scalapack_link
|
||||
PROPERTY INTERFACE_LINK_LIBRARIES CP2K::BLAS::SCI::sci_mpi_mp)
|
||||
endif()
|
||||
|
||||
set(CP2K_BLAS_VENDOR "SCI")
|
||||
|
|
|
|||
|
|
@ -28,11 +28,11 @@ endif()
|
|||
find_package_handle_standard_args(SuperLU DEFAULT_MSG CP2K_SUPERLU_INCLUDE_DIRS
|
||||
CP2K_SUPERLU_LINK_LIBRARIES)
|
||||
|
||||
if(CP2K_SUPERLU_FOUND AND NOT TARGET CP2K_superlu::superlu)
|
||||
add_library(CP2K_superlu::superlu INTERFACE IMPORTED)
|
||||
if(CP2K_SUPERLU_FOUND AND NOT TARGET CP2K::superlu::superlu)
|
||||
add_library(CP2K::superlu::superlu INTERFACE IMPORTED)
|
||||
endif()
|
||||
set_target_properties(
|
||||
CP2K_superlu::superlu
|
||||
CP2K::superlu::superlu
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_SUPERLU_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES "${CP2K_SUPERLU_LINK_LIBRARIES}")
|
||||
mark_as_advanced(CP2K_SUPERLU_LINK_LIBRARIES CP2K_SUPERLU_INCLUDE_DIRS
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ function(cp2k_set_default_paths _varname _package_name)
|
|||
OLCF_${_varname}_ROOT
|
||||
${_varname}_PREFIX
|
||||
${_varname}ROOT
|
||||
${_varname}_HOME
|
||||
EB${_varname}ROOT)
|
||||
if(DEFINED ENV{${__var}})
|
||||
set(CP2K_${_varname}_PREFIX_TMP $ENV{${__var}})
|
||||
|
|
|
|||
|
|
@ -1359,11 +1359,11 @@ endforeach()
|
|||
|
||||
add_library(cp2k "${CP2K_SRCS};${CP2K_SRCS_C};${CP2K_SRCS_GPU}")
|
||||
|
||||
target_compile_features(cp2k PUBLIC cxx_std_11)
|
||||
target_compile_features(cp2k PUBLIC cxx_std_14)
|
||||
target_compile_features(cp2k PUBLIC c_std_99)
|
||||
target_compile_features(cp2k PUBLIC cuda_std_11)
|
||||
|
||||
set_target_properties(cp2k PROPERTIES CXX_STANDARD 11)
|
||||
set_target_properties(cp2k PROPERTIES CXX_STANDARD 14)
|
||||
set_target_properties(cp2k PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")
|
||||
|
||||
# =================================================================================================
|
||||
|
|
@ -1381,19 +1381,18 @@ add_library(cp2k_link_libs INTERFACE)
|
|||
target_link_libraries(
|
||||
cp2k_link_libs
|
||||
INTERFACE
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:PEXSI::pexsi>
|
||||
$<$<BOOL:${CP2K_USE_SIRIUS}>:sirius::sirius>
|
||||
$<$<BOOL:${CP2K_USE_VORI}>:CP2K_VORI::vori>
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:CP2K_PEXSI::pexsi>
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:CP2K_ptscotch::ptscotch>
|
||||
$<$<BOOL:${CP2K_USE_SPGLIB}>:CP2K_LIBSPG::libspg>
|
||||
$<$<BOOL:${CP2K_USE_LIBXC}>:CP2K_Libxc::xc>
|
||||
$<$<BOOL:${CP2K_USE_ELPA}>:CP2K_ELPA::elpa>
|
||||
$<$<BOOL:${CP2K_USE_FFTW3}>:CP2K_FFTW3::fftw3>
|
||||
$<$<BOOL:${CP2K_ENABLE_FFTW3_THREADS_SUPPORT}>:CP2K_FFTW3::fftw3_threads>
|
||||
$<$<BOOL:${CP2K_ENABLE_FFTW3_OPENMP_SUPPORT}>:CP2K_FFTW3::fftw3_omp>
|
||||
$<$<BOOL:${CP2K_USE_VORI}>:CP2K::VORI::vori>
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:CP2K::PEXSI::pexsi>
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:CP2K::ptscotch::ptscotch>
|
||||
$<$<BOOL:${CP2K_USE_SPGLIB}>:CP2K::LIBSPG::libspg>
|
||||
$<$<BOOL:${CP2K_USE_LIBXC}>:CP2K::Libxc::xc>
|
||||
$<$<BOOL:${CP2K_USE_ELPA}>:CP2K::ELPA::elpa>
|
||||
$<$<BOOL:${CP2K_USE_FFTW3}>:CP2K::FFTW3::fftw3>
|
||||
$<$<BOOL:${CP2K_ENABLE_FFTW3_THREADS_SUPPORT}>:CP2K::FFTW3::fftw3_threads>
|
||||
$<$<BOOL:${CP2K_ENABLE_FFTW3_OPENMP_SUPPORT}>:CP2K::FFTW3::fftw3_omp>
|
||||
$<$<BOOL:${CP2K_USE_SPLA}>:SPLA::spla>
|
||||
$<$<BOOL:${CP2K_USE_LIBINT2}>:CP2K_Libint2::int2>
|
||||
$<$<BOOL:${CP2K_USE_LIBINT2}>:CP2K::Libint2::int2>
|
||||
$<$<BOOL:${CP2K_USE_COSMA}>:cosma::cosma_prefixed_pxgemm>
|
||||
$<$<BOOL:${CP2K_USE_COSMA}>:cosma::cosma>
|
||||
$<$<BOOL:${CP2K_USE_COSMA}>:costa::costa>
|
||||
|
|
@ -1406,15 +1405,14 @@ target_link_libraries(
|
|||
$<$<BOOL:${CP2K_USE_HIP}>:hip::hipfft>
|
||||
$<$<BOOL:${CP2K_USE_HIP}>:roc::hipblas>
|
||||
$<$<BOOL:${CP2K_USE_HIP}>:hip::device>
|
||||
CP2K_SCALAPACK::scalapack
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmmf>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmmext>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmm>
|
||||
CP2K_LAPACK::lapack
|
||||
CP2K_BLAS::blas
|
||||
MPI::MPI_Fortran
|
||||
MPI::MPI_C
|
||||
MPI::MPI_CXX
|
||||
$<$<BOOL:${CP2K_USE_MPI}>:CP2K::SCALAPACK::scalapack>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmmf>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmmext>
|
||||
CP2K::LAPACK::lapack
|
||||
CP2K::BLAS::blas
|
||||
$<$<BOOL:${CP2K_USE_MPI}>:MPI::MPI_Fortran>
|
||||
$<$<BOOL:${CP2K_USE_MPI}>:MPI::MPI_C>
|
||||
$<$<BOOL:${CP2K_USE_MPI}>:MPI::MPI_CXX>
|
||||
OpenMP::OpenMP_Fortran
|
||||
OpenMP::OpenMP_C
|
||||
OpenMP::OpenMP_CXX)
|
||||
|
|
@ -1442,14 +1440,18 @@ string(TIMESTAMP CP2K_TIMESTAMP "%Y-%m-%d %H:%M:%S")
|
|||
target_link_libraries(cp2k PUBLIC cp2k_link_libs)
|
||||
target_compile_definitions(
|
||||
cp2k
|
||||
PUBLIC __parallel
|
||||
__SCALAPACK
|
||||
PUBLIC $<$<BOOL:${CP2K_USE_MPI}>:__parallel>
|
||||
$<$<BOOL:${CP2K_USE_MPI}>:__SCALAPACK>
|
||||
$<$<BOOL:${CP2K_ENABLE_F08_MPI}>:__MPI_08>
|
||||
__COMPILE_DATE=\"${CP2K_TIMESTAMP}\"
|
||||
__COMPILE_HOST=\"${CP2K_HOST_NAME}\"
|
||||
__COMPILE_REVISION=\"${CP2K_GIT_HASH}\"
|
||||
__DATA_DIR=\"${CMAKE_INSTALL_FULL_DATAROOTDIR}/cp2k/data\"
|
||||
__COMPILE_ARCH=\"${CMAKE_SYSTEM_PROCESSOR}\"
|
||||
$<$<CONFIG:Release>:NDEBUG>
|
||||
$<$<CONFIG:COVERAGE>:__NO_ABORT>
|
||||
$<$<CONFIG:DEBUG>:__HAS_IEEE_EXCEPTIONS>
|
||||
$<$<CONFIG:DEBUG>:__CHECK_DIAG>
|
||||
$<$<BOOL:${CP2K_USE_PEXSI}>:__PEXSI>
|
||||
$<$<BOOL:${CP2K_USE_PLUMED2}>:__PLUMED2>
|
||||
$<$<BOOL:${CP2K_USE_QUIP}>:__QUIP>
|
||||
|
|
@ -1531,7 +1533,7 @@ add_executable(xyz2dcd motion/xyz2dcd.F)
|
|||
add_executable(libcp2k_unittest start/libcp2k_unittest.c)
|
||||
add_executable(nequip_unittest nequip_unittest.F)
|
||||
|
||||
set_target_properties(cp2k-bin PROPERTIES CXX_STANDARD 11)
|
||||
set_target_properties(cp2k-bin PROPERTIES CXX_STANDARD 14)
|
||||
set_target_properties(cp2k-bin PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES
|
||||
"CXX")
|
||||
set_target_properties(cp2k-bin PROPERTIES LINKER_LANGUAGE "CXX")
|
||||
|
|
@ -1540,7 +1542,7 @@ target_link_libraries(cp2k-bin PUBLIC cp2k)
|
|||
|
||||
foreach(_app ${__CP2K_APPS})
|
||||
set_target_properties(${_app} PROPERTIES LINKER_LANGUAGE "CXX")
|
||||
set_target_properties(${_app} PROPERTIES CXX_STANDARD 11)
|
||||
set_target_properties(${_app} PROPERTIES CXX_STANDARD 14)
|
||||
set_target_properties(${_app} PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES
|
||||
"CXX")
|
||||
target_compile_features(${_app} PUBLIC c_std_99)
|
||||
|
|
@ -1574,9 +1576,9 @@ foreach(_app ${__GRID_APPS})
|
|||
${_app}
|
||||
PUBLIC $<$<BOOL:${CP2K_USE_CUDA}>:CUDA::cudart>
|
||||
$<$<BOOL:${CP2K_USE_HIP}>:hip::device>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmmf>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmm>
|
||||
CP2K_BLAS::blas
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmmf>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmm>
|
||||
CP2K::BLAS::blas
|
||||
OpenMP::OpenMP_C
|
||||
m)
|
||||
|
||||
|
|
@ -1618,11 +1620,11 @@ target_link_libraries(
|
|||
dbm_miniapp
|
||||
PUBLIC $<$<BOOL:${CP2K_USE_CUDA}>:CUDA::cudart>
|
||||
$<$<BOOL:${CP2K_USE_HIP}>:hip::device>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmmf>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmmext>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K_LibXSMM::libxsmm>
|
||||
MPI::MPI_C
|
||||
CP2K_BLAS::blas
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmmf>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmmext>
|
||||
$<$<BOOL:${CP2K_USE_LIBXSMM}>:CP2K::LibXSMM::libxsmm>
|
||||
$<$<BOOL:${CP2K_USE_MPI}>:MPI::MPI_C>
|
||||
CP2K::BLAS::blas
|
||||
OpenMP::OpenMP_C
|
||||
m)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue