- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten - svcTabCommon: Export-Header-Fix via Fallback-Target - TrainingAreaBase: Stub-Header für BUILD_RTI=OFF - ddsfts: Include-Pfad und Dependency-Fixes - BUILD_RTI=OFF Compilation vollständig unterstützt Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
155 lines
5.7 KiB
Python
155 lines
5.7 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Verschiebt DDS-Stub-Header in den korrekten include-Pfad.
|
|
|
|
DDS-Header werden mit <ModulName/file_dtc.h> oder <ModulName/file_enums.hpp> included.
|
|
Diese müssen im include/ModulName/ Ordner liegen.
|
|
"""
|
|
|
|
import os
|
|
import shutil
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path("/home/torsten/swy/sandbox/qt-migration-legatus/qt6-after/qt6-migrated-legatus")
|
|
INCLUDE_DIR = BASE_DIR / "include"
|
|
|
|
# Mapping von Ordner zu Modul-Namen für Include-Pfade
|
|
# Beispiel: Lts/Services/AreaEffectSimulation -> AreaEffectSimulation
|
|
FOLDER_TO_MODULE = {
|
|
"InfrastructureManagement": "InfrastructureManagement",
|
|
"Services/InfrastructureManagement": "InfrastructureManagement",
|
|
"AreaEffectSimulation": "AreaEffectSimulation",
|
|
"Services/AreaEffectSimulation": "AreaEffectSimulation",
|
|
"CentralEffectSimulation": "CentralEffectSimulation",
|
|
"Services/CentralEffectSimulation": "CentralEffectSimulation",
|
|
"ProjectDataManagement": "ProjectDataManagement",
|
|
"PresentationManagement": "PresentationManagement",
|
|
"Services/PresentationManagement": "PresentationManagement",
|
|
"WarehouseGuez": "WarehouseGuez",
|
|
"SoundManagement": "SoundManagement",
|
|
"SituationReplayManagement": "SituationReplayManagement",
|
|
"Services/SituationReplayManagement": "SituationReplayManagement",
|
|
"TargetManagement": "TargetManagement",
|
|
"Services/TargetManagement": "TargetManagement",
|
|
"AudioVideoManagement": "AudioVideoManagement",
|
|
"Services/AudioVideoManagement": "AudioVideoManagement",
|
|
"OperatorManagement": "OperatorManagement",
|
|
"Services/OperatorManagement": "OperatorManagement",
|
|
"ParticipantManagement": "ParticipantManagement",
|
|
"Services/ParticipantManagement": "ParticipantManagement",
|
|
"MissionManagement": "MissionManagement",
|
|
"Services/MissionManagement": "MissionManagement",
|
|
"SensorManagement": "SensorManagement",
|
|
"Services/SensorManagement": "SensorManagement",
|
|
"Skeleton": "Skeleton",
|
|
"Services/Skeleton": "Skeleton",
|
|
"AlarmManagement": "AlarmManagement",
|
|
"Services/AlarmManagement": "AlarmManagement",
|
|
"LogManagement": "LogManagement",
|
|
"Services/LogManagement": "LogManagement",
|
|
"CommunicationManagement": "CommunicationManagement",
|
|
"Services/CommunicationManagement": "CommunicationManagement",
|
|
"DeviceManagement": "DeviceManagement",
|
|
"Services/DeviceManagement": "DeviceManagement",
|
|
"PlatformManagement": "PlatformManagement",
|
|
"Services/PlatformManagement": "PlatformManagement",
|
|
"ScenarioManagement": "ScenarioManagement",
|
|
"Services/ScenarioManagement": "ScenarioManagement",
|
|
"SimulationManagement": "SimulationManagement",
|
|
"Services/SimulationManagement": "SimulationManagement",
|
|
"SystemManagement": "SystemManagement",
|
|
"Services/SystemManagement": "SystemManagement",
|
|
"TrainingAreaManagement": "TrainingAreaManagement",
|
|
"Services/TrainingAreaManagement": "TrainingAreaManagement",
|
|
"WeatherManagement": "WeatherManagement",
|
|
"Services/WeatherManagement": "WeatherManagement",
|
|
}
|
|
|
|
def find_dds_headers():
|
|
"""Finde alle DDS-Header im Projekt."""
|
|
dds_headers = []
|
|
for pattern in ["*_dtc.h", "*_enums.hpp"]:
|
|
for header in BASE_DIR.rglob(pattern):
|
|
# Skip include directory itself
|
|
if "include" in header.parts:
|
|
continue
|
|
dds_headers.append(header)
|
|
return dds_headers
|
|
|
|
# Prefix zu Modul-Namen Mapping
|
|
PREFIX_TO_MODULE = {
|
|
"ism": "InfrastructureManagement",
|
|
"aes": "AreaEffectSimulation",
|
|
"ces": "CentralEffectSimulation",
|
|
"pdm": "ProjectDataManagement",
|
|
"pre": "PresentationManagement",
|
|
"whg": "WarehouseGuez",
|
|
"som": "SoundManagement",
|
|
"srm": "SituationReplayManagement",
|
|
"tgt": "TargetManagement",
|
|
"avm": "AudioVideoManagement",
|
|
"opm": "OperatorManagement",
|
|
"ppm": "ParticipantManagement",
|
|
"msm": "MissionManagement",
|
|
"sem": "SensorManagement",
|
|
"skl": "Skeleton",
|
|
"alm": "AlarmManagement",
|
|
"lom": "LogManagement",
|
|
"com": "CommunicationManagement",
|
|
"dvm": "DeviceManagement",
|
|
"plm": "PlatformManagement",
|
|
"scm": "ScenarioManagement",
|
|
"sim": "SimulationManagement",
|
|
"sym": "SystemManagement",
|
|
"tam": "TrainingAreaManagement",
|
|
"wem": "WeatherManagement",
|
|
"flm": "FileManagement",
|
|
"flt": "FilterManagement",
|
|
}
|
|
|
|
def get_module_name(header_path):
|
|
"""Extrahiere Modul-Namen aus dem Dateinamen-Prefix."""
|
|
filename = header_path.name
|
|
# Extrahiere Prefix (z.B. "ism" aus "ism_dtc.h" oder "ism_enums.hpp")
|
|
prefix = filename.split("_")[0].lower()
|
|
|
|
if prefix in PREFIX_TO_MODULE:
|
|
return PREFIX_TO_MODULE[prefix], filename
|
|
|
|
# Fallback: Nimm den Elternordner-Namen
|
|
rel_path = header_path.relative_to(BASE_DIR)
|
|
parts = rel_path.parts
|
|
if len(parts) > 1:
|
|
return parts[-2], filename
|
|
return "DDS", filename
|
|
|
|
def move_headers():
|
|
"""Verschiebe alle DDS-Header in den include-Ordner."""
|
|
headers = find_dds_headers()
|
|
print(f"Gefunden: {len(headers)} DDS-Header")
|
|
|
|
moved = 0
|
|
for header in headers:
|
|
module_name, filename = get_module_name(header)
|
|
target_dir = INCLUDE_DIR / module_name
|
|
target_dir.mkdir(parents=True, exist_ok=True)
|
|
|
|
target_path = target_dir / filename
|
|
|
|
# Skip if already in correct location
|
|
if header == target_path:
|
|
continue
|
|
|
|
# Copy file
|
|
if target_path.exists():
|
|
print(f"Skip (exists): {target_path}")
|
|
continue
|
|
|
|
shutil.copy2(header, target_path)
|
|
print(f"Kopiert: {header.name} -> {target_path}")
|
|
moved += 1
|
|
|
|
print(f"\nFertig: {moved} Header kopiert")
|
|
|
|
if __name__ == "__main__":
|
|
move_headers() |