diff --git a/CMakeLists.txt b/CMakeLists.txt index f249164aa63..31e82aeb2ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -360,6 +360,11 @@ if(${PX4_PLATFORM} STREQUAL "posix") if (NOT CMAKE_INSTALL_PREFIX) set(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "Install path prefix" FORCE) endif() + + # mavsdk integration tests — defined as an ExternalProject_Add target; + # EXCLUDE_FROM_ALL, so only built when explicitly requested + # (e.g. `make mavsdk_tests` or `make tests_integration`). + include(mavsdk_tests) endif() include(ccache) diff --git a/cmake/mavsdk_tests.cmake b/cmake/mavsdk_tests.cmake new file mode 100644 index 00000000000..ad619e740f5 --- /dev/null +++ b/cmake/mavsdk_tests.cmake @@ -0,0 +1,49 @@ +############################################################################ +# +# Copyright (c) 2026 PX4 Development Team. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name PX4 nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +# mavsdk_tests is a black-box MAVLink integration-test driver that talks to a +# running PX4 over UDP. It does not depend on any specific simulator backend +# (sitl_gazebo-classic, gz, sih, jmavsim, ...) — it just needs a PX4 binary +# to be running. Defined here at the top level rather than under any sitl +# backend file so the dependency graph is honest. +include(ExternalProject) +ExternalProject_Add(mavsdk_tests + SOURCE_DIR ${PX4_SOURCE_DIR}/test/mavsdk_tests + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} + BINARY_DIR ${PX4_BINARY_DIR}/mavsdk_tests + INSTALL_COMMAND "" + USES_TERMINAL_CONFIGURE true + USES_TERMINAL_BUILD true + EXCLUDE_FROM_ALL true + BUILD_ALWAYS 1 +) diff --git a/src/modules/simulation/simulator_mavlink/sitl_targets_gazebo-classic.cmake b/src/modules/simulation/simulator_mavlink/sitl_targets_gazebo-classic.cmake index 250ce10f3a0..82a2135dce0 100644 --- a/src/modules/simulation/simulator_mavlink/sitl_targets_gazebo-classic.cmake +++ b/src/modules/simulation/simulator_mavlink/sitl_targets_gazebo-classic.cmake @@ -247,16 +247,3 @@ if(gazebo_FOUND) add_custom_target(gazebo-classic DEPENDS gazebo-classic_iris) # alias add_custom_target(gazebo DEPENDS gazebo-classic_iris) # alias endif() - -# mavsdk tests DO NOT depend on sitl_gazebo -include(ExternalProject) -ExternalProject_Add(mavsdk_tests - SOURCE_DIR ${PX4_SOURCE_DIR}/test/mavsdk_tests - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} - BINARY_DIR ${PX4_BINARY_DIR}/mavsdk_tests - INSTALL_COMMAND "" - USES_TERMINAL_CONFIGURE true - USES_TERMINAL_BUILD true - EXCLUDE_FROM_ALL true - BUILD_ALWAYS 1 -)