mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-15 21:17:34 +08:00
Auto-generate a list of kernel-side built-in modules(drivers)
Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae>
This commit is contained in:
@@ -269,6 +269,72 @@ endif()
|
||||
|
||||
add_custom_target(nuttx_builtin_list_target DEPENDS ${nuttx_builtin_list})
|
||||
|
||||
if (NOT CONFIG_BUILD_FLAT)
|
||||
|
||||
set(nuttx_kernel_builtin_list)
|
||||
|
||||
set(KERNEL_BUILTIN_DIR ${PX4_BINARY_DIR}/NuttX/kernel_builtin)
|
||||
|
||||
# force builtins regeneration and apps rebuild if nuttx or px4 configuration have changed
|
||||
add_custom_command(OUTPUT ${KERNEL_BUILTIN_DIR}/kernel_builtins_clean.stamp
|
||||
WORKING_DIRECTORY ${KERNEL_BUILTIN_DIR}
|
||||
COMMAND find . -name px4_\*.bdat -delete
|
||||
COMMAND find . -name px4_\*.pdat -delete
|
||||
COMMAND rm -f kernel_builtin_list.h
|
||||
COMMAND ${CMAKE_COMMAND} -E touch kernel_builtins_clean.stamp
|
||||
DEPENDS
|
||||
nuttx_context ${NUTTX_DIR}/include/nuttx/config.h ${NUTTX_DIR}/include/nuttx/version.h
|
||||
px4_config_file_target ${PX4_CONFIG_FILE}
|
||||
)
|
||||
|
||||
add_custom_target(kernel_builtins_clean_target DEPENDS ${KERNEL_BUILTIN_DIR}/kernel_builtins_clean.stamp)
|
||||
|
||||
foreach(module ${kernel_module_libraries})
|
||||
get_target_property(MAIN ${module} MAIN)
|
||||
get_target_property(STACK_MAIN ${module} STACK_MAIN)
|
||||
get_target_property(PRIORITY ${module} PRIORITY)
|
||||
|
||||
if(MAIN)
|
||||
add_custom_command(OUTPUT ${KERNEL_BUILTIN_DIR}/registry/px4_${MAIN}_kernel_main.bdat
|
||||
WORKING_DIRECTORY ${KERNEL_BUILTIN_DIR}
|
||||
COMMAND echo "{ \"${MAIN}\", ${PRIORITY}, ${STACK_MAIN}, ${MAIN}_main }," > registry/px4_${MAIN}_kernel_main.bdat
|
||||
COMMAND echo "{ \"${MAIN}\", ${PRIORITY}, ${STACK_MAIN}, launch_kmod_main }," > ${APPS_DIR}/builtin/registry/px4_${MAIN}_main.bdat
|
||||
COMMAND ${CMAKE_COMMAND} -E touch registry/.kernel_updated
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${APPS_DIR}/builtin/registry/.updated
|
||||
DEPENDS
|
||||
kernel_builtins_clean_target ${KERNEL_BUILTIN_DIR}/kernel_builtins_clean.stamp
|
||||
builtins_clean_target ${PX4_BINARY_DIR}/NuttX/builtins_clean.stamp
|
||||
nuttx_context ${NUTTX_DIR}/include/nuttx/config.h ${NUTTX_DIR}/include/nuttx/version.h
|
||||
VERBATIM
|
||||
)
|
||||
list(APPEND nuttx_kernel_builtin_list ${KERNEL_BUILTIN_DIR}/registry/px4_${MAIN}_kernel_main.bdat)
|
||||
|
||||
add_custom_command(OUTPUT ${KERNEL_BUILTIN_DIR}/registry/px4_${MAIN}_kernel_main.pdat
|
||||
WORKING_DIRECTORY ${KERNEL_BUILTIN_DIR}
|
||||
COMMAND echo "int ${MAIN}_main(int argc, char *argv[]);" > registry/px4_${MAIN}_kernel_main.pdat
|
||||
COMMAND ${CMAKE_COMMAND} -E touch registry/.kernel_updated
|
||||
DEPENDS
|
||||
kernel_builtins_clean_target
|
||||
nuttx_context ${NUTTX_DIR}/include/nuttx/config.h ${NUTTX_DIR}/include/nuttx/version.h
|
||||
VERBATIM
|
||||
)
|
||||
list(APPEND nuttx_kernel_builtin_list ${KERNEL_BUILTIN_DIR}/registry/px4_${MAIN}_kernel_main.pdat)
|
||||
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
add_custom_command(OUTPUT ${KERNEL_BUILTIN_DIR}/kernel_builtins.h ${KERNEL_BUILTIN_DIR}/kernel_builtin_prototypes.h
|
||||
WORKING_DIRECTORY ${KERNEL_BUILTIN_DIR}
|
||||
COMMAND cat registry/*.bdat > kernel_builtins.h
|
||||
COMMAND cat registry/*.pdat > kernel_builtin_prototypes.h
|
||||
DEPENDS ${nuttx_kernel_builtin_list}
|
||||
)
|
||||
|
||||
add_custom_target(nuttx_kernel_builtin_list_target DEPENDS ${KERNEL_BUILTIN_DIR}/kernel_builtins.h)
|
||||
|
||||
add_dependencies(nuttx_builtin_list_target kernel_builtins_clean_target)
|
||||
endif() # NOT CONFIG_BUILD_FLAT
|
||||
|
||||
# APPS
|
||||
|
||||
# libapps.a
|
||||
|
||||
Reference in New Issue
Block a user