diff --git a/CMakeLists.txt b/CMakeLists.txt index af4f792523..8ee3e15693 100644 --- a/CMakeLists.txt +++ b/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() diff --git a/cmake/CompilerConfiguration.cmake b/cmake/CompilerConfiguration.cmake index 793c9cf3d6..ccdf2c8ed2 100644 --- a/cmake/CompilerConfiguration.cmake +++ b/cmake/CompilerConfiguration.cmake @@ -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") diff --git a/cmake/FindArmpl.cmake b/cmake/FindArmpl.cmake index b9f8c421fd..b738e43f44 100644 --- a/cmake/FindArmpl.cmake +++ b/cmake/FindArmpl.cmake @@ -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 diff --git a/cmake/FindAtlas.cmake b/cmake/FindAtlas.cmake index 2809c1d2a8..446aa96af3 100644 --- a/cmake/FindAtlas.cmake +++ b/cmake/FindAtlas.cmake @@ -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 diff --git a/cmake/FindBlas.cmake b/cmake/FindBlas.cmake index 73f58a2f8f..5ca289f9bf 100644 --- a/cmake/FindBlas.cmake +++ b/cmake/FindBlas.cmake @@ -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) diff --git a/cmake/FindBlis.cmake b/cmake/FindBlis.cmake index c3784e5087..4426a2dcc7 100644 --- a/cmake/FindBlis.cmake +++ b/cmake/FindBlis.cmake @@ -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 diff --git a/cmake/FindElpa.cmake b/cmake/FindElpa.cmake index a54416307b..7351f4ef04 100644 --- a/cmake/FindElpa.cmake +++ b/cmake/FindElpa.cmake @@ -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() diff --git a/cmake/FindFftw.cmake b/cmake/FindFftw.cmake index 28c58de036..4d36f52e70 100644 --- a/cmake/FindFftw.cmake +++ b/cmake/FindFftw.cmake @@ -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() diff --git a/cmake/FindFlexiBLAS.cmake b/cmake/FindFlexiBLAS.cmake index 433354597c..bfef8c46e2 100644 --- a/cmake/FindFlexiBLAS.cmake +++ b/cmake/FindFlexiBLAS.cmake @@ -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 diff --git a/cmake/FindGenericBLAS.cmake b/cmake/FindGenericBLAS.cmake index 2317294fa6..94b3d8cbe6 100644 --- a/cmake/FindGenericBLAS.cmake +++ b/cmake/FindGenericBLAS.cmake @@ -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 diff --git a/cmake/FindLapack.cmake b/cmake/FindLapack.cmake index d47bf1e316..d56d7a20a3 100644 --- a/cmake/FindLapack.cmake +++ b/cmake/FindLapack.cmake @@ -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() diff --git a/cmake/FindLibSPG.cmake b/cmake/FindLibSPG.cmake index 97ed6d4a46..7691c2ff7a 100644 --- a/cmake/FindLibSPG.cmake +++ b/cmake/FindLibSPG.cmake @@ -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() diff --git a/cmake/FindLibVDWXC.cmake b/cmake/FindLibVDWXC.cmake index 1c8ba0b35c..6d5da35897 100644 --- a/cmake/FindLibVDWXC.cmake +++ b/cmake/FindLibVDWXC.cmake @@ -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() diff --git a/cmake/FindLibVORI.cmake b/cmake/FindLibVORI.cmake index 332aa96e38..52c99b6005 100644 --- a/cmake/FindLibVORI.cmake +++ b/cmake/FindLibVORI.cmake @@ -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() diff --git a/cmake/FindLibXC.cmake b/cmake/FindLibXC.cmake index 7e99c4fa0a..c06678e283 100644 --- a/cmake/FindLibXC.cmake +++ b/cmake/FindLibXC.cmake @@ -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 diff --git a/cmake/FindLibXSMM.cmake b/cmake/FindLibXSMM.cmake index 10ee525638..517fc259de 100644 --- a/cmake/FindLibXSMM.cmake +++ b/cmake/FindLibXSMM.cmake @@ -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" ) diff --git a/cmake/FindLibint2.cmake b/cmake/FindLibint2.cmake index 8adb75fcd6..f064414f92 100644 --- a/cmake/FindLibint2.cmake +++ b/cmake/FindLibint2.cmake @@ -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 diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake index 7dc4627352..f72c6aa723 100644 --- a/cmake/FindMKL.cmake +++ b/cmake/FindMKL.cmake @@ -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}") diff --git a/cmake/FindMetis.cmake b/cmake/FindMetis.cmake index 0975e61ed7..fc21a1d8bf 100644 --- a/cmake/FindMetis.cmake +++ b/cmake/FindMetis.cmake @@ -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() diff --git a/cmake/FindOpenBLAS.cmake b/cmake/FindOpenBLAS.cmake index 73dbc9ba84..24979af8cc 100644 --- a/cmake/FindOpenBLAS.cmake +++ b/cmake/FindOpenBLAS.cmake @@ -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() diff --git a/cmake/FindPEXSI.cmake b/cmake/FindPEXSI.cmake index 38b64d17bf..0e70aa99e1 100644 --- a/cmake/FindPEXSI.cmake +++ b/cmake/FindPEXSI.cmake @@ -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() diff --git a/cmake/FindPlumed.cmake b/cmake/FindPlumed.cmake index f8d570c789..17b799c065 100644 --- a/cmake/FindPlumed.cmake +++ b/cmake/FindPlumed.cmake @@ -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() diff --git a/cmake/FindPtscotch.cmake b/cmake/FindPtscotch.cmake index 1b9a47e9b8..ede44df306 100644 --- a/cmake/FindPtscotch.cmake +++ b/cmake/FindPtscotch.cmake @@ -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 diff --git a/cmake/FindQuip.cmake b/cmake/FindQuip.cmake index ce1838c683..14241c0b37 100644 --- a/cmake/FindQuip.cmake +++ b/cmake/FindQuip.cmake @@ -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() diff --git a/cmake/FindSCALAPACK.cmake b/cmake/FindSCALAPACK.cmake index 6dbe417802..37c321ad30 100644 --- a/cmake/FindSCALAPACK.cmake +++ b/cmake/FindSCALAPACK.cmake @@ -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) diff --git a/cmake/FindSCI.cmake b/cmake/FindSCI.cmake index 795a49ec29..ce1aeac9f2 100644 --- a/cmake/FindSCI.cmake +++ b/cmake/FindSCI.cmake @@ -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") diff --git a/cmake/FindSuperLU.cmake b/cmake/FindSuperLU.cmake index 7ec6474482..5a94774fbf 100644 --- a/cmake/FindSuperLU.cmake +++ b/cmake/FindSuperLU.cmake @@ -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 diff --git a/cmake/cp2k_utils.cmake b/cmake/cp2k_utils.cmake index 6b583f247f..7d31d12f12 100644 --- a/cmake/cp2k_utils.cmake +++ b/cmake/cp2k_utils.cmake @@ -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}}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index caa68a309e..c33e450726 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 - $<$:PEXSI::pexsi> $<$:sirius::sirius> - $<$:CP2K_VORI::vori> - $<$:CP2K_PEXSI::pexsi> - $<$:CP2K_ptscotch::ptscotch> - $<$:CP2K_LIBSPG::libspg> - $<$:CP2K_Libxc::xc> - $<$:CP2K_ELPA::elpa> - $<$:CP2K_FFTW3::fftw3> - $<$:CP2K_FFTW3::fftw3_threads> - $<$:CP2K_FFTW3::fftw3_omp> + $<$:CP2K::VORI::vori> + $<$:CP2K::PEXSI::pexsi> + $<$:CP2K::ptscotch::ptscotch> + $<$:CP2K::LIBSPG::libspg> + $<$:CP2K::Libxc::xc> + $<$:CP2K::ELPA::elpa> + $<$:CP2K::FFTW3::fftw3> + $<$:CP2K::FFTW3::fftw3_threads> + $<$:CP2K::FFTW3::fftw3_omp> $<$:SPLA::spla> - $<$:CP2K_Libint2::int2> + $<$:CP2K::Libint2::int2> $<$:cosma::cosma_prefixed_pxgemm> $<$:cosma::cosma> $<$:costa::costa> @@ -1406,15 +1405,14 @@ target_link_libraries( $<$:hip::hipfft> $<$:roc::hipblas> $<$:hip::device> - CP2K_SCALAPACK::scalapack - $<$:CP2K_LibXSMM::libxsmmf> - $<$:CP2K_LibXSMM::libxsmmext> - $<$:CP2K_LibXSMM::libxsmm> - CP2K_LAPACK::lapack - CP2K_BLAS::blas - MPI::MPI_Fortran - MPI::MPI_C - MPI::MPI_CXX + $<$:CP2K::SCALAPACK::scalapack> + $<$:CP2K::LibXSMM::libxsmmf> + $<$:CP2K::LibXSMM::libxsmmext> + CP2K::LAPACK::lapack + CP2K::BLAS::blas + $<$:MPI::MPI_Fortran> + $<$:MPI::MPI_C> + $<$: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 $<$:__parallel> + $<$:__SCALAPACK> + $<$:__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}\" $<$:NDEBUG> + $<$:__NO_ABORT> + $<$:__HAS_IEEE_EXCEPTIONS> + $<$:__CHECK_DIAG> $<$:__PEXSI> $<$:__PLUMED2> $<$:__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 $<$:CUDA::cudart> $<$:hip::device> - $<$:CP2K_LibXSMM::libxsmmf> - $<$:CP2K_LibXSMM::libxsmm> - CP2K_BLAS::blas + $<$:CP2K::LibXSMM::libxsmmf> + $<$:CP2K::LibXSMM::libxsmm> + CP2K::BLAS::blas OpenMP::OpenMP_C m) @@ -1618,11 +1620,11 @@ target_link_libraries( dbm_miniapp PUBLIC $<$:CUDA::cudart> $<$:hip::device> - $<$:CP2K_LibXSMM::libxsmmf> - $<$:CP2K_LibXSMM::libxsmmext> - $<$:CP2K_LibXSMM::libxsmm> - MPI::MPI_C - CP2K_BLAS::blas + $<$:CP2K::LibXSMM::libxsmmf> + $<$:CP2K::LibXSMM::libxsmmext> + $<$:CP2K::LibXSMM::libxsmm> + $<$:MPI::MPI_C> + CP2K::BLAS::blas OpenMP::OpenMP_C m)