@@ -12,7 +12,7 @@ function(_ament_cmake_python_install_package_impl package_name)
1212 endforeach ()
1313
1414 _ament_cmake_python_prepare_build(${package_name} )
15- _ament_cmake_python_copy_or_symlink (${package_name} )
15+ _ament_cmake_python_copy_build_files (${package_name} )
1616
1717 # Technically, we should call find_package(Python3) first to ensure that Python3::Interpreter
1818 # is available. But we skip this here because this macro requires ament_cmake, and ament_cmake
@@ -55,79 +55,44 @@ setup(
5555
5656endmacro ()
5757
58- macro (_ament_cmake_python_copy_or_symlink package_name)
58+ macro (_ament_cmake_python_copy_build_files package_name)
5959 set (_sync_target "ament_cmake_python_sync_${package_name} " )
60+ set (_stage_dir "${_build_dir} /${package_name} " )
61+ set (_stamp "${_stage_dir} /.sync_stamp" )
62+
63+ set (_cmds "" )
64+
65+ list (APPEND _cmds
66+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${_stage_dir} " )
6067
61- set (_dsts "" )
62- set (_srcs "" )
6368 foreach (_dir IN LISTS _PACKAGE_DIRS)
64- file (GLOB_RECURSE _dir_files CONFIGURE_DEPENDS RELATIVE "${_dir} " "${_dir} /*" )
65- foreach (_rel IN LISTS _dir_files)
66- set (_src "${_dir} /${_rel} " )
67- set (_dst "${_build_dir} /${package_name} /${_rel} " )
68-
69- list (FIND _dsts "${_dst} " _idx)
70- if (NOT _idx EQUAL -1)
71- list (REMOVE_AT _dsts ${_idx} )
72- list (REMOVE_AT _srcs ${_idx} )
73- endif ()
74- list (APPEND _dsts "${_dst} " )
75- list (APPEND _srcs "${_src} " )
76- endforeach ()
69+ list (APPEND _cmds
70+ COMMAND ${CMAKE_COMMAND} -E copy_directory
71+ "${_dir} " "${_stage_dir} " )
7772 endforeach ()
7873
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} " )
89-
90- if (AMENT_CMAKE_SYMLINK_INSTALL)
91- add_custom_command (
92- OUTPUT "${_dst} "
93- COMMAND ${CMAKE_COMMAND} -E create_symlink "${_src} " "${_dst} "
94- DEPENDS "${_src} "
95- COMMENT "Symlinking ${_dst} "
96- VERBATIM
97- )
98- else ()
99- add_custom_command (
100- OUTPUT "${_dst} "
101- COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_src} " "${_dst} "
102- DEPENDS "${_src} "
103- COMMENT "Copying ${_dst} "
104- VERBATIM
105- )
106- endif ()
107- list (APPEND _sync_deps "${_dst} " )
108- endforeach ()
109- endif ()
110-
11174 if (_SETUP_CFG)
112- set (_cfg_dst "${_build_dir} /setup.cfg" )
113- if (AMENT_CMAKE_SYMLINK_INSTALL)
114- set (_copy_cmd ${CMAKE_COMMAND} -E create_symlink "${_SETUP_CFG} " "${_cfg_dst} " )
115- else ()
116- set (_copy_cmd ${CMAKE_COMMAND} -E copy_if_different "${_SETUP_CFG} " "${_cfg_dst} " )
117- endif ()
118-
119- add_custom_command (
120- OUTPUT "${_cfg_dst} "
121- COMMAND ${_copy_cmd}
122- DEPENDS "${_SETUP_CFG} "
123- COMMENT "Synchronising setup.cfg"
124- VERBATIM
125- )
126- list (APPEND _sync_deps "${_cfg_dst} " )
75+ list (APPEND _cmds
76+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
77+ "${_SETUP_CFG} " "${_build_dir} /setup.cfg" )
12778 endif ()
12879
129- add_custom_target (${_sync_target} DEPENDS ${_sync_deps} )
80+ foreach (_dir IN LISTS _PACKAGE_DIRS)
81+ list (APPEND _cmds
82+ COMMAND ${CMAKE_COMMAND} -E touch "${_dir} " )
83+ endforeach ()
84+
85+ list (APPEND _cmds
86+ COMMAND ${CMAKE_COMMAND} -E touch "${_stamp} " )
87+
88+ add_custom_command (
89+ OUTPUT "${_stamp} "
90+ ${_cmds}
91+ DEPENDS ${_PACKAGE_DIRS} ${_SETUP_CFG}
92+ COMMENT "Synchronising sources for ${package_name} (copy_directory)"
93+ VERBATIM )
13094
95+ add_custom_target (${_sync_target} DEPENDS "${_stamp} " )
13196endmacro ()
13297
13398macro (_ament_cmake_python_generate_egg package_name)
0 commit comments