@@ -175,132 +175,140 @@ function(modm_targets_create project_name)
175175%% if core.startswith("cortex-m" )
176176 add_custom_command (TARGET ${project_name}
177177 POST_BUILD
178- COMMAND cmake -E env PYTHONPATH=${PROJECT_SOURCE_DIR } /modm ${Python3_EXECUTABLE} -m modm_tools.size ${project_name} .elf \"{{ memories }}\")
178+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR } /modm ${Python3_EXECUTABLE} -m modm_tools.size ${project_name} .elf \"{{ memories }}\")
179179%% endif
180180
181- add_custom_target (size DEPENDS ${project_name} .elf )
182- add_custom_command (TARGET size
181+ add_custom_target (TARGET size ALL DEPENDS size.stamp )
182+ add_custom_command (OUTPUT size.stamp
183183 USES_TERMINAL
184- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.size ${PROJECT_BINARY_DIR} /${project_name} .elf \"{{ memories }}\"
185- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
184+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.size ${PROJECT_BINARY_DIR} /${project_name} .elf \"{{ memories }}\"
185+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
186186
187- add_custom_target (program DEPENDS ${project_name} .elf)
188- add_custom_command (TARGET program
187+
188+ add_custom_target (program DEPENDS program .done)
189+ add_custom_command (OUTPUT program .done
189190 USES_TERMINAL
190- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.openocd -f modm/openocd.cfg
191+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.openocd -f modm/openocd.cfg
191192 ${PROJECT_BINARY_DIR} /${project_name} .elf
192- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
193+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
194+
193195
194- add_custom_target (program -bmp DEPENDS ${project_name} .elf )
195- add_custom_command (TARGET program -bmp
196+ add_custom_target (program -bmp DEPENDS program -bmp.done )
197+ add_custom_command (OUTPUT program -bmp.done
196198 USES_TERMINAL
197- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.bmp -p ${MODM_BMP_PORT}
199+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.bmp -p ${MODM_BMP_PORT}
198200 ${PROJECT_BINARY_DIR} /${project_name} .elf
199- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
201+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
202+ DEPENDS ${PROJECT_BINARY_DIR} /${project_name} .elf)
200203
201- add_custom_target (program -jlink DEPENDS ${project_name} .elf )
202- add_custom_command (TARGET program -jlink
204+ add_custom_target (program -jlink DEPENDS program -jlink.done )
205+ add_custom_command (OUTPUT program -jlink.done
203206 USES_TERMINAL
204- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.jlink -device {{ jlink_partname }}
207+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.jlink -device {{ jlink_partname }}
205208 ${PROJECT_BINARY_DIR} /${project_name} .elf
206- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
209+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
210+ DEPENDS ${PROJECT_BINARY_DIR} /${project_name} .elf)
207211
208- add_custom_target (debug DEPENDS ${project_name} .elf )
209- add_custom_command (TARGET debug
212+ add_custom_target (debug DEPENDS debug.done )
213+ add_custom_command (OUTPUT debug.done
210214 USES_TERMINAL
211- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit -x modm/openocd_gdbinit
215+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit -x modm/openocd_gdbinit
212216 --elf ${PROJECT_BINARY_DIR} /${project_name} .elf --ui=${MODM_DBG_UI}
213217 openocd -f modm/openocd.cfg
214- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
218+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
219+ DEPENDS ${PROJECT_BINARY_DIR} /${project_name} .elf)
215220
216- add_custom_target (debug-bmp DEPENDS ${project_name} .elf )
217- add_custom_command (TARGET debug-bmp
221+ add_custom_target (debug-bmp DEPENDS debug-bmp.done )
222+ add_custom_command (OUTPUT debug-bmp.done
218223 USES_TERMINAL
219- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit -x modm/openocd_bmp
224+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit -x modm/openocd_bmp
220225 --elf ${PROJECT_BINARY_DIR} /${project_name} .elf --ui=${MODM_DBG_UI}
221226 bmp -p ${MODM_BMP_PORT}
222- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
227+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
228+ DEPENDS ${PROJECT_BINARY_DIR} /${project_name} .elf)
223229
224- add_custom_target (debug-jlink DEPENDS ${project_name} .elf )
225- add_custom_command (TARGET debug-jlink
230+ add_custom_target (debug-jlink DEPENDS debug-jlink.done )
231+ add_custom_command (OUTPUT debug-jlink.done
226232 USES_TERMINAL
227- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit -x modm/openocd_jlink
233+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit -x modm/openocd_jlink
228234 --elf ${PROJECT_BINARY_DIR} /${project_name} .elf --ui=${MODM_DBG_UI}
229235 jlink -device {{ jlink_partname }}
230- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
236+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
237+ DEPENDS ${PROJECT_BINARY_DIR} /${project_name} .elf)
231238
232- add_custom_target (debug-coredump DEPENDS ${project_name} .elf )
233- add_custom_command (TARGET debug-coredump
239+ add_custom_target (debug-coredump DEPENDS debug-coredump.done )
240+ add_custom_command (OUTPUT debug-coredump
234241 USES_TERMINAL
235- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
242+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
236243 --elf ${PROJECT_BINARY_DIR} /${project_name} .elf --ui=${MODM_DBG_UI}
237244 crashdebug
238- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} )
245+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
246+ DEPENDS ${PROJECT_BINARY_DIR} /${project_name} .elf)
239247
240- add_custom_target (coredump)
241- add_custom_command (TARGET coredump
248+ add_custom_target (coredump DEPENDS coredump.done )
249+ add_custom_command (OUTPUT coredump.done
242250 USES_TERMINAL
243- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
251+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
244252 -ex "modm_coredump" -ex "modm_build_id" -ex "quit"
245253 openocd -f modm/openocd.cfg
246- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
254+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
247255
248- add_custom_target (coredump-bmp)
249- add_custom_command (TARGET coredump-bmp
256+ add_custom_target (coredump-bmp DEPENDS coredump-bmp.done )
257+ add_custom_command (OUTPUT coredump-bmp.done
250258 USES_TERMINAL
251- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
259+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
252260 -ex "modm_coredump" -ex "modm_build_id" -ex "quit"
253261 bmp -p ${MODM_BMP_PORT}
254- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
262+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
255263
256- add_custom_target (coredump-jlink)
257- add_custom_command (TARGET coredump-jlink
264+ add_custom_target (coredump-jlink DEPENDS coredump-jlink.done )
265+ add_custom_command (OUTPUT coredump-jlink.done
258266 USES_TERMINAL
259- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
267+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.gdb -x modm/gdbinit
260268 -ex "modm_coredump" -ex "modm_build_id" -ex "quit"
261269 jlink -device {{ jlink_partname }}
262- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
270+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
263271
264- add_custom_target (reset)
265- add_custom_command (TARGET reset
272+ add_custom_target (reset DEPENDS reset.done )
273+ add_custom_command (OUTPUT reset.done
266274 USES_TERMINAL
267- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.openocd -f modm/openocd.cfg --reset
268- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
275+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.openocd -f modm/openocd.cfg --reset
276+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
269277
270- add_custom_target (reset-bmp)
271- add_custom_command (TARGET reset-bmp
278+ add_custom_target (reset-bmp DEPENDS reset-bmp.done )
279+ add_custom_command (OUTPUT reset-bmp.done
272280 USES_TERMINAL
273- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.bmp -p ${MODM_BMP_PORT} --reset
274- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
281+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.bmp -p ${MODM_BMP_PORT} --reset
282+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
275283
276- add_custom_target (reset-jlink)
277- add_custom_command (TARGET reset-jlink
284+ add_custom_target (reset-jlink DEPENDS reset-jlink.done )
285+ add_custom_command (OUTPUT reset-jlink.done
278286 USES_TERMINAL
279- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.jlink -device {{ jlink_partname }} --reset
280- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
287+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.jlink -device {{ jlink_partname }} --reset
288+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
281289
282- add_custom_target (log -itm)
283- add_custom_command (TARGET log -itm
290+ add_custom_target (log -itm DEPENDS log -itm.done )
291+ add_custom_command (OUTPUT log -itm.done
284292 USES_TERMINAL
285- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.itm openocd -f modm/openocd.cfg --fcpu ${MODM_ITM_FCPU}
286- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
293+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.itm openocd -f modm/openocd.cfg --fcpu ${MODM_ITM_FCPU}
294+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
287295
288- add_custom_target (log -itm-jlink)
289- add_custom_command (TARGET log -itm-jlink
296+ add_custom_target (log -itm-jlink DEPENDS log -itm-jlink.done )
297+ add_custom_command (OUTPUT log -itm-jlink.done
290298 USES_TERMINAL
291- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.itm jlink -device {{ jlink_partname }}
292- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
299+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.itm jlink -device {{ jlink_partname }}
300+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
293301
294- add_custom_target (log -rtt)
295- add_custom_command (TARGET log -rtt
302+ add_custom_target (log -rtt DEPENDS log -rtt.done )
303+ add_custom_command (OUTPUT log -rtt.done
296304 USES_TERMINAL
297- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.rtt --channel ${MODM_RTT_CHANNEL} openocd -f modm/openocd.cfg
298- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
305+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.rtt --channel ${MODM_RTT_CHANNEL} openocd -f modm/openocd.cfg
306+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
299307
300- add_custom_target (log -rtt-jlink)
301- add_custom_command (TARGET log -rtt-jlink
308+ add_custom_target (log -rtt-jlink DEPENDS log -rtt-jlink.done )
309+ add_custom_command (OUTPUT log -rtt-jlink.done
302310 USES_TERMINAL
303- COMMAND cmake -E env PYTHONPATH=modm ${Python3_EXECUTABLE} -m modm_tools.rtt --channel ${MODM_RTT_CHANNEL} jlink -device {{ jlink_partname }}
304- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR } )
311+ COMMAND cmake -E env PYTHONPATH=${CMAKE_CURRENT_SOURCE_DIR} / modm ${Python3_EXECUTABLE} -m modm_tools.rtt --channel ${MODM_RTT_CHANNEL} jlink -device {{ jlink_partname }}
312+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR } )
305313endfunction ()
306314
0 commit comments