Skip to content

Commit e9e323b

Browse files
committed
Cleanup libabacus dependency interfaces
1 parent 936ec61 commit e9e323b

2 files changed

Lines changed: 42 additions & 22 deletions

File tree

cmake/modules/FindMKL.cmake

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -241,30 +241,28 @@ if(MKL_FOUND)
241241
set(_mkl_base_archives ${MKL_INTERFACE_LIB} ${MKL_THREAD} ${MKL_CORE})
242242
_mkl_link_group(_mkl_base ${_mkl_base_archives})
243243

244-
add_library(abacus_mkl INTERFACE)
245-
add_library(abacus::mkl ALIAS abacus_mkl)
244+
add_library(abacus::mkl INTERFACE IMPORTED GLOBAL)
246245
target_include_directories(
247-
abacus_mkl
246+
abacus::mkl
248247
INTERFACE
249248
"${MKL_INCLUDE}"
250249
"${MKL_FFTW_INCLUDE}")
251-
target_link_libraries(abacus_mkl INTERFACE ${_mkl_base} ${_mkl_runtime})
250+
target_link_libraries(abacus::mkl INTERFACE ${_mkl_base} ${_mkl_runtime})
252251

253252
if(ENABLE_MPI)
254-
add_library(abacus_mkl_scalapack INTERFACE)
255-
add_library(abacus::mkl_scalapack ALIAS abacus_mkl_scalapack)
253+
add_library(abacus::mkl_scalapack INTERFACE IMPORTED GLOBAL)
256254
target_include_directories(
257-
abacus_mkl_scalapack
255+
abacus::mkl_scalapack
258256
INTERFACE
259257
"${MKL_INCLUDE}"
260258
"${MKL_FFTW_INCLUDE}")
261259
if(_mkl_all_static AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
262260
_mkl_link_group(_mkl_cluster ${MKL_SCALAPACK} ${MKL_BLACS} ${_mkl_base_archives})
263261
target_link_libraries(
264-
abacus_mkl_scalapack INTERFACE ${_mkl_cluster} MPI::MPI_CXX ${_mkl_runtime})
262+
abacus::mkl_scalapack INTERFACE ${_mkl_cluster} MPI::MPI_CXX ${_mkl_runtime})
265263
else()
266264
target_link_libraries(
267-
abacus_mkl_scalapack INTERFACE
265+
abacus::mkl_scalapack INTERFACE
268266
${MKL_SCALAPACK} ${MKL_BLACS} abacus::mkl MPI::MPI_CXX)
269267
endif()
270268
set(MKL_LIBRARIES abacus::mkl_scalapack)

source/CMakeLists.txt

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,21 @@ add_library(abacus::feature_libs ALIAS abacus_feature_libs)
136136
add_library(abacus_link_libs INTERFACE)
137137
add_library(abacus::link_libs ALIAS abacus_link_libs)
138138

139+
set_target_properties(abacus_linalg_libs PROPERTIES EXPORT_NAME linalg_libs)
140+
set_target_properties(abacus_feature_libs PROPERTIES EXPORT_NAME feature_libs)
141+
set_target_properties(abacus_link_libs PROPERTIES EXPORT_NAME link_libs)
142+
143+
if(ENABLE_MLALGO OR DEFINED Torch_DIR)
144+
# TorchConfig.cmake exposes its complete link closure through
145+
# TORCH_LIBRARIES rather than a stable namespaced target. Keep that
146+
# provider-specific representation behind an imported adapter so the
147+
# installed ABACUS package can recreate it after find_dependency(Torch).
148+
add_library(abacus::torch INTERFACE IMPORTED GLOBAL)
149+
target_link_libraries(abacus::torch INTERFACE ${TORCH_LIBRARIES})
150+
target_include_directories(abacus::torch INTERFACE ${TORCH_INCLUDE_DIRS})
151+
target_compile_options(abacus::torch INTERFACE ${ABACUS_TORCH_CXX_FLAGS})
152+
endif()
153+
139154
target_link_libraries(abacus_link_libs INTERFACE
140155
abacus::feature_libs
141156
abacus::linalg_libs)
@@ -211,7 +226,8 @@ if(NOT MSVC)
211226
endif()
212227

213228
target_link_libraries(abacus_linalg_libs INTERFACE ${_abacus_linalg_libs})
214-
target_include_directories(abacus_linalg_libs INTERFACE ${_abacus_linalg_include_dirs})
229+
target_include_directories(abacus_linalg_libs INTERFACE
230+
"$<BUILD_INTERFACE:${_abacus_linalg_include_dirs}>")
215231

216232
target_include_directories(abacus_compile_requirements INTERFACE
217233
${_abacus_linalg_include_dirs})
@@ -263,8 +279,7 @@ if(ENABLE_MLALGO)
263279
endif()
264280

265281
if(ENABLE_MLALGO OR DEFINED Torch_DIR)
266-
list(APPEND _abacus_feature_include_dirs ${TORCH_INCLUDE_DIRS})
267-
list(APPEND _abacus_feature_compile_options ${ABACUS_TORCH_CXX_FLAGS})
282+
list(APPEND _abacus_feature_libs abacus::torch)
268283
endif()
269284

270285
if(ENABLE_CNPY)
@@ -311,10 +326,13 @@ if(USE_DSP)
311326
endif()
312327

313328
if(USE_CUDA)
314-
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 12.9)
315-
list(APPEND _abacus_feature_libs cudart)
316-
else()
317-
list(APPEND _abacus_feature_libs cudart nvToolsExt)
329+
list(APPEND _abacus_feature_libs
330+
CUDA::cudart
331+
CUDA::cublas
332+
CUDA::cusolver
333+
CUDA::cufft)
334+
if(CUDAToolkit_VERSION VERSION_LESS 12.9)
335+
list(APPEND _abacus_feature_libs CUDA::nvToolsExt)
318336
endif()
319337
list(APPEND _abacus_feature_include_dirs ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
320338
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 13.0
@@ -372,12 +390,18 @@ foreach(_abacus_feature_target IN ITEMS
372390
DeePMD::deepmd_cc
373391
NEP::nep
374392
TensorFlow::tensorflow_cc
393+
abacus::torch
375394
ZLIB::ZLIB
376395
PEXSI::PEXSI
377396
NCCL::NCCL
378397
CAL::CAL
379398
cusolverMp::cusolverMp
380399
cublasMp::cublasMp
400+
CUDA::cudart
401+
CUDA::cublas
402+
CUDA::cusolver
403+
CUDA::cufft
404+
CUDA::nvToolsExt
381405
hip::host
382406
hip::device
383407
hip::hipfft
@@ -617,7 +641,10 @@ endif()
617641
add_library(device OBJECT ${device_srcs})
618642

619643
if(USE_CUDA)
620-
target_link_libraries(device PRIVATE cusolver cublas cufft)
644+
target_link_libraries(device PRIVATE
645+
CUDA::cusolver
646+
CUDA::cublas
647+
CUDA::cufft)
621648
elseif(USE_ROCM)
622649
target_link_libraries(device PRIVATE
623650
device_rocm
@@ -710,11 +737,6 @@ target_link_libraries(abacus PRIVATE
710737
"$<BUILD_INTERFACE:${_abacus_internal_targets}>"
711738
abacus::link_libs)
712739

713-
# Torch includes some LAPACK routines, but with floating-point exceptions.
714-
if(ENABLE_MLALGO OR DEFINED Torch_DIR)
715-
target_link_libraries(abacus PRIVATE
716-
"$<BUILD_INTERFACE:${TORCH_LIBRARIES}>")
717-
endif()
718740

719741
target_link_libraries(
720742
${ABACUS_BIN_NAME}

0 commit comments

Comments
 (0)