mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-01 15:41:36 +08:00
cmake NuttX improve builtin generation dependencies
This commit is contained in:
@@ -115,34 +115,45 @@ add_library(nuttx_build INTERFACE)
|
|||||||
add_dependencies(nuttx_build nuttx_context)
|
add_dependencies(nuttx_build nuttx_context)
|
||||||
|
|
||||||
# builtins
|
# builtins
|
||||||
add_custom_target(nuttx_builtins)
|
set(nuttx_builtin_list)
|
||||||
if (CONFIG_NSH_LIBRARY)
|
if (CONFIG_NSH_LIBRARY)
|
||||||
# add additional commands to nuttx builtins
|
# force builtins regeneration and apps rebuild if nuttx or px4 configuration have changed
|
||||||
set(builtin_registry ${APPS_DIR}/builtin/registry)
|
add_custom_command(OUTPUT builtins_clean.stamp
|
||||||
|
COMMAND find ${APPS_DIR}/builtin/registry -name \*.bdat -delete
|
||||||
|
COMMAND find ${APPS_DIR}/builtin/registry -name \*.pdat -delete
|
||||||
|
COMMAND rm -f ${APPS_DIR}/builtin/builtin_list.h
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E touch builtins_clean.stamp
|
||||||
|
DEPENDS
|
||||||
|
nuttx_configure
|
||||||
|
nuttx_context
|
||||||
|
${PX4_SOURCE_DIR}/cmake/configs/${CONFIG}.cmake
|
||||||
|
)
|
||||||
|
|
||||||
foreach(module ${module_libraries})
|
foreach(module ${module_libraries})
|
||||||
get_target_property(MAIN ${module} MAIN)
|
get_target_property(MAIN ${module} MAIN)
|
||||||
get_target_property(STACK_MAIN ${module} STACK_MAIN)
|
get_target_property(STACK_MAIN ${module} STACK_MAIN)
|
||||||
get_target_property(PRIORITY ${module} PRIORITY)
|
get_target_property(PRIORITY ${module} PRIORITY)
|
||||||
|
|
||||||
if(MAIN)
|
if(MAIN)
|
||||||
add_custom_command(OUTPUT ${builtin_registry}/${MAIN}_main.bdat
|
add_custom_command(OUTPUT ${APPS_DIR}/builtin/registry/${MAIN}_main.bdat
|
||||||
COMMAND echo "{ \"${MAIN}\", ${PRIORITY}, ${STACK_MAIN}, ${MAIN}_main }," > ${builtin_registry}/${MAIN}_main.bdat
|
COMMAND echo "{ \"${MAIN}\", ${PRIORITY}, ${STACK_MAIN}, ${MAIN}_main }," > ${APPS_DIR}/builtin/registry/${MAIN}_main.bdat
|
||||||
DEPENDS nuttx_context
|
COMMAND ${CMAKE_COMMAND} -E touch ${APPS_DIR}/builtin/registry/.updated
|
||||||
|
DEPENDS nuttx_context builtins_clean.stamp
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
list(APPEND nuttx_builtin_list ${APPS_DIR}/builtin/registry/${MAIN}_main.bdat)
|
||||||
|
|
||||||
add_custom_command(OUTPUT ${builtin_registry}/${MAIN}_main.pdat
|
add_custom_command(OUTPUT ${APPS_DIR}/builtin/registry/${MAIN}_main.pdat
|
||||||
COMMAND echo "int ${MAIN}_main(int argc, char *argv[]);" > ${builtin_registry}/${MAIN}_main.pdat
|
COMMAND echo "int ${MAIN}_main(int argc, char *argv[]);" > ${APPS_DIR}/builtin/registry/${MAIN}_main.pdat
|
||||||
DEPENDS nuttx_context
|
COMMAND ${CMAKE_COMMAND} -E touch ${APPS_DIR}/builtin/registry/.updated
|
||||||
|
DEPENDS nuttx_context builtins_clean.stamp
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
list(APPEND nuttx_builtin_list ${APPS_DIR}/builtin/registry/${MAIN}_main.pdat)
|
||||||
|
|
||||||
add_custom_target(nuttx_builtins_${MAIN} DEPENDS ${builtin_registry}/${MAIN}_main.bdat ${builtin_registry}/${MAIN}_main.pdat)
|
|
||||||
add_dependencies(nuttx_builtins nuttx_builtins_${MAIN})
|
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
add_dependencies(nuttx_build nuttx_builtins)
|
|
||||||
|
|
||||||
# APPS
|
# APPS
|
||||||
|
|
||||||
@@ -150,7 +161,7 @@ add_dependencies(nuttx_build nuttx_builtins)
|
|||||||
add_custom_command(OUTPUT ${APPS_DIR}/libapps.a ${APPS_DIR}/platform/.built
|
add_custom_command(OUTPUT ${APPS_DIR}/libapps.a ${APPS_DIR}/platform/.built
|
||||||
COMMAND find ${APPS_DIR} -name \*.o -delete
|
COMMAND find ${APPS_DIR} -name \*.o -delete
|
||||||
COMMAND make ${nuttx_build_options} --no-print-directory -C ../apps TOPDIR="${NUTTX_DIR}" libapps.a ${nuttx_build_output}
|
COMMAND make ${nuttx_build_options} --no-print-directory -C ../apps TOPDIR="${NUTTX_DIR}" libapps.a ${nuttx_build_output}
|
||||||
DEPENDS nuttx_context nuttx_builtins
|
DEPENDS nuttx_context ${nuttx_builtin_list}
|
||||||
WORKING_DIRECTORY ${NUTTX_DIR}
|
WORKING_DIRECTORY ${NUTTX_DIR}
|
||||||
${nuttx_build_uses_terminal}
|
${nuttx_build_uses_terminal}
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user