|
| 1 | +# ============================================================================= |
| 2 | +# This script is included to set all build information variables in the |
| 3 | +# calling scope. It does not use a function to avoid variable scope issues. |
| 4 | +# ============================================================================== |
| 5 | + |
| 6 | +# --- 1. Collect Basic Build Information --- |
| 7 | +if(NOT CMAKE_BUILD_TYPE) |
| 8 | + set(ABACUS_BUILD_TYPE "Custom (no CMAKE_BUILD_TYPE)") |
| 9 | +else() |
| 10 | + set(ABACUS_BUILD_TYPE ${CMAKE_BUILD_TYPE}) |
| 11 | +endif() |
| 12 | +if(DEFINED ENV{USER}) |
| 13 | + set(ABACUS_BUILD_USER "$ENV{USER}") |
| 14 | +else() |
| 15 | + set(ABACUS_BUILD_USER "Unknown") |
| 16 | +endif() |
| 17 | +site_name(ABACUS_BUILD_HOST) |
| 18 | +set(ABACUS_CXX_COMPILER_ID ${CMAKE_CXX_COMPILER_ID}) |
| 19 | +set(ABACUS_CXX_COMPILER_PATH ${CMAKE_CXX_COMPILER}) |
| 20 | +set(ABACUS_CXX_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION}) |
| 21 | +set(TEMP_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS}") |
| 22 | +#if(DEFINED CMAKE_BUILD_TYPE) |
| 23 | +# string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER) |
| 24 | +# list(APPEND TEMP_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") |
| 25 | +#endif() |
| 26 | +string(REPLACE ";" " " ABACUS_CXX_FLAGS "${TEMP_CXX_FLAGS_LIST}") |
| 27 | +set(TEMP_LINKER_FLAGS_LIST "${CMAKE_EXE_LINKER_FLAGS}") |
| 28 | +#if(DEFINED CMAKE_BUILD_TYPE) |
| 29 | +# string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UPPER) |
| 30 | +# list(APPEND TEMP_LINKER_FLAGS_LIST "${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") |
| 31 | +#endif() |
| 32 | +string(REPLACE ";" " " ABACUS_LINKER_FLAGS "${TEMP_LINKER_FLAGS_LIST}") |
| 33 | +set(TEMP_CUDA_FLAGS_LIST "${CMAKE_EXE_CUDA_FLAGS}") |
| 34 | +string(REPLACE ";" " " ABACUS_CUDA_FLAGS "${TEMP_CUDA_FLAGS_LIST}") |
| 35 | + |
| 36 | +# --- 2. Determine Target Platform --- |
| 37 | +if(USE_DSP) |
| 38 | + set(ABACUS_PLATFORM_NAME "DSP") |
| 39 | +elseif(USE_SW) |
| 40 | + set(ABACUS_PLATFORM_NAME "CPU + SW-MATH") |
| 41 | +elseif(USE_CUDA_ON_DCU) |
| 42 | + set(ABACUS_PLATFORM_NAME "CPU + DCU (Hygon CUDA)") |
| 43 | +elseif(USE_CUDA) |
| 44 | + set(ABACUS_PLATFORM_NAME "CPU + NVIDIA CUDA") |
| 45 | +elseif(USE_ROCM) |
| 46 | + set(ABACUS_PLATFORM_NAME "CPU + AMD ROCm") |
| 47 | +else() |
| 48 | + set(ABACUS_PLATFORM_NAME "CPU") |
| 49 | +endif() |
| 50 | + |
| 51 | +# --- 3. Sanitizers & Debugging --- |
| 52 | +if(ENABLE_ASAN) |
| 53 | + set(ABACUS_ASAN_STATUS "yes") |
| 54 | +else() |
| 55 | + set(ABACUS_ASAN_STATUS "no") |
| 56 | +endif() |
| 57 | +if(CMAKE_BUILD_TYPE STREQUAL "Debug") |
| 58 | + set(ABACUS_DEBUG_SYMBOLS "yes") |
| 59 | +else() |
| 60 | + set(ABACUS_DEBUG_SYMBOLS "no") |
| 61 | +endif() |
| 62 | + |
| 63 | +# --- 4. Get Dependency Versions (Enhanced with path fallback) --- |
| 64 | +# MPI Implementation and Version |
| 65 | +set(ABACUS_MPI_IMPLEMENTATION "no") |
| 66 | +set(ABACUS_MPI_VERSION "no") |
| 67 | +set(ABACUS_CUDA_AWARE_MPI "no") |
| 68 | +if(ENABLE_MPI) |
| 69 | + execute_process(COMMAND ${MPI_CXX_COMPILER} --version OUTPUT_VARIABLE MPI_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) |
| 70 | + if(MPI_VERSION_OUTPUT MATCHES "Intel") |
| 71 | + set(ABACUS_MPI_IMPLEMENTATION "Intel MPI") |
| 72 | + string(REGEX MATCH "Intel\\(R\\) oneAPI DPC\\+\\+/C\\+\\+ Compiler ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPI_VERSION_OUTPUT}") |
| 73 | + if(CMAKE_MATCH_1) |
| 74 | + set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}") |
| 75 | + else() |
| 76 | + string(REGEX MATCH "icpc \\(ICC\\) ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${MPI_VERSION_OUTPUT}") |
| 77 | + if(CMAKE_MATCH_1) |
| 78 | + set(MPI_DETECTED_VERSION "${CMAKE_MATCH_1}") |
| 79 | +endif() |
| 80 | + endif() |
| 81 | + elseif(MPI_VERSION_OUTPUT MATCHES "Open MPI") |
| 82 | + set(ABACUS_MPI_IMPLEMENTATION "OpenMPI") |
| 83 | + elseif(MPI_VERSION_OUTPUT MATCHES "MPICH") |
| 84 | + set(ABACUS_MPI_IMPLEMENTATION "MPICH") |
| 85 | + else() |
| 86 | + set(ABACUS_MPI_IMPLEMENTATION "Unknown") |
| 87 | +endif() |
| 88 | + if(MPI_DETECTED_VERSION) |
| 89 | + set(ABACUS_MPI_VERSION "yes (v${MPI_DETECTED_VERSION})") |
| 90 | + elseif(MPI_VERSION) |
| 91 | + set(ABACUS_MPI_VERSION "yes (v${MPI_VERSION})") |
| 92 | + else() |
| 93 | + set(ABACUS_MPI_VERSION "yes (version unknown)") |
| 94 | +endif() |
| 95 | + if(USE_CUDA) |
| 96 | + execute_process(COMMAND ${MPI_CXX_COMPILER} -showme:compile OUTPUT_VARIABLE MPI_COMPILE_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) |
| 97 | + if(MPI_COMPILE_FLAGS MATCHES "cuda" OR MPI_COMPILE_FLAGS MATCHES "CUDA") |
| 98 | + set(ABACUS_CUDA_AWARE_MPI "yes (likely)") |
| 99 | + else() |
| 100 | + set(ABACUS_CUDA_AWARE_MPI "no (or undetectable)") |
| 101 | +endif() |
| 102 | + else() |
| 103 | + set(ABACUS_CUDA_AWARE_MPI "no (CUDA not enabled)") |
| 104 | +endif() |
| 105 | +endif() |
| 106 | + |
| 107 | +# OpenMP Version |
| 108 | +if(USE_OPENMP AND OpenMP_CXX_VERSION) |
| 109 | + set(ABACUS_OPENMP_VERSION "yes (v${OpenMP_CXX_VERSION})") |
| 110 | +elseif(USE_OPENMP) |
| 111 | + set(ABACUS_OPENMP_VERSION "yes (version unknown)") |
| 112 | +else() |
| 113 | + set(ABACUS_OPENMP_VERSION "no") |
| 114 | +endif() |
| 115 | + |
| 116 | +# Core Math Libraries |
| 117 | +if(ENABLE_LCAO AND USE_ELPA) |
| 118 | + set(ABACUS_ELPA_VERSION "yes (version unknown)") |
| 119 | + if(ELPA_VERSION) |
| 120 | + set(ABACUS_ELPA_VERSION "yes (v${ELPA_VERSION})") |
| 121 | + else() |
| 122 | + find_program(ELPA_VERSION_EXE elpa2_print_version PATHS ${ELPA_DIR}/bin NO_DEFAULT_PATH) |
| 123 | + if(ELPA_VERSION_EXE) |
| 124 | + execute_process(COMMAND ${ELPA_VERSION_EXE} OUTPUT_VARIABLE ELPA_VER_RAW OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) |
| 125 | + if(ELPA_VER_RAW) |
| 126 | + set(ABACUS_ELPA_VERSION "yes (${ELPA_VER_RAW})") |
| 127 | +endif() |
| 128 | + endif() |
| 129 | + endif() |
| 130 | + if(ABACUS_ELPA_VERSION STREQUAL "yes (version unknown)" AND ELPA_DIR) |
| 131 | + set(ABACUS_ELPA_VERSION "yes (path: ${ELPA_DIR})") |
| 132 | + endif() |
| 133 | +else() |
| 134 | + set(ABACUS_ELPA_VERSION "no") |
| 135 | +endif() |
| 136 | + |
| 137 | +if(MKLROOT) |
| 138 | + set(ABACUS_MKL_SUPPORT "yes (version unknown)") |
| 139 | + find_path(MKL_VERSION_HEADER mkl_version.h PATHS ${MKL_INCLUDE} NO_DEFAULT_PATH) |
| 140 | + if(MKL_VERSION_HEADER) |
| 141 | + file(STRINGS "${MKL_VERSION_HEADER}" MKL_VERSION_LINE REGEX "^#define INTEL_MKL_VERSION [0-9]+") |
| 142 | + string(REGEX REPLACE "^#define INTEL_MKL_VERSION ([0-9]+)" "\\1" MKL_VER_NUM "${MKL_VERSION_LINE}") |
| 143 | + if(MKL_VER_NUM) |
| 144 | + math(EXPR MKL_MAJOR "${MKL_VER_NUM} / 10000") |
| 145 | + math(EXPR MKL_MINOR "(${MKL_VER_NUM} % 10000) / 100") |
| 146 | + math(EXPR MKL_PATCH "${MKL_VER_NUM} % 100") |
| 147 | + set(ABACUS_MKL_SUPPORT "yes (v${MKL_MAJOR}.${MKL_MINOR}.${MKL_PATCH})") |
| 148 | + endif() |
| 149 | + endif() |
| 150 | +else() |
| 151 | + set(ABACUS_MKL_SUPPORT "no") |
| 152 | +endif() |
| 153 | + |
| 154 | +if(ENABLE_LIBXC AND Libxc_VERSION) |
| 155 | + set(ABACUS_LIBXC_VERSION "yes (v${Libxc_VERSION})") |
| 156 | +elseif(ENABLE_LIBXC) |
| 157 | + set(ABACUS_LIBXC_VERSION "yes (path: ${Libxc_DIR})") |
| 158 | +else() |
| 159 | + set(ABACUS_LIBXC_VERSION "no") |
| 160 | +endif() |
| 161 | + |
| 162 | +if(NOT USE_SW AND NOT MKLROOT AND FFTW3_VERSION) |
| 163 | + set(ABACUS_FFTW_VERSION "yes (v${FFTW3_VERSION})") |
| 164 | +elseif(NOT USE_SW AND NOT MKLROOT) |
| 165 | + set(ABACUS_FFTW_VERSION "yes (version unknown)") |
| 166 | +else() |
| 167 | + set(ABACUS_FFTW_VERSION "no (using MKL or SW)") |
| 168 | +endif() |
| 169 | + |
| 170 | +# Cereal Version (Enhanced) |
| 171 | +if(ENABLE_LCAO) |
| 172 | + set(ABACUS_CEREAL_VERSION "yes (version unknown)") |
| 173 | + find_path(CEREAL_INCLUDE_DIR cereal/version.hpp PATHS ${CEREAL_INCLUDE_DIR}) |
| 174 | + if(EXISTS CEREAL_INCLUDE_DIR) |
| 175 | + file(STRINGS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp" CEREAL_MAJOR_LINE REGEX "^#define CEREAL_VERSION_MAJOR") |
| 176 | + file(STRINGS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp" CEREAL_MINOR_LINE REGEX "^#define CEREAL_VERSION_MINOR") |
| 177 | + file(STRINGS "${CEREAL_INCLUDE_DIR}/cereal/version.hpp" CEREAL_PATCH_LINE REGEX "^#define CEREAL_VERSION_PATCH") |
| 178 | + string(REGEX REPLACE "^#define CEREAL_VERSION_MAJOR +([0-9]+).*" "\\1" CEREAL_MAJOR "${CEREAL_MAJOR_LINE}") |
| 179 | + string(REGEX REPLACE "^#define CEREAL_VERSION_MINOR +([0-9]+).*" "\\1" CEREAL_MINOR "${CEREAL_MINOR_LINE}") |
| 180 | + string(REGEX REPLACE "^#define CEREAL_VERSION_PATCH +([0-9]+).*" "\\1" CEREAL_PATCH "${CEREAL_PATCH_LINE}") |
| 181 | + if(CEREAL_MAJOR AND CEREAL_MINOR AND CEREAL_PATCH) |
| 182 | + set(ABACUS_CEREAL_VERSION "yes (v${CEREAL_MAJOR}.${CEREAL_MINOR}.${CEREAL_PATCH})") |
| 183 | + endif() |
| 184 | + endif() |
| 185 | + if(ABACUS_CEREAL_VERSION STREQUAL "yes (version unknown)" AND CEREAL_INCLUDE_DIR) |
| 186 | + set(ABACUS_CEREAL_VERSION "yes (path: ${CEREAL_INCLUDE_DIR})") |
| 187 | + endif() |
| 188 | +else() |
| 189 | + set(ABACUS_CEREAL_VERSION "no") |
| 190 | +endif() |
| 191 | + |
| 192 | +# Accelerators |
| 193 | +if(USE_CUDA AND CUDAToolkit_VERSION) |
| 194 | + set(ABACUS_CUDA_VERSION "yes (v${CUDAToolkit_VERSION})") |
| 195 | +elseif(USE_CUDA) |
| 196 | + set(ABACUS_CUDA_VERSION "yes (version unknown)") |
| 197 | +else() |
| 198 | + set(ABACUS_CUDA_VERSION "no") |
| 199 | +endif() |
| 200 | + |
| 201 | +if(USE_ROCM) |
| 202 | + set(ABACUS_ROCM_VERSION "yes (version unknown)") |
| 203 | + if(HIP_VERSION) |
| 204 | + set(ABACUS_ROCM_VERSION "yes (v${HIP_VERSION})") |
| 205 | + else() |
| 206 | + find_program(HIPCC_EXECUTABLE hipcc) |
| 207 | + if(HIPCC_EXECUTABLE) |
| 208 | + execute_process(COMMAND ${HIPCC_EXECUTABLE} --version OUTPUT_VARIABLE HIPCC_VERSION_OUTPUT OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) |
| 209 | + string(REGEX MATCH "HIP version: ([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${HIPCC_VERSION_OUTPUT}") |
| 210 | + if(CMAKE_MATCH_1) |
| 211 | + set(ABACUS_ROCM_VERSION "yes (v${CMAKE_MATCH_1})") |
| 212 | +endif() |
| 213 | + endif() |
| 214 | + endif() |
| 215 | + if(ABACUS_ROCM_VERSION STREQUAL "yes (version unknown)" AND ROCM_PATH) |
| 216 | + set(ABACUS_ROCM_VERSION "yes (path: ${ROCM_PATH})") |
| 217 | + endif() |
| 218 | +else() |
| 219 | + set(ABACUS_ROCM_VERSION "no") |
| 220 | +endif() |
| 221 | + |
| 222 | +if(DEFINED CAL_CUSOLVERMP_PATH AND ENABLE_CUSOLVERMP) |
| 223 | + set(ABACUS_CUSOLVERMP_VERSION "yes (path: ${CAL_CUSOLVERMP_PATH})") |
| 224 | +elseif(ENABLE_CUSOLVERMP) |
| 225 | + set(ABACUS_CUSOLVERMP_VERSION "yes (version unknown)") |
| 226 | +else() |
| 227 | + set(ABACUS_CUSOLVERMP_VERSION "no") |
| 228 | +endif() |
| 229 | + |
| 230 | +# EXX Libraries |
| 231 | +if(ENABLE_LIBRI) |
| 232 | + set(ABACUS_LIBRI_VERSION "yes (version unknown)") |
| 233 | + set(LIBRI_VERSION_HEADER "${LIBRI_DIR}/include/RI/version.h") |
| 234 | + if(EXISTS ${LIBRI_VERSION_HEADER}) |
| 235 | + file(STRINGS "${LIBRI_VERSION_HEADER}" LIBRI_MAJOR_LINE REGEX "__LIBRI_VERSION_MAJOR") |
| 236 | + file(STRINGS "${LIBRI_VERSION_HEADER}" LIBRI_MINOR_LINE REGEX "__LIBRI_VERSION_MINOR") |
| 237 | + file(STRINGS "${LIBRI_VERSION_HEADER}" LIBRI_PATCH_LINE REGEX "__LIBRI_VERSION_PATCH") |
| 238 | + string(REGEX MATCH "([0-9]+)" LIBRI_MAJOR "${LIBRI_MAJOR_LINE}") |
| 239 | + string(REGEX MATCH "([0-9]+)" LIBRI_MINOR "${LIBRI_MINOR_LINE}") |
| 240 | + string(REGEX MATCH "([0-9]+)" LIBRI_PATCH "${LIBRI_PATCH_LINE}") |
| 241 | + if(LIBRI_MAJOR AND LIBRI_MINOR AND LIBRI_PATCH) |
| 242 | + set(ABACUS_LIBRI_VERSION "yes (v${LIBRI_MAJOR}.${LIBRI_MINOR}.${LIBRI_PATCH})") |
| 243 | + endif() |
| 244 | + endif() |
| 245 | + if(ABACUS_LIBRI_VERSION STREQUAL "yes (version unknown)" AND LIBRI_DIR) |
| 246 | + set(ABACUS_LIBRI_VERSION "yes (path: ${LIBRI_DIR})") |
| 247 | + endif() |
| 248 | +else() |
| 249 | + set(ABACUS_LIBRI_VERSION "no") |
| 250 | +endif() |
| 251 | + |
| 252 | +if(ENABLE_LIBCOMM AND LIBCOMM_DIR) |
| 253 | + set(ABACUS_LIBCOMM_VERSION "yes (path: ${LIBCOMM_DIR})") |
| 254 | +elseif(ENABLE_LIBCOMM) |
| 255 | + set(ABACUS_LIBCOMM_VERSION "yes (version unknown)") |
| 256 | +else() |
| 257 | + set(ABACUS_LIBCOMM_VERSION "no") |
| 258 | +endif() |
| 259 | + |
| 260 | +# ML & AI Libraries |
| 261 | +if((DEFINED Torch_DIR OR ENABLE_MLALGO) AND Torch_VERSION) |
| 262 | + set(ABACUS_LIBTORCH_VERSION "yes (v${Torch_VERSION})") |
| 263 | +elseif(DEFINED Torch_DIR OR ENABLE_MLALGO) |
| 264 | + set(ABACUS_LIBTORCH_VERSION "yes (path: ${Torch_DIR})") |
| 265 | +else() |
| 266 | + set(ABACUS_LIBTORCH_VERSION "no") |
| 267 | +endif() |
| 268 | + |
| 269 | +if(DEFINED DeePMD_DIR) |
| 270 | + set(ABACUS_DEEPMD_VERSION "yes (version unknown)") |
| 271 | + set(DEEPMD_VERSION_HEADER "${DeePMD_DIR}/include/deepmd/version.h") |
| 272 | + if(EXISTS ${DEEPMD_VERSION_HEADER}) |
| 273 | + file(STRINGS "${DEEPMD_VERSION_HEADER}" DEEPMD_VERSION_LINE REGEX "global_install_prefix") |
| 274 | + if(DEEPMD_VERSION_LINE) |
| 275 | + string(REGEX MATCH "global_install_prefix=\".*deepmd-kit-([0-9]+\\.[0-9]+\\.[0-9]+)\"" _ "${DEEPMD_VERSION_LINE}") |
| 276 | + if(CMAKE_MATCH_1) |
| 277 | + set(ABACUS_DEEPMD_VERSION "yes (v${CMAKE_MATCH_1})") |
| 278 | +endif() |
| 279 | + endif() |
| 280 | + endif() |
| 281 | + if(ABACUS_DEEPMD_VERSION STREQUAL "yes (version unknown)") |
| 282 | + set(ABACUS_DEEPMD_VERSION "yes (path: ${DeePMD_DIR})") |
| 283 | + endif() |
| 284 | +else() |
| 285 | + set(ABACUS_DEEPMD_VERSION "no") |
| 286 | +endif() |
| 287 | + |
| 288 | +if(DEFINED NEP_DIR AND NEP_VERSION) |
| 289 | + set(ABACUS_NEP_VERSION "yes (v${NEP_VERSION})") |
| 290 | +elseif(DEFINED NEP_DIR) |
| 291 | + set(ABACUS_NEP_VERSION "yes (path: ${NEP_DIR})") |
| 292 | +else() |
| 293 | + set(ABACUS_NEP_VERSION "no") |
| 294 | +endif() |
| 295 | + |
| 296 | +if(DEFINED TensorFlow_DIR) |
| 297 | + set(ABACUS_TENSORFLOW_VERSION "yes (path: ${TensorFlow_DIR})") |
| 298 | +else() |
| 299 | + set(ABACUS_TENSORFLOW_VERSION "no") |
| 300 | +endif() |
| 301 | + |
| 302 | +# Testing & Other Libraries |
| 303 | +if(BUILD_TESTING) |
| 304 | + set(ABACUS_GTEST_VERSION "yes (from git origin/main)") |
| 305 | +else() |
| 306 | + set(ABACUS_GTEST_VERSION "no") |
| 307 | +endif() |
| 308 | + |
| 309 | +if(ENABLE_GOOGLEBENCH) |
| 310 | + set(ABACUS_GOOGLEBENCH_VERSION "yes (from git origin/main)") |
| 311 | +else() |
| 312 | + set(ABACUS_GOOGLEBENCH_VERSION "no") |
| 313 | +endif() |
| 314 | + |
| 315 | +if(DEFINED RapidJSON_DIR AND ENABLE_RAPIDJSON) |
| 316 | + set(ABACUS_RAPIDJSON_VERSION "yes (path: ${RapidJSON_DIR})") |
| 317 | +elseif(ENABLE_RAPIDJSON) |
| 318 | + set(ABACUS_RAPIDJSON_VERSION "yes (from git origin/master)") |
| 319 | +else() |
| 320 | + set(ABACUS_RAPIDJSON_VERSION "no") |
| 321 | +endif() |
| 322 | + |
| 323 | +if(ENABLE_MLALGO) |
| 324 | + set(ABACUS_LIBNPY_VERSION "yes (path: ${libnpy_SOURCE_DIR})") |
| 325 | +else() |
| 326 | + set(ABACUS_LIBNPY_VERSION "no") |
| 327 | +endif() |
| 328 | + |
| 329 | +if(ENABLE_PEXSI) |
| 330 | + set(ABACUS_PEXSI_VERSION "yes (version unknown)") |
| 331 | + if(PEXSI_VERSION) |
| 332 | + set(ABACUS_PEXSI_VERSION "yes (v${PEXSI_VERSION})") |
| 333 | + elseif(PEXSI_DIR) |
| 334 | + set(ABACUS_PEXSI_VERSION "yes (path: ${PEXSI_DIR})") |
| 335 | + endif() |
| 336 | +else() |
| 337 | + set(ABACUS_PEXSI_VERSION "no") |
| 338 | +endif() |
| 339 | + |
| 340 | +if(ENABLE_CNPY) |
| 341 | + set(ABACUS_CNPY_VERSION "yes (path: ${cnpy_SOURCE_DIR})") |
| 342 | +else() |
| 343 | + set(ABACUS_CNPY_VERSION "no") |
| 344 | +endif() |
| 345 | + |
| 346 | +# --- 5. Collect CMake Configuration Summary --- |
| 347 | +set(ABACUS_CMAKE_OPTIONS "Build Options:") |
| 348 | +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_MPI=${ENABLE_MPI}") |
| 349 | +list(APPEND CMAKE_OPTIONS_LIST " USE_OPENMP=${USE_OPENMP}") |
| 350 | +list(APPEND CMAKE_OPTIONS_LIST " USE_CUDA=${USE_CUDA}") |
| 351 | +list(APPEND CMAKE_OPTIONS_LIST " USE_ROCM=${USE_ROCM}") |
| 352 | +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_LCAO=${ENABLE_LCAO}") |
| 353 | +list(APPEND CMAKE_OPTIONS_LIST " USE_ELPA=${USE_ELPA}") |
| 354 | +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_LIBXC=${ENABLE_LIBXC}") |
| 355 | +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_MLALGO=${ENABLE_MLALGO}") |
| 356 | +list(APPEND CMAKE_OPTIONS_LIST " ENABLE_ASAN=${ENABLE_ASAN}") |
| 357 | +list(APPEND CMAKE_OPTIONS_LIST " BUILD_TESTING=${BUILD_TESTING}") |
| 358 | +foreach(option_line ${CMAKE_OPTIONS_LIST}) |
| 359 | + set(ABACUS_CMAKE_OPTIONS "${ABACUS_CMAKE_OPTIONS}${option_line}") |
| 360 | +endforeach() |
| 361 | + |
| 362 | +set(ABACUS_CMAKE_FIND_PACKAGES "FindPackage Results:") |
| 363 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " MPI Found=${MPI_FOUND}") |
| 364 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " OpenMP Found=${OpenMP_CXX_FOUND}") |
| 365 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " CUDA Found=${CUDA_FOUND}") |
| 366 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " ROCm Found=${ROCM_FOUND}") |
| 367 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " ELPA Found=${ELPA_FOUND}") |
| 368 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " Libxc Found=${Libxc_FOUND}") |
| 369 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " PEXSI Found=${PEXSI_FOUND}") |
| 370 | +list(APPEND CMAKE_FIND_PACKAGES_LIST " LibRI Found=${LIBRI_FOUND}") |
| 371 | +foreach(package_line ${CMAKE_FIND_PACKAGES_LIST}) |
| 372 | + set(ABACUS_CMAKE_FIND_PACKAGES "${ABACUS_CMAKE_FIND_PACKAGES}${package_line}") |
| 373 | +endforeach() |
0 commit comments