diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index ffd4272f71f..8a617276a9f 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -211,6 +211,16 @@ if(NOT MSVC) list(APPEND _abacus_linalg_libs m) endif() +# The mtblas archives bundle their own OpenBLAS objects. They must come after +# the standalone BLAS/LAPACK/ScaLAPACK above so that the linker resolves the +# BLAS symbols from the standalone BLAS instead of the bundled copy. +if(USE_DSP) + list(APPEND _abacus_linalg_libs + ${MTBLAS_FFT_DIR}/libmtblas/lib/libmtblas.a + ${MTBLAS_FFT_DIR}/libmtblas/lib/libmtblasdev.a + ${MTBLAS_FFT_DIR}/libmtblas/lib/libmtfft.a) +endif() + target_link_libraries(abacus_linalg_libs INTERFACE ${_abacus_linalg_libs}) target_include_directories(abacus_linalg_libs INTERFACE ${_abacus_linalg_include_dirs}) diff --git a/source/source_base/CMakeLists.txt b/source/source_base/CMakeLists.txt index e2ccaaf1732..7cde8766c7b 100644 --- a/source/source_base/CMakeLists.txt +++ b/source/source_base/CMakeLists.txt @@ -88,10 +88,6 @@ add_library( ) target_link_libraries(base PUBLIC container) -if (USE_DSP) - target_link_libraries(base PUBLIC ${MTBLAS_FFT_DIR}/libmtblas/lib/libmtblas.a) - target_link_libraries(base PUBLIC ${MTBLAS_FFT_DIR}/libmtblas/lib/libmtblasdev.a) -endif() add_subdirectory(module_container) if(ENABLE_COVERAGE) diff --git a/source/source_basis/module_pw/CMakeLists.txt b/source/source_basis/module_pw/CMakeLists.txt index ebb9f8673a1..d2abf09b418 100644 --- a/source/source_basis/module_pw/CMakeLists.txt +++ b/source/source_basis/module_pw/CMakeLists.txt @@ -44,10 +44,8 @@ add_library( ) if (USE_DSP) -target_link_libraries(planewave PRIVATE -${MTBLAS_FFT_DIR}/libmtblas/lib/libmtfft.a) -target_compile_definitions( planewave PUBLIC -FFT_DAT_DIR="${MTBLAS_FFT_DIR}/datfile/mt_fft_blas.dat") +target_compile_definitions( planewave PUBLIC +FFT_DAT_DIR="${MTBLAS_FFT_DIR}/datfile/mt_fft_blas.dat") endif() if(ENABLE_COVERAGE) add_coverage(planewave)