@@ -420,10 +420,8 @@ endif()
420420
421421if (ENABLE_MPI)
422422 find_package (MPI COMPONENTS CXX REQUIRED )
423- target_include_directories (abacus_external_deps INTERFACE ${MPI_CXX_INCLUDE_PATH} )
424- target_link_libraries (${ABACUS_BIN_NAME} PRIVATE MPI::MPI_CXX )
423+ target_link_libraries (abacus_external_deps INTERFACE MPI::MPI_CXX )
425424 abacus_add_feature_definitions (__MPI )
426- list (APPEND math_libs MPI::MPI_CXX)
427425endif ()
428426
429427
@@ -438,47 +436,6 @@ if (USE_DSP)
438436endif ()
439437
440438
441- if (USE_KML)
442- abacus_add_feature_definitions (__KML )
443- message (STATUS "Huawei KML support enabled. Defining __KML." )
444- # TODO: Create FindKML.cmake
445- # if(NOT DEFINED KML_ROOT)
446- # if(DEFINED ENV{KML_ROOT})
447- # set(KML_ROOT $ENV{KML_ROOT})
448- # else()
449- # message(WARNING "KML_ROOT is not set. Trying default system paths for KML.")
450- # endif()
451- # endif()
452- #
453- # find_library(KML_BLAS_LIB NAMES kblas PATHS ${KML_ROOT}/lib ${KML_ROOT}/lib64 NO_DEFAULT_PATH)
454- # find_library(KML_LAPACK_LIB NAMES klapack_full PATHS ${KML_ROOT}/lib ${KML_ROOT}/lib64 NO_DEFAULT_PATH)
455- # find_library(KML_SCALAPACK_LIB NAMES kscalapack_full PATHS ${KML_ROOT}/lib ${KML_ROOT}/lib64 NO_DEFAULT_PATH)
456- # find_library(KML_FFTW_LIB NAMES fftw3 PATHS ${KML_ROOT}/lib ${KML_ROOT}/lib64 NO_DEFAULT_PATH)
457- #
458- # set(KML_LIBS_FOUND TRUE)
459- # foreach(LIB_VAR KML_BLAS_LIB KML_LAPACK_LIB KML_SCALAPACK_LIB KML_FFTW_LIB)
460- # if(NOT ${LIB_VAR})
461- # message(WARNING "${LIB_VAR} not found in KML_ROOT! Please check your KML installation.")
462- # set(KML_LIBS_FOUND FALSE)
463- # endif()
464- # endforeach()
465- #
466- # if(KML_LIBS_FOUND)
467- # target_link_libraries(abacus PUBLIC
468- # ${KML_BLAS_LIB}
469- # ${KML_LAPACK_LIB}
470- # ${KML_SCALAPACK_LIB}
471- # ${KML_FFTW_LIB}
472- # )
473- # message(STATUS "Huawei KML libraries found and linked successfully.")
474- # else()
475- # message(FATAL_ERROR "Failed to find all required KML libraries. Aborting.")
476- # endif()
477- #
478- # set(BLAS_libraries ${KML_BLAS_LIB})
479- # set(LAPACK_libraries ${KML_LAPACK_LIB})
480- endif (USE_KML )
481-
482439
483440if (USE_SW)
484441 abacus_add_feature_definitions (__SW )
@@ -694,32 +651,45 @@ endif()
694651if (DEFINED ENV{MKLROOT} AND NOT DEFINED MKLROOT)
695652 set (MKLROOT "$ENV{MKLROOT} " )
696653endif ()
697- if (MKLROOT)
654+ if (USE_KML)
655+ set (_kml_components BLAS LAPACK FFTW3)
656+ if (ENABLE_MPI)
657+ list (APPEND _kml_components ScaLAPACK)
658+ endif ()
659+ if (ENABLE_FLOAT_FFTW)
660+ list (APPEND _kml_components FFTW3_FLOAT)
661+ endif ()
662+
663+ find_package (KML REQUIRED COMPONENTS ${_kml_components} )
664+ if (ENABLE_MPI)
665+ target_link_libraries (abacus_external_deps INTERFACE KML::ScaLAPACK )
666+ else ()
667+ target_link_libraries (abacus_external_deps INTERFACE KML::LAPACK )
668+ endif ()
669+ target_link_libraries (abacus_external_deps INTERFACE KML::FFTW3 )
670+ if (ENABLE_FLOAT_FFTW)
671+ target_link_libraries (abacus_external_deps INTERFACE KML::FFTW3_FLOAT )
672+ endif ()
673+ abacus_add_feature_definitions (__KML )
674+ elseif (MKLROOT)
698675 set (MKL_INTERFACE lp64)
699676 set (ENABLE_SCALAPACK ON )
700677 find_package (MKL REQUIRED )
701678 abacus_add_feature_definitions (__MKL )
702- target_include_directories (abacus_external_deps INTERFACE ${MKL_INCLUDE} ${MKL_INCLUDE} /fftw )
703- list ( APPEND math_libs MKL::MKL)
679+ target_include_directories (abacus_external_deps INTERFACE ${MKL_INCLUDE} /fftw )
680+ target_link_libraries ( abacus_external_deps INTERFACE MKL::MKL )
704681 if (CMAKE_CXX_COMPILER_ID MATCHES Intel)
705682 list (APPEND math_libs ifcore)
706683 endif ()
707684elseif (NOT USE_SW)
708- find_package (FFTW3 REQUIRED )
709685 find_package (Lapack REQUIRED )
710- list ( APPEND math_libs FFTW3::FFTW3 LAPACK::LAPACK BLAS::BLAS)
686+ target_link_libraries ( abacus_external_deps INTERFACE LAPACK::LAPACK BLAS::BLAS )
711687 # ScaLAPACK is a distributed-memory library and is only needed for the
712688 # MPI build. A serial build (e.g. the native Windows serial version)
713689 # must not require it.
714690 if (ENABLE_MPI)
715691 find_package (ScaLAPACK REQUIRED )
716- list (APPEND math_libs ScaLAPACK::ScaLAPACK)
717- endif ()
718- if (USE_OPENMP)
719- list (APPEND math_libs FFTW3::FFTW3_OMP)
720- endif ()
721- if (ENABLE_FLOAT_FFTW)
722- list (APPEND math_libs FFTW3::FFTW3_FLOAT)
692+ target_link_libraries (abacus_external_deps INTERFACE ScaLAPACK::ScaLAPACK )
723693 endif ()
724694 if (CMAKE_CXX_COMPILER_ID MATCHES GNU)
725695 list (APPEND math_libs gfortran)
@@ -732,6 +702,17 @@ elseif(NOT USE_SW)
732702 endif ()
733703endif ()
734704
705+ if (NOT USE_KML AND NOT MKLROOT AND NOT USE_SW)
706+ find_package (FFTW3 REQUIRED )
707+ target_link_libraries (abacus_external_deps INTERFACE FFTW3::FFTW3 )
708+ if (USE_OPENMP)
709+ target_link_libraries (abacus_external_deps INTERFACE FFTW3::FFTW3_OMP )
710+ endif ()
711+ if (ENABLE_FLOAT_FFTW)
712+ target_link_libraries (abacus_external_deps INTERFACE FFTW3::FFTW3_FLOAT )
713+ endif ()
714+ endif ()
715+
735716if (ENABLE_FLOAT_FFTW)
736717 abacus_add_feature_definitions (__ENABLE_FLOAT_FFTW )
737718endif ()
@@ -768,7 +749,7 @@ if(ENABLE_MLALGO OR DEFINED Torch_DIR)
768749 set_if_higher (CMAKE_CXX_STANDARD 14 )
769750 endif ()
770751 target_include_directories (abacus_external_deps INTERFACE ${TORCH_INCLUDE_DIRS} )
771- list ( APPEND math_libs ${TORCH_LIBRARIES} )
752+ target_link_libraries ( abacus_external_deps INTERFACE ${TORCH_LIBRARIES} )
772753 add_compile_options (${TORCH_CXX_FLAGS} )
773754endif ()
774755
0 commit comments