mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-06-01 02:55:07 +08:00
voxl2-slpi: generate MAVLink headers locally instead of cross-build dependency
The SLPI drivers dsp_hitl and mavlink_rc_in hardcoded an include path into the voxl2-default build output for MAVLink headers. This created an undeclared cross-target dependency that required voxl2-default to be built first. Generate the MAVLink common dialect headers directly during the SLPI build using mavgen.py, outputting to the SLPI build's own directory. An INTERFACE library (mavlink_common_headers) propagates the include paths and warning suppression flags to both drivers. Signed-off-by: Ramon Roche <mrpollo@gmail.com>
This commit is contained in:
@@ -43,6 +43,37 @@ add_library(drivers_board
|
|||||||
spi.cpp
|
spi.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Generate MAVLink common headers for SLPI drivers (dsp_hitl, mavlink_rc_in)
|
||||||
|
# Replicates the generation from src/modules/mavlink/CMakeLists.txt so the
|
||||||
|
# SLPI build is self-contained and does not depend on voxl2-default.
|
||||||
|
set(MAVLINK_GIT_DIR "${PX4_SOURCE_DIR}/src/modules/mavlink/mavlink")
|
||||||
|
set(MAVLINK_LIBRARY_DIR "${CMAKE_BINARY_DIR}/mavlink")
|
||||||
|
|
||||||
|
px4_add_git_submodule(TARGET git_mavlink_v2 PATH "${MAVLINK_GIT_DIR}")
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${MAVLINK_LIBRARY_DIR}/common/common.h
|
||||||
|
COMMAND ${PYTHON_EXECUTABLE} ${MAVLINK_GIT_DIR}/pymavlink/tools/mavgen.py
|
||||||
|
--lang C --wire-protocol 2.0
|
||||||
|
--output ${MAVLINK_LIBRARY_DIR}
|
||||||
|
${MAVLINK_GIT_DIR}/message_definitions/v1.0/common.xml
|
||||||
|
> ${CMAKE_BINARY_DIR}/mavgen_common.log
|
||||||
|
DEPENDS
|
||||||
|
git_mavlink_v2
|
||||||
|
${MAVLINK_GIT_DIR}/pymavlink/tools/mavgen.py
|
||||||
|
${MAVLINK_GIT_DIR}/message_definitions/v1.0/common.xml
|
||||||
|
COMMENT "Generating MAVLink common headers for SLPI"
|
||||||
|
)
|
||||||
|
add_custom_target(mavlink_common_generate DEPENDS ${MAVLINK_LIBRARY_DIR}/common/common.h)
|
||||||
|
|
||||||
|
add_library(mavlink_common_headers INTERFACE)
|
||||||
|
add_dependencies(mavlink_common_headers mavlink_common_generate)
|
||||||
|
target_compile_options(mavlink_common_headers INTERFACE -Wno-address-of-packed-member -Wno-cast-align)
|
||||||
|
target_include_directories(mavlink_common_headers INTERFACE
|
||||||
|
${MAVLINK_LIBRARY_DIR}
|
||||||
|
${MAVLINK_LIBRARY_DIR}/common
|
||||||
|
)
|
||||||
|
|
||||||
# Add custom drivers for SLPI
|
# Add custom drivers for SLPI
|
||||||
add_subdirectory(${PX4_BOARD_DIR}/src/drivers/rc_controller)
|
add_subdirectory(${PX4_BOARD_DIR}/src/drivers/rc_controller)
|
||||||
add_subdirectory(${PX4_BOARD_DIR}/src/drivers/mavlink_rc_in)
|
add_subdirectory(${PX4_BOARD_DIR}/src/drivers/mavlink_rc_in)
|
||||||
|
|||||||
@@ -31,17 +31,15 @@
|
|||||||
#
|
#
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
message(STATUS "Mavlink include directory: ${PX4_SOURCE_DIR}/../build/modalai_voxl2_default/mavlink/common")
|
|
||||||
|
|
||||||
px4_add_module(
|
px4_add_module(
|
||||||
MODULE drivers__modalai__dsp_hitl
|
MODULE drivers__modalai__dsp_hitl
|
||||||
MAIN dsp_hitl
|
MAIN dsp_hitl
|
||||||
INCLUDES
|
INCLUDES
|
||||||
${PX4_SOURCE_DIR}/src/drivers/dsp_hitl
|
${PX4_SOURCE_DIR}/src/drivers/dsp_hitl
|
||||||
${PX4_SOURCE_DIR}/build/modalai_voxl2_default/mavlink/common
|
|
||||||
SRCS
|
SRCS
|
||||||
dsp_hitl.cpp
|
dsp_hitl.cpp
|
||||||
DEPENDS
|
DEPENDS
|
||||||
|
mavlink_common_headers
|
||||||
px4_work_queue
|
px4_work_queue
|
||||||
drivers_accelerometer
|
drivers_accelerometer
|
||||||
drivers_gyroscope
|
drivers_gyroscope
|
||||||
|
|||||||
@@ -31,19 +31,17 @@
|
|||||||
#
|
#
|
||||||
############################################################################
|
############################################################################
|
||||||
|
|
||||||
message(STATUS "Mavlink include directory: ${PX4_SOURCE_DIR}/../build/modalai_voxl2_default/mavlink/standard")
|
|
||||||
|
|
||||||
px4_add_module(
|
px4_add_module(
|
||||||
MODULE drivers__modalai__mavlink_rc_in
|
MODULE drivers__modalai__mavlink_rc_in
|
||||||
MAIN mavlink_rc_in
|
MAIN mavlink_rc_in
|
||||||
COMPILE_FLAGS
|
COMPILE_FLAGS
|
||||||
-Wno-cast-align # TODO: fix and enable
|
-Wno-cast-align
|
||||||
-Wno-address-of-packed-member # TODO: fix in c_library_v2
|
-Wno-address-of-packed-member
|
||||||
INCLUDES
|
INCLUDES
|
||||||
${PX4_SOURCE_DIR}/src/drivers/rc_input
|
${PX4_SOURCE_DIR}/src/drivers/rc_input
|
||||||
${PX4_SOURCE_DIR}/build/modalai_voxl2_default/mavlink/common
|
|
||||||
SRCS
|
SRCS
|
||||||
mavlink_rc_in.cpp
|
mavlink_rc_in.cpp
|
||||||
DEPENDS
|
DEPENDS
|
||||||
|
mavlink_common_headers
|
||||||
px4_work_queue
|
px4_work_queue
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user