diff --git a/cmake/CudaRdcUtils.cmake b/cmake/CudaRdcUtils.cmake index 3e8819ea46..61da4a03f6 100644 --- a/cmake/CudaRdcUtils.cmake +++ b/cmake/CudaRdcUtils.cmake @@ -925,25 +925,31 @@ function(cuda_rdc_cuda_gather_dependencies outlist target) endif() cuda_rdc_strip_alias(target ${target}) get_target_property(_target_type ${target} TYPE) + set(_deplist) if(NOT _target_type STREQUAL "INTERFACE_LIBRARY") get_target_property(_target_link_libraries ${target} LINK_LIBRARIES) if(_target_link_libraries) foreach(_lib ${_target_link_libraries}) cuda_rdc_strip_alias(_lib ${_lib}) + set(_libmid) if(TARGET ${_lib}) cuda_rdc_get_library_middle_target(_libmid ${_lib}) endif() if(TARGET ${_libmid}) - list(APPEND ${outlist} ${_libmid}) + list(APPEND _deplist ${_libmid}) endif() # and recurse + set(_midlist) + set(_before ${_midlist}) cuda_rdc_cuda_gather_dependencies(_midlist ${_lib}) - list(APPEND ${outlist} ${_midlist}) + list(APPEND _deplist ${_midlist}) endforeach() endif() endif() + list(REMOVE_DUPLICATES _deplist) + list(APPEND ${outlist} ${_deplist}) list(REMOVE_DUPLICATES ${outlist}) - set_target_properties(${target} PROPERTIES CUDA_RDC_CACHED_LIB_DEPENDENCIES "${${outlist}}") + set_target_properties(${target} PROPERTIES CUDA_RDC_CACHED_LIB_DEPENDENCIES "${_deplist}") set(${outlist} ${${outlist}} PARENT_SCOPE) endfunction()