Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/Comms/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,35 @@ endif()
# ----------------------------------------------------------------------------
add_subdirectory(Bluetooth)

# ----------------------------------------------------------------------------
# ZeroConf/mDNS Service Discovery
# ----------------------------------------------------------------------------
if(QGC_ZEROCONF_ENABLED)
if(NOT USE_SYSTEM_QMDNSENGINE)
CPMAddPackage(
NAME qmdnsengine
GITHUB_REPOSITORY nitroshare/qmdnsengine
GIT_TAG master
OPTIONS
"BUILD_DOC OFF"
"BUILD_EXAMPLES OFF"
"BUILD_TESTS OFF"
)

if(TARGET qmdnsengine)
qgc_disable_dependency_warnings(qmdnsengine)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE qmdnsengine)
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE QGC_ZEROCONF_ENABLED)
else()
message(WARNING "QGC: qmdnsengine target not created, ZeroConf will be disabled")
endif()
else()
find_package(qmdnsengine REQUIRED)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE qmdnsengine)
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE QGC_ZEROCONF_ENABLED)
endif()
endif()

# ============================================================================
# Communication Link Subdirectories
# ============================================================================
Expand Down
5 changes: 5 additions & 0 deletions src/FirmwarePlugin/APM/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,17 @@ qt_add_resources(${CMAKE_PROJECT_NAME} firmaware_plugin_apm_resource

#===========================================================================#

if(NOT USE_SYSTEM_PARAMETERS)
CPMAddPackage(
NAME ArduPilotParams
GITHUB_REPOSITORY ArduPilot/ParameterRepository
GIT_TAG 037ff6bcfc080608544a4526f2c22406f2cce60f
)

else()
set(ArduPilotParams_SOURCE_DIR /usr/share/ParameterRepository)
endif()

# Dynamically discover all parameter definition files.
# Directory layout: {Vehicle}-{Major}.{Minor}/apm.pdef.json
# Resource alias: FirmwarePlugin/APM/APMParameterFactMetaData.{Vehicle}.{Major}.{Minor}.json
Expand Down
4 changes: 4 additions & 0 deletions src/GPS/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,16 @@ add_subdirectory(NTRIP)
# PX4 GPS Drivers Integration
# ============================================================================

if(NOT USE_SYSTEM_PX4-GPSDRIVERS)
CPMAddPackage(
NAME px4-gpsdrivers
GITHUB_REPOSITORY PX4/PX4-GPSDrivers
GIT_TAG caf5158061bd10e79c9f042abb62c86bc6f3e7a7
SOURCE_SUBDIR src
)
else()
set(px4-gpsdrivers_SOURCE_DIR /usr/src/PX4-GPSDrivers)
endif()

# NOTE: Using file(GLOB) for external dependency sources
# CONFIGURE_DEPENDS ensures CMake re-runs if files are added/removed
Expand Down
17 changes: 17 additions & 0 deletions src/MAVLink/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_

message(STATUS "QGC: Building MAVLink")

if(NOT USE_SYSTEM_MAVLINK)
CPMAddPackage(
NAME mavlink
GIT_REPOSITORY ${QGC_MAVLINK_GIT_REPO}
Expand All @@ -43,6 +44,22 @@ CPMAddPackage(
"MAVLINK_VERSION ${QGC_MAVLINK_VERSION}"
)

else()
set(mavlink_SOURCE_DIR /usr/include/c_library_v2)
file(GLOB MAVLINK_SOURCES1 ${mavlink_SOURCE_DIR}/*)
file(GLOB MAVLINK_SOURCES2 ${mavlink_SOURCE_DIR}/all/*)
file(GLOB MAVLINK_SOURCES3 ${mavlink_SOURCE_DIR}/common/*)
file(GLOB MAVLINK_SOURCES4 ${mavlink_SOURCE_DIR}/development/*)

target_sources(${CMAKE_PROJECT_NAME}
PRIVATE
${MAVLINK_SOURCES1}
${MAVLINK_SOURCES2}
${MAVLINK_SOURCES3}
${MAVLINK_SOURCES4}
)
endif()

if(mavlink_ADDED)
add_dependencies(${CMAKE_PROJECT_NAME} mavlink)
target_include_directories(${CMAKE_PROJECT_NAME}
Expand Down
27 changes: 27 additions & 0 deletions src/MAVLink/LibEvents/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_
# LibEvents Library Integration
# ============================================================================

if(NOT USE_SYSTEM_LIBEVENTS)
CPMAddPackage(
NAME libevents
GITHUB_REPOSITORY mavlink/libevents
Expand All @@ -30,3 +31,29 @@ CPMAddPackage(
# warnings when its headers are compiled as part of QGC source code.
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE libevents)
target_include_directories(${CMAKE_PROJECT_NAME} SYSTEM PRIVATE ${libevents_SOURCE_DIR}/libs/cpp)

else()
find_package(libevents REQUIRED)
set(LIBEVENTS_INCLUDE_DIRS /usr/include/libevents)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${LIBEVENTS_INCLUDE_DIRS})
find_library(EVENTS_HEALTH_LIB events_health_and_arming_checks)
find_library(EVENTS_PARSER_LIB events_parser)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${EVENTS_HEALTH_LIB})
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${EVENTS_PARSER_LIB})
find_package(PkgConfig)

if(TARGET libevents)
if(TARGET events_health_and_arming_checks)
if(TARGET events_parser)
target_link_libraries(events_health_and_arming_checks PRIVATE events_parser)
message(STATUS "Fixed: events_health_and_arming_checks -> events_parser")
endif()
endif()

if(TARGET events::health_and_arming_checks AND TARGET events::parser)
target_link_libraries(events::health_and_arming_checks PRIVATE events::parser)
message(STATUS "Fixed: events::health_and_arming_checks -> events::parser")
endif()
endif()
endif()

47 changes: 47 additions & 0 deletions src/Utilities/Compression/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ if(WIN32)
)
endif()

if(NOT USE_SYSTEM_ZLIB)
CPMAddPackage(
NAME zlib
GITHUB_REPOSITORY madler/zlib
Expand Down Expand Up @@ -73,10 +74,15 @@ if(NOT TARGET ZLIB::ZLIB)
add_library(ZLIB::ZLIB ALIAS zlibstatic)
endif()

else()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE z)
endif()

# ============================================================================
# XZ (LZMA) Integration - liblzma from xz-utils
# ============================================================================

if(NOT USE_SYSTEM_XZ-EMBEDDED)
CPMAddPackage(
NAME xz
VERSION 5.8.2
Expand Down Expand Up @@ -127,10 +133,36 @@ else()
message(FATAL_ERROR "liblzma target not found")
endif()

else()

add_library(xz STATIC ${LIB_PREFIX}/libxz.a)
set_target_properties(xz PROPERTIES
IMPORTED_LOCATION "${LIB_PREFIX}/libxz.a"
INTERFACE_INCLUDE_DIRECTORIES "/usr/include/xz-embedded"
)

target_compile_definitions(xz
PUBLIC
XZ_USE_CRC64
XZ_USE_CRC32
XZ_DEC_ANY_CHECK
)

target_include_directories(xz INTERFACE /usr/include/xz-embedded)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE xz)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE "${LIB_PREFIX}/libxz.a")
endif()

# ============================================================================
# Zstandard (ZSTD) Integration
# ============================================================================

# Suppress CMake warning about MSVC not being an ASM assembler (CMP0194)
if(POLICY CMP0194)
set(CMAKE_POLICY_DEFAULT_CMP0194 NEW CACHE STRING "" FORCE)
endif()

if(NOT USE_SYSTEM_ZSTD)
CPMAddPackage(
NAME zstd
VERSION 1.5.7
Expand Down Expand Up @@ -174,12 +206,16 @@ if(TARGET libzstd_static)
else()
message(FATAL_ERROR "libzstd_static target not found")
endif()
else()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE zstd)
endif()

# ============================================================================
# LZ4 Integration (Fast compression) - Optional
# ============================================================================

if(QGC_ENABLE_LZ4)
if(NOT USE_SYSTEM_LZ4)
CPMAddPackage(
NAME lz4
VERSION 1.10.0
Expand Down Expand Up @@ -207,6 +243,9 @@ if(QGC_ENABLE_LZ4)
else()
message(FATAL_ERROR "lz4_static target not found")
endif()
else()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE lz4)
endif()
endif()

# ============================================================================
Expand All @@ -219,6 +258,7 @@ endif()
# - TODO: Update to tagged release when bzip2 publishes one with CMake support

if(QGC_ENABLE_BZIP2)
if(NOT USE_SYSTEM_BZIP2)
CPMAddPackage(
NAME bzip2
VERSION 1.0.8
Expand Down Expand Up @@ -248,6 +288,9 @@ if(QGC_ENABLE_BZIP2)
else()
message(FATAL_ERROR "bz2_static target not found")
endif()
else()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE bzip2)
endif()
endif()

# ============================================================================
Expand All @@ -267,6 +310,7 @@ else()
set(_LIBARCHIVE_LZ4 "OFF")
endif()

if(NOT USE_SYSTEM_LIBARCHIVE)
CPMAddPackage(
NAME libarchive
VERSION 3.8.6
Expand Down Expand Up @@ -325,4 +369,7 @@ else()
message(FATAL_ERROR "libarchive target not found")
endif()

else()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE libarchive)
endif()

8 changes: 8 additions & 0 deletions src/Utilities/Geo/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ qt_add_resources(${CMAKE_PROJECT_NAME} "kml_schema"
# GeographicLib Integration
# ============================================================================

if(NOT USE_SYSTEM_GEOGRAPHICLIB)
CPMAddPackage(
NAME geographiclib
VERSION 2.7
Expand Down Expand Up @@ -62,11 +63,16 @@ target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE GeographicLib::GeographicLib
if(geographiclib_ADDED)
qgc_disable_dependency_warnings(GeographicLib_STATIC)
endif()
else()
find_package(GeographicLib REQUIRED)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE GeographicLib)
endif()

# ============================================================================
# Shapelib Integration
# ============================================================================

if(NOT USE_SYSTEM_SHAPE)
CPMAddPackage(
NAME Shapelib
VERSION 1.6.3
Expand All @@ -78,6 +84,8 @@ CPMAddPackage(
"BUILD_TESTING OFF"
)

endif()

target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE shp)
if(Shapelib_ADDED)
qgc_disable_dependency_warnings(shp)
Expand Down
3 changes: 2 additions & 1 deletion src/Utilities/Parsing/Exif/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_
# libexif uses autotools, so we build it directly from source files
# ============================================================================

if(NOT USE_SYSTEM_LIBEXIF)
CPMAddPackage(
NAME libexif
VERSION 0.6.25
Expand Down Expand Up @@ -103,5 +104,5 @@ typedef SSIZE_T ssize_t;
# Suppress warnings in third-party code
qgc_disable_dependency_warnings(exif)
endif()

endif()
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE exif)
5 changes: 5 additions & 0 deletions src/Utilities/Parsing/ULog/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_
# PX4 ULog parsing library
# ============================================================================

if(NOT USE_SYSTEM_ULOG_CPP)
CPMAddPackage(
NAME ulog_cpp
GITHUB_REPOSITORY PX4/ulog_cpp
Expand All @@ -28,3 +29,7 @@ qgc_disable_dependency_warnings(ulog_cpp)
target_include_directories(${CMAKE_PROJECT_NAME} SYSTEM PRIVATE ${ulog_cpp_SOURCE_DIR})

target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ulog_cpp::ulog_cpp)
else()
find_package(ulog_cpp REQUIRED)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ulog_cpp)
endif()
11 changes: 11 additions & 0 deletions src/Utilities/SDL/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ else()
set(SDL_STATIC_FLAG "ON")
endif()

if(NOT USE_SYSTEM_SDL3)
CPMAddPackage(
NAME SDL3
VERSION 3.4.2
Expand Down Expand Up @@ -95,18 +96,28 @@ else()
target_compile_definitions(SDL3-static PRIVATE SDL_MAIN_NOIMPL SDL_MAIN_HANDLED)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE SDL3::SDL3-static)
endif()
else()
find_package(SDL3 REQUIRED CONFIG)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE SDL3)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${SDL3_INCLUDE_DIRS})
endif()

# ============================================================================
# SDL Game Controller Database
# ============================================================================

if(NOT USE_SYSTEM_SDL_GAMECONTROLLERDB)
CPMAddPackage(
NAME sdl_gamecontrollerdb
GITHUB_REPOSITORY mdqinc/SDL_GameControllerDB
GIT_TAG 7c3baed7e78f4b85c12df22089b2b97410edec15
DOWNLOAD_ONLY
)

else()
set(sdl_gamecontrollerdb_SOURCE_DIR /usr/share/SDL_GameControllerDB)
endif()

set(SDL_GAMECONTROLLERDB_PATH "${sdl_gamecontrollerdb_SOURCE_DIR}/gamecontrollerdb.txt")

qgc_set_qt_resource_alias("${SDL_GAMECONTROLLERDB_PATH}")
Expand Down
22 changes: 22 additions & 0 deletions src/VideoManager/VideoReceiver/GStreamer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,28 @@ if(QGC_ENABLE_GST_VIDEOSTREAMING)
OPTIONAL_COMPONENTS GlEgl GlWayland GlX11
)

if(GStreamer_USE_STATIC_LIBS)
foreach(_plugin IN LISTS GSTREAMER_PLUGINS)
if(GST_PLUGIN_${_plugin}_FOUND)
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE GST_PLUGIN_${_plugin}_FOUND)
endif()
endforeach()
endif()

# Build GStreamer Qt6 QML GL plugin
if(USE_SYSTEM_GSTQML6)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE "${LIB_PREFIX}/gstreamer-1.0/libgstqml6.so")
else()
add_subdirectory(gstqml6gl)
endif()

# TODO: Add Qt6 Direct3D11 plugin support
# https://gstreamer.freedesktop.org/documentation/qt6d3d11/index.html#qml6d3d11sink-page
endif()

if(TARGET gstqml6gl)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE gstqml6gl)

target_sources(${CMAKE_PROJECT_NAME}
PRIVATE
GStreamer.cc
Expand Down
Loading
Loading