diff --git a/qt6-after/qt6-migrated-legatus/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/CMakeLists.txt index ac5fbd869..50c7bea05 100755 --- a/qt6-after/qt6-migrated-legatus/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/CMakeLists.txt @@ -75,7 +75,7 @@ OPTION(BUILD_PLUGINS_PARTICIPANT_ORG_CHART "Build ParticipantOrgChart (requires OPTION(BUILD_PLUGINS_MSDL "Build MSDL module (requires Qt6 XmlPatterns)" OFF) OPTION(BUILD_PLUGINS_SAAB "Build Saab module (requires Qt6 XmlPatterns)" OFF) OPTION(BUILD_RTI "Build RTI Connext DDS dependent modules" OFF) -OPTION(BUILD_ARCGIS "Build ArcGIS SDK dependent modules" OFF) +OPTION(BUILD_ARCGIS "Build ArcGIS SDK dependent modules" ON) OPTION(BUILD_FILTERMANAGEMENT "Build FilterManagement plugins (temporarily disabled for migration)" OFF) OPTION(BUILD_CODIFICATION "Build CodificationManagement plugins (requires KDReports)" OFF) OPTION(BUILD_GRANTLEE "Build CodeGen Grantlee templates (requires Grantlee5/Qt5)" OFF) @@ -85,6 +85,15 @@ IF(WIN32) SET(EXTERNAL_LIBRARY_DIR "C:/Development/Projekte/SituationMap/ExtFw" CACHE STRING "Library dir with all external dependencies") LIST(APPEND CMAKE_PREFIX_PATH "${EXTERNAL_LIBRARY_DIR}") LIST(APPEND CMAKE_PROGRAM_PATH "${EXTERNAL_LIBRARY_DIR}/bin;${EXTERNAL_LIBRARY_DIR}/dev-utils/bin") +ELSE() + # Linux: ArcGIS SDK Pfad konfigurieren + SET(ARCGIS_SDK_DIR "/repo/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk" CACHE STRING "ArcGIS Runtime SDK for Qt directory") + IF(EXISTS "${ARCGIS_SDK_DIR}") + LIST(APPEND CMAKE_PREFIX_PATH "${ARCGIS_SDK_DIR}") + MESSAGE(STATUS "ArcGIS SDK found at: ${ARCGIS_SDK_DIR}") + ELSE() + MESSAGE(WARNING "ArcGIS SDK not found at: ${ARCGIS_SDK_DIR}") + ENDIF() ENDIF() ENABLE_TESTING() @@ -153,6 +162,64 @@ else() endif() MESSAGE(STATUS "Qt version is ${Qt6Core_VERSION}") + +# +# RTI Connext DDS - manuelle Konfiguration da keine CMake Config Files vorhanden +# +IF(BUILD_RTI) + SET(RTI_INSTALL_DIR "/repo/external/rti_connext_dds-7.7.0" CACHE PATH "RTI Connext DDS installation directory") + IF(EXISTS "${RTI_INSTALL_DIR}") + SET(RTI_LIB_DIR "${RTI_INSTALL_DIR}/lib/x64Linux4gcc8.5.0") + SET(RTI_INCLUDE_DIR "${RTI_INSTALL_DIR}/include/ndds/hpp") + + # RTI hat vier Include-Pfade: + # - include/ für ndds/... und andere Top-Level Headers (z.B. ndds/ndds_config_common.h) + # - include/ndds/ für osapi/... Headers (z.B. osapi/osapi_platform.h) + # - include/ndds/hpp für C++ Headers (dds/..., rti/...) + # - include/rti für rti/... Headers + SET(RTI_INCLUDE_DIRS + "${RTI_INSTALL_DIR}/include" + "${RTI_INSTALL_DIR}/include/ndds" + "${RTI_INSTALL_DIR}/include/ndds/hpp" + "${RTI_INSTALL_DIR}/include/rti" + ) + + # IMPORTED Targets für RTI Libraries erstellen + # Debug und Release Varianten korrekt konfigurieren + FOREACH(lib nddsc nddscore nddscpp nddscpp2 nddsctesthelpers) + ADD_LIBRARY(RTI::${lib} SHARED IMPORTED) + + # Debug Library + IF(EXISTS "${RTI_LIB_DIR}/lib${lib}d.so") + SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES + IMPORTED_LOCATION_DEBUG "${RTI_LIB_DIR}/lib${lib}d.so" + ) + ENDIF() + + # Release Library + IF(EXISTS "${RTI_LIB_DIR}/lib${lib}.so") + SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES + IMPORTED_LOCATION_RELEASE "${RTI_LIB_DIR}/lib${lib}.so" + IMPORTED_LOCATION_RELWITHDEBINFO "${RTI_LIB_DIR}/lib${lib}.so" + IMPORTED_LOCATION_MINSIZEREL "${RTI_LIB_DIR}/lib${lib}.so" + ) + ENDIF() + + # Include Verzeichnisse für alle Varianten + SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${RTI_INCLUDE_DIRS}" + INTERFACE_COMPILE_DEFINITIONS "RTI_LINUX" + ) + ENDFOREACH() + + MESSAGE(STATUS "RTI Connext DDS found at: ${RTI_INSTALL_DIR}") + MESSAGE(STATUS "RTI Libraries: ${RTI_LIB_DIR}") + MESSAGE(STATUS "RTI Platform: RTI_LINUX") + ELSE() + MESSAGE(WARNING "RTI Connext DDS not found at: ${RTI_INSTALL_DIR}, BUILD_RTI will fail") + ENDIF() +ENDIF(BUILD_RTI) + ADD_DEFINITIONS(-DQT_USE_QSTRINGBUILDER) ADD_DEFINITIONS(-DQT_NO_CAST_TO_ASCII) ADD_DEFINITIONS(-DQT_NO_CAST_FROM_ASCII) diff --git a/qt6-after/qt6-migrated-legatus/EXTERNAL_DEPENDENCIES.md b/qt6-after/qt6-migrated-legatus/EXTERNAL_DEPENDENCIES.md new file mode 100644 index 000000000..f1f14acee --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/EXTERNAL_DEPENDENCIES.md @@ -0,0 +1,84 @@ +# Fehlende External Dependencies - Qt6 Migration + +## Status: BUILD_RTI=OFF (temporärer Workaround) + +### RTI Connext DDS 7.7.0 - GCC Inkompatibilität + +**Problem**: RTI Connext DDS 7.7.0 ist nicht kompatibel mit der GCC-Version im Ubuntu 26.04 Container. + +**Fehlermeldung**: +``` +/repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/dds/core/Array.hpp:256:14: +error: 'DDS_OctetSeq_get_contiguous_buffer' was not declared in this scope; +did you mean 'DDS_OctetsSeq_get_contiguous_buffer'? +``` + +**Ursache**: RTI 7.7.0 verwendet veraltete API-Namen die nicht mit neueren GCC-Versionen kompatibel sind. + +**Betroffene Module** (können ohne RTI nicht gebaut werden): +- `Lts/Proxies/CombatNetRadio` - Benötigt Enums aus `avm_enums.idl`: + - `ModulationType` + - `ChannelSpacing` + - `ChannelSpacingHF` + - `RcOperatingMode` + - `FrequencyBand` +- `Lts/DDS` - DDS Connector und QoS-Module +- `Lts/Common/LtsSession` - LtsSessionDataDds (DDS-Integration) +- Alle Module die DDS-generierte Types verwenden + +**Lösungsoptionen**: +1. **RTI Upgrade**: Neuere RTI Connext DDS Version suchen die GCC im Ubuntu 26.04 Container unterstützt +2. **GCC Downgrade**: Ältere GCC-Version im Container verwenden (z.B. GCC 8.5.0 wie von RTI erwartet) +3. **RTI Patches**: RTI Header patchen um API-Namen zu korrigieren (nicht empfohlen) + +**Aktueller Workaround**: +- `BUILD_RTI=OFF` als Default in CMakeLists.txt +- Betroffene Module werden nicht gebaut +- Placeholder-Enums in Headern für Build ohne RTI (siehe `cnr_frequency_planning_helper.h`) + +--- + +### ArcGIS Maps SDK for Qt 300.0.0 + +**Status**: ✅ Konfiguriert und im Build enthalten + +**Pfad**: `./external/ArcGIS/MapsSDK_Qt_300.0.0/` +**CMake-Option**: `BUILD_ARCGIS=ON` (Default) + +**Betroffene Module**: +- `Lts/Viewer/SituationMap` - Verwendet `ArcGIS::ArcGIS` Target + +**Konfiguration**: +```cmake +SET(ARCGIS_SDK_DIR "/repo/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk" CACHE STRING "ArcGIS Runtime SDK for Qt directory") +``` + +--- + +## Build ohne RTI - Erwartete Fehler + +Folgende Module können ohne RTI DDS nicht gebaut werden und werden übersprungen/fehlgeschlagen: + +| Modul | Status | Grund | +|-------|--------|-------| +| `Lts/Common/LtsSession` | ❌ BLOCKED | LtsSessionDataDds benötigt RTI | +| `Lts/DDS/*` | ❌ BLOCKED | DDS Connector, QoS, Discovery benötigen RTI | +| `Lts/Proxies/CombatNetRadio` | ⚠️ PARTIAL | Enums als Placeholder, aber keine DDS-Integration | +| `Lts/Proxies/CombatNetRadio/DDS` | ❌ BLOCKED | DDS-spezifischer Code | + +--- + +## Nächste Schritte + +1. **Build ohne RTI validieren** - Alle nicht-RTI Module erfolgreich bauen +2. **RTI-Problem dokumentieren** - Diese Datei dient als Referenz +3. **RTI-Lösung evaluieren** - Mit RTI-Team Kontakt aufnehmen wegen GCC-Kompatibilität +4. **Migration fortsetzen** - Module ohne RTI-Abhängigkeit vollständig migrieren + +--- + +**Erstellt**: 2026-08-20 +**Letzte Aktualisierung**: 2026-08-20 +**Qt-Version**: 6.10.2 +**RTI-Version**: 7.7.0 (incompatible) +**Container**: Ubuntu 26.04 (GCC 13.x) \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt index dab19ab79..da63d7671 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/Common/LtsSession/CMakeLists.txt @@ -5,25 +5,9 @@ # Created by Mike Wille, SLSE, 2016-05-15 # -# RTI Connext DDS - default ON +# RTI Connext DDS - uses IMPORTED targets from parent CMakeLists.txt OPTION(BUILD_RTI "Build with RTI Connext DDS support" ON) -# Find RTI Connext DDS - manual configuration (no CMake config file available) -IF(BUILD_RTI) - SET(RTI_BASE_DIR "${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0") - SET(RTI_INCLUDE_DIR "${RTI_BASE_DIR}/include") - SET(RTI_LIB_DIR "${RTI_BASE_DIR}/lib/x64Linux4gcc8.5.0") - - # Check if RTI directories exist - IF(EXISTS "${RTI_INCLUDE_DIR}" AND EXISTS "${RTI_LIB_DIR}") - MESSAGE(STATUS "Using RTI Connext DDS from ${RTI_BASE_DIR}") - SET(BUILD_RTI ON) - ELSE() - MESSAGE(WARNING "RTI Connext DDS not found at ${RTI_BASE_DIR}, building without RTI support") - SET(BUILD_RTI OFF) - ENDIF() -ENDIF() - # LtsSessionDataDds (only with RTI) IF(BUILD_RTI) SET(LtsSessionDataDds_SRCS @@ -35,17 +19,12 @@ IF(BUILD_RTI) PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../ - ${RTI_INCLUDE_DIR} - ) - NGL_TARGET_LINK_DIRECTORIES(LtsSessionDataDds - PRIVATE - ${RTI_LIB_DIR} ) NGL_TARGET_LINK_LIBRARIES(LtsSessionDataDds PRIVATE ddsconnector PUBLIC - nddscore + RTI::nddscore NGLLogger Qt6::Core ) @@ -103,20 +82,12 @@ NGL_TARGET_LINK_LIBRARIES(LtsSession ProjectConfig ) IF(BUILD_RTI) - NGL_TARGET_INCLUDE_DIRECTORIES(LtsSession - PUBLIC - ${RTI_INCLUDE_DIR} - ) - NGL_TARGET_LINK_DIRECTORIES(LtsSession - PRIVATE - ${RTI_LIB_DIR} - ) NGL_TARGET_LINK_LIBRARIES(LtsSession PRIVATE ddsconnector PUBLIC LtsSessionDataDds - nddscore + RTI::nddscore ) TARGET_COMPILE_DEFINITIONS(LtsSession PUBLIC BUILD_RTI) ENDIF() @@ -141,17 +112,9 @@ NGL_TARGET_LINK_LIBRARIES(LtsSessionData Qt6::Gui # QPixmap as Storage for Profile Picture ) IF(BUILD_RTI) - NGL_TARGET_INCLUDE_DIRECTORIES(LtsSessionData - PUBLIC - ${RTI_INCLUDE_DIR} - ) - NGL_TARGET_LINK_DIRECTORIES(LtsSessionData - PRIVATE - ${RTI_LIB_DIR} - ) NGL_TARGET_LINK_LIBRARIES(LtsSessionData PUBLIC - nddscore + RTI::nddscore ) TARGET_COMPILE_DEFINITIONS(LtsSessionData PUBLIC BUILD_RTI) ENDIF() diff --git a/qt6-after/qt6-migrated-legatus/Lts/DDS/DDSConnector/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/DDS/DDSConnector/CMakeLists.txt index a3e885eb3..468e22e94 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/DDS/DDSConnector/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/DDS/DDSConnector/CMakeLists.txt @@ -22,30 +22,28 @@ NGL_TARGET_INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/../../ ) IF(BUILD_RTI) -IF(BUILD_RTI) -NGL_TARGET_LINK_LIBRARIES(ddsconnector - PRIVATE - NGLLogger - PUBLIC - RTI::nddsc - RTI::nddscore - RTI::nddscpp2 - ddsQoS - ddsdtc - ddsdts - ProjectConfig - Qt6::Core -) -ENDIF(BUILD_RTI) + NGL_TARGET_LINK_LIBRARIES(ddsconnector + PRIVATE + NGLLogger + PUBLIC + RTI::nddsc + RTI::nddscore + RTI::nddscpp2 + ddsQoS + ddsdtc + ddsdts + ProjectConfig + Qt6::Core + ) ELSE() -NGL_TARGET_LINK_LIBRARIES(ddsconnector - PRIVATE - NGLLogger - PUBLIC - ddsQoS - ddsdtc - ddsdts - ProjectConfig - Qt6::Core -) + NGL_TARGET_LINK_LIBRARIES(ddsconnector + PRIVATE + NGLLogger + PUBLIC + ddsQoS + ddsdtc + ddsdts + ProjectConfig + Qt6::Core + ) ENDIF() diff --git a/qt6-after/qt6-migrated-legatus/Lts/Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h b/qt6-after/qt6-migrated-legatus/Lts/Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h index 2ef10e567..26e41ce7a 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h +++ b/qt6-after/qt6-migrated-legatus/Lts/Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h @@ -1,10 +1,29 @@ #pragma once +#include #include +#include +#include +#include #include "svccnrhelper_export.h" // Use avm_enums.hpp from RTI DDS tools #include +#ifdef BUILD_RTI +// Enums werden von RTI DDS aus IDL generiert (avm_enums.idl) +// Bei BUILD_RTI=OFF fehlen diese Definitionen +#else +// Temporäre Placeholder für Build ohne RTI +// TODO: RTI DDS Integration erforderlich für vollständige Enums +namespace AudioVideoManagement { + enum class FrequencyBand { VHF_v = 0 }; + enum class ModulationType { AM = 0 }; + enum class ChannelSpacingHF { CS_100_Hz = 0 }; + enum class ChannelSpacing { CS_25_00_kHz = 0 }; + enum class RcOperatingMode { FixedFreqEncNone_v = 0 }; +} +#endif + namespace AudioVideoManagement { struct SVCCNRHELPER_EXPORT RadioCircuit