cmake: support services that are not based on cmake executable targets

This commit is contained in:
2026-05-31 17:28:40 +01:00
parent 4b917550f4
commit 616ad0d0cc
5 changed files with 112 additions and 33 deletions
+29 -5
View File
@@ -115,19 +115,43 @@ function(bsp_add_service)
get_property(bsp_targets GLOBAL PROPERTY bsp_target_list)
get_property(cfg_file TARGET ${arg_NAME} PROPERTY service_cfg_path)
get_property(file_list TARGET ${arg_NAME} PROPERTY service_file_list)
get_property(target_type TARGET ${arg_NAME} PROPERTY TYPE)
list(LENGTH bsp_targets nr_bsp_targets)
list(LENGTH file_list nr_service_files)
if (${nr_bsp_targets} GREATER 0)
math(EXPR serialiser_index "${nr_bsp_targets}-1")
list(GET bsp_targets ${serialiser_index} serialiser)
endif ()
add_custom_target(${bsp_target_name}
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
add-binary ${bsp_manifest} ${target_name}
${arg_BIN_DIR} $<TARGET_FILE:${target_name}>
set(commands
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
add-binary ${bsp_manifest} ${target_name}-cfg
${arg_SVC_DIR} ${cfg_file}
${arg_SVC_DIR} ${cfg_file})
if (target_type STREQUAL "EXECUTABLE")
set(commands ${commands}
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
add-binary ${bsp_manifest} ${target_name}
${arg_BIN_DIR} $<TARGET_FILE:${target_name}>)
endif ()
if (nr_service_files GREATER 0)
math(EXPR nr_service_files "${nr_service_files}-1")
foreach (i RANGE 0 ${nr_service_files} 2)
math(EXPR i2 "${i}+1")
list(GET file_list ${i} src_file)
list(GET file_list ${i2} dest_dir)
set(commands ${commands}
COMMAND ${Python_EXECUTABLE} ${bsp_tool}
add-binary ${bsp_manifest} ${target_name}-${i}
${dest_dir} ${src_file})
endforeach (i)
endif ()
add_custom_target(${bsp_target_name}
${commands}
COMMENT "Preparing bsp component: ${target_name}"
DEPENDS ${target_name} ${serialiser})