@@ -57,42 +57,56 @@ endmacro()
5757
5858macro (_ament_cmake_python_copy_or_symlink package_name)
5959 set (_sync_target "ament_cmake_python_sync_${package_name} " )
60- add_custom_target (${_sync_target} )
6160
61+ set (_dsts "" )
62+ set (_srcs "" )
6263 foreach (_dir IN LISTS _PACKAGE_DIRS)
6364 file (GLOB_RECURSE _dir_files RELATIVE "${_dir} " "${_dir} /*" )
6465 foreach (_rel IN LISTS _dir_files)
6566 set (_src "${_dir} /${_rel} " )
6667 set (_dst "${_build_dir} /${package_name} /${_rel} " )
6768
68- get_filename_component (_dst_parent "${_dst} " DIRECTORY )
69- file (MAKE_DIRECTORY "${_dst_parent} " )
70-
71- list (FIND _already_processed "${_dst} " _idx)
69+ list (FIND _dsts "${_dst} " _idx)
7270 if (NOT _idx EQUAL -1)
73- continue ()
71+ list (REMOVE_AT _dsts ${_idx} )
72+ list (REMOVE_AT _srcs ${_idx} )
7473 endif ()
75- list (APPEND _already_processed "${_dst} " )
74+ list (APPEND _dsts "${_dst} " )
75+ list (APPEND _srcs "${_src} " )
76+ endforeach ()
77+ endforeach ()
78+
79+ set (_sync_deps "" )
80+ list (LENGTH _dsts _len)
81+ if (_len GREATER 0)
82+ math (EXPR _last "${_len} - 1" )
83+ foreach (_file_idx RANGE 0 ${_last} )
84+ list (GET _dsts ${_file_idx} _dst)
85+ list (GET _srcs ${_file_idx} _src)
86+
87+ get_filename_component (_dst_parent "${_dst} " DIRECTORY )
88+ file (MAKE_DIRECTORY "${_dst_parent} " )
7689
7790 if (AMENT_CMAKE_SYMLINK_INSTALL)
7891 add_custom_command (
7992 OUTPUT "${_dst} "
8093 COMMAND ${CMAKE_COMMAND} -E create_symlink "${_src} " "${_dst} "
8194 DEPENDS "${_src} "
82- COMMENT "Symlinking ${_rel } "
95+ COMMENT "Symlinking ${_dst } "
8396 VERBATIM
8497 )
8598 else ()
8699 add_custom_command (
87100 OUTPUT "${_dst} "
88101 COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_src} " "${_dst} "
89102 DEPENDS "${_src} "
90- COMMENT "Copying ${_rel } "
103+ COMMENT "Copying ${_dst } "
91104 VERBATIM
92105 )
93106 endif ()
107+ list (APPEND _sync_deps "${_dst} " )
94108 endforeach ()
95- endforeach ()
109+ endif ()
96110
97111 if (_SETUP_CFG)
98112 set (_cfg_dst "${_build_dir} /setup.cfg" )
@@ -109,9 +123,11 @@ macro(_ament_cmake_python_copy_or_symlink package_name)
109123 COMMENT "Synchronising setup.cfg"
110124 VERBATIM
111125 )
112- add_custom_target (phony_${package_name} _cfg DEPENDS "${_cfg_dst} " )
113- add_dependencies (${_sync_target} phony_${package_name} _cfg)
126+ list (APPEND _sync_deps "${_cfg_dst} " )
114127 endif ()
128+
129+ add_custom_target (${_sync_target} DEPENDS ${_sync_deps} )
130+
115131endmacro ()
116132
117133macro (_ament_cmake_python_generate_egg package_name)
0 commit comments