diff --git a/.gitignore b/.gitignore index 261d061bd..3fa3b4c8f 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,4 @@ build-qt6 build-qt6-old build-qt6-new fix_*.py +.* diff --git a/LTS_SERVICES_MIGRATION_REPORT.md b/LTS_SERVICES_MIGRATION_REPORT.md new file mode 100644 index 000000000..48eeb9b79 --- /dev/null +++ b/LTS_SERVICES_MIGRATION_REPORT.md @@ -0,0 +1,186 @@ +# LTS Services Qt6 Migration Report + +**Date**: 2026-09-21 +**Branch**: `feature/qt6-migration-basis-modules-services` +**Validation image**: `migrate-qt6:latest` (3.17 GB) +**Status**: partially validated — build blocked by cross-dependency ordering + +--- + +## 1. Scope + +- **Qt5 source tree**: `qt-migration-legatus/qt5-before/qt5-legatus-legacy/Lts/Services/` +- **Qt6 target tree**: `qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Services/` +- **Build variants**: `BUILD_RTI=ON`, `BUILD_GRANTLEE=ON` (only) +- **Services in scope**: all 44 service directories under `Lts/Services/` + +--- + +## 2. Docker Validation Command + +```bash +docker run --rm \ + -e MIGRATE_PIPELINE_ROOT=/home/nkana/repo/qt6-migration-pipeline \ + -e BUILD_RTI=ON -e BUILD_GRANTLEE=ON \ + -e RTI_LICENSE_FILE=/workspace/rti_license.dat \ + -e QT_QPA_PLATFORM=offscreen \ + -v /home/nkana/repo/qt6-migration-pipeline:/workspace \ + -w /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus \ + migrate-qt6:latest bash -c " + set -eo pipefail + rm -rf build4 && mkdir build4 + cd build4 + cmake .. \ + -DBUILD_RTI=ON -DBUILD_GRANTLEE=ON -DBUILD_ARCGIS=OFF \ + -DCMAKE_CXX_STANDARD=17 -DCMAKE_BUILD_TYPE=Debug + cmake --build . --parallel + ctest --output-on-failure + " +``` + +--- + +## 3. Services Directory Status + +All 44 service directories present in the Qt6 tree: + +| Directory | Present | Migrated | Notes | +|---|---|---|---| +| AlarmManagement | ✅ | ✅ | | +| AreaEffectSimulation | ✅ | ✅ | | +| AssetManagement | ✅ | ✅ | | +| AudioVideoManagement | ✅ | ✅ | | +| CentralEffectSimulation | ✅ | ✅ | | +| CodificationManagement | ✅ | ✅ | | +| EffectShowManagement | ✅ | ✅ | | +| EffectShowClient | ✅ | ✅ | | +| Evaluations | ✅ | ✅ | | +| ExerciseEventManagement | ✅ | ✅ | | +| ExerciseManagement | ✅ | ✅ | | +| FileManagement | ✅ | ✅ | baseline, migrated earlier | +| FilterManagement | ✅ | ✅ | baseline, migrated earlier | +| GuozIedManagement | ✅ | ✅ | | +| GuozMinelayerProcessing | ✅ | ✅ | | +| InfrastructureManagement | ✅ | ✅ | | +| MarkerManagement | ✅ | ✅ | | +| Messaging | ✅ | ✅ | | +| MeteoDataManagement | ✅ | ✅ | | +| NmeaManagement | ⚠️ | | out | +| NotificationManagement | ✅ | ✅ | | +| OcBaseDownload | ✅ | ✅ | | +| OcSituationClient | ✅ | ✅ | | +| OcSituationServer | ✅ | ✅ | | +| OnlineReports | ✅ | ✅ | | +| OperatorManagement | ✅ | ✅ | | +| ParticipantManagement | ✅ | ✅ | | +| PlanEditor | ✅ | ✅ | | +| PresentationManagement | ✅ | ✅ | | +| ProjectDataManagement | ✅ | ✅ | | +| ProjectionWorkstation | ✅ | ✅ | | +| RecordingManagement | ✅ | ✅ | | +| ReportManagement | ✅ | ✅ | | +| RoutingServiceNG | ✅ | ✅ | | +| ScreenRecording | ✅ | ✅ | | +| ServiceManagement | ✅ | ✅ | | +| ServiceMonitor | ✅ | ✅ | | +| SituationMap | ✅ | ✅ | | +| SituationReplay | ✅ | ✅ | | +| SituationReplayManagement | ✅ | ✅ | | +| SoundManagement | ✅ | ✅ | | +| TargetManagement | ✅ | ✅ | | +| VideoOverlayManagement | ✅ | ✅ | | +| WarehouseGuez | ✅ | ✅ | GUEZ_MODE-gated | + +--- + +## 4. Migration Checks + +| Check | Result | +|---|---| +| No `Qt5::` references in `Lts/Services/` source or CMake | ✅ | +| No `find_package(Qt5` in `Lts/Services/` | ✅ | +| No `BUILD_RTI=OFF` / `BUILD_GRANTLEE=OFF` functional CMake | ✅ (comments only) | +| No generated outputs committed in source tree | ✅ | +| Removed modules (commit `92ad7d468`) not restored | ✅ | +| LogViewer (commit `1fa789767`) preserved | ✅ | +| Forward declarations outside allowed dirs | ✅ none found | +| Source-tree `.idl` files | ✅ none committed | + +--- + +## 5. Qt6 Fixes Applied During Validation + +| File | Qt5 Issue | Fix Applied | +|---|---|---| +| `Lts/Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.cpp` | `QJsonObject::insert()` does not accept `enum class` directly (Qt6 removed implicit conversion) | `static_cast(enumValue)` for 6 calls (FrequencyBand, ModulationType, ChannelSpacing, RcOperatingMode) | +| `Lts/Tools/ConfigX/configurator.cpp` | `#include ` (removed in Qt6) | removed include (code already uses `QGuiApplication::screens()` / `QScreen*`) | +| `Lts/Tools/VapixConfig/httprequesthandler.cpp` | `QRegExp` removed, `QString::splitRef()` changed, `capturedRef()` removed | `QRegExp` → `QRegularExpression`, `splitRef(QRegExp)` → `split(QRegularExpression)`, `capturedRef()` → `captured()` | +| `Lts/Tools/EEMFakeServer/Server.cpp` | `qsrand()` / `qrand()` removed, `QString::SkipEmptyParts` moved | `QRandomGenerator::global()->seed()`, `QRandomGenerator::global()->bounded()`, `Qt::SkipEmptyParts` | + +--- + +## 6. Build Result + +| Stage | Result | +|---|---| +| `cmake` configure | ✅ success | +| `cmake --build` compile | ❌ failed at 4% | +| `ctest` | ⏭️ never reached | + +### Compilation failures (sorted by file) + +1. **`Lts/Plugins/Timeline/TlnDataPluginInterface.h:7`** — `fatal error: ExerciseEventManagement/eem.hpp: No such file or directory` +2. **`Lts/Tools/VapixConfig/httprequesthandler.cpp`** — Qt6 API compatibility (fixed above, recompile needed) +3. **`Lts/Tools/EEMFakeServer/Server.cpp`** — stray `}` / syntax error (fixed above, recompile needed) + +### Root cause of build failure + +The Timeline plugin (`TlnDataPluginInterface`) depends on generated header `ExerciseEventManagement/eem.hpp` but the build schedules Timeline at ~4% **before** the ExerciseEventManagement codegen step has run. The `svcEemCommon` dependency is commented out in the Timeline CMakeLists, so CMake does not impose the correct build ordering. + +`eem.hpp` is generated by rtiddsgen from `eem_service.xml` + Grantlee templates at build time. No stub or source-tree copy exists. + +--- + +## 7. Codegen / Generator Status + +- **RTI Connext 7.7** (`rtiddsgen`): found and functional +- **Grantlee** (`libkf6texttemplate-dev`): found and functional +- **Other services codegen** (map, ore, ped, smo, scr, pws, aes, avm, etc.): all show `Generating ...` lines in build log — codegen pipeline works correctly +- **`eem.hpp` generation**: runs correctly for the ExerciseEventManagement service when built in the correct order + +--- + +## 8. Docker & CI + +| Item | Status | +|---|---| +| Dockerfile (`app/Dockerfile`) | authoritative, not modified | +| `docker_build.sh` | authoritative, not modified | +| Validation image (`migrate-qt6:latest`) | 3.17 GB, functional | +| `./docker-build.h` | **absent** (not inventing a replacement) | +| Container working dir | `/workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus` | +| `set -eo pipefail` | present in container script | + +--- + +## 9. Remaining Blockers + +1. **Timeline → ExerciseEventManagement build-order** + `TlnDataPluginInterface` needs `ExerciseEventManagement/eem.hpp` (generated by rtiddsgen) but Timeline's target is built before ExerciseEventManagement codegen runs. + **Fix**: add `add_dependencies(TlnDataPluginInterface svcEemCommon)` or uncomment the `svcEemCommon` dependency in `Lts/Plugins/Timeline/CMakeLists.txt`. + +2. **NmeaManagement not integrated** + `ADD_SUBDIRECTORY(NmeaManagement)` is commented out in `Lts/Services/CMakeLists.txt`. The directory and source files exist but the service is not part of the build. + +3. **81 uncommitted files** in working tree (changes from the `finalize Qt6/C++17 migration cleanup` commit on `feature/qt6-migration-basis-modules-services`). + +--- + +## 10. Git Status + +- **Current branch**: `feature/qt6-migration-basis-modules-services` +- **Main branch**: `main` +- **Last migration commit**: `5485a9038` — "Lts/Services: finalize Qt6/C++17 migration cleanup" +- **Total migration commits on branch**: 30 +- **Uncommitted changes**: 81 files modified (source/header fixes) +- **No staged changes** diff --git a/alltargets.txt b/alltargets.txt new file mode 100644 index 000000000..45ab349f9 --- /dev/null +++ b/alltargets.txt @@ -0,0 +1,1940 @@ +AdlerWebSocketSimulator +AdlerWebSocketSimulator_autogen +AdlerWebSocketSimulator_autogen_timestamp_deps +AesAirSupportGuiPlugin +AesAirSupportGuiPlugin_autogen +AesAirSupportGuiPlugin_autogen_timestamp_deps +AesBaseGui +AesBaseGui_autogen +AesBaseGui_autogen_timestamp_deps +AesBcContaminationGuiPlugin +AesBcContaminationGuiPlugin_autogen +AesBcContaminationGuiPlugin_autogen_timestamp_deps +AesBorderlineGuiPlugin +AesBorderlineGuiPlugin_autogen +AesBorderlineGuiPlugin_autogen_timestamp_deps +AesChargeAdministrationGuiPlugin +AesChargeAdministrationGuiPlugin_autogen +AesChargeAdministrationGuiPlugin_autogen_timestamp_deps +AesChargeEffectGuiPlugin +AesChargeEffectGuiPlugin_autogen +AesChargeEffectGuiPlugin_autogen_timestamp_deps +AesDangerAreaGuiPlugin +AesDangerAreaGuiPlugin_autogen +AesDangerAreaGuiPlugin_autogen_timestamp_deps +AesDataPlugin +AesDataPlugin_autogen +AesDataPlugin_autogen_timestamp_deps +AesEffectClusterModel +AesEffectClusterModel_autogen +AesEffectClusterModel_autogen_timestamp_deps +AesExplosionGuiPlugin +AesExplosionGuiPlugin_autogen +AesExplosionGuiPlugin_autogen_timestamp_deps +AesFunctionalAreaGuiPlugin +AesFunctionalAreaGuiPlugin_autogen +AesFunctionalAreaGuiPlugin_autogen_timestamp_deps +AesGasPipeGuiPlugin +AesGasPipeGuiPlugin_autogen +AesGasPipeGuiPlugin_autogen_timestamp_deps +AesInfoGuiPlugin +AesInfoGuiPlugin_autogen +AesInfoGuiPlugin_autogen_timestamp_deps +AesMineAreaGuiPlugin +AesMineAreaGuiPlugin_autogen +AesMineAreaGuiPlugin_autogen_timestamp_deps +AesMineCorridorGuiPlugin +AesMineCorridorGuiPlugin_autogen +AesMineCorridorGuiPlugin_autogen_timestamp_deps +AesMineSingleVirtualGuiPlugin +AesMineSingleVirtualGuiPlugin_autogen +AesMineSingleVirtualGuiPlugin_autogen_timestamp_deps +AesNContaminationGuiPlugin +AesNContaminationGuiPlugin_autogen +AesNContaminationGuiPlugin_autogen_timestamp_deps +AesTechnicalAreaGuiPlugin +AesTechnicalAreaGuiPlugin_autogen +AesTechnicalAreaGuiPlugin_autogen_timestamp_deps +AlmCommon +AlmCommon_autogen +AlmCommon_autogen_timestamp_deps +AlmConfigAlarmGuiPlugin +AlmConfigAlarmGuiPlugin_autogen +AlmConfigAlarmGuiPlugin_autogen_timestamp_deps +AlmDataPlugin +AlmDataPlugin_autogen +AlmDataPlugin_autogen_timestamp_deps +AlmEmergencyCallGuiPlugin +AlmEmergencyCallGuiPlugin_autogen +AlmEmergencyCallGuiPlugin_autogen_timestamp_deps +AlmOnlineReportsGuiPlugin +AlmOnlineReportsGuiPlugin_autogen +AlmOnlineReportsGuiPlugin_autogen_timestamp_deps +AppStarterGuiPlugin +AppStarterGuiPlugin_autogen +AppStarterGuiPlugin_autogen_timestamp_deps +AsbData +AsbDataPlugin +AsbDataPlugin_autogen +AsbDataPlugin_autogen_timestamp_deps +AsbData_autogen +AsbData_autogen_timestamp_deps +AsbForeignDataPluginThp +AsbForeignDataPluginThp_autogen +AsbForeignDataPluginThp_autogen_timestamp_deps +AsbHelper +AsbHelper_autogen +AsbHelper_autogen_timestamp_deps +AsbSymEditGuiPlugin +AsbSymEditGuiPlugin_autogen +AsbSymEditGuiPlugin_autogen_timestamp_deps +AsbSymbolProxyGuiPlugin +AsbSymbolProxyGuiPlugin_autogen +AsbSymbolProxyGuiPlugin_autogen_timestamp_deps +AsmDataPlugin +AsmDataPlugin_autogen +AsmDataPlugin_autogen_timestamp_deps +AsmGuiPlugin +AsmGuiPlugin_autogen +AsmGuiPlugin_autogen_timestamp_deps +AvmDataPlugin +AvmDataPlugin_autogen +AvmDataPlugin_autogen_timestamp_deps +AvmElokaGuiPlugin +AvmElokaGuiPlugin_autogen +AvmElokaGuiPlugin_autogen_timestamp_deps +AvmShared +AvmShared_autogen +AvmShared_autogen_timestamp_deps +BatGuiPlugin +BatGuiPlugin_autogen +BatGuiPlugin_autogen_timestamp_deps +BdvViewerGuiPlugin +BdvViewerGuiPlugin_autogen +BdvViewerGuiPlugin_autogen_timestamp_deps +BldDataPlugin +BldDataPlugin_autogen +BldDataPlugin_autogen_timestamp_deps +BldInfoGuiPlugin +BldInfoGuiPlugin_autogen +BldInfoGuiPlugin_autogen_timestamp_deps +BuildingControlBsm +BuildingControlBsm_autogen +BuildingControlBsm_autogen_timestamp_deps +BuildingControlCommon +BuildingControlCommon_autogen +BuildingControlCommon_autogen_timestamp_deps +BuildingControlJson +BuildingControlJson_autogen +BuildingControlJson_autogen_timestamp_deps +BuildingControlTestBsm +BuildingControlTestBsm_autogen +BuildingControlTestBsm_autogen_timestamp_deps +BuildingControlTestVwm +BuildingControlTestVwmXml +BuildingControlTestVwmXml_autogen +BuildingControlTestVwmXml_autogen_timestamp_deps +BuildingControlTestVwm_autogen +BuildingControlTestVwm_autogen_timestamp_deps +BuildingControlUnit +BuildingControlUnit_autogen +BuildingControlUnit_autogen_timestamp_deps +BuildingControlVwm +BuildingControlVwm_autogen +BuildingControlVwm_autogen_timestamp_deps +CesDataPlugin +CesDataPlugin_autogen +CesDataPlugin_autogen_timestamp_deps +CesParticipantMoveGuiPlugin +CesParticipantMoveGuiPlugin_autogen +CesParticipantMoveGuiPlugin_autogen_timestamp_deps +CesParticipantUASGuiPlugin +CesParticipantUASGuiPlugin_autogen +CesParticipantUASGuiPlugin_autogen_timestamp_deps +CmoDataPlugin +CmoDataPlugin_autogen +CmoDataPlugin_autogen_timestamp_deps +CnrProxyTester +CnrProxyTester_autogen +CnrProxyTester_autogen_timestamp_deps +CoPrtCnv +CoPrtCnv_autogen +CoPrtCnv_autogen_timestamp_deps +ConfigX +ConfigX_autogen +ConfigX_autogen_timestamp_deps +Continuous +ContinuousBuild +ContinuousConfigure +ContinuousCoverage +ContinuousMemCheck +ContinuousStart +ContinuousSubmit +ContinuousTest +ContinuousUpdate +ControlEffects +ControlEffectsTest +ControlEffectsTest_autogen +ControlEffectsTest_autogen_timestamp_deps +ControlEffects_autogen +ControlEffects_autogen_timestamp_deps +DataPluginInterface +DataPluginInterface_autogen +DataPluginInterface_autogen_timestamp_deps +DateTimeSyncer +DateTimeSyncer_autogen +DateTimeSyncer_autogen_timestamp_deps +DevGuiPlugin +DevGuiPlugin_autogen +DevGuiPlugin_autogen_timestamp_deps +EEMFakeServer +EEMFakeServer_autogen +EEMFakeServer_autogen_timestamp_deps +EfmDataPlugin +EfmDataPlugin_autogen +EfmDataPlugin_autogen_timestamp_deps +EfmSoundAreaGuiPlugin +EfmSoundAreaGuiPlugin_autogen +EfmSoundAreaGuiPlugin_autogen_timestamp_deps +EscDataPlugin +EscDataPlugin_autogen +EscDataPlugin_autogen_timestamp_deps +EscEffectShowGuiPlugin +EscEffectShowGuiPlugin_autogen +EscEffectShowGuiPlugin_autogen_timestamp_deps +EsmComboBoxGui +EsmComboBoxGuiPlugin +EsmComboBoxGuiPlugin_autogen +EsmComboBoxGuiPlugin_autogen_timestamp_deps +EsmComboBoxGui_autogen +EsmComboBoxGui_autogen_timestamp_deps +EsmDataPlugin +EsmDataPlugin_autogen +EsmDataPlugin_autogen_timestamp_deps +EsmEffectShowGuiPlugin +EsmEffectShowGuiPlugin_autogen +EsmEffectShowGuiPlugin_autogen_timestamp_deps +EvlDataPlugin +EvlDataPlugin_autogen +EvlDataPlugin_autogen_timestamp_deps +EvlEditGuiPlugin +EvlEditGuiPlugin_autogen +EvlEditGuiPlugin_autogen_timestamp_deps +EvlSanNineLinerEditGuiPlugin +EvlSanNineLinerEditGuiPlugin_autogen +EvlSanNineLinerEditGuiPlugin_autogen_timestamp_deps +ExmDataPlugin +ExmDataPlugin_autogen +ExmDataPlugin_autogen_timestamp_deps +ExmEditGuiPlugin +ExmEditGuiPlugin_autogen +ExmEditGuiPlugin_autogen_timestamp_deps +ExmWatchGuiPlugin +ExmWatchGuiPlugin_autogen +ExmWatchGuiPlugin_autogen_timestamp_deps +Experimental +ExperimentalBuild +ExperimentalConfigure +ExperimentalCoverage +ExperimentalMemCheck +ExperimentalStart +ExperimentalSubmit +ExperimentalTest +ExperimentalUpdate +FW_Ballistic +FW_Ballistic_autogen +FW_Ballistic_autogen_timestamp_deps +FlmComboBoxGuiPlugin +FlmComboBoxGuiPlugin_autogen +FlmComboBoxGuiPlugin_autogen_timestamp_deps +FlmDataPlugin +FlmDataPlugin_autogen +FlmDataPlugin_autogen_timestamp_deps +FlmExplorerGuiPlugin +FlmExplorerGuiPlugin_autogen +FlmExplorerGuiPlugin_autogen_timestamp_deps +FspGuiPlugin +FspGuiPlugin_autogen +FspGuiPlugin_autogen_timestamp_deps +GBL_ConfigSystem +GBL_ConfigSystem_autogen +GBL_ConfigSystem_autogen_timestamp_deps +GBL_Types +GBL_Types_autogen +GBL_Types_autogen_timestamp_deps +GimDataPlugin +GimDataPlugin_autogen +GimDataPlugin_autogen_timestamp_deps +GimInfoGuiPlugin +GimInfoGuiPlugin_autogen +GimInfoGuiPlugin_autogen_timestamp_deps +GimPairingGuiPlugin +GimPairingGuiPlugin_autogen +GimPairingGuiPlugin_autogen_timestamp_deps +GnaCommon +GnaCommon_autogen +GnaCommon_autogen_timestamp_deps +GnaDataPlugin +GnaDataPlugin_autogen +GnaDataPlugin_autogen_timestamp_deps +GnaNasatGuiPlugin +GnaNasatGuiPlugin_autogen +GnaNasatGuiPlugin_autogen_timestamp_deps +GnaNasatPartGuiPlugin +GnaNasatPartGuiPlugin_autogen +GnaNasatPartGuiPlugin_autogen_timestamp_deps +GuiElementPlugin +GuiElementPlugin_autogen +GuiElementPlugin_autogen_timestamp_deps +GuiPluginInterface +GuiPluginInterface_autogen +GuiPluginInterface_autogen_timestamp_deps +IsmAvcGuiPlugin +IsmAvcGuiPlugin_autogen +IsmAvcGuiPlugin_autogen_timestamp_deps +IsmComboBoxGuiPlugin +IsmComboBoxGuiPlugin_autogen +IsmComboBoxGuiPlugin_autogen_timestamp_deps +IsmDataPlugin +IsmDataPluginInterface +IsmDataPluginInterface_autogen +IsmDataPluginInterface_autogen_timestamp_deps +IsmDataPluginThp +IsmDataPluginThp_autogen +IsmDataPluginThp_autogen_timestamp_deps +IsmDataPlugin_autogen +IsmDataPlugin_autogen_timestamp_deps +IsmExerciseAssignmentClassicGuiPlugin +IsmExerciseAssignmentClassicGuiPlugin_autogen +IsmExerciseAssignmentClassicGuiPlugin_autogen_timestamp_deps +IsmResGuiPlugin +IsmResGuiPlugin_autogen +IsmResGuiPlugin_autogen_timestamp_deps +IsmShared +IsmShared_autogen +IsmShared_autogen_timestamp_deps +LastTestAuswertung +LastTestAuswertung_autogen +LastTestAuswertung_autogen_timestamp_deps +LicenceEditor +LicenceEditor_autogen +LicenceEditor_autogen_timestamp_deps +LogView +LogView_autogen +LogView_autogen_timestamp_deps +LogView_console +LogView_console_autogen +LogView_console_autogen_timestamp_deps +LogViewer +LogViewer_autogen +LogViewer_autogen_timestamp_deps +LtsAppDescriptor +LtsAppDescriptorChecker +LtsAppDescriptorChecker_autogen +LtsAppDescriptorChecker_autogen_timestamp_deps +LtsAppDescriptor_autogen +LtsAppDescriptor_autogen_timestamp_deps +LtsAppManager +LtsAppManager_autogen +LtsAppManager_autogen_timestamp_deps +LtsCommandLineParser +LtsCommandLineParser_autogen +LtsCommandLineParser_autogen_timestamp_deps +LtsCoordTrans +LtsCoordTrans_autogen +LtsCoordTrans_autogen_timestamp_deps +LtsCoordinate +LtsCoordinate_autogen +LtsCoordinate_autogen_timestamp_deps +LtsDataView +LtsDataViewTest +LtsDataViewTest_autogen +LtsDataViewTest_autogen_timestamp_deps +LtsDataView_autogen +LtsDataView_autogen_timestamp_deps +LtsElevation +LtsElevation_autogen +LtsElevation_autogen_timestamp_deps +LtsFileDialog +LtsFileDialogTest +LtsFileDialogTest_autogen +LtsFileDialogTest_autogen_timestamp_deps +LtsFileDialog_autogen +LtsFileDialog_autogen_timestamp_deps +LtsLicence +LtsLicence_autogen +LtsLicence_autogen_timestamp_deps +LtsLogin +LtsLogin_autogen +LtsLogin_autogen_timestamp_deps +LtsMultiMonitor +LtsMultiMonitor_autogen +LtsMultiMonitor_autogen_timestamp_deps +LtsNotification +LtsNotification_autogen +LtsNotification_autogen_timestamp_deps +LtsPluginLoader +LtsPluginLoader_autogen +LtsPluginLoader_autogen_timestamp_deps +LtsPluginManager +LtsPluginManager_autogen +LtsPluginManager_autogen_timestamp_deps +LtsProjectionWorkstation +LtsProjectionWorkstation_autogen +LtsProjectionWorkstation_autogen_timestamp_deps +LtsReportDisplay +LtsReportDisplay_autogen +LtsReportDisplay_autogen_timestamp_deps +LtsRestClient +LtsRestClient_autogen +LtsRestClient_autogen_timestamp_deps +LtsScriptTimeline +LtsScriptTimeline_autogen +LtsScriptTimeline_autogen_timestamp_deps +LtsSerialPortQuerry +LtsSerialPortQuerry_autogen +LtsSerialPortQuerry_autogen_timestamp_deps +LtsSession +LtsSessionData +LtsSessionDataDds +LtsSessionDataDds_autogen +LtsSessionDataDds_autogen_timestamp_deps +LtsSessionData_autogen +LtsSessionData_autogen_timestamp_deps +LtsSession_autogen +LtsSession_autogen_timestamp_deps +LtsTimeline +LtsTimelineTest +LtsTimelineTest_autogen +LtsTimelineTest_autogen_timestamp_deps +LtsTimeline_autogen +LtsTimeline_autogen_timestamp_deps +LtsUtilsCore +LtsUtilsCore_autogen +LtsUtilsCore_autogen_timestamp_deps +LtsUtilsDds +LtsUtilsDds_autogen +LtsUtilsDds_autogen_timestamp_deps +LtsUtilsGuiConnectDialog +LtsUtilsGuiConnectDialog_autogen +LtsUtilsGuiConnectDialog_autogen_timestamp_deps +LtsUtilsGuiDds +LtsUtilsGuiDds_autogen +LtsUtilsGuiDds_autogen_timestamp_deps +LtsUtilsGuiStyleManager +LtsUtilsGuiStyleManager_autogen +LtsUtilsGuiStyleManager_autogen_timestamp_deps +LtsUtilsSettings +LtsUtilsSettings_autogen +LtsUtilsSettings_autogen_timestamp_deps +LtsVirtualKeyboard +LtsVirtualKeyboard_autogen +LtsVirtualKeyboard_autogen_timestamp_deps +LtsWebSocketClient +LtsWebSocketClient_autogen +LtsWebSocketClient_autogen_timestamp_deps +LtsWebSocketCommon +LtsWebSocketCommon_autogen +LtsWebSocketCommon_autogen_timestamp_deps +LtsWebSocketServer +LtsWebSocketServer_autogen +LtsWebSocketServer_autogen_timestamp_deps +LtsWidgets +LtsWidgets_autogen +LtsWidgets_autogen_timestamp_deps +MdmDataPlugin +MdmDataPlugin_autogen +MdmDataPlugin_autogen_timestamp_deps +MdmMeteoDataGuiPlugin +MdmMeteoDataGuiPlugin_autogen +MdmMeteoDataGuiPlugin_autogen_timestamp_deps +MrkCommon +MrkCommon_autogen +MrkCommon_autogen_timestamp_deps +MrkDataPlugin +MrkDataPlugin_autogen +MrkDataPlugin_autogen_timestamp_deps +MrkEditGuiPlugin +MrkEditGuiPlugin_autogen +MrkEditGuiPlugin_autogen_timestamp_deps +MsgDataPlugin +MsgDataPlugin_autogen +MsgDataPlugin_autogen_timestamp_deps +MsgMessageingGuiPlugin +MsgMessageingGuiPlugin_autogen +MsgMessageingGuiPlugin_autogen_timestamp_deps +MvsVideoTeamGuiPlugin +MvsVideoTeamGuiPlugin_autogen +MvsVideoTeamGuiPlugin_autogen_timestamp_deps +NGLLogger +NGLLogger_autogen +NGLLogger_autogen_timestamp_deps +Nightly +NightlyBuild +NightlyConfigure +NightlyCoverage +NightlyMemCheck +NightlyMemoryCheck +NightlyStart +NightlySubmit +NightlyTest +NightlyUpdate +NmeNotificationGuiPlugin +NmeNotificationGuiPlugin_autogen +NmeNotificationGuiPlugin_autogen_timestamp_deps +NomDataPlugin +NomDataPlugin_autogen +NomDataPlugin_autogen_timestamp_deps +NomEditGuiPlugin +NomEditGuiPlugin_autogen +NomEditGuiPlugin_autogen_timestamp_deps +ObdBaseDownloaderGuiPlugin +ObdBaseDownloaderGuiPlugin_autogen +ObdBaseDownloaderGuiPlugin_autogen_timestamp_deps +ObdDataPlugin +ObdDataPlugin_autogen +ObdDataPlugin_autogen_timestamp_deps +OperatorApplication +OperatorApplication_autogen +OperatorApplication_autogen_timestamp_deps +OpmChangePasswordGui +OpmChangePasswordGui_autogen +OpmChangePasswordGui_autogen_timestamp_deps +OpmComboBoxGuiPlugin +OpmComboBoxGuiPlugin_autogen +OpmComboBoxGuiPlugin_autogen_timestamp_deps +OpmDataPlugin +OpmDataPlugin_autogen +OpmDataPlugin_autogen_timestamp_deps +OpmEditGuiPlugin +OpmEditGuiPlugin_autogen +OpmEditGuiPlugin_autogen_timestamp_deps +OpmLoginGuiPlugin +OpmLoginGuiPlugin_autogen +OpmLoginGuiPlugin_autogen_timestamp_deps +OpmOverviewGuiPlugin +OpmOverviewGuiPlugin_autogen +OpmOverviewGuiPlugin_autogen_timestamp_deps +OpmSettingsGuiPlugin +OpmSettingsGuiPlugin_autogen +OpmSettingsGuiPlugin_autogen_timestamp_deps +OscDataPlugin +OscDataPlugin_autogen +OscDataPlugin_autogen_timestamp_deps +OscParticipantInfoGuiPlugin +OscParticipantInfoGuiPlugin_autogen +OscParticipantInfoGuiPlugin_autogen_timestamp_deps +OscSystemGuiPlugin +OscSystemGuiPlugin_autogen +OscSystemGuiPlugin_autogen_timestamp_deps +OscTerminalGuiPlugin +OscTerminalGuiPlugin_autogen +OscTerminalGuiPlugin_autogen_timestamp_deps +ParticipantDataGenerator +ParticipantDataGenerator_autogen +ParticipantDataGenerator_autogen_timestamp_deps +PdmChargeTableGui +PdmChargeTableGuiPlugin +PdmChargeTableGuiPlugin_autogen +PdmChargeTableGuiPlugin_autogen_timestamp_deps +PdmChargeTableGui_autogen +PdmChargeTableGui_autogen_timestamp_deps +PdmComboBoxGui +PdmComboBoxGuiPlugin +PdmComboBoxGuiPlugin_autogen +PdmComboBoxGuiPlugin_autogen_timestamp_deps +PdmComboBoxGui_autogen +PdmComboBoxGui_autogen_timestamp_deps +PdmDataPlugin +PdmDataPlugin_autogen +PdmDataPlugin_autogen_timestamp_deps +PlanOverlaysGuiPlugin +PlanOverlaysGuiPlugin_autogen +PlanOverlaysGuiPlugin_autogen_timestamp_deps +PpmComboBoxGui +PpmComboBoxGuiPlugin +PpmComboBoxGuiPlugin_autogen +PpmComboBoxGuiPlugin_autogen_timestamp_deps +PpmComboBoxGui_autogen +PpmComboBoxGui_autogen_timestamp_deps +PpmCommon +PpmCommon_autogen +PpmCommon_autogen_timestamp_deps +PpmDataPlugin +PpmDataPlugin_autogen +PpmDataPlugin_autogen_timestamp_deps +PpmOperationalPlaningGuiPlugin +PpmOperationalPlaningGuiPlugin_autogen +PpmOperationalPlaningGuiPlugin_autogen_timestamp_deps +PpmParticipantEditGuiPlugin +PpmParticipantEditGuiPlugin_autogen +PpmParticipantEditGuiPlugin_autogen_timestamp_deps +PpmParticipantInfoGuiPlugin +PpmParticipantInfoGuiPlugin_autogen +PpmParticipantInfoGuiPlugin_autogen_timestamp_deps +PpmParticipantSelectionGui +PpmParticipantSelectionGui_autogen +PpmParticipantSelectionGui_autogen_timestamp_deps +PpmParticipantTemplatesGuiPlugin +PpmParticipantTemplatesGuiPlugin_autogen +PpmParticipantTemplatesGuiPlugin_autogen_timestamp_deps +PpmPartyEditGuiPlugin +PpmPartyEditGuiPlugin_autogen +PpmPartyEditGuiPlugin_autogen_timestamp_deps +PpmTypeEditGuiPlugin +PpmTypeEditGuiPlugin_autogen +PpmTypeEditGuiPlugin_autogen_timestamp_deps +PpmUasGuiPlugin +PpmUasGuiPlugin_autogen +PpmUasGuiPlugin_autogen_timestamp_deps +PreDataPlugin +PreDataPlugin_autogen +PreDataPlugin_autogen_timestamp_deps +PreEditGuiPlugin +PreEditGuiPlugin_autogen +PreEditGuiPlugin_autogen_timestamp_deps +PreGuiCommon +PreGuiCommon_autogen +PreGuiCommon_autogen_timestamp_deps +PreGuiScriptCommon +PreGuiScriptCommon_autogen +PreGuiScriptCommon_autogen_timestamp_deps +PreScriptTimelineGuiPlugin +PreScriptTimelineGuiPlugin_autogen +PreScriptTimelineGuiPlugin_autogen_timestamp_deps +ProjectAhtcPlugin +ProjectAhtcPlugin_autogen +ProjectAhtcPlugin_autogen_timestamp_deps +ProjectEtsPlugin +ProjectEtsPlugin_autogen +ProjectEtsPlugin_autogen_timestamp_deps +ProjectL400P2Plugin +ProjectL400P2Plugin_autogen +ProjectL400P2Plugin_autogen_timestamp_deps +ProjectPluginInterface +ProjectPluginInterface_autogen +ProjectPluginInterface_autogen_timestamp_deps +ProjectQatarPlugin +ProjectQatarPlugin_autogen +ProjectQatarPlugin_autogen_timestamp_deps +ProjectSettingsEditor +ProjectSettingsEditor_autogen +ProjectSettingsEditor_autogen_timestamp_deps +PrtCnv +PrtCnvLastTest +PrtCnvLastTest_autogen +PrtCnvLastTest_autogen_timestamp_deps +PrtCnvLib +PrtCnvLib_autogen +PrtCnvLib_autogen_timestamp_deps +PrtCnv_autogen +PrtCnv_autogen_timestamp_deps +PwsCommon +PwsCommon_autogen +PwsCommon_autogen_timestamp_deps +PwsGuiPlugin +PwsGuiPlugin_autogen +PwsGuiPlugin_autogen_timestamp_deps +RecordReplayPlugin +RecordReplayPlugin_autogen +RecordReplayPlugin_autogen_timestamp_deps +RepDataPlugin +RepDataPlugin_autogen +RepDataPlugin_autogen_timestamp_deps +RestClientUi +RestClientUi_autogen +RestClientUi_autogen_timestamp_deps +RmeDarkStylePlugin +RmeDarkStylePlugin_autogen +RmeDarkStylePlugin_autogen_timestamp_deps +RmeLightStylePlugin +RmeLightStylePlugin_autogen +RmeLightStylePlugin_autogen_timestamp_deps +RmeLightStyleQrc +RmeLightStyleQrc_autogen +RmeLightStyleQrc_autogen_timestamp_deps +SaaDataPlugin +SaaDataPlugin_autogen +SaaDataPlugin_autogen_timestamp_deps +SaaGuiPlugin +SaaGuiPlugin_autogen +SaaGuiPlugin_autogen_timestamp_deps +ScmDataPlugin +ScmDataPlugin_autogen +ScmDataPlugin_autogen_timestamp_deps +ScmEditGuiPlugin +ScmEditGuiPlugin_autogen +ScmEditGuiPlugin_autogen_timestamp_deps +ScrScreenRecordingGuiPlugin +ScrScreenRecordingGuiPlugin_autogen +ScrScreenRecordingGuiPlugin_autogen_timestamp_deps +ScreenIdShow +ScreenIdShow_autogen +ScreenIdShow_autogen_timestamp_deps +SerialToTcpConverter +SerialToTcpConverter_autogen +SerialToTcpConverter_autogen_timestamp_deps +SettingsRemover +SettingsRemover_autogen +SettingsRemover_autogen_timestamp_deps +SitMapReplayTest +SitMapReplayTest_autogen +SitMapReplayTest_autogen_timestamp_deps +SitmapDds +SitmapDds_autogen +SitmapDds_autogen_timestamp_deps +SitmapGuiPlugin +SitmapGuiPlugin_autogen +SitmapGuiPlugin_autogen_timestamp_deps +SituationMapScriptFilterGuiPlugin +SituationMapScriptFilterGuiPlugin_autogen +SituationMapScriptFilterGuiPlugin_autogen_timestamp_deps +SituationReplaySqlite +SituationReplaySqlite_autogen +SituationReplaySqlite_autogen_timestamp_deps +Splash +Splash_autogen +Splash_autogen_timestamp_deps +SrmDataPlugin +SrmDataPlugin_autogen +SrmDataPlugin_autogen_timestamp_deps +SrmReplayManagementGuiPlugin +SrmReplayManagementGuiPlugin_autogen +SrmReplayManagementGuiPlugin_autogen_timestamp_deps +SrpDataPlugin +SrpDataPlugin_autogen +SrpDataPlugin_autogen_timestamp_deps +SrpReplayControlGuiPlugin +SrpReplayControlGuiPlugin_autogen +SrpReplayControlGuiPlugin_autogen_timestamp_deps +StylePluginInterface +StylePluginInterface_autogen +StylePluginInterface_autogen_timestamp_deps +TabBarTabStyle +TabBarTabStyle_autogen +TabBarTabStyle_autogen_timestamp_deps +TabDataPlugin +TabDataPlugin_autogen +TabDataPlugin_autogen_timestamp_deps +TabNotificationGuiPlugin +TabNotificationGuiPlugin_autogen +TabNotificationGuiPlugin_autogen_timestamp_deps +TabOcSfmMessagingGuiPlugin +TabOcSfmMessagingGuiPlugin_autogen +TabOcSfmMessagingGuiPlugin_autogen_timestamp_deps +TabocDataPlugin +TabocDataPlugin_autogen +TabocDataPlugin_autogen_timestamp_deps +TabocGuiPlugin +TabocGuiPlugin_autogen +TabocGuiPlugin_autogen_timestamp_deps +Tetra_Interface +Tetra_Interface_autogen +Tetra_Interface_autogen_timestamp_deps +Tetra_dgps_simulator +Tetra_dgps_simulator_autogen +Tetra_dgps_simulator_autogen_timestamp_deps +TgtDataPlugin +TgtDataPlugin_autogen +TgtDataPlugin_autogen_timestamp_deps +TgtTargetGuiPlugin +TgtTargetGuiPlugin_autogen +TgtTargetGuiPlugin_autogen_timestamp_deps +Thp2Common +Thp2CommonCore +Thp2CommonCore_autogen +Thp2CommonCore_autogen_timestamp_deps +Thp2Common_autogen +Thp2Common_autogen_timestamp_deps +Thp2ManagementGuiPlugin +Thp2ManagementGuiPlugin_autogen +Thp2ManagementGuiPlugin_autogen_timestamp_deps +Thp2UsbManagementGuiPlugin +Thp2UsbManagementGuiPlugin_autogen +Thp2UsbManagementGuiPlugin_autogen_timestamp_deps +TlnDataPlugin +TlnDataPluginInterface +TlnDataPluginInterface_autogen +TlnDataPluginInterface_autogen_timestamp_deps +TlnDataPlugin_autogen +TlnDataPlugin_autogen_timestamp_deps +TlnEventTimelineGuiPlugin +TlnEventTimelineGuiPlugin_autogen +TlnEventTimelineGuiPlugin_autogen_timestamp_deps +TopicEditorBase +TopicEditorBase_autogen +TopicEditorBase_autogen_timestamp_deps +TopicReplayInterface +TopicReplayInterface_autogen +TopicReplayInterface_autogen_timestamp_deps +Trajectory +Trajectory_autogen +Trajectory_autogen_timestamp_deps +VkbPlugin +VkbPlugin_autogen +VkbPlugin_autogen_timestamp_deps +VulnerabilityStateGenerator +VulnerabilityStateGenerator_autogen +VulnerabilityStateGenerator_autogen_timestamp_deps +WhmDataPlugin +WhmDataPlugin_autogen +WhmDataPlugin_autogen_timestamp_deps +WhmGuiPlugin +WhmGuiPlugin_autogen +WhmGuiPlugin_autogen_timestamp_deps +aarApp +aarApp_autogen +aarApp_autogen_timestamp_deps +advancedSymbologyXML +advancedSymbologyXML_autogen +advancedSymbologyXML_autogen_timestamp_deps +aesModuleTestEffectCluster +aesModuleTestEffectCluster_autogen +aesModuleTestEffectCluster_autogen_timestamp_deps +aesModuleTestExplosionCluster +aesModuleTestExplosionCluster_autogen +aesModuleTestExplosionCluster_autogen_timestamp_deps +aesModuleTestLimits +aesModuleTestLimits_autogen +aesModuleTestLimits_autogen_timestamp_deps +aesModuleTestOthers +aesModuleTestOthers_autogen +aesModuleTestOthers_autogen_timestamp_deps +aesRecordReplayPlugin +aesRecordReplayPlugin_autogen +aesRecordReplayPlugin_autogen_timestamp_deps +aesTopicTypePlugin +aesTopicTypePlugin_autogen +aesTopicTypePlugin_autogen_timestamp_deps +aesUnitTestBasics +aesUnitTestBasics_autogen +aesUnitTestBasics_autogen_timestamp_deps +aesUnitTestFireAutomaton +aesUnitTestFireAutomaton_autogen +aesUnitTestFireAutomaton_autogen_timestamp_deps +aesUnitTestPolygons +aesUnitTestPolygons_autogen +aesUnitTestPolygons_autogen_timestamp_deps +aesUnitTestTneAlgorithmen +aesUnitTestTneAlgorithmen_autogen +aesUnitTestTneAlgorithmen_autogen_timestamp_deps +aesUnitTestTrajectory +aesUnitTestTrajectorySplitter +aesUnitTestTrajectorySplitter_autogen +aesUnitTestTrajectorySplitter_autogen_timestamp_deps +aesUnitTestTrajectory_autogen +aesUnitTestTrajectory_autogen_timestamp_deps +aes_convert_mine_area +aes_convert_mine_area_autogen +aes_convert_mine_area_autogen_timestamp_deps +aes_crypt_test +aes_crypt_test_autogen +aes_crypt_test_autogen_timestamp_deps +aes_statemachine_test +aes_statemachine_test_autogen +aes_statemachine_test_autogen_timestamp_deps +aes_test_air_support_impact +aes_test_air_support_impact_autogen +aes_test_air_support_impact_autogen_timestamp_deps +aes_test_base +aes_test_base_autogen +aes_test_base_autogen_timestamp_deps +aes_test_bccontamination +aes_test_bccontamination_autogen +aes_test_bccontamination_autogen_timestamp_deps +aes_test_booby_trap +aes_test_booby_trap_autogen +aes_test_booby_trap_autogen_timestamp_deps +aes_test_charge_administration +aes_test_charge_administration_autogen +aes_test_charge_administration_autogen_timestamp_deps +aes_test_danger_area +aes_test_danger_area_autogen +aes_test_danger_area_autogen_timestamp_deps +aes_test_explosion_area +aes_test_explosion_area_autogen +aes_test_explosion_area_autogen_timestamp_deps +aes_test_explosion_area_bulk +aes_test_explosion_area_bulk_autogen +aes_test_explosion_area_bulk_autogen_timestamp_deps +aes_test_explosion_cluster +aes_test_explosion_cluster_autogen +aes_test_explosion_cluster_autogen_timestamp_deps +aes_test_explosion_single +aes_test_explosion_single_autogen +aes_test_explosion_single_autogen_timestamp_deps +aes_test_gas_pipe +aes_test_gas_pipe_autogen +aes_test_gas_pipe_autogen_timestamp_deps +aes_test_mine_area +aes_test_mine_area_autogen +aes_test_mine_area_autogen_timestamp_deps +aes_test_ncontamination +aes_test_ncontamination_autogen +aes_test_ncontamination_autogen_timestamp_deps +aes_test_off_route_mine +aes_test_off_route_mine_autogen +aes_test_off_route_mine_autogen_timestamp_deps +aes_utils_test +aes_utils_test_autogen +aes_utils_test_autogen_timestamp_deps +all +almRecordReplayPlugin +almRecordReplayPlugin_autogen +almRecordReplayPlugin_autogen_timestamp_deps +almTopicTypePlugin +almTopicTypePlugin_autogen +almTopicTypePlugin_autogen_timestamp_deps +asmTests +asmTests_autogen +asmTests_autogen_timestamp_deps +asmTopicTypePlugin +asmTopicTypePlugin_autogen +asmTopicTypePlugin_autogen_timestamp_deps +avaTestServer +avaTestServer_autogen +avaTestServer_autogen_timestamp_deps +avaTestServer_static +avaTestServer_static_autogen +avaTestServer_static_autogen_timestamp_deps +avmCombatNetRadioGuiPlugin +avmCombatNetRadioGuiPlugin_autogen +avmCombatNetRadioGuiPlugin_autogen_timestamp_deps +avmFtTests +avmFtTests_autogen +avmFtTests_autogen_timestamp_deps +avmMenuEditGuiPlugin +avmMenuEditGuiPlugin_autogen +avmMenuEditGuiPlugin_autogen_timestamp_deps +avmTests +avmTests_autogen +avmTests_autogen_timestamp_deps +avmTopicTypePlugin +avmTopicTypePlugin_autogen +avmTopicTypePlugin_autogen_timestamp_deps +avmTrainingVoiceGuiPlugin +avmTrainingVoiceGuiPlugin_autogen +avmTrainingVoiceGuiPlugin_autogen_timestamp_deps +avmVcaTests +avmVcaTests_autogen +avmVcaTests_autogen_timestamp_deps +bldRecordReplayPlugin +bldRecordReplayPlugin_autogen +bldRecordReplayPlugin_autogen_timestamp_deps +bldTopicTypePlugin +bldTopicTypePlugin_autogen +bldTopicTypePlugin_autogen_timestamp_deps +bld_vwm_math_unit_test +bld_vwm_math_unit_test_autogen +bld_vwm_math_unit_test_autogen_timestamp_deps +cesPluginArtillerySound +cesPluginArtillerySound_autogen +cesPluginArtillerySound_autogen_timestamp_deps +cesPluginBasic +cesPluginBasic_autogen +cesPluginBasic_autogen_timestamp_deps +cesPluginCES_FunctionalAreas +cesPluginCES_FunctionalAreas_autogen +cesPluginCES_FunctionalAreas_autogen_timestamp_deps +cesPluginCES_Jamming +cesPluginCES_Jamming_autogen +cesPluginCES_Jamming_autogen_timestamp_deps +cesPluginCES_MissionPlan +cesPluginCES_MissionPlan_autogen +cesPluginCES_MissionPlan_autogen_timestamp_deps +cesPluginCES_NBC +cesPluginCES_NBC_autogen +cesPluginCES_NBC_autogen_timestamp_deps +cesPluginCesBuildings +cesPluginCesBuildings_autogen +cesPluginCesBuildings_autogen_timestamp_deps +cesPluginExplosions +cesPluginExplosions_autogen +cesPluginExplosions_autogen_timestamp_deps +cesPluginGeoPairing +cesPluginGeoPairing_autogen +cesPluginGeoPairing_autogen_timestamp_deps +cesPluginMineAreas +cesPluginMineAreas_autogen +cesPluginMineAreas_autogen_timestamp_deps +cesPluginMineLayingArtillery +cesPluginMineLayingArtillery_autogen +cesPluginMineLayingArtillery_autogen_timestamp_deps +cesPluginParticipantBuildings +cesPluginParticipantBuildings_autogen +cesPluginParticipantBuildings_autogen_timestamp_deps +cesPluginVirtualMines +cesPluginVirtualMines_autogen +cesPluginVirtualMines_autogen_timestamp_deps +cesRecordReplayPlugin +cesRecordReplayPlugin_autogen +cesRecordReplayPlugin_autogen_timestamp_deps +cesTests +cesTestsBlockedAreas +cesTestsBlockedAreas_autogen +cesTestsBlockedAreas_autogen_timestamp_deps +cesTestsBoobyTrap +cesTestsBoobyTrap_autogen +cesTestsBoobyTrap_autogen_timestamp_deps +cesTestsGasPipe +cesTestsGasPipe_autogen +cesTestsGasPipe_autogen_timestamp_deps +cesTestsGeopairing +cesTestsGeopairingBsp +cesTestsGeopairingBsp_autogen +cesTestsGeopairingBsp_autogen_timestamp_deps +cesTestsGeopairing_autogen +cesTestsGeopairing_autogen_timestamp_deps +cesTestsMineAreas +cesTestsMineAreas_autogen +cesTestsMineAreas_autogen_timestamp_deps +cesTestsOwnership +cesTestsOwnership_autogen +cesTestsOwnership_autogen_timestamp_deps +cesTestsSimulatedMovement +cesTestsSimulatedMovement_autogen +cesTestsSimulatedMovement_autogen_timestamp_deps +cesTestsSmart +cesTestsSmart_autogen +cesTestsSmart_autogen_timestamp_deps +cesTests_autogen +cesTests_autogen_timestamp_deps +cesTopicTypePlugin +cesTopicTypePlugin_autogen +cesTopicTypePlugin_autogen_timestamp_deps +clean +cmoTopicTypePlugin +cmoTopicTypePlugin_autogen +cmoTopicTypePlugin_autogen_timestamp_deps +codTopicTypePlugin +codTopicTypePlugin_autogen +codTopicTypePlugin_autogen_timestamp_deps +codegen_base +codegen_base_autogen +codegen_base_autogen_timestamp_deps +codegen_grantlee +codegen_grantlee_autogen +codegen_grantlee_autogen_timestamp_deps +codegen_gui +codegen_gui_autogen +codegen_gui_autogen_timestamp_deps +coreTopicTypePlugin +coreTopicTypePlugin_autogen +coreTopicTypePlugin_autogen_timestamp_deps +ctime +ctime_autogen +ctime_autogen_timestamp_deps +dbAdminCopyExercise +dbAdminCopyExercise_autogen +dbAdminCopyExercise_autogen_timestamp_deps +dbAdministration +dbAdministration_autogen +dbAdministration_autogen_timestamp_deps +dbUpdate +dbUpdate_autogen +dbUpdate_autogen_timestamp_deps +ddsDataTopicTests +ddsDataTopicTests_autogen +ddsDataTopicTests_autogen_timestamp_deps +ddsDataTopicTests_gtest +ddsDataTopicTests_gtest_autogen +ddsDataTopicTests_gtest_autogen_timestamp_deps +ddsDataTopicTests_smoke +ddsDataTopicTests_smoke_autogen +ddsDataTopicTests_smoke_autogen_timestamp_deps +ddsFunctionTopicTests +ddsFunctionTopicTests_autogen +ddsFunctionTopicTests_autogen_timestamp_deps +ddsFunctionTopicTests_gtest +ddsFunctionTopicTests_gtest_autogen +ddsFunctionTopicTests_gtest_autogen_timestamp_deps +ddsFunctionTopicTests_smoke +ddsFunctionTopicTests_smoke_autogen +ddsFunctionTopicTests_smoke_autogen_timestamp_deps +ddsGenericDataTests +ddsGenericDataTests_autogen +ddsGenericDataTests_autogen_timestamp_deps +ddsGenericDataTests_gtest +ddsGenericDataTests_gtest_autogen +ddsGenericDataTests_gtest_autogen_timestamp_deps +ddsGenericDataTests_smoke +ddsGenericDataTests_smoke_autogen +ddsGenericDataTests_smoke_autogen_timestamp_deps +ddsQoS +ddsQoS_autogen +ddsQoS_autogen_timestamp_deps +ddsconnector +ddsconnector_autogen +ddsconnector_autogen_timestamp_deps +ddscore +ddscore_autogen +ddscore_autogen_timestamp_deps +ddsftccore +ddsftccore_autogen +ddsftccore_autogen_timestamp_deps +ddsfts +ddsfts_autogen +ddsfts_autogen_timestamp_deps +ddsgen +ddsgen_autogen +ddsgen_autogen_timestamp_deps +ddsut_common +ddsut_common_autogen +ddsut_common_autogen_timestamp_deps +ddsview +ddsview_autogen +ddsview_autogen_timestamp_deps +depend +displayPanelSimulator +displayPanelSimulator_autogen +displayPanelSimulator_autogen_timestamp_deps +doxygen_Lts +doxygen_TDS +doxygen_TDS2025 +edit_cache +eemTests +eemTests_autogen +eemTests_autogen_timestamp_deps +eemTopicTypePlugin +eemTopicTypePlugin_autogen +eemTopicTypePlugin_autogen_timestamp_deps +egcuSimulator +egcuSimulator_autogen +egcuSimulator_autogen_timestamp_deps +escTopicTypePlugin +escTopicTypePlugin_autogen +escTopicTypePlugin_autogen_timestamp_deps +esmTopicTypePlugin +esmTopicTypePlugin_autogen +esmTopicTypePlugin_autogen_timestamp_deps +evlTests +evlTests_autogen +evlTests_autogen_timestamp_deps +evlTopicTypePlugin +evlTopicTypePlugin_autogen +evlTopicTypePlugin_autogen_timestamp_deps +exmDtUnitTest +exmDtUnitTest_autogen +exmDtUnitTest_autogen_timestamp_deps +exmStateMachineTest +exmStateMachineTest_autogen +exmStateMachineTest_autogen_timestamp_deps +exmTests +exmTests_autogen +exmTests_autogen_timestamp_deps +exmTopicTypePlugin +exmTopicTypePlugin_autogen +exmTopicTypePlugin_autogen_timestamp_deps +flmTests +flmTests_autogen +flmTests_autogen_timestamp_deps +flmTopicTypePlugin +flmTopicTypePlugin_autogen +flmTopicTypePlugin_autogen_timestamp_deps +fltTopicTypePlugin +fltTopicTypePlugin_autogen +fltTopicTypePlugin_autogen_timestamp_deps +gimRecordReplayPlugin +gimRecordReplayPlugin_autogen +gimRecordReplayPlugin_autogen_timestamp_deps +gimTopicTypePlugin +gimTopicTypePlugin_autogen +gimTopicTypePlugin_autogen_timestamp_deps +gmpTests +gmpTests_autogen +gmpTests_autogen_timestamp_deps +gnaRecordReplayPlugin +gnaRecordReplayPlugin_autogen +gnaRecordReplayPlugin_autogen_timestamp_deps +gnaTopicTypePlugin +gnaTopicTypePlugin_autogen +gnaTopicTypePlugin_autogen_timestamp_deps +grantlee_parser_smoke +grantlee_parser_smoke_autogen +grantlee_parser_smoke_autogen_timestamp_deps +httq +httq_autogen +httq_autogen_timestamp_deps +install +ismImportBuildings +ismImportBuildings_autogen +ismImportBuildings_autogen_timestamp_deps +ismTests +ismTests_autogen +ismTests_autogen_timestamp_deps +ismTopicTypePlugin +ismTopicTypePlugin_autogen +ismTopicTypePlugin_autogen_timestamp_deps +list_install_components +localDomainFinder +localDomainFinder_autogen +localDomainFinder_autogen_timestamp_deps +lonLat2UtmTest +lonLat2UtmTest_autogen +lonLat2UtmTest_autogen_timestamp_deps +lonlat2mgrs +lonlat2mgrs_autogen +lonlat2mgrs_autogen_timestamp_deps +ltsCoordWidget +ltsCoordWidget_autogen +ltsCoordWidget_autogen_timestamp_deps +lts_coord_trans_unit_test +lts_coord_trans_unit_test_autogen +lts_coord_trans_unit_test_autogen_timestamp_deps +lts_coord_widget_test +lts_coord_widget_test_autogen +lts_coord_widget_test_autogen_timestamp_deps +ltswidgetsplugin +ltswidgetsplugin_autogen +ltswidgetsplugin_autogen_timestamp_deps +mdmTopicTypePlugin +mdmTopicTypePlugin_autogen +mdmTopicTypePlugin_autogen_timestamp_deps +mgrs2lonlat +mgrs2lonlat_autogen +mgrs2lonlat_autogen_timestamp_deps +migration_tests +migration_tests_autogen +migration_tests_autogen_timestamp_deps +mrkTests +mrkTests_autogen +mrkTests_autogen_timestamp_deps +mrkTopicTypePlugin +mrkTopicTypePlugin_autogen +mrkTopicTypePlugin_autogen_timestamp_deps +msgTopicTypePlugin +msgTopicTypePlugin_autogen +msgTopicTypePlugin_autogen_timestamp_deps +mvsTests +mvsTests_autogen +mvsTests_autogen_timestamp_deps +ngl_codegen +ngl_codegen_autogen +ngl_codegen_autogen_timestamp_deps +nglapplication +nglapplication_autogen +nglapplication_autogen_timestamp_deps +nglcomp_test +nglcomp_test_autogen +nglcomp_test_autogen_timestamp_deps +nglcompression +nglcompression_autogen +nglcompression_autogen_timestamp_deps +nglcoreapplication +nglcoreapplication_autogen +nglcoreapplication_autogen_timestamp_deps +ngldb +ngldb_autogen +ngldb_autogen_timestamp_deps +nglguiapplication +nglguiapplication_autogen +nglguiapplication_autogen_timestamp_deps +nglsettings +nglsettings_autogen +nglsettings_autogen_timestamp_deps +nglsingleapplication +nglsingleapplication_autogen +nglsingleapplication_autogen_timestamp_deps +nglsinglecoreapplication +nglsinglecoreapplication_autogen +nglsinglecoreapplication_autogen_timestamp_deps +ngltools +ngltools_autogen +ngltools_autogen_timestamp_deps +ngltools_qt_smoke +ngltools_qt_smoke_autogen +ngltools_qt_smoke_autogen_timestamp_deps +ngltranslator +ngltranslator_autogen +ngltranslator_autogen_timestamp_deps +nglwidgets +nglwidgets_autogen +nglwidgets_autogen_timestamp_deps +nomTests +nomTests_autogen +nomTests_autogen_timestamp_deps +nomTopicTypePlugin +nomTopicTypePlugin_autogen +nomTopicTypePlugin_autogen_timestamp_deps +obdTopicTypePlugin +obdTopicTypePlugin_autogen +obdTopicTypePlugin_autogen_timestamp_deps +opmTests +opmTests_autogen +opmTests_autogen_timestamp_deps +opmTopicTypePlugin +opmTopicTypePlugin_autogen +opmTopicTypePlugin_autogen_timestamp_deps +oscTopicTypePlugin +oscTopicTypePlugin_autogen +oscTopicTypePlugin_autogen_timestamp_deps +ossRecordReplayPlugin +ossRecordReplayPlugin_autogen +ossRecordReplayPlugin_autogen_timestamp_deps +ossTopicTypePlugin +ossTopicTypePlugin_autogen +ossTopicTypePlugin_autogen_timestamp_deps +pdmTests +pdmTests_autogen +pdmTests_autogen_timestamp_deps +pdmTopicTypePlugin +pdmTopicTypePlugin_autogen +pdmTopicTypePlugin_autogen_timestamp_deps +picture_editing_test +picture_editing_test_autogen +picture_editing_test_autogen_timestamp_deps +planOverlaysTest +planOverlaysTest_autogen +planOverlaysTest_autogen_timestamp_deps +ppmRecordReplayPlugin +ppmRecordReplayPlugin_autogen +ppmRecordReplayPlugin_autogen_timestamp_deps +ppmTests +ppmTests_autogen +ppmTests_autogen_timestamp_deps +ppmTopicTypePlugin +ppmTopicTypePlugin_autogen +ppmTopicTypePlugin_autogen_timestamp_deps +preTests +preTests_autogen +preTests_autogen_timestamp_deps +preTopicTypePlugin +preTopicTypePlugin_autogen +preTopicTypePlugin_autogen_timestamp_deps +qledline +qledline_autogen +qledline_autogen_timestamp_deps +qledmatrix +qledmatrix_autogen +qledmatrix_autogen_timestamp_deps +qtsa_common +qtsa_common_autogen +qtsa_common_autogen_timestamp_deps +qtsingleapplication +qtsingleapplication_autogen +qtsingleapplication_autogen_timestamp_deps +qtsinglecoreapplication +qtsinglecoreapplication_autogen +qtsinglecoreapplication_autogen_timestamp_deps +rebuild_cache +repTests +repTests_autogen +repTests_autogen_timestamp_deps +repTopicTypePlugin +repTopicTypePlugin_autogen +repTopicTypePlugin_autogen_timestamp_deps +rscCommon +rscCommon_autogen +rscCommon_autogen_timestamp_deps +saaTelegrams +saaTelegrams_autogen +saaTelegrams_autogen_timestamp_deps +scmDtUnitTest +scmDtUnitTest_autogen +scmDtUnitTest_autogen_timestamp_deps +scmTopicTypePlugin +scmTopicTypePlugin_autogen +scmTopicTypePlugin_autogen_timestamp_deps +serialtest +serialtest_autogen +serialtest_autogen_timestamp_deps +situationMapCommon +situationMapCommon_autogen +situationMapCommon_autogen_timestamp_deps +situationMapElevationMap +situationMapElevationMap_autogen +situationMapElevationMap_autogen_timestamp_deps +somTopicTypePlugin +somTopicTypePlugin_autogen +somTopicTypePlugin_autogen_timestamp_deps +sqlbrowser +sqlbrowser_autogen +sqlbrowser_autogen_timestamp_deps +srpDtTests +srpDtTests_autogen +srpDtTests_autogen_timestamp_deps +srpFtTests +srpFtTests_autogen +srpFtTests_autogen_timestamp_deps +srpTopicTypePlugin +srpTopicTypePlugin_autogen +srpTopicTypePlugin_autogen_timestamp_deps +stime +stime_autogen +stime_autogen_timestamp_deps +stylePluginTest +stylePluginTestApp +stylePluginTestApp_autogen +stylePluginTestApp_autogen_timestamp_deps +stylePluginTest_autogen +stylePluginTest_autogen_timestamp_deps +svcAesClient +svcAesClient_autogen +svcAesClient_autogen_timestamp_deps +svcAesCommon +svcAesCommon_autogen +svcAesCommon_autogen_timestamp_deps +svcAesServer +svcAesServer_autogen +svcAesServer_autogen_timestamp_deps +svcAlmClient +svcAlmClient_autogen +svcAlmClient_autogen_timestamp_deps +svcAlmCommon +svcAlmCommon_autogen +svcAlmCommon_autogen_timestamp_deps +svcAlmServer +svcAlmServer_autogen +svcAlmServer_autogen_timestamp_deps +svcAreaEffectSimulation +svcAreaEffectSimulation_autogen +svcAreaEffectSimulation_autogen_timestamp_deps +svcAsmClient +svcAsmClient_autogen +svcAsmClient_autogen_timestamp_deps +svcAsmCommon +svcAsmCommon_autogen +svcAsmCommon_autogen_timestamp_deps +svcAsmServer +svcAsmServer_autogen +svcAsmServer_autogen_timestamp_deps +svcAssetManagement +svcAssetManagement_autogen +svcAssetManagement_autogen_timestamp_deps +svcAudioVideoManagement +svcAudioVideoManagement_autogen +svcAudioVideoManagement_autogen_timestamp_deps +svcAvmClient +svcAvmClient_autogen +svcAvmClient_autogen_timestamp_deps +svcAvmCommon +svcAvmCommon_autogen +svcAvmCommon_autogen_timestamp_deps +svcAvmServer +svcAvmServer_autogen +svcAvmServer_autogen_timestamp_deps +svcBldClient +svcBldClient_autogen +svcBldClient_autogen_timestamp_deps +svcBldCommon +svcBldCommon_autogen +svcBldCommon_autogen_timestamp_deps +svcBldServer +svcBldServer_autogen +svcBldServer_autogen_timestamp_deps +svcBuildings +svcBuildings_autogen +svcBuildings_autogen_timestamp_deps +svcCentralEffectSimulation +svcCentralEffectSimulation_autogen +svcCentralEffectSimulation_autogen_timestamp_deps +svcCesClient +svcCesClient_autogen +svcCesClient_autogen_timestamp_deps +svcCesCommon +svcCesCommon_autogen +svcCesCommon_autogen_timestamp_deps +svcCesDDSCommon +svcCesDDSCommon_autogen +svcCesDDSCommon_autogen_timestamp_deps +svcCesGeoPairingImpl +svcCesGeoPairingImpl_autogen +svcCesGeoPairingImpl_autogen_timestamp_deps +svcCesServer +svcCesServer_autogen +svcCesServer_autogen_timestamp_deps +svcCmoClient +svcCmoClient_autogen +svcCmoClient_autogen_timestamp_deps +svcCmoCommon +svcCmoCommon_autogen +svcCmoCommon_autogen_timestamp_deps +svcCmoServer +svcCmoServer_autogen +svcCmoServer_autogen_timestamp_deps +svcCnrHelper +svcCnrHelper_autogen +svcCnrHelper_autogen_timestamp_deps +svcCodClient +svcCodClient_autogen +svcCodClient_autogen_timestamp_deps +svcCodCommon +svcCodCommon_autogen +svcCodCommon_autogen_timestamp_deps +svcCodServer +svcCodServer_autogen +svcCodServer_autogen_timestamp_deps +svcCombatNetRadio +svcCombatNetRadio_autogen +svcCombatNetRadio_autogen_timestamp_deps +svcComponentMonitor +svcComponentMonitor_autogen +svcComponentMonitor_autogen_timestamp_deps +svcCoreClient +svcCoreClient_autogen +svcCoreClient_autogen_timestamp_deps +svcDifferentialGPS +svcDifferentialGPS_autogen +svcDifferentialGPS_autogen_timestamp_deps +svcEemClient +svcEemClient_autogen +svcEemClient_autogen_timestamp_deps +svcEemCommon +svcEemCommon_autogen +svcEemCommon_autogen_timestamp_deps +svcEemServer +svcEemServer_autogen +svcEemServer_autogen_timestamp_deps +svcEffectShowClient +svcEffectShowClient_autogen +svcEffectShowClient_autogen_timestamp_deps +svcEscClient +svcEscClient_autogen +svcEscClient_autogen_timestamp_deps +svcEscCommon +svcEscCommon_autogen +svcEscCommon_autogen_timestamp_deps +svcEscServer +svcEscServer_autogen +svcEscServer_autogen_timestamp_deps +svcEsmClient +svcEsmClient_autogen +svcEsmClient_autogen_timestamp_deps +svcEsmCommon +svcEsmCommon_autogen +svcEsmCommon_autogen_timestamp_deps +svcEsmServer +svcEsmServer_autogen +svcEsmServer_autogen_timestamp_deps +svcEvlClient +svcEvlClient_autogen +svcEvlClient_autogen_timestamp_deps +svcEvlCommon +svcEvlCommon_autogen +svcEvlCommon_autogen_timestamp_deps +svcEvlServer +svcEvlServer_autogen +svcEvlServer_autogen_timestamp_deps +svcExerciseEventManagement +svcExerciseEventManagement_autogen +svcExerciseEventManagement_autogen_timestamp_deps +svcExerciseManagement +svcExerciseManagement_autogen +svcExerciseManagement_autogen_timestamp_deps +svcExmClient +svcExmClient_autogen +svcExmClient_autogen_timestamp_deps +svcExmCommon +svcExmCommon_autogen +svcExmCommon_autogen_timestamp_deps +svcExmServer +svcExmServer_autogen +svcExmServer_autogen_timestamp_deps +svcFileManagement +svcFileManagement_autogen +svcFileManagement_autogen_timestamp_deps +svcFilterManagement +svcFilterManagement_autogen +svcFilterManagement_autogen_timestamp_deps +svcFlmClient +svcFlmClient_autogen +svcFlmClient_autogen_timestamp_deps +svcFlmCommon +svcFlmCommon_autogen +svcFlmCommon_autogen_timestamp_deps +svcFlmServer +svcFlmServer_autogen +svcFlmServer_autogen_timestamp_deps +svcFltClient +svcFltClient_autogen +svcFltClient_autogen_timestamp_deps +svcFltCommon +svcFltCommon_autogen +svcFltCommon_autogen_timestamp_deps +svcFltServer +svcFltServer_autogen +svcFltServer_autogen_timestamp_deps +svcGimClient +svcGimClient_autogen +svcGimClient_autogen_timestamp_deps +svcGimCommon +svcGimCommon_autogen +svcGimCommon_autogen_timestamp_deps +svcGimServer +svcGimServer_autogen +svcGimServer_autogen_timestamp_deps +svcGmpServer +svcGmpServer_autogen +svcGmpServer_autogen_timestamp_deps +svcGnaClient +svcGnaClient_autogen +svcGnaClient_autogen_timestamp_deps +svcGnaCommon +svcGnaCommon_autogen +svcGnaCommon_autogen_timestamp_deps +svcGnaServer +svcGnaServer_autogen +svcGnaServer_autogen_timestamp_deps +svcGuezIedManagement +svcGuezIedManagement_autogen +svcGuezIedManagement_autogen_timestamp_deps +svcInfrastructureManagement +svcInfrastructureManagement_autogen +svcInfrastructureManagement_autogen_timestamp_deps +svcIsmClient +svcIsmClient_autogen +svcIsmClient_autogen_timestamp_deps +svcIsmCommon +svcIsmCommon_autogen +svcIsmCommon_autogen_timestamp_deps +svcIsmServer +svcIsmServer_autogen +svcIsmServer_autogen_timestamp_deps +svcMapDummy +svcMapDummy_autogen +svcMapDummy_autogen_timestamp_deps +svcMdmClient +svcMdmClient_autogen +svcMdmClient_autogen_timestamp_deps +svcMdmCommon +svcMdmCommon_autogen +svcMdmCommon_autogen_timestamp_deps +svcMdmServer +svcMdmServer_autogen +svcMdmServer_autogen_timestamp_deps +svcMessaging +svcMessaging_autogen +svcMessaging_autogen_timestamp_deps +svcMeteoDataManagement +svcMeteoDataManagement_autogen +svcMeteoDataManagement_autogen_timestamp_deps +svcMrkClient +svcMrkClient_autogen +svcMrkClient_autogen_timestamp_deps +svcMrkCommon +svcMrkCommon_autogen +svcMrkCommon_autogen_timestamp_deps +svcMrkServer +svcMrkServer_autogen +svcMrkServer_autogen_timestamp_deps +svcMsgClient +svcMsgClient_autogen +svcMsgClient_autogen_timestamp_deps +svcMsgCommon +svcMsgCommon_autogen +svcMsgCommon_autogen_timestamp_deps +svcMsgServer +svcMsgServer_autogen +svcMsgServer_autogen_timestamp_deps +svcNomClient +svcNomClient_autogen +svcNomClient_autogen_timestamp_deps +svcNomCommon +svcNomCommon_autogen +svcNomCommon_autogen_timestamp_deps +svcNomServer +svcNomServer_autogen +svcNomServer_autogen_timestamp_deps +svcNotificationManagement +svcNotificationManagement_autogen +svcNotificationManagement_autogen_timestamp_deps +svcObdClient +svcObdClient_autogen +svcObdClient_autogen_timestamp_deps +svcObdCommon +svcObdCommon_autogen +svcObdCommon_autogen_timestamp_deps +svcObdServer +svcObdServer_autogen +svcObdServer_autogen_timestamp_deps +svcOcBaseDownload +svcOcBaseDownload_autogen +svcOcBaseDownload_autogen_timestamp_deps +svcOcSituationClient +svcOcSituationClient_autogen +svcOcSituationClient_autogen_timestamp_deps +svcOcSituationServer +svcOcSituationServer_autogen +svcOcSituationServer_autogen_timestamp_deps +svcOperatorManagement +svcOperatorManagement_autogen +svcOperatorManagement_autogen_timestamp_deps +svcOpmClient +svcOpmClient_autogen +svcOpmClient_autogen_timestamp_deps +svcOpmCommon +svcOpmCommon_autogen +svcOpmCommon_autogen_timestamp_deps +svcOpmServer +svcOpmServer_autogen +svcOpmServer_autogen_timestamp_deps +svcOreDummy +svcOreDummy_autogen +svcOreDummy_autogen_timestamp_deps +svcOscClient +svcOscClient_autogen +svcOscClient_autogen_timestamp_deps +svcOscCommon +svcOscCommon_autogen +svcOscCommon_autogen_timestamp_deps +svcOscServer +svcOscServer_autogen +svcOscServer_autogen_timestamp_deps +svcOssClient +svcOssClient_autogen +svcOssClient_autogen_timestamp_deps +svcOssCommon +svcOssCommon_autogen +svcOssCommon_autogen_timestamp_deps +svcOssServer +svcOssServer_autogen +svcOssServer_autogen_timestamp_deps +svcParticipantManagement +svcParticipantManagement_autogen +svcParticipantManagement_autogen_timestamp_deps +svcPdmClient +svcPdmClient_autogen +svcPdmClient_autogen_timestamp_deps +svcPdmCommon +svcPdmCommon_autogen +svcPdmCommon_autogen_timestamp_deps +svcPdmServer +svcPdmServer_autogen +svcPdmServer_autogen_timestamp_deps +svcPedDummy +svcPedDummy_autogen +svcPedDummy_autogen_timestamp_deps +svcPpmClient +svcPpmClient_autogen +svcPpmClient_autogen_timestamp_deps +svcPpmCommon +svcPpmCommon_autogen +svcPpmCommon_autogen_timestamp_deps +svcPpmServer +svcPpmServer_autogen +svcPpmServer_autogen_timestamp_deps +svcPreClient +svcPreClient_autogen +svcPreClient_autogen_timestamp_deps +svcPreCommon +svcPreCommon_autogen +svcPreCommon_autogen_timestamp_deps +svcPreServer +svcPreServer_autogen +svcPreServer_autogen_timestamp_deps +svcProjectDataManagement +svcProjectDataManagement_autogen +svcProjectDataManagement_autogen_timestamp_deps +svcPwsCommon +svcPwsCommon_autogen +svcPwsCommon_autogen_timestamp_deps +svcRecCommon +svcRecCommon_autogen +svcRecCommon_autogen_timestamp_deps +svcRecordingManagement +svcRecordingManagement_autogen +svcRecordingManagement_autogen_timestamp_deps +svcRepClient +svcRepClient_autogen +svcRepClient_autogen_timestamp_deps +svcRepCommon +svcRepCommonExecutable +svcRepCommonExecutable_autogen +svcRepCommonExecutable_autogen_timestamp_deps +svcRepCommon_autogen +svcRepCommon_autogen_timestamp_deps +svcRepServer +svcRepServer_autogen +svcRepServer_autogen_timestamp_deps +svcReportAnalyzer +svcReportAnalyzer_autogen +svcReportAnalyzer_autogen_timestamp_deps +svcReportGenerator +svcReportGenerator_autogen +svcReportGenerator_autogen_timestamp_deps +svcScmClient +svcScmClient_autogen +svcScmClient_autogen_timestamp_deps +svcScmCommon +svcScmCommon_autogen +svcScmCommon_autogen_timestamp_deps +svcScmServer +svcScmServer_autogen +svcScmServer_autogen_timestamp_deps +svcScrDummy +svcScrDummy_autogen +svcScrDummy_autogen_timestamp_deps +svcServiceManagement +svcServiceManagement_autogen +svcServiceManagement_autogen_timestamp_deps +svcSituationReplay +svcSituationReplay_autogen +svcSituationReplay_autogen_timestamp_deps +svcSmoDummy +svcSmoDummy_autogen +svcSmoDummy_autogen_timestamp_deps +svcSomClient +svcSomClient_autogen +svcSomClient_autogen_timestamp_deps +svcSomCommon +svcSomCommon_autogen +svcSomCommon_autogen_timestamp_deps +svcSomServer +svcSomServer_autogen +svcSomServer_autogen_timestamp_deps +svcSoundManagement +svcSoundManagement_autogen +svcSoundManagement_autogen_timestamp_deps +svcSrmCommon +svcSrmCommon_autogen +svcSrmCommon_autogen_timestamp_deps +svcSrpClient +svcSrpClient_autogen +svcSrpClient_autogen_timestamp_deps +svcSrpCommon +svcSrpCommon_autogen +svcSrpCommon_autogen_timestamp_deps +svcSrpServer +svcSrpServer_autogen +svcSrpServer_autogen_timestamp_deps +svcTabClient +svcTabClient_autogen +svcTabClient_autogen_timestamp_deps +svcTabCommon +svcTabCommon_autogen +svcTabCommon_autogen_timestamp_deps +svcTabServer +svcTabServer_autogen +svcTabServer_autogen_timestamp_deps +svcTabocClient +svcTabocClient_autogen +svcTabocClient_autogen_timestamp_deps +svcTabocCommon +svcTabocCommon_autogen +svcTabocCommon_autogen_timestamp_deps +svcTabocServer +svcTabocServer_autogen +svcTabocServer_autogen_timestamp_deps +svcTargetManagement +svcTargetManagement_autogen +svcTargetManagement_autogen_timestamp_deps +svcTgtClient +svcTgtClient_autogen +svcTgtClient_autogen_timestamp_deps +svcTgtCommon +svcTgtCommon_autogen +svcTgtCommon_autogen_timestamp_deps +svcTgtServer +svcTgtServer_autogen +svcTgtServer_autogen_timestamp_deps +svcTrainingAreaBase +svcTrainingAreaBaseOC +svcTrainingAreaBaseOC_autogen +svcTrainingAreaBaseOC_autogen_timestamp_deps +svcTrainingAreaBase_autogen +svcTrainingAreaBase_autogen_timestamp_deps +svcVideoOverlayManagement +svcVideoOverlayManagement_autogen +svcVideoOverlayManagement_autogen_timestamp_deps +svcWarehouseGuez +svcWarehouseGuez_autogen +svcWarehouseGuez_autogen_timestamp_deps +svcWarehouseManagement +svcWarehouseManagement_autogen +svcWarehouseManagement_autogen_timestamp_deps +svcWhgClient +svcWhgClient_autogen +svcWhgClient_autogen_timestamp_deps +svcWhgCommon +svcWhgCommon_autogen +svcWhgCommon_autogen_timestamp_deps +svcWhgServer +svcWhgServer_autogen +svcWhgServer_autogen_timestamp_deps +tDataSampleGenerator +tDataSampleGenerator_autogen +tDataSampleGenerator_autogen_timestamp_deps +tDataSampleReceiver +tDataSampleReceiver_autogen +tDataSampleReceiver_autogen_timestamp_deps +tabModuleTestAdler +tabModuleTestAdler_autogen +tabModuleTestAdler_autogen_timestamp_deps +tabPluginAdler +tabPluginAdler_autogen +tabPluginAdler_autogen_timestamp_deps +tabPluginDebugJsonDir +tabPluginDebugJsonDir_autogen +tabPluginDebugJsonDir_autogen_timestamp_deps +tabPluginHla +tabPluginHla_autogen +tabPluginHla_autogen_timestamp_deps +tabPluginTetraJson +tabPluginTetraJson_autogen +tabPluginTetraJson_autogen_timestamp_deps +tabRecordReplayPlugin +tabRecordReplayPlugin_autogen +tabRecordReplayPlugin_autogen_timestamp_deps +tabTelegrams +tabTelegrams_autogen +tabTelegrams_autogen_timestamp_deps +tabTopicTypePlugin +tabTopicTypePlugin_autogen +tabTopicTypePlugin_autogen_timestamp_deps +tabocTopicTypePlugin +tabocTopicTypePlugin_autogen +tabocTopicTypePlugin_autogen_timestamp_deps +tcpserver +tcpserver_autogen +tcpserver_autogen_timestamp_deps +tcpserver_test +tcpserver_test_autogen +tcpserver_test_autogen_timestamp_deps +test +test_nglpdfwidget +test_nglpdfwidget_autogen +test_nglpdfwidget_autogen_timestamp_deps +test_qledline +test_qledline_autogen +test_qledline_autogen_timestamp_deps +textEditorTest +textEditorTest_autogen +textEditorTest_autogen_timestamp_deps +tgtTests +tgtTests_autogen +tgtTests_autogen_timestamp_deps +tgtTopicTypePlugin +tgtTopicTypePlugin_autogen +tgtTopicTypePlugin_autogen_timestamp_deps +thp_viewer +thp_viewer_autogen +thp_viewer_autogen_timestamp_deps +topicdiscover +topicdiscover_autogen +topicdiscover_autogen_timestamp_deps +topicdiscoverexe +topicdiscoverexe_autogen +topicdiscoverexe_autogen_timestamp_deps +training_area_telegrams +utils_test +utils_test_autogen +utils_test_autogen_timestamp_deps +vapixconfig +vapixconfig_autogen +vapixconfig_autogen_timestamp_deps +webSocketServer +webSocketServer_autogen +webSocketServer_autogen_timestamp_deps +whgTests +whgTests_autogen +whgTests_autogen_timestamp_deps +whgTopicTypePlugin +whgTopicTypePlugin_autogen +whgTopicTypePlugin_autogen_timestamp_deps +wms_json_ds +wms_json_ds_autogen +wms_json_ds_autogen_timestamp_deps +xdr_qthandler_dir +xdr_qthandler_dir_autogen +xdr_qthandler_dir_autogen_timestamp_deps +zsksxd_tetraForLogView diff --git a/prompts/merge-basis-modules-branches.prompt.md b/prompts/merge-basis-modules-branches.prompt.md new file mode 100644 index 000000000..8227600b6 --- /dev/null +++ b/prompts/merge-basis-modules-branches.prompt.md @@ -0,0 +1,383 @@ +# Strict Qt6 Migration Prompt: Merge of the two basis-modules branches + +This prompt is binding task context. Keep changes minimal, scoped, and reproducible. +The only allowed outcome is a merge commit on `feature/qt6-migration-basis-modules-merge` +that contains the full work of both source branches and preserves the legacy code +behavior of every migrated file. + +## Required base prompts + +Before making changes, read and apply: + +- ./prompts/combined-migration-subfolder-rti-compact.prompt.md +- ./prompts/commit-policy.prompt.md (repository mapping, pre-commit checks, per-repo commits) + +If a base prompt is stricter, follow it. This prompt overrides it only for: + +- build variants: use ON variants only, never OFF +- commit message format: max 2 lines, single author, no co-author lines (see "Commits") + +## Task + +Merge these two branches and resolve every conflict without changing code behavior: + +- **ours (merge target base):** `feature/qt6-migration-basis-modules` + remote tip at prompt writing: `ed9fc51e7` ("Migrates ./Lts/Viewer successfully to Qt6") +- **theirs (branch to merge in):** `feature/qt6-migration-basis-modules-services` + remote tip at prompt writing: `881d44f4d` ("Migrates residual Lts sources to generated rtiddsgen API") +- **merge base:** `9e3858378` ("Adds functionality and with already migrated components integration test to cmake targets unter ./Z") +- **result branch:** `feature/qt6-migration-basis-modules-merge` (already created from `origin/feature/qt6-migration-basis-modules`) + +All work happens in the repository `./qt-migration-legatus` (it is a separate git +repository; never commit its changes into the workspace root or the legacy repository). + +## Branches and trees + +Working repository: + +- `./qt-migration-legatus` + +Trees: + +- Legacy Qt5 source tree (read-only reference, never modify): + `./qt-migration-legatus/qt5-before/qt5-legatus-legacy` +- Qt6 target tree (the only tree that is modified): + `./qt-migration-legatus/qt6-after/qt6-migrated-legatus` + +Before starting: + +1. `git fetch origin` in `./qt-migration-legatus`. +2. Verify both remote tips still match the hashes above (`git rev-parse origin/feature/qt6-migration-basis-modules` and `git rev-parse origin/feature/qt6-migration-basis-modules-services`). +3. If either tip moved, recompute the merge base and re-run the dry-run merge (step 4 of the procedure) before resolving anything. +4. Verify the working tree of `./qt-migration-legatus` is clean (`git status --short`). Do not overwrite uncommitted user changes; if they block safe work, report the blocker. + +## What each side contains + +Understand both sides before resolving anything. The merge must keep the work of BOTH sides. + +**basis-modules side (ours, 9 commits after the merge base, ~121 files):** + +- `./Lts/Viewer` migrated to Qt6 (LtsFileDialog et al.), GROUP5 build configuration and CTest registration +- DDS migration completion and LTS/Proxies migration reports +- merge of `origin/feature/migrate-and-test-DDS-targets` into this branch +- ktexttemplate added as apt package to `new_docker_build.sh` +- `./Z` and `./Lts/Proxies` made production ready +- modifications to the stub headers under `include/` (see modify/delete conflicts) + +**services side (theirs, 44 commits after the merge base, ~1203 files):** + +- migration of the residual services, proxies, plugins, `Lts/Common` and `Lts/DDS` sources to the generated rtiddsgen 7.7 API: `Xxx_def::EnumValue` → `Xxx::EnumValue`, accessor calls → plain member access (e.g. `m_data.id()` → `m_data.id`), renamed enumerators where the generated name collides (e.g. `PdmEventType::Hit` → `PdmEventType::EventType_Hit`) +- NmeaManagement enabled in the build plus `tests/test_nme_dtc.cpp`, `tests/test_nme_enums.cpp`, `tests/test_nmea_handler.cpp` +- Qt6::SerialPort manual IMPORTED target in the root `CMakeLists.txt` +- codegen template include-prefix fixes (`svc_db_structs.h.grantlee`, `svc_translation.h.grantlee`, `svc_dts_impl.cpp.grantlee`, `svc_ftc_impl.cpp.grantlee`, `svc_record_replay_plugin.cpp.grantlee`) +- deletion of the stale stub headers under `include/` and of `tests/test_migration_stubs.cpp` (real generated headers from the build tree replaced them) + +## Known conflict surface (dry run 2026-09-23) + +A dry-run merge (`git worktree` + `git merge --no-commit --no-ff`) found 17 conflicts. +Re-run the dry run after the fetch and treat its output as authoritative; the list +below is the expected starting point. + +Content conflicts (12): + +1. `qt6-after/qt6-migrated-legatus/CMakeLists.txt` +2. `qt6-after/qt6-migrated-legatus/Lts/Common/CodeGen/svc_dts_impl.cpp.grantlee` +3. `qt6-after/qt6-migrated-legatus/Lts/Common/CodeGen/svc_ftc_impl.cpp.grantlee` +4. `qt6-after/qt6-migrated-legatus/Lts/Common/CodeGen/svc_record_replay_plugin.cpp.grantlee` +5. `qt6-after/qt6-migrated-legatus/Lts/DDS/Core/CMakeLists.txt` +6. `qt6-after/qt6-migrated-legatus/Lts/DDS/Core/pacemaker.cpp` +7. `qt6-after/qt6-migrated-legatus/Lts/DDS/Core/topic_lock_master.cpp` +8. `qt6-after/qt6-migrated-legatus/Lts/DDS/Core/topic_lock_master.h` +9. `qt6-after/qt6-migrated-legatus/Lts/DDS/FTC/generic_ftc_impl.h` +10. `qt6-after/qt6-migrated-legatus/Lts/DDS/FTS/generic_fts_impl.h` +11. `qt6-after/qt6-migrated-legatus/Lts/Proxies/Buildings/BuildingControlUnit/VWM/CMakeLists.txt` +12. `qt6-after/qt6-migrated-legatus/Lts/Proxies/Buildings/BuildingControlUnit/VWM/vwm_building.h` + +Modify/delete conflicts (5; deleted on the services side, modified on the basis-modules side): + +13. `qt6-after/qt6-migrated-legatus/include/Core/core_dtc.h` +14. `qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc.h` +15. `qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc_impl.h` +16. `qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_data_reader.h` +17. `qt6-after/qt6-migrated-legatus/tests/test_migration_stubs.cpp` + +## Conflict resolution rules + +These rules exist to guarantee: the merged tree keeps both branches' functionality +and no file's behavior deviates from the legacy Qt5 behavior beyond the approved +Qt6/C++17/rtiddsgen adaptations. + +General: + +- Resolve semantically, never mechanically. For every conflicted hunk read four + versions: the merge-base version, ours, theirs, and the legacy Qt5 equivalent in + `./qt-migration-legatus/qt5-before/qt5-legatus-legacy` (same relative path, or the + closest legacy counterpart). The resolution must implement the legacy semantics + with both branches' approved adaptations applied. +- Never take `ours` or `theirs` wholesale unless you prove the losing side had no + unique changes: `git diff ..theirs -- ` (or `..ours`) must show + nothing that the kept version lacks. Record the proof in the final report. +- A merge commit must not drop functionality of either branch: every target, + dependency, test registration, docker build step, and code fix present on one + side must be present (or superseded by an equivalent) in the merged tree. +- No behavior-changing edits beyond the merge itself. No refactoring, no style + cleanup, no warning suppression, no new features. +- Generated API shape (rtiddsgen 7.7, `-language C++11 -stl`): plain public data + members (no getters/setters), no `*_def::type` wrappers, enums directly in the + service namespace, renamed enumerators on collision, `omg::types::optional` / + `omg::types::sequence` members. Where a conflict shows both API shapes, the + generated header in the build tree is the authority — read it, do not guess. +- Grantlee `*.grantlee` template conflicts: the template, not the generated output, + is the source of truth. Resolve the template so codegen produces code consistent + with both branches' consumers. Never hand-edit generated outputs. + +CMake conflicts (root `CMakeLists.txt`, `Lts/DDS/Core/CMakeLists.txt`, `Lts/Proxies/Buildings/BuildingControlUnit/VWM/CMakeLists.txt`): + +- Take the union of both sides' targets, dependencies, include directories, and + link libraries. Both sides' target additions must survive. +- Keep the Qt6::SerialPort manual IMPORTED target (services side) and the GROUP5 / + Viewer target wiring (basis-modules side) side by side. +- ON-variant-only rule: `BUILD_RTI=ON`, `BUILD_GRANTLEE=ON` are the only valid + variants. Do not add CMake logic, stubs, or fallbacks for OFF variants. +- After resolving, verify with a fresh configure that both sides' targets exist + (`cmake --build` list / `make help` or the docker script's group options). + +Modify/delete conflicts (the 5 files above): + +- The services side deleted these stale stubs because real generated headers from + the build tree replaced them. The basis-modules side modified them. +- For each file: inspect what the basis-modules modification added + (`git diff ..origin/feature/qt6-migration-basis-modules -- `), + then grep the merged tree for anything that still includes or references the + file's path (including the docker build scripts and CMake lists). + - If nothing references it after the merge: keep the deletion + (`git rm `), and if the basis-modules modification carried a needed fix, + port that fix into the file that now provides the same functionality (real + generated header consumer or the approved stub location). + - If something on the merged tree still references it: do not resurrect stale + stub content. Point the reference at the real generated header from the build + tree, or relocate the stub to an approved directory + (`forward-declarations/` or `.forward-declarations/include/`), preserving the + basis-modules modification. +- For `tests/test_migration_stubs.cpp`: the deletion is correct if no test + registration (CMake glob, explicit list, docker script) depends on it. If the + basis-modules side added test cases to it that are still meaningful, port those + cases into the current test convention under `qt6-after/qt6-migrated-legatus/tests/` + with policy-compatible names. + +## Mandatory build variants + +Only these variants are valid: + +- `BUILD_RTI=ON` +- `BUILD_GRANTLEE=ON` + +Forbidden: `BUILD_RTI=OFF`, `BUILD_GRANTLEE=OFF`. + +- Do not implement, fix, preserve, test, or validate OFF variants. +- Do not add CMake logic, tests, stubs, or fallbacks for OFF variants. +- Validation must use `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON`. + +## Preservation rules + +Preserve module removals from commit `92ad7d468` ("remove all unneeded module listed from Niklas"): do not restore removed modules, files, targets, directories, or dependencies — on either side. + +Preserve LogViewer reinsert from commit `1fa789767` ("Added LogViewer again"): do not remove, disable, or break LogViewer integration. + +Preserve prior IDL warning fixes from commit `be912de9d`: do not reintroduce multiple enum definitions, duplicate enumerators, or builtin type/keyword collisions. + +Preserve the ON-variant-only decisions already made on both branches. + +## Stubs and forward declarations + +Any required existing stub, compatibility declaration, or forward declaration must live only under: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/forward-declarations/` +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/.forward-declarations/include/` + +- Do not leave such files in service directories unless they are real service source files. +- Do not create or keep stubs for forbidden OFF variants. +- Do not use stubs as replacements for real RTI, ndsgen, KTextTemplate, or Grantlee outputs in ON builds. +- Report every moved, removed, or newly referenced stub/forward declaration, including the 5 modify/delete files above. + +## Qt link rules + +No active target in the merged tree may link Qt5 imported targets. + +Search the merged tree for and fix active uses of: `Qt5::`, `find_package(Qt5`, `QT5_`, `Qt5Core`, `Qt5Widgets`, `Qt5Network`. + +A regression check specific to this merge: the services side removed Qt5 references in files the basis-modules side also touched. After the merge, re-run the search over ALL conflicted files, not just the hunks you edited. + +## Legacy comparison (required validation step) + +This step proves the merge did not change code behavior. + +For every one of the 17 conflicted files (and for any other file you edit during +conflict resolution): + +1. Read the legacy Qt5 source at the same relative path in + `./qt-migration-legatus/qt5-before/qt5-legatus-legacy`. If the file does not + exist there (pure Qt6 build machinery), say so and compare against the merge + base instead. +2. Produce three diffs: merge-base vs legacy, ours vs legacy, theirs vs legacy. +3. Produce the audit diff: merged result vs legacy. +4. Classify every hunk of the audit diff into exactly one category: + - `qt6-api`: mandatory Qt5→Qt6 API adaptation (module includes, QRegExp, signal/slot, QDesktopWidget, QMetaType, Qt6 links) + - `rtiddsgen-api`: generated-API adaptation (plain members, no `*_def`, renamed enumerators, omg::types) + - `build`: CMake/docker/test-infra change with no runtime semantics + - `merge-union`: line present because both branches required it + - `semantic-change`: anything else +5. Every `semantic-change` hunk is a failure of this merge unless you can point to + the legacy source line that implements the same behavior. Fix it back to the + legacy semantics (with approved adaptations) or report it as a blocker. Do not + silently accept `semantic-change` hunks. +6. Record the per-file hunk classification (counts per category is sufficient; + list every `semantic-change` hunk explicitly) in the final report. + +Additional equivalence checks on the merged tree: + +- The enum switch/case sets and default branches in `Lts/DDS/Core/pacemaker.cpp`, `topic_lock_master.cpp`, `topic_lock_master.h` cover exactly the enumerators of the generated headers, matching the legacy control flow. +- The Grantlee template conflicts resolve to output that matches what both branches' consumers expect; verify by building, not by reading generated files. +- Test registrations: the union of both sides' CTest registrations is present; the tests the services side deleted are gone and no dangling references to them remain. +- Docker build scripts: every target group and apt package both sides added is present; the script still contains `set -eo pipefail` in the container script. + +## Tests + +- Both sides' test suites must build and run; this merge adds no new feature tests by default. +- If a conflict resolution changed C++ semantics (it should not), add CTest tests + under `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests/` that pin the + legacy behavior, registered with CTest, running with `BUILD_RTI=ON` and + `BUILD_GRANTLEE=ON`, policy-compatible names (`test_.cpp`, ...). +- No OFF-variant tests. No host-local paths. + +## Docker and CI + +Authoritative migration Dockerfile: + +- `./app/Dockerfile` + +Authoritative validation scripts (both exist in the tree after the merge; run the +one(s) whose target groups cover the merged changes, and if in doubt run both): + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/docker_build.sh` +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh` + +Validation container expectations: + +- repository root at `/repo`, or the script's documented mount path +- external dependencies under `/repo/external` (including `external/rti_connext_dds-7.7.0`, `external/ArcGIS`, `external/GeographicLib` where the scripts expect them) +- `./rti_license.dat` mounted read-only if RTI requires it +- no developer-local paths + +Jenkins CI must be able to discover and run the merged test set. Inspect and minimally update only if needed: + +- `./qt-migration-legatus/ci/Dockerfile.*` +- `./qt-migration-legatus/ci/check_pr_policies.py` + +## Required procedure + +1. Read the base prompts. Run `git fetch origin` and verify both remote tips and the merge base. +2. Check out `feature/qt6-migration-basis-modules-merge` in `./qt-migration-legatus` (working tree must be clean). +3. Re-run the dry-run merge in a throwaway worktree; confirm the conflict list. +4. Run the real merge: `git merge --no-ff origin/feature/qt6-migration-basis-modules-services` (do not auto-commit; resolve first). +5. Resolve the conflicts one file at a time using the four-version method (merge base, ours, theirs, legacy) and the rules above. +6. Run the legacy comparison audit (previous section) over every resolved/edited file. +7. Run the regression checks: Qt5 links, removed modules, LogViewer, IDL warnings, stub locations, ON-variant-only CMake, docker script integrity, CTest registration union. +8. Validate in Docker with `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON` (docker_build.sh and, where applicable, new_docker_build.sh). +9. Run CTest in the validated build directory. +10. Check Jenkins/policy compatibility. +11. Create the merge commit (see Commits). +12. Report factual status. + +Do not push. The merge result stays local on `feature/qt6-migration-basis-modules-merge` until the user says otherwise. + +## Required validation + +From `./qt-migration-legatus/qt6-after/qt6-migrated-legatus`, run: + +```bash +BUILD_RTI=ON BUILD_GRANTLEE=ON ./docker_build.sh +``` + +and, if its target groups do not cover all merged changes: + +```bash +BUILD_RTI=ON BUILD_GRANTLEE=ON ./new_docker_build.sh +``` + +CTest must run as part of validation. If a direct clean build is useful, use: + +```bash +cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus -B /repo/build-merge-rti-on-grantlee-on -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_RTI=ON -DBUILD_GRANTLEE=ON +cmake --build /repo/build-merge-rti-on-grantlee-on --parallel +ctest --test-dir /repo/build-merge-rti-on-grantlee-on --output-on-failure +``` + +CTest baseline: ctest exits with code 8 when tests are "Not Run". A pre-existing set of Not Run tests (for example nglcomp_test, aes/avm/exm/scm/bld suites, GrantleeParserSmoke) belongs to sibling targets outside the docker build scripts' make list and existed before this migration series; that set is not a failure. Treat only `***Failed` entries as failures. Do not widen this exception to skip real failures, and do not add missing sibling targets to fix the exit code. If a previously passing test becomes Not Run or Failed after the merge, that is a merge regression: fix it or report it as a blocker. + +Do not run or validate OFF variants. + +## Commits + +- Single author: the user's git identity. The user is the only author; do not add any co-author, co-authored-by, or bot attribution lines of any kind. +- Commit message: maximum 2 lines (one subject line plus at most one short body line), no blank-line separators, no extra metadata. +- Merge commit subject example (2 lines max): + `Merge feature/qt6-migration-basis-modules-services into feature/qt6-migration-basis-modules` + body line: `Resolves 17 conflicts against legacy Qt5 semantics; validates with BUILD_RTI=ON BUILD_GRANTLEE=ON.` +- If a conflict resolution requires an additional fix commit on top of the merge commit, the same 2-line / single-author rules apply. +- Follow `./prompts/commit-policy.prompt.md` for repository mapping and pre-commit checks. If it requires signed commits and signing is not configured in this repository context, stop and report the exact reason instead of committing unsigned. + +## Success criteria + +Success requires: + +- `feature/qt6-migration-basis-modules-merge` contains a merge commit with both parents `origin/feature/qt6-migration-basis-modules` (or its verified successor tip) and `origin/feature/qt6-migration-basis-modules-services` (or its verified successor tip) +- all 17 conflicts resolved with the four-version method; resolution evidence recorded +- both branches' functionality preserved: Viewer/GROUP5 and DDS/Proxies/./Z work from the basis-modules side, and the full rtiddsgen services/proxies/plugins migration plus NMEA tests from the services side +- legacy comparison audit done for every resolved file; zero unexplained `semantic-change` hunks +- configure, build, and CTest pass with `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON` +- the docker build script(s) run the merged test set and fail on test failure +- Jenkins/policy discovery accepts the merged test set +- no active Qt5 imported target links remain in the merged tree +- generated outputs are build-tree only, freshly produced, never committed or consumed from the source tree +- no fake generated files, dummy files, mocks, placeholders, or stubbed generated outputs +- required stubs/forward declarations only in allowed directories +- removed modules remain removed; LogViewer preserved +- no OFF-variant logic, tests, or stubs introduced +- no push performed + +## If blocked + +Do not fake success. Report: + +- failing command +- key error output +- affected file/branch +- category: project, path, merge, CMake, Qt API, codegen, Docker, RTI/license, Grantlee/KTextTemplate, test, CTest, Jenkins CI, stub relocation, or environment +- which side (ours/theirs) the problematic hunk came from +- what was resolved safely +- what remains blocked +- whether stale artifacts were ruled out +- whether generated files were involved +- exact missing files, targets, or generator step +- whether tests and CTest integration succeeded +- whether Docker validation and Jenkins discovery succeeded +- the legacy comparison status for the unresolved files + +## Final report + +Keep it short. Include: + +- status: validated, partially validated, or blocked +- merge commit hash, both parents, branch name +- per-conflicted-file resolution: file, method (union / four-version semantic / keep-deletion / port-modification), and the one-line reason +- modify/delete outcomes for the 5 stub/test files (kept deleted or relocated, and where the basis-modules modification went) +- legacy comparison audit summary: per-file hunk counts by category, and every `semantic-change` hunk with its justification or fix +- files changed beyond the conflicted set +- CTest registration union check result +- Docker and Jenkins CI changes +- Qt5 references removed or remaining +- confirmation that removed modules were not restored and LogViewer was preserved +- confirmation that both branches' target sets are present after the merge +- exact validation commands and results +- remaining blockers or risks diff --git a/prompts/migrate-nmeamanagement.prompt.md b/prompts/migrate-nmeamanagement.prompt.md new file mode 100644 index 000000000..ed34cd07b --- /dev/null +++ b/prompts/migrate-nmeamanagement.prompt.md @@ -0,0 +1,429 @@ +# Strict Qt6 Migration Prompt: NmeaManagement Service + +This prompt is binding task context. Keep changes minimal, scoped, and reproducible. + +## Required base prompt + +Before making changes, read and apply: + +- ./prompts/combined-migration-subfolder-rti-compact.prompt.md + +If that prompt is stricter, follow it. This prompt overrides it only for build variants: use ON variants only. Do not pursue OFF variants. + +## Service in scope + +Migrate only: + +- **Lts/Services/NmeaManagement** + +All rules below apply exactly to this service and its direct build, generation, and test dependencies. Do not touch other services or unrelated modules. + +## Status of this service + +The NmeaManagement service directory already exists in the Qt6 tree (`qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Services/NmeaManagement/`) and its source files have been migrated from Qt5 to Qt6: + +- Include paths modernized (`#include ` → `#include `, `#include `, `#include `) +- `QRegExp` → `QRegularExpression` (nmea_handler.cpp) +- Signal/slot macros → type-safe connections (`connect(m_reconnectTimer, SIGNAL(timeout()), ...) → connect(m_reconnectTimer, &QTimer::timeout, ...)`) +- `QDesktopWidget` → `QScreen` (nme_battery_info_dialog.cpp in the plugin) +- `QT5_WRAP_UI` → no-op shim (NGLMacros.cmake, AUTOUIC handles `.ui` files) +- CMakeLists.txt migrated: `Qt5::` → `Qt6::`, codegen steps wrapped in `IF(BUILD_RTI)` +- `ddscore` and `ddsconnector` → conditional `$>` + +**The only thing preventing the service from building is that `ADD_SUBDIRECTORY(NmeaManagement)` is commented out in `Lts/Services/CMakeLists.txt` (line 28).** + +## From / To + +From: + +- `./qt-migration-legatus/qt5-before/qt5-legatus-legacy/Lts/Services/NmeaManagement/` + +To: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Services/NmeaManagement/` + +Do not migrate sibling services, sibling plugins, or unrelated modules. + +## Mandatory build variants + +Only these variants are valid: + +- `BUILD_RTI=ON` +- `BUILD_GRANTLEE=ON` + +Forbidden: + +- `BUILD_RTI=OFF` +- `BUILD_GRANTLEE=OFF` + +Rules: + +- Do not implement, fix, preserve, test, or validate OFF variants. +- Do not add CMake logic, tests, stubs, or fallbacks for OFF variants. +- Do not report OFF variants as supported or partially supported. +- Validation must use `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON`. + +## Branches and trees + +Qt6 target branch: + +- `feature/qt6-migration-basis-modules` + +Qt5 legacy branch, if comparison is needed: + +- `story/qt6-migration` + +Legacy source tree: + +- `./qt-migration-legatus/qt5-before/qt5-legatus-legacy` + +Qt6 target tree: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus` + +Work in the Qt6 target tree only. Do not modify the Qt5 legacy tree. + +## Scope rules + +Touch files outside `Lts/Services/NmeaManagement/` only when directly required to configure, generate, build, link, test, or validate this service. + +Allowed outside-scope changes: + +- `Lts/Services/CMakeLists.txt` — uncommenting `ADD_SUBDIRECTORY(NmeaManagement)` +- central CMake helper fixes required by this service +- shared include path fixes required by this service +- RTI, codegen, ndsgen, KTextTemplate, or Grantlee integration fixes required by this service +- test infrastructure needed by tests for this service +- docker_build.sh changes needed to run those tests +- minimal Jenkins CI discovery or policy updates needed for those tests +- relocation of required stubs or forward declarations to allowed directories + +Not allowed: + +- restoring removed modules (commit `92ad7d468`) +- reintroducing stale dependencies on removed modules +- removing or disabling active modules to hide failures +- disabling targets instead of fixing root causes +- broad refactoring, cleanup, renaming, or modernization +- warning suppression instead of fixing causes +- committing generated files +- consuming generated outputs from the source tree +- fake success, dummy files, handwritten generated replacements, mocks, placeholders, or generated-output stubs + +## Preservation rules + +Preserve module removals from commit: + +- `92ad7d468`, "remove all unneeded module listed from Niklas" + +Do not restore removed modules, files, targets, directories, or dependencies. + +Preserve LogViewer reinsert from commit: + +- `1fa789767`, "Added LogViewer again" + +Do not remove, disable, or break LogViewer integration. + +Preserve prior IDL warning fixes from commit: + +- `be912de9d`, "Removes .IDL warnings: multiple enum definitons and builtin-type collisions" + +Do not blindly replay that commit. Use it only as reference. Do not reintroduce removed modules. + +IDL regressions to avoid: + +- multiple enum definitions +- duplicate enumerators +- builtin type or keyword collisions + +Check first for duplicate inputs, stale paths, removed-module references, source-tree generated outputs, source/build-tree confusion, and repeated IDL definitions before treating an issue as semantic IDL conflict. + +## Stubs and forward declarations + +Any required existing stub, compatibility declaration, or forward declaration must live only under: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/forward-declarations/` +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/.forward-declarations/include/` + +Rules: + +- Do not leave such files in service directories unless they are real service source files. +- Do not create or keep stubs for forbidden OFF variants. +- Do not use stubs or forward declarations as replacements for real RTI, ndsgen, KTextTemplate, or Grantlee outputs in ON builds. +- Report every moved, removed, or newly referenced stub/forward declaration. + +## Migration checks + +Inspect and migrate only as needed: + +- source and header files in `Lts/Services/NmeaManagement/` +- `CMakeLists.txt` and parent CMake registration +- RTI IDL (`nme_service.xml`), ndsgen, KTextTemplate, and Grantlee inputs/templates +- tests directly tied to this service + +The source files are already migrated. Focus on: + +1. **Uncommenting** `ADD_SUBDIRECTORY(NmeaManagement)` in `Lts/Services/CMakeLists.txt` +2. **Fixing any compile errors** that surface after the service is added to the build +3. **Verifying codegen** (`nme_service.xml` → `.idl` → `.hpp`/`.cpp`) produces expected outputs +4. **Verifying Qt module links** (the executable links `Qt6::Core`, `Qt6::Network`, `svcCoreClient`, etc.) + +Fix only real Qt6/C++17 build issues. No opportunistic refactoring or style cleanup. + +## Qt link rules + +No active target in the Qt6 tree may link Qt5 imported targets. + +Search for and fix active uses of: + +- `Qt5::` +- `find_package(Qt5` +- `QT5_` +- `Qt5Core` +- `Qt5Widgets` +- `Qt5Network` + +Use Qt6 equivalents. Prefer central CMake helper fixes when the issue is central. + +## Code generation rules + +The NmeaManagement service uses the standard RTI/Grantlee codegen pipeline: + +1. `CODEGEN_IDL_SVC` — generates `nme_enums.idl` and `nme.idl` from `nme_service.xml` +2. `RTIDDSGEN` — compiles `.idl` files into `.hpp`, `.cpp`, `.cxx`, `.Plugin` outputs +3. `CODEGEN_TOPIC_TYPEDEFS` — generates `nme_dt[s,c]_types.h` / `nme_ft[s,c]_types.h` +4. `CODEGEN_CLIENT_TOPICS_IFC` — generates `nme_[d|f]tc.h` +5. `CODEGEN_CLIENT_TOPICS_IMPL` — generates `nme_[d|f]tc_impl.[cpp|h]` +6. `CODEGEN_SERVER_TOPICS` — generates `nme_[d|f]ts.h`, `nme_[d|f]ts_impl.[cpp|h]` +7. `CODEGEN_DATABASE` — generates `nme_db_impl.cpp/.h`, `nme_db.h` +8. `CODEGEN_SQL` — generates `nme.sql`, `nme.xml` +9. `CREATE_TOPIC_TYPE_PLUGIN` — generates topic type plugin files + +If generated files are required: + +- generate into the build tree +- consume from the build tree +- list complete OUTPUT and BYPRODUCTS +- set correct DEPENDS and MAIN_DEPENDENCY where useful +- use deterministic WORKING_DIRECTORY +- use VERBATIM +- wire generated sources with target_sources +- wire generated include dirs with target_include_directories +- ensure compilation depends on generation +- ensure incremental rebuilds trigger on input/template changes + +Never commit generated `.idl`, `.h`, `.hpp`, or `.cpp` outputs. Never consume generated outputs from the source tree. Never fabricate generated outputs. + +## Known pitfalls from the FileManagement/FilterManagement run + +Apply these rules before debugging from scratch; skipping them repeats known problems. + +### rtiddsgen 7.7 generated API shape + +RTI Connext 7.7 rtiddsgen with `-language C++11 -stl` generates: + +- plain public data members with no getters or setters: use `data.id` and `data.id = value`, not `data.id()` or `data.id(value)` +- no `*_def::type` wrapper types: use enums directly in the service namespace +- renamed enums when the generated name collides with a framework type +- `omg::types::optional` and `omg::types::sequence` members + +When a compile error looks like old getter/setter syntax ("expression cannot be used as a function") or a missing `*_def` type, read the generated header in the build tree for the real member and type names. Check every call site in the service, its handlers, and its WebSocket interfaces. + +### Grantlee templates generate the service impl files + +Service `*_impl.[ch]` files are generated from `Lts/Common/CodeGen/*.grantlee` templates. If the fix belongs in generated code, fix the template; codegen reruns automatically. Never hand-edit generated outputs. + +### NGL_ADD_LIBRARY2 does not define the compile guard + +NGL_ADD_LIBRARY defines `MAKE__LIB` for the target; NGL_ADD_LIBRARY2 does not. A target consuming generated `*_impl.h` headers that carry an include guard fails with `#error "You are not allowed to include this file in your code!"` unless the guard is defined explicitly: + +```cmake +TARGET_COMPILE_DEFINITIONS( PRIVATE MAKE__LIB) +``` + +### Stub copies racing the codegen + +An unconditional `CONFIGURE_FILE(... COPYONLY)` that copies a stub header to a build-dir path that codegen also writes overwrites the generated file on every cmake re-configure. Guard such copies with `IF(NOT BUILD_RTI)` or `IF(NOT BUILD_GRANTLEE)`. + +### Qt6 discovery in the container takes the minimal path + +`find_package(Qt6 ... COMPONENTS ...)` always fails in the validation container. The tree takes the "Found Qt6 (minimal)" path and every Qt6 component target is a manual IMPORTED target in the root CMakeLists. When a migrated service needs a Qt6 module the container does not discover (for example WebSockets): + +- add the matching `qt6--dev` package to docker_build.sh +- create a manual IMPORTED target in the root CMakeLists following the existing pattern +- define the availability macro via `add_compile_definitions` when the real module is present +- link the target by name in the service CMakeLists +- gate the compile macro and the link on the same condition + +Flipping a compile macro on an existing build dir leaves stale AUTOMOC caches. A clean build dir is required after flipping such macros. + +### Include shadowing between the stub tree and real generated headers + +An include like `` can resolve into the migration stub tree (wrong namespaces) instead of the real generated header in the build tree. Use the full path from the build-tree include root (``), add `include_directories(BEFORE ${CMAKE_SOURCE_DIR}/Lts)` when stub trees shadow Lts headers, and verify forward declarations name the same namespace as the real header. + +### Compare with the Qt5 original before inventing fixes + +Several "missing field" or "unknown template" errors in the first run came from includes or members the Qt5 original had and the Qt6 copy had silently dropped. When a class fails to compile over a missing member or unknown base, diff against the Qt5 original first; restore the dropped piece rather than designing around it. + +### Export-header macro names + +Generated export headers uppercase the whole target name, merging adjacent word letters: target `LtsSessionData` defines `LTSSESSIONDATA_EXPORT`. When writing tests that assert export macros, derive the expected prefix from the generated header, not from visual expectation. + +### Build orchestration + +- docker_build.sh must keep `set -eo pipefail` in the container script +- When a migrated service adds a test executable, add it to the fixed make target list in docker_build.sh so ctest actually runs it +- build4 is root-owned and wiped by every docker_build.sh run + +## Tests + +For every C++ code change, add three meaningful CTest tests where feasible. + +Rules: + +- tests must validate changed behavior, not only compilation +- tests must be registered with CTest +- tests must run with `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON` +- do not add OFF-variant tests +- use deterministic tests without host-local paths + +Preferred location: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests` + +Use policy-compatible names, for example: + +- `test_.cpp` +- `_test.cpp` +- `test.cpp` +- `gtest.cpp` + +## Docker and CI + +Authoritative migration Dockerfile: + +- `./app/Dockerfile` + +Authoritative validation script: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/docker_build.sh` + +Do not use other Dockerfiles as task authority. + +Validation container expectations: + +- repository root at `/repo`, or the script's documented mount path +- external dependencies under `/repo/external`, or the script's documented equivalent +- RTI 7.7 at `/repo/external/rti_connext_dds-7.7.0`, or documented equivalent +- `./rti_license.dat` mounted read-only if RTI requires it +- no developer-local paths + +Jenkins CI must be able to discover and run the new tests, or verify that docker_build.sh runs them. Inspect and minimally update only if needed: + +- `./qt-migration-legatus/ci/Dockerfile.*` +- `./qt-migration-legatus/ci/check_pr_policies.py` + +## Required procedure + +1. Inspect repository state, branch, working tree, and forward-declaration directories. +2. Compare Qt5 source with Qt6 target for NmeaManagement. Classify files as already migrated, missing, stale, generated, or needing adaptation. +3. Identify dependencies: `svcCoreClient`, `ProjectConfig`, `LtsCommandLineParser`, `nglcoreapplication`, Qt6 modules, and any service-level interdependencies. +4. Uncomment `ADD_SUBDIRECTORY(NmeaManagement)` in parent `Lts/Services/CMakeLists.txt`. +5. Apply the smallest valid migration changes to fix compile/link errors. +6. Add required CTest tests for C++ changes (if applicable). +7. Review RTI/codegen paths for `nme_service.xml`. +8. Check regressions: Qt5 links, removed modules, LogViewer, IDL warnings. +9. Validate in Docker with `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON`. +10. Run CTest in the validated build directory. +11. Check Jenkins/policy compatibility. +12. Report factual status. + +Do not overwrite uncommitted user changes. If they block safe work, report the blocker. + +## Required validation + +From: + +- `./qt-migration-legatus/qt6-after/qt6-migrated-legatus` + +Run: + +```bash +BUILD_RTI=ON BUILD_GRANTLEE=ON ./docker_build.sh +``` + +CTest must run as part of validation. + +Expected CTest baseline: ctest exits with code 8 when tests are "Not Run". A pre-existing set of Not Run tests (for example nglcomp_test, aes/avm/exm/scm/bld suites, GrantleeParserSmoke) belongs to sibling targets outside the docker_build.sh make list; that set existed before this migration series and is not a failure. Treat only `***Failed` entries as failures. Do not widen this exception to skip or filter real failures, and do not add the missing sibling targets to fix the exit code. If a previously passing test becomes Not Run or Failed, that is a regression of this run. + +If a direct clean build is useful, use: + +```bash +cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus -B /repo/build-rti-on-grantlee-on -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_RTI=ON -DBUILD_GRANTLEE=ON +cmake --build /repo/build-rti-on-grantlee-on --parallel +ctest --test-dir /repo/build-rti-on-grantlee-on --output-on-failure +``` + +Also check whether this file exists and run it only if present: + +```bash +./docker-build.h +``` + +If it is absent or a typo, report that. Do not invent a replacement. + +Do not run or validate OFF variants. + +## Success criteria + +Success requires: + +- NmeaManagement migrated and confirmed buildable +- NmeaManagement included in the Qt6 build (uncommented in parent CMakeLists.txt) +- configure, build, and CTest pass with `BUILD_RTI=ON` and `BUILD_GRANTLEE=ON` +- docker_build.sh runs the relevant tests and fails on test failure +- Jenkins/policy discovery accepts any new tests and validation changes +- no active Qt5 imported target links remain for this service +- generated outputs are build-tree only and freshly produced when required +- no generated outputs are committed or consumed from the source tree +- no fake generated files, dummy files, mocks, placeholders, or stubbed generated outputs exist +- required stubs/forward declarations are only in allowed directories +- removed modules remain removed +- LogViewer remains preserved +- RTI/codegen and Grantlee/KTextTemplate success is real, not stale or faked + +## If blocked + +Do not fake success. Report: + +- failing command +- key error output +- affected service +- category: project, path, merge, CMake, Qt API, codegen, Docker, RTI/license, Grantlee/KTextTemplate, test, CTest, Jenkins CI, stub relocation, or environment +- what was fixed safely +- what remains blocked +- whether stale artifacts were ruled out +- whether generated files were involved +- exact missing files, targets, or generator step +- whether tests and CTest integration succeeded +- whether Docker validation and Jenkins discovery succeeded + +## Final report + +Keep it short. Include: + +- status: validated, partially validated, or blocked +- service migrated or already correct +- files changed +- C++ files changed +- tests added per C++ change +- CTest registration changes +- CMake and generator changes +- stub/forward-declaration moves or removals +- Docker and Jenkins CI changes +- Qt5 references removed or remaining +- confirmation that removed modules were not restored +- confirmation that LogViewer was preserved +- exact validation commands and results +- result of ./docker-build.h if present +- remaining blockers or risks diff --git a/svctargets.txt b/svctargets.txt new file mode 100644 index 000000000..0c663bd79 --- /dev/null +++ b/svctargets.txt @@ -0,0 +1,163 @@ +flmTests +flmTopicTypePlugin +svcAesClient +svcAesCommon +svcAesServer +svcAlmClient +svcAlmCommon +svcAlmServer +svcAreaEffectSimulation +svcAsmClient +svcAsmCommon +svcAsmServer +svcAssetManagement +svcAudioVideoManagement +svcAvmClient +svcAvmCommon +svcAvmServer +svcBldClient +svcBldCommon +svcBldServer +svcBuildings +svcCentralEffectSimulation +svcCesClient +svcCesCommon +svcCesDDSCommon +svcCesGeoPairingImpl +svcCesServer +svcCmoClient +svcCmoCommon +svcCmoServer +svcCnrHelper +svcCodClient +svcCodCommon +svcCodServer +svcCombatNetRadio +svcComponentMonitor +svcCoreClient +svcDifferentialGPS +svcEemClient +svcEemCommon +svcEemServer +svcEffectShowClient +svcEscClient +svcEscCommon +svcEscServer +svcEsmClient +svcEsmCommon +svcEsmServer +svcEvlClient +svcEvlCommon +svcEvlServer +svcExerciseEventManagement +svcExerciseManagement +svcExmClient +svcExmCommon +svcExmServer +svcFileManagement +svcFilterManagement +svcFlmClient +svcFlmCommon +svcFlmServer +svcFltClient +svcFltCommon +svcFltServer +svcGimClient +svcGimCommon +svcGimServer +svcGmpServer +svcGnaClient +svcGnaCommon +svcGnaServer +svcGuezIedManagement +svcInfrastructureManagement +svcIsmClient +svcIsmCommon +svcIsmServer +svcMapDummy +svcMdmClient +svcMdmCommon +svcMdmServer +svcMessaging +svcMeteoDataManagement +svcMrkClient +svcMrkCommon +svcMrkServer +svcMsgClient +svcMsgCommon +svcMsgServer +svcNomClient +svcNomCommon +svcNomServer +svcNotificationManagement +svcObdClient +svcObdCommon +svcObdServer +svcOcBaseDownload +svcOcSituationClient +svcOcSituationServer +svcOperatorManagement +svcOpmClient +svcOpmCommon +svcOpmServer +svcOreDummy +svcOscClient +svcOscCommon +svcOscServer +svcOssClient +svcOssCommon +svcOssServer +svcParticipantManagement +svcPdmClient +svcPdmCommon +svcPdmServer +svcPedDummy +svcPpmClient +svcPpmCommon +svcPpmServer +svcPreClient +svcPreCommon +svcPreServer +svcProjectDataManagement +svcPwsCommon +svcRecCommon +svcRecordingManagement +svcRepClient +svcRepCommon +svcRepCommonExecutable +svcRepServer +svcReportAnalyzer +svcReportGenerator +svcScmClient +svcScmCommon +svcScmServer +svcScrDummy +svcServiceManagement +svcSituationReplay +svcSmoDummy +svcSomClient +svcSomCommon +svcSomServer +svcSoundManagement +svcSrmCommon +svcSrpClient +svcSrpCommon +svcSrpServer +svcTabClient +svcTabCommon +svcTabServer +svcTabocClient +svcTabocCommon +svcTabocServer +svcTargetManagement +svcTgtClient +svcTgtCommon +svcTgtServer +svcTrainingAreaBase +svcTrainingAreaBaseOC +svcVideoOverlayManagement +svcWarehouseGuez +svcWarehouseManagement +svcWhgClient +svcWhgCommon +svcWhgServer