From baace6537969adb27694095ac8556e4e1dadefd3 Mon Sep 17 00:00:00 2001 From: Matthias Grob Date: Fri, 21 Jun 2024 15:37:07 +0200 Subject: [PATCH] mavlink: with cmake policy CMP0118 verion 3.20 we can depend on the `mavlink_c` library instead of including its content in multiple places This works because the policy now allows to have the generated property available in other places than the library directory itself. Are we ready for cmake 3.20? Then we should increase the minimum version instead of just enabling the policy in a few files. --- src/modules/mavlink/CMakeLists.txt | 5 +++-- src/modules/mavlink/mavlink_bridge_header.h | 2 -- src/modules/mavlink/mavlink_tests/CMakeLists.txt | 6 +----- .../simulation/simulator_mavlink/CMakeLists.txt | 11 ++++------- 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/modules/mavlink/CMakeLists.txt b/src/modules/mavlink/CMakeLists.txt index 3038a0f705..68edd25f83 100644 --- a/src/modules/mavlink/CMakeLists.txt +++ b/src/modules/mavlink/CMakeLists.txt @@ -31,6 +31,9 @@ # ############################################################################ +# Make GENERATED property available outside of this directory e.g. for simulator_mavlink and mavlink_tests which depend on mavlink_c +cmake_policy(SET CMP0118 NEW) + set(MAVLINK_GIT_DIR "${CMAKE_CURRENT_LIST_DIR}/mavlink") set(MAVLINK_LIBRARY_DIR "${CMAKE_BINARY_DIR}/mavlink") file(RELATIVE_PATH MAVLINK_GIT_DIR_RELATIVE ${CMAKE_SOURCE_DIR} ${MAVLINK_GIT_DIR}) @@ -78,11 +81,9 @@ add_custom_command( COMMENT "Generating Mavlink ${CONFIG_MAVLINK_DIALECT}: ${MAVLINK_GIT_DIR_RELATIVE}/message_definitions/v1.0/${CONFIG_MAVLINK_DIALECT}.xml" ) -add_custom_target(mavlink_c_generate DEPENDS ${MAVLINK_LIBRARY_DIR}/${CONFIG_MAVLINK_DIALECT}/${CONFIG_MAVLINK_DIALECT}.h) set_source_files_properties(${MAVLINK_LIBRARY_DIR}/${CONFIG_MAVLINK_DIALECT}/${CONFIG_MAVLINK_DIALECT}.h PROPERTIES GENERATED true) - # mavlink header only library add_library(mavlink_c INTERFACE) target_compile_options(mavlink_c INTERFACE -Wno-address-of-packed-member -Wno-cast-align) diff --git a/src/modules/mavlink/mavlink_bridge_header.h b/src/modules/mavlink/mavlink_bridge_header.h index 3e2866ae6c..1b8a64c2c2 100644 --- a/src/modules/mavlink/mavlink_bridge_header.h +++ b/src/modules/mavlink/mavlink_bridge_header.h @@ -93,9 +93,7 @@ extern mavlink_status_t *mavlink_get_channel_status(uint8_t chan); extern mavlink_message_t *mavlink_get_channel_buffer(uint8_t chan); #include -#if !MAVLINK_FTP_UNIT_TEST #include -#endif __END_DECLS diff --git a/src/modules/mavlink/mavlink_tests/CMakeLists.txt b/src/modules/mavlink/mavlink_tests/CMakeLists.txt index a0c9481991..af4599c2a1 100644 --- a/src/modules/mavlink/mavlink_tests/CMakeLists.txt +++ b/src/modules/mavlink/mavlink_tests/CMakeLists.txt @@ -35,16 +35,12 @@ px4_add_module( MODULE modules__mavlink__mavlink_tests MAIN mavlink_tests STACK_MAIN 8192 - INCLUDES - ${MAVLINK_LIBRARY_DIR} - ${MAVLINK_LIBRARY_DIR}/${CONFIG_MAVLINK_DIALECT} COMPILE_FLAGS -DMAVLINK_FTP_UNIT_TEST #-DMAVLINK_FTP_DEBUG -DMavlinkStream=MavlinkStreamTest -DMavlinkFTP=MavlinkFTPTest -Wno-cast-align # TODO: fix and enable - -Wno-address-of-packed-member # TODO: fix in c_library_v2 -Wno-double-promotion # The fix has been proposed as PR upstream (2020-03-08) SRCS mavlink_tests.cpp @@ -52,5 +48,5 @@ px4_add_module( ../mavlink_stream.cpp ../mavlink_ftp.cpp DEPENDS - mavlink_c_generate + mavlink_c ) diff --git a/src/modules/simulation/simulator_mavlink/CMakeLists.txt b/src/modules/simulation/simulator_mavlink/CMakeLists.txt index fc4fa94aa4..6bf4ec8501 100644 --- a/src/modules/simulation/simulator_mavlink/CMakeLists.txt +++ b/src/modules/simulation/simulator_mavlink/CMakeLists.txt @@ -31,23 +31,20 @@ # ############################################################################ +# Make GENERATED property from mavlink_c available +cmake_policy(SET CMP0118 NEW) + px4_add_module( MODULE modules__simulation__simulator_mavlink MAIN simulator_mavlink COMPILE_FLAGS -Wno-double-promotion -Wno-cast-align - -Wno-address-of-packed-member # TODO: fix in c_library_v2 - INCLUDES - ${CMAKE_BINARY_DIR}/mavlink - ${CMAKE_BINARY_DIR}/mavlink/development - ${CMAKE_BINARY_DIR}/mavlink/common - ${CMAKE_BINARY_DIR}/mavlink/standard SRCS SimulatorMavlink.cpp SimulatorMavlink.hpp DEPENDS - mavlink_c_generate + mavlink_c conversion geo drivers_accelerometer