mirror of
https://github.com/cp2k/cp2k.git
synced 2026-07-21 14:35:15 -04:00
[cmake] Cleanup accross the entire build system (#5527)
Co-authored-by: Mathieu Taillefumier <mathieu.taillefumier@free.fr>
This commit is contained in:
parent
c75d734d70
commit
f50e850e17
24 changed files with 186 additions and 119 deletions
|
|
@ -99,9 +99,9 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
|
|||
foreach(__var ROCM_ROOT CRAY_ROCM_ROOT ORNL_ROCM_ROOT CRAY_ROCM_PREFIX
|
||||
ROCM_PREFIX CRAY_ROCM_DIR)
|
||||
if($ENV{${__var}})
|
||||
list(APPEND CMAKE_PREFIX_PATH $ENV{__var})
|
||||
list(APPEND CMAKE_PREFIX_PATH $ENV{${__var}})
|
||||
set(ROCM_PATH
|
||||
$ENV{__var}
|
||||
$ENV{${__var}}
|
||||
CACHE PATH "Path to ROCm installation")
|
||||
endif()
|
||||
endforeach()
|
||||
|
|
@ -397,14 +397,10 @@ if(NOT Python_EXECUTABLE)
|
|||
REQUIRED)
|
||||
endif()
|
||||
|
||||
# get the git hash Get the latest abbreviated commit hash of the working branch
|
||||
# As a fall back, e.g. in a container, try reading a file named "REVISION".
|
||||
execute_process(
|
||||
COMMAND bash -c "git log -1 --format=%h || cat REVISION"
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
ERROR_QUIET
|
||||
OUTPUT_VARIABLE CP2K_GIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
# The git hash (__COMPILE_REVISION) is refreshed at *build* time rather than
|
||||
# here at configure time, see the cp2k_build_info target in src/CMakeLists.txt
|
||||
# and cmake/GenerateCp2kBuildInfo.cmake, so that "git commit; ninja" embeds the
|
||||
# new hash without requiring a re-run of cmake.
|
||||
|
||||
execute_process(
|
||||
COMMAND hostnamectl --transient
|
||||
|
|
@ -412,15 +408,6 @@ execute_process(
|
|||
OUTPUT_VARIABLE CP2K_HOST_NAME
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
add_custom_target(
|
||||
AlwaysCheckGit
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -DRUN_CHECK_GIT_VERSION=1
|
||||
-Dpre_configure_dir=${pre_configure_dir}
|
||||
-Dpost_configure_file=${post_configure_dir}
|
||||
-DGIT_HASH_CACHE=${GIT_HASH_CACHE} -P ${CURRENT_LIST_DIR}/CheckGit.cmake
|
||||
BYPRODUCTS ${post_configure_file})
|
||||
|
||||
# MPI
|
||||
if(CP2K_USE_MPI)
|
||||
get_property(REQUIRED_MPI_COMPONENTS GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||||
|
|
@ -589,7 +576,7 @@ if(CP2K_USE_ACCEL MATCHES "CUDA")
|
|||
message(STATUS "GPU architecture number: ${CMAKE_CUDA_ARCHITECTURES}")
|
||||
message(STATUS "GPU profiling enabled: ${CP2K_WITH_GPU_PROFILING}")
|
||||
|
||||
if(WITH_CUDA_PROFILING)
|
||||
if(CP2K_WITH_GPU_PROFILING)
|
||||
find_library(
|
||||
CUDA_NVTOOLSEXT nvToolsExt
|
||||
PATHS ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES}
|
||||
|
|
@ -836,8 +823,7 @@ if(CP2K_USE_LIBINT2)
|
|||
find_file(
|
||||
CP2K_LIBINT2_MOD_FILE
|
||||
NAMES libint_f.mod
|
||||
PATHS ${_libint2_include_dirs} "/usr/lib64/gfortran/modules"
|
||||
NO_DEFAULT_PATH)
|
||||
PATHS ${_libint2_include_dirs} "/usr/lib64/gfortran/modules")
|
||||
if(NOT CP2K_LIBINT2_MOD_FILE)
|
||||
message(
|
||||
FATAL_ERROR "Libint2 was found, but its Fortran interface is missing")
|
||||
|
|
@ -871,18 +857,18 @@ if(CP2K_USE_SPLA)
|
|||
INTERFACE_INCLUDE_DIRECTORIES)
|
||||
get_target_property(CP2K_SPLA_LINK_LIBRARIES SPLA::spla
|
||||
INTERFACE_LINK_LIBRARIES)
|
||||
if(NOT SPLA_GPU_BACKEND AND CP2K_USE_GEMM_OFFLOADING)
|
||||
set(CP2K_USE_GEMM_OFFLOADING OFF)
|
||||
if(NOT SPLA_GPU_BACKEND AND CP2K_USE_SPLA_GEMM_OFFLOADING)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"SpLA should be compiled with GPU support if the gemm offloading is requested. Use -DCP2K_USE_GEMM_OFFLOADING=OFF otherwise"
|
||||
"SpLA should be compiled with GPU support if the gemm offloading is requested. Use -DCP2K_USE_SPLA_GEMM_OFFLOADING=OFF otherwise"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CP2K_USE_DFTD4)
|
||||
find_package(dftd4 REQUIRED)
|
||||
# Detect dftd4_VERSION from dftd4-config-version.cmake
|
||||
# Sets CP2K_USE_DFTD4_V3 / CP2K_USE_DFTD4_V4_2 from dftd4_VERSION, which is
|
||||
# populated by dftd4-config-version.cmake either directly via
|
||||
# find_package(dftd4) or transitively via find_package(tblite).
|
||||
macro(cp2k_detect_dftd4_api)
|
||||
if(dftd4_VERSION VERSION_LESS "4.0.0")
|
||||
message(STATUS "DFTD4: found version ${dftd4_VERSION}, using v3.x API")
|
||||
set(CP2K_USE_DFTD4_V3 ON)
|
||||
|
|
@ -895,6 +881,11 @@ if(CP2K_USE_DFTD4)
|
|||
else()
|
||||
set(CP2K_USE_DFTD4_V4_2 OFF)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
if(CP2K_USE_DFTD4)
|
||||
find_package(dftd4 REQUIRED)
|
||||
cp2k_detect_dftd4_api()
|
||||
endif()
|
||||
|
||||
if(CP2K_USE_DEEPMD)
|
||||
|
|
@ -923,19 +914,7 @@ if(CP2K_USE_TBLITE)
|
|||
target_link_libraries(
|
||||
cp2k::tblite INTERFACE tblite::tblite mctc-lib::mctc-lib dftd4::dftd4
|
||||
toml-f::toml-f s-dftd3::s-dftd3)
|
||||
# Detect dftd4_VERSION from dftd4-config-version.cmake
|
||||
if(dftd4_VERSION VERSION_LESS "4.0.0")
|
||||
message(STATUS "DFTD4: found version ${dftd4_VERSION}, using v3.x API")
|
||||
set(CP2K_USE_DFTD4_V3 ON)
|
||||
else()
|
||||
set(CP2K_USE_DFTD4_V3 OFF)
|
||||
endif()
|
||||
if(dftd4_VERSION VERSION_GREATER_EQUAL "4.2.0")
|
||||
message(STATUS "DFTD4: found version ${dftd4_VERSION}, using v4.2+ API")
|
||||
set(CP2K_USE_DFTD4_V4_2 ON)
|
||||
else()
|
||||
set(CP2K_USE_DFTD4_V4_2 OFF)
|
||||
endif()
|
||||
cp2k_detect_dftd4_api()
|
||||
endif()
|
||||
|
||||
# SIRIUS
|
||||
|
|
|
|||
|
|
@ -9,10 +9,29 @@ if(NOT DEFINED OUTPUT_FILE)
|
|||
message(FATAL_ERROR "OUTPUT_FILE is not defined")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED SOURCE_DIR)
|
||||
set(SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/..")
|
||||
endif()
|
||||
|
||||
string(TIMESTAMP CP2K_BUILD_TIMESTAMP "%Y-%m-%d %H:%M:%S")
|
||||
|
||||
# Get the latest abbreviated commit hash of the working branch. As a fall back,
|
||||
# e.g. in a container without a .git directory, try reading a file named
|
||||
# "REVISION". Running this here (rather than once at configure time) means a new
|
||||
# commit is picked up on the next build, without having to re-run cmake.
|
||||
execute_process(
|
||||
COMMAND bash -c "git log -1 --format=%h || cat REVISION"
|
||||
WORKING_DIRECTORY "${SOURCE_DIR}"
|
||||
ERROR_QUIET
|
||||
OUTPUT_VARIABLE CP2K_GIT_HASH
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
if(NOT CP2K_GIT_HASH)
|
||||
set(CP2K_GIT_HASH "unknown")
|
||||
endif()
|
||||
|
||||
set(CP2K_BUILD_INFO_CONTENT
|
||||
"#define __COMPILE_DATE \"${CP2K_BUILD_TIMESTAMP}\"\n")
|
||||
"#define __COMPILE_DATE \"${CP2K_BUILD_TIMESTAMP}\"\n#define __COMPILE_REVISION \"${CP2K_GIT_HASH}\"\n"
|
||||
)
|
||||
|
||||
if(EXISTS "${OUTPUT_FILE}")
|
||||
file(READ "${OUTPUT_FILE}" CP2K_OLD_BUILD_INFO_CONTENT)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ find_package_handle_standard_args(
|
|||
CP2K_ARMPL_ILP64_MP_LINK_LIBRARIES)
|
||||
|
||||
# add target to link against
|
||||
if(NOT TARGET Armpl::armpl)
|
||||
if(NOT TARGET cp2k::BLAS::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)
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ include(cp2k_utils)
|
|||
cp2k_set_default_paths(ATLAS "Atlas")
|
||||
|
||||
cp2k_find_libraries(ATLAS "atlas")
|
||||
cp2k_include_dirs(FFTW3 "cblas.h atlas/cblas.h")
|
||||
cp2k_include_dirs(ATLAS "cblas.h atlas/cblas.h")
|
||||
# check if found
|
||||
find_package_handle_standard_args(Atlas REQUIRED_VARS CP2K_ATLAS_INCLUDE_DIRS
|
||||
CP2K_ATLAS_LINK_LIBRARIES)
|
||||
|
||||
# add target to link against
|
||||
if(CP2K_ATLAS_FOUND AND NOT TARGET CP2K_ATLAS::atlas)
|
||||
if(CP2K_ATLAS_FOUND)
|
||||
if(NOT TARGET cp2k::BLAS::ATLAS::atlas)
|
||||
add_library(cp2k::BLAS::ATLAS::atlas INTERFACE IMPORTED)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ include(cp2k_utils)
|
|||
cp2k_set_default_paths(BLIS "BLIS")
|
||||
|
||||
if(DEFINED AOCL_ROOT)
|
||||
list(CP2K_BLIS_ROOT "${AOCL_ROOT}" "$ENV{AOCL_ROOT}")
|
||||
list(APPEND CP2K_BLIS_ROOT "${AOCL_ROOT}" "$ENV{AOCL_ROOT}")
|
||||
endif()
|
||||
|
||||
# one day blis will have a pkg-config file
|
||||
|
|
@ -46,7 +46,7 @@ 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)
|
||||
add_library(cp2k::BLAS::Blis::blas ALIAS cp2k::BLAS::Blis::blis)
|
||||
endif()
|
||||
|
||||
set_property(TARGET cp2k::BLAS::Blis::blis
|
||||
|
|
|
|||
|
|
@ -20,14 +20,16 @@ cp2k_include_dirs(CAL "cal.h")
|
|||
find_package_handle_standard_args(Cal DEFAULT_MSG CP2K_CAL_LINK_LIBRARIES
|
||||
CP2K_CAL_INCLUDE_DIRS)
|
||||
|
||||
if(CP2K_CAL_FOUND AND NOT TARGET cp2k::CAL::cal)
|
||||
if(NOT CP2K_CAL_FOUND)
|
||||
message(FATAL_ERROR "Cal required by CuSolverMP")
|
||||
endif()
|
||||
|
||||
if(NOT TARGET cp2k::CAL::cal)
|
||||
add_library(cp2k::CAL::cal INTERFACE IMPORTED)
|
||||
set_target_properties(cp2k::CAL::cal PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_CAL_LINK_LIBRARIES}")
|
||||
set_target_properties(cp2k::CAL::cal PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_CAL_INCLUDE_DIRS}")
|
||||
else()
|
||||
message(FATAL_ERROR "Cal required by CuSolverMP")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_CAL_LINK_LIBRARIES)
|
||||
|
|
|
|||
|
|
@ -54,7 +54,11 @@ find_package_handle_standard_args(
|
|||
CuSolverMP DEFAULT_MSG CP2K_CUSOLVER_MP_LINK_LIBRARIES
|
||||
CP2K_CUSOLVER_MP_INCLUDE_DIRS)
|
||||
|
||||
if(CP2K_CUSOLVER_MP_FOUND AND NOT TARGET cp2k::CUSOLVER_MP::cusolver_mp)
|
||||
if(NOT CP2K_CUSOLVER_MP_FOUND)
|
||||
message(FATAL_ERROR "CuSolverMP requested, but not found")
|
||||
endif()
|
||||
|
||||
if(NOT TARGET cp2k::CUSOLVER_MP::cusolver_mp)
|
||||
add_library(cp2k::CUSOLVER_MP::cusolver_mp INTERFACE IMPORTED)
|
||||
|
||||
if(CP2K_CUSOLVERMP_USE_NCCL)
|
||||
|
|
@ -70,8 +74,6 @@ if(CP2K_CUSOLVER_MP_FOUND AND NOT TARGET cp2k::CUSOLVER_MP::cusolver_mp)
|
|||
set_target_properties(
|
||||
cp2k::CUSOLVER_MP::cusolver_mp
|
||||
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CP2K_CUSOLVER_MP_INCLUDE_DIRS}")
|
||||
else()
|
||||
message(FATAL_ERROR "CuSolverMP requested, but not found")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_CUSOLVER_MP_LINK_LIBRARIES)
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ foreach(lib_name "fftw3" "fftw3l" "fftw3q" "fftw3f")
|
|||
endif()
|
||||
endforeach()
|
||||
|
||||
set(CP2K_FFTW3_FOUND ON)
|
||||
set(CP2K_FFTW3_FOUND ${Fftw_FOUND})
|
||||
mark_as_advanced(
|
||||
CP2K_FFTW3_FOUND
|
||||
CP2K_FFTW3_ROOT
|
||||
|
|
|
|||
|
|
@ -35,10 +35,6 @@ find_package_handle_standard_args(
|
|||
FlexiBLAS DEFAULT_MSG CP2K_FLEXIBLAS_INCLUDE_DIRS
|
||||
CP2K_FLEXIBLAS_LINK_LIBRARIES)
|
||||
|
||||
if(NOT CP2K_FLEXIBLAS_FOUND)
|
||||
set(CP2K_BLAS_VENDOR "FlexiBLAS")
|
||||
endif()
|
||||
|
||||
if(CP2K_FLEXIBLAS_FOUND)
|
||||
if(NOT TARGET cp2k::BLAS::FlexiBLAS::flexiblas)
|
||||
add_library(cp2k::BLAS::FlexiBLAS::flexiblas INTERFACE IMPORTED)
|
||||
|
|
|
|||
|
|
@ -42,8 +42,7 @@ if(NOT CP2K_CONFIG_PACKAGE)
|
|||
CP2K_LAPACK_LINK_LIBRARIES
|
||||
NAMES "lapack" "lapack64"
|
||||
PATH_SUFFIXES "openblas" "openblas64" "openblas-pthread"
|
||||
"openblas-openmp" "lib" "lib64"
|
||||
NO_DEFAULT_PATH)
|
||||
"openblas-openmp" "lib" "lib64")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ else()
|
|||
CP2K_LIBVORI_LINK_LIBRARIES)
|
||||
endif()
|
||||
|
||||
if(CP2K_LIBVORI_FOUND)
|
||||
if(NOT TARGET cp2k::VORI::vori)
|
||||
add_library(cp2k::VORI::vori INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
|
|
@ -34,6 +35,7 @@ if(NOT TARGET cp2k::VORI::vori)
|
|||
"${CP2K_LIBVORI_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_LIBVORI_ROOT CP2K_LIBVORI_INCLUDE_DIRS
|
||||
CP2K_LIBVORI_LINK_LIBRARIES CP2K_LIBVORI_LIBRARIES)
|
||||
|
|
|
|||
|
|
@ -321,8 +321,6 @@ foreach(_libtype "ST" "DYN")
|
|||
TOLOWER "${_mpi_impl}_${_iface}_${_bits}_${_threading}_${_libtype}"
|
||||
_tgt_config)
|
||||
|
||||
set(_scalapack_tgt cp2k::BLAS::MKL::scalapack_${_tgt_config})
|
||||
|
||||
if(_mkl_blacs_lib
|
||||
AND TARGET ${_mkl_tgt}
|
||||
AND TARGET MPI::MPI_CXX
|
||||
|
|
@ -348,7 +346,10 @@ foreach(_libtype "ST" "DYN")
|
|||
|
||||
if(_mkl_scalapack_lib AND NOT TARGET
|
||||
cp2k::BLAS::MKL::scalapack_${_tgt_config})
|
||||
set(_scalapack_libs "${_mkl_scalapack_lib}" "${_blacs_tgt}")
|
||||
set(_scalapack_libs "${_mkl_scalapack_lib}")
|
||||
if(TARGET cp2k::BLAS::MKL::blacs_${_tgt_config})
|
||||
list(APPEND _scalapack_libs cp2k::BLAS::MKL::blacs_${_tgt_config})
|
||||
endif()
|
||||
add_library(cp2k::BLAS::MKL::scalapack_${_tgt_config} INTERFACE
|
||||
IMPORTED)
|
||||
set_target_properties(
|
||||
|
|
|
|||
|
|
@ -25,8 +25,10 @@ endif()
|
|||
if(NOT CP2K_MIMIC_FOUND)
|
||||
find_library(CP2K_MIMIC_LIBRARIES mclf PATH_SUFFIXES MiMiC)
|
||||
find_library(CP2K_MIMICc_LIBRARIES mcl PATH_SUFFIXES MiMiC)
|
||||
if(CP2K_MIMIC_LIBRARIES AND CP2K_MIMICc_LIBRARIES)
|
||||
set(CP2K_MIMIC_FOUND True)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CP2K_MIMIC_FOUND)
|
||||
set(CP2K_MIMIC_LINK_LIBRARIES
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
include(FindPackageHandleStandardArgs)
|
||||
include(cp2k_utils)
|
||||
|
||||
cp2k_set_default_paths(CP2K_NVHPC "NVHPC")
|
||||
cp2k_set_default_paths(NVHPC "NVHPC")
|
||||
|
||||
find_library(
|
||||
CP2K_NVHPC_BLAS_LP64
|
||||
|
|
@ -55,15 +55,17 @@ find_path(
|
|||
find_package_handle_standard_args(
|
||||
NVHPCBlas
|
||||
DEFAULT_MSG
|
||||
CP2K_NVHPC_INCLUDE_DIRS_ipl64
|
||||
CP2K_NVHPC_BLAS_INCLUDE_DIRS_ilp64
|
||||
CP2K_NVHPC_BLAS_INCLUDE_DIRS_lp64
|
||||
CP2K_NVHPC_BLAS_ILP64
|
||||
CP2K_NVHPC_BLAS_LP64
|
||||
CP2K_NVHPC_LAPACK_ILP64
|
||||
CP2K_NVHPC_LAPACK_LP64)
|
||||
|
||||
set(CP2K_NVHPCBLAS_FOUND ${NVHPCBlas_FOUND})
|
||||
|
||||
if(CP2K_NVHPCBLAS_FOUND)
|
||||
set(CP2K_BLAS_VENDOR "NVHPCBlas")
|
||||
set(CP2K_NVHPCBLAS_FOUND "ON")
|
||||
|
||||
if(NOT TARGET cp2k::BLAS::NVHPCBlas::nvhpcblas)
|
||||
add_library(cp2k::BLAS::NVHPCBlas::nvhpcblas INTERFACE IMPORTED)
|
||||
|
|
@ -73,18 +75,19 @@ endif()
|
|||
|
||||
if(CP2K_BLAS_INTERFACE MATCHES "64bits")
|
||||
set(CP2K_NVHPC_BLAS_LINK_LIBRARIES
|
||||
"${CP2K_NVHPC_LAPACK_ILP64} ${CP2K_NVHPC_BLAS_ILP64}")
|
||||
set(CP2K_NVHPC_BLAS_INCLUDE_DIRS "${CP2K_NVHPC_INCLUDE_DIRS_ipl64}")
|
||||
"${CP2K_NVHPC_LAPACK_ILP64};${CP2K_NVHPC_BLAS_ILP64}")
|
||||
set(CP2K_NVHPC_BLAS_INCLUDE_DIRS "${CP2K_NVHPC_BLAS_INCLUDE_DIRS_ilp64}")
|
||||
else()
|
||||
set(CP2K_NVHPC_BLAS_LINK_LIBRARIES "${CP2K_NVHPC_LAPACK_LP64}
|
||||
${CP2K_NVHPC_BLAS_LP64}")
|
||||
set(CP2K_NVHPC_BLAS_INCLUDE_DIRS "${CP2K_NVHPC_INCLUDE_DIRS_pl64}")
|
||||
set(CP2K_NVHPC_BLAS_LINK_LIBRARIES
|
||||
"${CP2K_NVHPC_LAPACK_LP64};${CP2K_NVHPC_BLAS_LP64}")
|
||||
set(CP2K_NVHPC_BLAS_INCLUDE_DIRS "${CP2K_NVHPC_BLAS_INCLUDE_DIRS_lp64}")
|
||||
endif()
|
||||
|
||||
set_target_properties(
|
||||
cp2k::BLAS::NVHPCBlas::nvhpcblas
|
||||
PROPERTIES INTERFACE_LINK_LIBRARIES "${CP2K_NVHPC_BLAS_LINK_LIBRARIES}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CP2K_NVHPC_BLAS_INCLUDE_DIRS}")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_NVHPCBLAS_FOUND CP2K_NVHPC_BLAS_INCLUDE_DIRS
|
||||
CP2K_NVHPC_BLAS_LINK_LIBRARIES CP2K_BLAS_VENDOR)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ endif()
|
|||
|
||||
if(NOT CP2K_OPENBLAS_FOUND)
|
||||
set(CP2K_OPENBLAS64_ROOT ${CP2K_OPENBLAS_ROOT})
|
||||
set(CP2K_OPENBLA_THREADS_ROOT ${CP2K_OPENBLAS_ROOT})
|
||||
set(CP2K_OPENBLAS_THREADS_ROOT ${CP2K_OPENBLAS_ROOT})
|
||||
cp2k_find_libraries(OPENBLAS "openblas")
|
||||
cp2k_find_libraries(OPENBLAS64 "openblas64")
|
||||
cp2k_find_libraries(OPENBLAS_THREADS "openblas_threads;openblas_omp")
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ else()
|
|||
CP2K_LIBSMEAGOL_LINK_LIBRARIES)
|
||||
endif()
|
||||
|
||||
if(CP2K_LIBSMEAGOL_FOUND)
|
||||
if(NOT TARGET cp2k::libsmeagol::smeagol)
|
||||
add_library(cp2k::libsmeagol::smeagol INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
|
|
@ -35,6 +36,7 @@ if(NOT TARGET cp2k::libsmeagol::smeagol)
|
|||
"${CP2K_LIBSMEAGOL_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_LIBSMEAGOL_ROOT CP2K_LIBSMEAGOL_INCLUDE_DIRS
|
||||
CP2K_LIBSMEAGOL_LINK_LIBRARIES CP2K_LIBSMEAGOL_LIBRARIES)
|
||||
|
|
|
|||
|
|
@ -24,23 +24,27 @@ find_package_handle_standard_args(
|
|||
ucc DEFAULT_MSG CP2K_UCC_INCLUDE_DIRS CP2K_UCC_LINK_LIBRARIES
|
||||
CP2K_UCX_LINK_LIBRARIES)
|
||||
|
||||
if(CP2K_UCX_FOUND AND NOT TARGET cp2k::UCC::ucx)
|
||||
add_library(cp2k::UCC::ucx INTERFACE IMPORTED)
|
||||
set_target_properties(cp2k::UCC::ucx PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_UCX_LINK_LIBRARIES}")
|
||||
else()
|
||||
if(NOT CP2K_UCX_FOUND)
|
||||
message(FATAL_ERROR "ucx required by CuSolverMP")
|
||||
endif()
|
||||
|
||||
if(CP2K_UCC_FOUND AND NOT TARGET cp2k::UCC::ucc)
|
||||
if(NOT TARGET cp2k::UCC::ucx)
|
||||
add_library(cp2k::UCC::ucx INTERFACE IMPORTED)
|
||||
set_target_properties(cp2k::UCC::ucx PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_UCX_LINK_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
if(NOT CP2K_UCC_FOUND)
|
||||
message(FATAL_ERROR "ucc required by CuSolverMP")
|
||||
endif()
|
||||
|
||||
if(NOT TARGET cp2k::UCC::ucc)
|
||||
add_library(cp2k::UCC::ucc INTERFACE IMPORTED)
|
||||
set_target_properties(
|
||||
cp2k::UCC::ucc PROPERTIES INTERFACE_LINK_LIBRARIES
|
||||
"${CP2K_UCC_LINK_LIBRARIES};cp2k::UCC::ucx")
|
||||
set_target_properties(cp2k::UCC::ucc PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${CP2K_UCC_INCLUDE_DIRS}")
|
||||
else()
|
||||
message(FATAL_ERROR "ucc required by CuSolverMP")
|
||||
endif()
|
||||
|
||||
mark_as_advanced(CP2K_UCX_LINK_LIBRARIES)
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ function(cp2k_include_dirs _package_name _library_include_file)
|
|||
NAMES ${_library_include_file}
|
||||
PATHS "${CP2K_${_package_name}_ROOT}"
|
||||
HINTS "${CP2K_${_package_name}_ROOT}"
|
||||
PATH_SUFFIXES "include" "include/${_pacakge_name}" "${_package_name}")
|
||||
PATH_SUFFIXES "include" "include/${_package_name}" "${_package_name}")
|
||||
|
||||
set(CP2K_${_package_name}_INCLUDE_DIRS
|
||||
"${CP2K_${_package_name}_INCLUDE_DIRS_TMP}"
|
||||
|
|
@ -126,6 +126,7 @@ function(cp2k_compare_src_with_list _list_files _extension _exclude_list)
|
|||
set(found_list_size_ 0)
|
||||
endfunction()
|
||||
|
||||
# cmake-lint: disable=R0912,R0915
|
||||
macro(cp2k_FindPackage name)
|
||||
#[===[.md
|
||||
# cp2k_FindPackage
|
||||
|
|
@ -217,7 +218,7 @@ macro(cp2k_FindPackage name)
|
|||
list(APPEND ARGS_PKG_MODULE_SPECS
|
||||
"${_pkg_name}>=${${name}_FIND_VERSION_MIN}")
|
||||
endforeach()
|
||||
elseif({${name}_FIND_VERSION_EXACT)
|
||||
elseif(${name}_FIND_VERSION_EXACT)
|
||||
# Requesting exact version
|
||||
foreach(_pkg_name IN LISTS ARGS_PKG_MODULE_NAMES)
|
||||
list(APPEND ARGS_PKG_MODULE_SPECS
|
||||
|
|
|
|||
|
|
@ -1554,6 +1554,7 @@ if(CP2K_USE_CUDA
|
|||
set(CP2K_DBM_OPENCL_KERNEL dbm/dbm_multiply_opencl.cl)
|
||||
set(CP2K_DBM_OPENCL_GENHDR
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${CP2K_DBM_OPENCL_KERNEL}.h")
|
||||
# cmake-lint: disable=E1126
|
||||
add_custom_command(
|
||||
COMMAND
|
||||
${CP2K_OPENCL_SCRIPT} -b 6 -p \"\" -I "${CP2K_OPENCL_BACKEND}"
|
||||
|
|
@ -1806,13 +1807,18 @@ target_link_libraries(
|
|||
$<$<AND:$<CONFIG:COVERAGE>,$<Fortran_COMPILER_ID:GNU>>:gcov>)
|
||||
|
||||
set(CP2K_BUILD_INFO_FILE "${CMAKE_CURRENT_BINARY_DIR}/cp2k_build_info.h")
|
||||
file(WRITE "${CP2K_BUILD_INFO_FILE}" "#define __COMPILE_DATE \"unknown\"\n")
|
||||
file(
|
||||
WRITE "${CP2K_BUILD_INFO_FILE}"
|
||||
"#define __COMPILE_DATE \"unknown\"\n#define __COMPILE_REVISION \"unknown\"\n"
|
||||
)
|
||||
add_custom_target(
|
||||
cp2k_build_info
|
||||
COMMAND ${CMAKE_COMMAND} -DOUTPUT_FILE=${CP2K_BUILD_INFO_FILE} -P
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -DOUTPUT_FILE=${CP2K_BUILD_INFO_FILE}
|
||||
-DSOURCE_DIR=${PROJECT_SOURCE_DIR} -P
|
||||
${PROJECT_SOURCE_DIR}/cmake/GenerateCp2kBuildInfo.cmake
|
||||
BYPRODUCTS ${CP2K_BUILD_INFO_FILE}
|
||||
COMMENT "Updating CP2K build timestamp"
|
||||
COMMENT "Updating CP2K build timestamp and git revision"
|
||||
VERBATIM)
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/cp2k_info.F
|
||||
PROPERTIES OBJECT_DEPENDS "${CP2K_BUILD_INFO_FILE}")
|
||||
|
|
@ -1828,7 +1834,6 @@ target_compile_definitions(
|
|||
$<$<BOOL:${CP2K_USE_MPI}>:__parallel>
|
||||
$<$<BOOL:${CP2K_USE_MPI_F08}>:__MPI_F08>
|
||||
__COMPILE_HOST=\"${CP2K_HOST_NAME}\"
|
||||
__COMPILE_REVISION=\"${CP2K_GIT_HASH}\"
|
||||
__DATA_DIR=\"${CP2K_DATA_DIR}\"
|
||||
__COMPILE_ARCH=\"${CMAKE_SYSTEM_PROCESSOR}\"
|
||||
$<$<BOOL:${CP2K_USE_PLUMED}>:__PLUMED2>
|
||||
|
|
|
|||
|
|
@ -93,6 +93,7 @@ FLAG_EXCEPTIONS_RE = re.compile(r"|".join(FLAG_EXCEPTIONS))
|
|||
PORTABLE_FILENAME_RE = re.compile(r"^[a-zA-Z0-9._/#~=+-]*$")
|
||||
OP_RE = re.compile(r"[\\|()!&><=*/+-]")
|
||||
NUM_RE = re.compile(r"[0-9]+[ulUL]*")
|
||||
NO_DEFAULT_PATH_RE = re.compile(r"\bNO_DEFAULT_PATH\b")
|
||||
CP2K_FLAGS_RE = re.compile(
|
||||
r"FUNCTION cp2k_flags\(\)(.*)END FUNCTION cp2k_flags", re.DOTALL
|
||||
)
|
||||
|
|
@ -309,6 +310,14 @@ def check_file(path: pathlib.Path) -> List[str]:
|
|||
f"{path}: CMake option {opt} not mentioned in docs/technologies section nor build-from-source.md"
|
||||
]
|
||||
|
||||
# NO_DEFAULT_PATH disables searching CMAKE_PREFIX_PATH and other default
|
||||
# locations, which breaks Spack, system-package, and HPC-module installs
|
||||
# unless every possible layout is hand-enumerated in PATHS/HINTS - don't use it.
|
||||
if (
|
||||
fn_ext == ".cmake" or path.name == "CMakeLists.txt"
|
||||
) and NO_DEFAULT_PATH_RE.search(content):
|
||||
warnings += [f"{path}: Found NO_DEFAULT_PATH, please remove it"]
|
||||
|
||||
# Check for DOIs that could be a bibliography reference.
|
||||
if re.match(r"docs/[^/]+/.*\.md", str(path)) and "docs/CP2K_INPUT" not in str(path):
|
||||
for line in content.splitlines():
|
||||
|
|
|
|||
27
tools/precommit/cmake-lint.yaml
Normal file
27
tools/precommit/cmake-lint.yaml
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
lint:
|
||||
disabled_codes:
|
||||
# Missing docstring on function/macro declaration - not CP2K's convention.
|
||||
- C0111
|
||||
# Line too long - false positive on the "#!"-style license banner that
|
||||
# every .cmake/CMakeLists.txt file starts with; cmake-format deliberately
|
||||
# does not rewrap "#!" comment lines, so they stay at their original width.
|
||||
- C0301
|
||||
# Invalid variable/argument/macro name - CP2K's convention is to prefix
|
||||
# local/private names with one or more underscores (e.g. "_package_name",
|
||||
# "__var") and to use snake_case for macros, neither of which matches
|
||||
# cmake-lint's default naming patterns. This also fires spuriously on
|
||||
# dynamically composed variable names like "CP2K_${_varname}_ROOT", which
|
||||
# no static naming pattern can ever match.
|
||||
- C0103
|
||||
# Missing COMMENT in add_custom_command()/add_custom_target() - stylistic,
|
||||
# not required by this codebase.
|
||||
- C0113
|
||||
# Bad indentation on wrapped multi-line arguments - cmake-lint's
|
||||
# indentation heuristic disagrees with cmake-format's own line-wrapping
|
||||
# in several already-formatted, correct files; not a reliable signal here.
|
||||
- C0307
|
||||
# "String looks like a variable reference missing an open tag" - false
|
||||
# positive on deliberately-escaped "\${VAR}" references inside
|
||||
# install(CODE "...") scripts, where the escaping defers expansion to
|
||||
# install time on purpose.
|
||||
- W0106
|
||||
|
|
@ -256,6 +256,7 @@ def process_file(fn: str, allow_modifications: bool) -> None:
|
|||
|
||||
if re.match(r"(.*/CMakeLists.txt)|(.*\.cmake)$", fn):
|
||||
run_remote_tool("cmakeformat", fn)
|
||||
run_remote_tool("cmakelint", fn)
|
||||
|
||||
if re.match(r"./data/.*POTENTIALS?$", fn):
|
||||
check_data_files()
|
||||
|
|
|
|||
|
|
@ -67,6 +67,18 @@ def cmakeformat():
|
|||
return run_tool(["cmake-format", "-i"], timeout=30)
|
||||
|
||||
|
||||
# ======================================================================================
|
||||
@app.route("/cmakelint", methods=["POST"])
|
||||
def cmakelint():
|
||||
# Note: the config path must be passed as a single "--flag=value" token.
|
||||
# cmake-lint's "-c"/"--config-files" option is nargs="+", so passing it as
|
||||
# two separate argv tokens ("-c", path) would greedily swallow the target
|
||||
# filename that run_tool() appends as another config file, and silently
|
||||
# scan zero files instead.
|
||||
config = f"--config-files={os.getcwd()}/cmake-lint.yaml"
|
||||
return run_tool(["cmake-lint", config], timeout=30)
|
||||
|
||||
|
||||
# ======================================================================================
|
||||
@app.route("/fortitude", methods=["POST"])
|
||||
def fortitude():
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ mypy_extensions==1.1.0
|
|||
packaging==26.0
|
||||
pathspec==1.0.4
|
||||
platformdirs==4.9.2
|
||||
pyyaml==6.0.3
|
||||
pytokens==0.4.1
|
||||
ruamel.yaml==0.19.1
|
||||
six==1.17.0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue