Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d130c55be5 | ||
|
|
0e2100f383 | ||
|
|
26f702b7a4 | ||
|
|
37bd700564 | ||
|
|
684e05109d | ||
|
|
676ae05335 | ||
|
|
a17b431669 | ||
|
|
493893d2e6 | ||
|
|
8976b5aedb |
No files matched your search
@@ -14,3 +14,4 @@ build/
|
||||
build2/
|
||||
.envrc
|
||||
build4
|
||||
coverage-out/
|
||||
@@ -40,26 +40,9 @@ MESSAGE(STATUS "LTS Version: ${LTS_VERSION_MAJOR}.${LTS_VERSION_MINOR}.${LTS_VER
|
||||
# Enable CTest integration for unit tests
|
||||
include(CTest)
|
||||
|
||||
# Release scope: subdirectories are added unconditionally (no per-module migration builds)
|
||||
function(NGL_ADD_SUBDIR_GUARDED subdir)
|
||||
if(MIGRATE_MODULE STREQUAL "")
|
||||
add_subdirectory(${subdir})
|
||||
else()
|
||||
# normalize to forward slashes
|
||||
string(REPLACE "\\" "/" _mig "${MIGRATE_MODULE}")
|
||||
string(REPLACE "\\" "/" _sub "${subdir}")
|
||||
# also compare basenames so MIGRATE_MODULE=Lts/DDS matches subdir 'DDS' when called from Lts
|
||||
get_filename_component(_mig_base "${_mig}" NAME)
|
||||
get_filename_component(_sub_base "${_sub}" NAME)
|
||||
# If MIGRATE_MODULE either starts with the subdir, equals it, contains it as a path component,
|
||||
# or the basename matches, include the subdir. This makes nested paths like
|
||||
# 'Lts/Proxies/TrainingAreaBase' include both 'Lts' and its child 'Proxies'.
|
||||
if(_mig MATCHES "^${_sub}(/|$)" OR _sub MATCHES "^${_mig}(/|$)" OR _mig MATCHES ".*/${_sub}(/|$)" OR _sub MATCHES ".*/${_mig}(/|$)" OR _mig_base STREQUAL _sub OR _sub_base STREQUAL _mig)
|
||||
message(STATUS "Including subdir ${subdir} because MIGRATE_MODULE=${MIGRATE_MODULE}")
|
||||
add_subdirectory(${subdir})
|
||||
else()
|
||||
message(STATUS "Skipping subdir ${subdir} because MIGRATE_MODULE=${MIGRATE_MODULE}")
|
||||
endif()
|
||||
endif()
|
||||
add_subdirectory(${subdir})
|
||||
endfunction()
|
||||
|
||||
SET(LTS_VERSION_DATE "01.01.2018" CACHE STRING "The date when this software was compiled")
|
||||
@@ -95,51 +78,6 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/Lts/Viewer/SituationMap/Symbology")
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Viewer/LtsDataView)
|
||||
endif()
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/TrainingAreaBase)
|
||||
# Release scope: exclude Services, DDS, and Plugins include paths
|
||||
IF(NOT RELEASE_BUILD)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/ProjectDataManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Services)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/ProjectDataManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/InfrastructureManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/InfrastructureManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Plugins/InfrastructureManagement/Shared)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/AssetManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/AssetManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/AudioVideoManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/AudioVideoManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/ExerciseEventManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/ExerciseEventManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/ExerciseManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/ExerciseManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/FileManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/NotificationManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/NotificationManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/ParticipantManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/ParticipantManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/ReportManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/ReportManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/SituationReplay)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/SituationReplay)
|
||||
# Evaluations' generated evl_db_structs.h includes <evl_enums.hpp> by bare name, and that
|
||||
# header is consumed from OcBaseDownload as well, so its build dir must be visible tree-wide
|
||||
# like the services above. There is no include/Evaluations stub tree, so only the build dir
|
||||
# is added (same shape as FileManagement above, which has no stub tree either).
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/Evaluations)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Proxies/GuezNasat)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/DDS)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/DDS/QosProfile)
|
||||
# Generated DDS headers (BUILD_RTI=ON)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts)
|
||||
# <Core/core.hpp> consumers (LtsCoordinate, AES/CES, HLA proxies) resolve the
|
||||
# rtiddsgen-generated core.hpp from the DDS build dir (the qt5 include order);
|
||||
# the OFF-era stub copies in include/Core/ have been removed.
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/DDS)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/DDS/DDSConnector)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/Messaging)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/include/OperatorManagement)
|
||||
include_directories(${CMAKE_BINARY_DIR}/Lts/Services/OperatorManagement)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Plugins)
|
||||
ENDIF()
|
||||
# Release scope: include path for ProjectDataManagement stub headers
|
||||
IF(RELEASE_BUILD)
|
||||
include_directories(${CMAKE_SOURCE_DIR}/Lts/Services/ProjectDataManagement/stubs)
|
||||
@@ -170,78 +108,15 @@ IF(CMAKE_VERSION VERSION_GREATER 3.15.9)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Qt6 Migration: Options to disable modules with missing dependencies (WebEngine, XmlPatterns, ArcGIS)
|
||||
# These can be enabled once the required system dependencies are available in the build environment
|
||||
OPTION(BUILD_PLUGINS_PLANEDITOR "Build PlanEditor plugin (requires Qt6 WebEngine + ArcGIS SDK)" OFF)
|
||||
OPTION(BUILD_PLUGINS_ONLINEHELP "Build OnlineHelp plugin (requires Qt6 WebEngine)" OFF)
|
||||
OPTION(BUILD_PLUGINS_SERVICEMONITOR "Build ServiceMonitor plugin (requires Qt6 WebEngine)" OFF)
|
||||
OPTION(BUILD_PLUGINS_PARTICIPANT_ORG_CHART "Build ParticipantOrgChart (requires Qt6 WebEngine)" OFF)
|
||||
OPTION(BUILD_PLUGINS_MSDL "Build MSDL module (requires Qt6 XmlPatterns)" OFF)
|
||||
OPTION(BUILD_PLUGINS_SAAB "Build Saab module (requires Qt6 XmlPatterns)" OFF)
|
||||
OPTION(BUILD_RTI "Build RTI Connext DDS dependent modules" OFF)
|
||||
OPTION(BUILD_VIEWER_ONLY "Build only Viewer module (no RTI required)" OFF)
|
||||
# Add Lts/ include path globally for QosProfile and other Lts headers
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/Lts)
|
||||
IF(BUILD_RTI)
|
||||
# Define BUILD_RTI as preprocessor macro for all targets
|
||||
ADD_COMPILE_DEFINITIONS(BUILD_RTI)
|
||||
ENDIF()
|
||||
OPTION(BUILD_ARCGIS "Build ArcGIS SDK dependent modules" ON)
|
||||
OPTION(BUILD_FILTERMANAGEMENT "Build FilterManagement plugins (temporarily disabled for migration)" OFF)
|
||||
OPTION(BUILD_CODIFICATION "Build CodificationManagement plugins (requires KDReports)" OFF)
|
||||
OPTION(BUILD_GRANTLEE "Build CodeGen SQL files using KTextTemplate parser (KF6::TextTemplate)" ON)
|
||||
|
||||
# If BUILD_GRANTLEE is OFF but ngl_codegen is needed (for IDL codegen),
|
||||
# provide it as an imported executable target from pre-built location
|
||||
# Skip this for RELEASE_BUILD since CodeGen is excluded and ngl_codegen is not needed
|
||||
IF(NOT BUILD_GRANTLEE AND NOT RELEASE_BUILD)
|
||||
# ngl_codegen is copied to build/bin/ by run_final_migration.sh
|
||||
# Create an imported target so MacroCodeGenIdl.cmake can find it
|
||||
IF(NOT TARGET ngl_codegen)
|
||||
ADD_EXECUTABLE(ngl_codegen IMPORTED GLOBAL)
|
||||
SET_TARGET_PROPERTIES(ngl_codegen PROPERTIES
|
||||
IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/bin/ngl_codegen"
|
||||
)
|
||||
MESSAGE(STATUS "Using pre-built ngl_codegen from ${CMAKE_BINARY_DIR}/bin/ngl_codegen")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
OPTION(BUILD_LTSWEBSOCKET "Build LtsWebSocket module (requires NGLLogger)" ON)
|
||||
|
||||
IF(WIN32)
|
||||
SET(EXTERNAL_LIBRARY_DIR "C:/Development/Projekte/SituationMap/ExtFw" CACHE STRING "Library dir with all external dependencies")
|
||||
LIST(APPEND CMAKE_PREFIX_PATH "${EXTERNAL_LIBRARY_DIR}")
|
||||
LIST(APPEND CMAKE_PROGRAM_PATH "${EXTERNAL_LIBRARY_DIR}/bin;${EXTERNAL_LIBRARY_DIR}/dev-utils/bin")
|
||||
ELSE()
|
||||
# Linux: ArcGIS SDK Pfad konfigurieren (nur wenn BUILD_ARCGIS=ON)
|
||||
IF(BUILD_ARCGIS)
|
||||
# Use environment variable ARCGIS_ROOT if set, otherwise default to /workspace/external/... (Docker) or host path
|
||||
IF(DEFINED ENV{ARCGIS_ROOT})
|
||||
SET(ARCGIS_SDK_DIR "$ENV{ARCGIS_ROOT}" CACHE STRING "ArcGIS Runtime SDK for Qt directory")
|
||||
ELSEIF(EXISTS "/workspace/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk")
|
||||
SET(ARCGIS_SDK_DIR "/workspace/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk" CACHE STRING "ArcGIS Runtime SDK for Qt directory")
|
||||
ELSE()
|
||||
SET(ARCGIS_SDK_DIR "/repo/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk" CACHE STRING "ArcGIS Runtime SDK for Qt directory")
|
||||
ENDIF()
|
||||
IF(EXISTS "${ARCGIS_SDK_DIR}")
|
||||
LIST(APPEND CMAKE_PREFIX_PATH "${ARCGIS_SDK_DIR}")
|
||||
MESSAGE(STATUS "ArcGIS SDK found at: ${ARCGIS_SDK_DIR}")
|
||||
ELSE()
|
||||
MESSAGE(WARNING "ArcGIS SDK not found at: ${ARCGIS_SDK_DIR}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Set CMAKE_MODULE_PATH early so FIND_PACKAGE can find our custom Find modules
|
||||
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
|
||||
# Find ArcGIS SDK globally if BUILD_ARCGIS is enabled
|
||||
# This creates ArcGIS::ArcGIS target for all modules to use
|
||||
IF(BUILD_ARCGIS)
|
||||
FIND_PACKAGE(ArcGIS REQUIRED)
|
||||
ENDIF()
|
||||
|
||||
ENABLE_TESTING()
|
||||
INCLUDE(CTest)
|
||||
CONFIGURE_FILE(CTestCustom.ctest ${CMAKE_BINARY_DIR}/CTestCustom.ctest COPYONLY)
|
||||
@@ -520,17 +395,6 @@ if(NOT TARGET Qt6::WebEngineWidgets)
|
||||
message(STATUS "Created stub target for Qt6::WebEngineWidgets (library not available)")
|
||||
endif()
|
||||
|
||||
# Stub KDReports::KDReports target if not available (needed by LtsReportDisplay)
|
||||
# UNKNOWN (not INTERFACE) so FindKDReports.cmake can upgrade it with a real
|
||||
# IMPORTED_LOCATION; an INTERFACE imported target ignores IMPORTED_LOCATION.
|
||||
if(NOT TARGET KDReports::KDReports)
|
||||
add_library(KDReports::KDReports UNKNOWN IMPORTED)
|
||||
set_target_properties(KDReports::KDReports PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "NO_KDREPORTS"
|
||||
)
|
||||
message(STATUS "Created stub target for KDReports::KDReports (library not available)")
|
||||
endif()
|
||||
|
||||
# Stub Qt6::Core5Compat target if not available (needed by textEditorTest)
|
||||
if(NOT TARGET Qt6::Core5Compat)
|
||||
add_library(Qt6::Core5Compat INTERFACE IMPORTED)
|
||||
@@ -622,140 +486,6 @@ endif()
|
||||
MESSAGE(STATUS "Qt version is ${Qt6Core_VERSION}, GUI available: ${QT6_GUI_AVAILABLE}")
|
||||
|
||||
#
|
||||
# RTI Connext DDS - manuelle Konfiguration da keine CMake Config Files vorhanden
|
||||
#
|
||||
IF(BUILD_RTI)
|
||||
# Support environment variable override, otherwise use relative path from repo root
|
||||
IF(DEFINED ENV{DDS_PATH})
|
||||
SET(RTI_INSTALL_DIR "$ENV{DDS_PATH}" CACHE PATH "RTI Connext DDS installation directory")
|
||||
ELSE()
|
||||
# In Docker container: /workspace/external/rti_connext_dds-7.7.0
|
||||
# On host: ${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0
|
||||
IF(EXISTS "/workspace/external/rti_connext_dds-7.7.0")
|
||||
SET(RTI_INSTALL_DIR "/workspace/external/rti_connext_dds-7.7.0" CACHE PATH "RTI Connext DDS installation directory")
|
||||
ELSEIF(EXISTS "${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0")
|
||||
SET(RTI_INSTALL_DIR "${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0" CACHE PATH "RTI Connext DDS installation directory")
|
||||
ELSE()
|
||||
SET(RTI_INSTALL_DIR "/opt/RTI" CACHE PATH "RTI Connext DDS installation directory")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
# Also set RTI_DIR for FindRTI.cmake compatibility (used by subdirectories)
|
||||
SET(RTI_DIR "${RTI_INSTALL_DIR}" CACHE PATH "RTI base path" FORCE)
|
||||
IF(EXISTS "${RTI_INSTALL_DIR}")
|
||||
SET(RTI_LIB_DIR "${RTI_INSTALL_DIR}/lib/x64Linux4gcc8.5.0")
|
||||
SET(RTI_INCLUDE_DIR "${RTI_INSTALL_DIR}/include/ndds/hpp")
|
||||
|
||||
# RTI hat vier Include-Pfade:
|
||||
# - include/ für ndds/... und andere Top-Level Headers (z.B. ndds/ndds_config_common.h)
|
||||
# - include/ndds/ für osapi/... Headers (z.B. osapi/osapi_platform.h)
|
||||
# - include/ndds/hpp für C++ Headers (dds/..., rti/...)
|
||||
# - include/rti für rti/... Headers
|
||||
SET(RTI_INCLUDE_DIRS
|
||||
"${RTI_INSTALL_DIR}/include"
|
||||
"${RTI_INSTALL_DIR}/include/ndds"
|
||||
"${RTI_INSTALL_DIR}/include/ndds/hpp"
|
||||
"${RTI_INSTALL_DIR}/include/rti"
|
||||
)
|
||||
|
||||
# RTI Include-Pfade global hinzufügen (auch für Tests die keine RTI Libraries linken)
|
||||
INCLUDE_DIRECTORIES(${RTI_INCLUDE_DIRS})
|
||||
|
||||
# RTI Include-Pfade auch an MOC weitergeben (für Q_OBJECT Header mit RTI Types)
|
||||
SET(CMAKE_AUTOMOC_INCLUDE_DIRECTORIES ${CMAKE_AUTOMOC_INCLUDE_DIRECTORIES} ${RTI_INCLUDE_DIRS})
|
||||
|
||||
# The generated <svc>_topic_type_plugin.h / <svc>_record_replay_plugin.h
|
||||
# headers use Q_INTERFACES(DDSGeneric::TopicTypePlugin), so moc must see
|
||||
# the Q_DECLARE_INTERFACE in Lts/DDS/... (resolved through the Lts include
|
||||
# root). Without this path every <svc>TopicTypePlugin fails with
|
||||
# "Undefined interface" even though the compiler sees the header.
|
||||
SET(CMAKE_AUTOMOC_INCLUDE_DIRECTORIES ${CMAKE_AUTOMOC_INCLUDE_DIRECTORIES} ${CMAKE_SOURCE_DIR}/Lts)
|
||||
|
||||
# The ElevationMapManager stub header (include/Viewer/SituationMap/ElevationMap/)
|
||||
# lives apart from its source (src/...), so moc needs its directory explicitly.
|
||||
# NOTE: this must be set at root scope - subdir-scope appends do not reach
|
||||
# the AutogenInfo MOC_INCLUDES.
|
||||
SET(CMAKE_AUTOMOC_INCLUDE_DIRECTORIES ${CMAKE_AUTOMOC_INCLUDE_DIRECTORIES} ${CMAKE_SOURCE_DIR}/include/Viewer/SituationMap/ElevationMap)
|
||||
|
||||
# The migrated Projects declare Q_INTERFACES(ProjectPlugin::Plugin) and include
|
||||
# <PluginInterfaces/project_plugin_interface.h>. That include dir
|
||||
# (Lts/Common/PluginInterfaces/..) is only a target-level PUBLIC include of
|
||||
# ProjectPluginInterface and is NOT part of the global include_directories that
|
||||
# reach the AutogenInfo MOC_INCLUDES, so moc fails with "Undefined interface".
|
||||
# Add the Lts/Common root explicitly (mirrors the Lts append above) so moc can
|
||||
# resolve the interface. Must be set at root scope - subdir appends do not
|
||||
# reach the AutogenInfo MOC_INCLUDES.
|
||||
SET(CMAKE_AUTOMOC_INCLUDE_DIRECTORIES ${CMAKE_AUTOMOC_INCLUDE_DIRECTORIES} ${CMAKE_SOURCE_DIR}/Lts/Common)
|
||||
|
||||
# IMPORTED Targets für RTI Libraries erstellen
|
||||
# Debug und Release Varianten korrekt konfigurieren
|
||||
FOREACH(lib nddsc nddscore nddscpp nddscpp2 nddsctesthelpers)
|
||||
ADD_LIBRARY(RTI::${lib} SHARED IMPORTED)
|
||||
|
||||
# Debug Library
|
||||
IF(EXISTS "${RTI_LIB_DIR}/lib${lib}d.so")
|
||||
SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${RTI_LIB_DIR}/lib${lib}d.so"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Release Library
|
||||
IF(EXISTS "${RTI_LIB_DIR}/lib${lib}.so")
|
||||
SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${RTI_LIB_DIR}/lib${lib}.so"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${RTI_LIB_DIR}/lib${lib}.so"
|
||||
IMPORTED_LOCATION_MINSIZEREL "${RTI_LIB_DIR}/lib${lib}.so"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Include Verzeichnisse für alle Varianten
|
||||
# RTI_UNIX required for basic types (RTI_INT32, RTI_UINT32, etc.)
|
||||
# RTI_POSIX_THREADS required for pthread support
|
||||
SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${RTI_INCLUDE_DIRS}"
|
||||
INTERFACE_COMPILE_DEFINITIONS "RTI_LINUX;RTI_UNIX;RTI_POSIX_THREADS"
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
MESSAGE(STATUS "RTI Connext DDS found at: ${RTI_INSTALL_DIR}")
|
||||
MESSAGE(STATUS "RTI Libraries: ${RTI_LIB_DIR}")
|
||||
MESSAGE(STATUS "RTI Platform: RTI_LINUX")
|
||||
ELSE()
|
||||
MESSAGE(WARNING "RTI Connext DDS not found at: ${RTI_INSTALL_DIR}, BUILD_RTI will fail")
|
||||
ENDIF()
|
||||
ENDIF(BUILD_RTI)
|
||||
|
||||
# Alias Targets für RTI Libraries (für Abwärtskompatibilität)
|
||||
# Ermöglicht Verwendung von "ddscore" statt "RTI::nddscore" in CMakeLists.txt Files
|
||||
# HINWEIS: ddscore, ddsftc, ddsfts, ddsconnector werden von Lts/DDS Modulen als echte Targets erstellt
|
||||
# Daher hier KEINE ALIAS für diese Targets erstellen um Kollisionen zu vermeiden
|
||||
IF(BUILD_RTI)
|
||||
# BUILD_RTI=ON: Targets werden von Lts/DDS/Core/CMakeLists.txt erstellt - hier keine Stubs!
|
||||
# Alias-Typen werden später erstellt, wenn RTI:: Targets verfügbar sind
|
||||
IF(TARGET RTI::nddsc)
|
||||
ADD_LIBRARY(ddsc ALIAS RTI::nddsc)
|
||||
# ddscore wird von Lts/DDS/Core/CMakeLists.txt als echtes Target erstellt - kein Alias hier!
|
||||
ADD_LIBRARY(ddscpp2 ALIAS RTI::nddscpp2)
|
||||
# Optionale Targets nur als ALIAS erstellen wenn verfügbar (RTI 7.x hat nicht alle Legacy-Bibliotheken)
|
||||
IF(TARGET RTI::nddscpp)
|
||||
ADD_LIBRARY(ddscpp ALIAS RTI::nddscpp)
|
||||
ENDIF()
|
||||
IF(TARGET RTI::nddsctesthelpers)
|
||||
ADD_LIBRARY(nddsctesthelpers ALIAS RTI::nddsctesthelpers)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
# HINWEIS: ddsftc, ddsfts, ddsconnector werden von Lts/DDS/FTC Modulen als INTERFACE Targets erstellt
|
||||
# Hier KEINE ALIAS erstellen um Target-Kollisionen zu vermeiden
|
||||
ELSE()
|
||||
# BUILD_RTI=OFF: Leere Interface-Libraries als Platzhalter
|
||||
ADD_LIBRARY(ddsc INTERFACE)
|
||||
ADD_LIBRARY(ddscore INTERFACE)
|
||||
ADD_LIBRARY(ddscpp INTERFACE)
|
||||
ADD_LIBRARY(ddscpp2 INTERFACE)
|
||||
ADD_LIBRARY(nddsctesthelpers INTERFACE)
|
||||
# HINWEIS: ddsftc, ddsfts, ddsconnector werden von Lts/DDS/FTC Modulen als INTERFACE Targets erstellt
|
||||
# Hier KEINE Platzhalter erstellen um Target-Kollisionen zu vermeiden
|
||||
ENDIF(BUILD_RTI)
|
||||
|
||||
ADD_DEFINITIONS(-DQT_USE_QSTRINGBUILDER)
|
||||
ADD_DEFINITIONS(-DQT_NO_CAST_TO_ASCII)
|
||||
ADD_DEFINITIONS(-DQT_NO_CAST_FROM_ASCII)
|
||||
@@ -773,25 +503,12 @@ ENDIF()
|
||||
# Ein paar NGL-spezifische Macros
|
||||
#
|
||||
INCLUDE(NGLMacros)
|
||||
# Skip MacroCodeGenIdl for release builds as CodeGen module is excluded
|
||||
IF(NOT RELEASE_BUILD)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# Projektspezifische Einstellungen?
|
||||
#
|
||||
NGL_INSTALL(SV AAR WS FILES lts-cc.conf DESTINATION . RENAME lts-cc.conf.distrib)
|
||||
|
||||
OPTION(ETS_MODE "Build for ETS (No B-Contamination etc)" OFF)
|
||||
IF(ETS_MODE)
|
||||
ADD_DEFINITIONS(-DETS_MODE)
|
||||
ENDIF()
|
||||
OPTION(TABLET_MODE "Build for TABLET " OFF)
|
||||
IF(TABLET_MODE)
|
||||
ADD_DEFINITIONS(-DTABLET_MODE)
|
||||
ENDIF()
|
||||
|
||||
OPTION(GUEZ_MODE "Build for GUEZ " ON)
|
||||
IF(GUEZ_MODE)
|
||||
ADD_DEFINITIONS(-DGUEZ_MODE)
|
||||
@@ -947,74 +664,12 @@ ELSE()
|
||||
ENDIF()
|
||||
|
||||
|
||||
#
|
||||
# DDS benoetigt zwingend RTI
|
||||
#
|
||||
FIND_PACKAGE(RTI QUIET)
|
||||
if(NOT RTI_FOUND)
|
||||
message(WARNING "RTI not found; creating placeholder RTI::* imported targets to allow configure without RTI installation")
|
||||
set(_rti_libs nddscore nddsc nddscpp2 rtiroutingservice)
|
||||
foreach(_lib ${_rti_libs})
|
||||
if(NOT TARGET RTI::${_lib})
|
||||
add_library(RTI::${_lib} UNKNOWN IMPORTED)
|
||||
set_property(TARGET RTI::${_lib} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "")
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
# Release scope: always build only TetraIF, Z/src, and Lts/Common
|
||||
# (TrainingAreaBase is included via Lts/Proxies when Lts is processed)
|
||||
NGL_ADD_SUBDIR_GUARDED(TetraIF)
|
||||
NGL_ADD_SUBDIR_GUARDED(Z/src)
|
||||
NGL_ADD_SUBDIR_GUARDED(Lts)
|
||||
|
||||
# Respect MIGRATE_MODULE: when set to a relative path (e.g. "Lts/Common"), only add
|
||||
# the top-level subdirectories required to configure/build that module. This allows
|
||||
# per-module migration builds via -DMIGRATE_MODULE=<path>.
|
||||
if(NOT DEFINED MIGRATE_MODULE)
|
||||
set(MIGRATE_MODULE "" CACHE STRING "If set, only add subdirectories covering this module (path relative to repo root)")
|
||||
endif()
|
||||
|
||||
# RELEASE_BUILD: when ON, only build the first release modules (TetraIF, Z, Lts/Common)
|
||||
# This excludes Lts/Services, Lts/DDS, Lts/Tools, Lts/Application, Lts/Proxies, Lts/Plugins, Lts/Viewer, Lts/Projects
|
||||
if(NOT DEFINED RELEASE_BUILD)
|
||||
set(RELEASE_BUILD OFF CACHE BOOL "Build only the first release modules (TetraIF, Z, Lts/Common)")
|
||||
endif()
|
||||
|
||||
# For release builds, disable ArcGIS (not in release scope, requires Qt6Location which is not available)
|
||||
if(RELEASE_BUILD)
|
||||
set(BUILD_ARCGIS OFF CACHE BOOL "Build ArcGIS SDK dependent modules" FORCE)
|
||||
endif()
|
||||
|
||||
# Add only guarded subdirectories
|
||||
if(RELEASE_BUILD)
|
||||
message(STATUS "RELEASE_BUILD=ON: Building only TetraIF, Z/src, and Lts/Common")
|
||||
NGL_ADD_SUBDIR_GUARDED(TetraIF)
|
||||
NGL_ADD_SUBDIR_GUARDED(Z/src)
|
||||
NGL_ADD_SUBDIR_GUARDED(Lts)
|
||||
else()
|
||||
NGL_ADD_SUBDIR_GUARDED(TetraIF)
|
||||
NGL_ADD_SUBDIR_GUARDED(Z/src)
|
||||
# Services are included before plugins via Lts/CMakeLists.txt (LTS_SUBDIRS order)
|
||||
NGL_ADD_SUBDIR_GUARDED(Lts)
|
||||
endif()
|
||||
|
||||
# Add migration tests - skip when MIGRATE_MODULE targets specific Lts modules (tests need full codebase)
|
||||
# MUST be after Lts configuration so tests can access Lts targets (LtsTimelineClassic, codegen_base, etc.)
|
||||
if(NOT DEFINED MIGRATE_MODULE OR MIGRATE_MODULE STREQUAL "" OR MIGRATE_MODULE STREQUAL "tests")
|
||||
ADD_SUBDIRECTORY(tests)
|
||||
else()
|
||||
message(STATUS "MIGRATE_MODULE=${MIGRATE_MODULE} - skipping tests (need full codebase)")
|
||||
endif()
|
||||
|
||||
# TrainingAreaBase is included via Lts/Proxies when Lts is processed
|
||||
# Special-case: when migrating TetraIF, also include ProjectDataManagement so generated headers
|
||||
# and internal logger target are available in the same build tree for TetraIF dependents.
|
||||
if(DEFINED MIGRATE_MODULE AND MIGRATE_MODULE STREQUAL "TetraIF")
|
||||
message(STATUS "Including helper modules for TetraIF migration: Lts/Plugins/ProjectDataManagement")
|
||||
# Services already included above when BUILD_RTI=ON
|
||||
add_subdirectory(Lts/Plugins/ProjectDataManagement)
|
||||
endif()
|
||||
# at last, to make sure we get all targets in NGL_TS_TARGETS property
|
||||
NGL_ADD_SUBDIR_GUARDED(translations)
|
||||
#-----------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
OPTION(BUILD_QAV "Build script for local QAV analysis" OFF)
|
||||
IF (BUILD_QAV)
|
||||
ADD_SUBDIRECTORY(qav)
|
||||
ENDIF()
|
||||
@@ -15,58 +15,21 @@ else()
|
||||
message(WARNING "Doxygen config ${CMAKE_SOURCE_DIR}/doxygen/DoxyfileLts.in not found; skipping ADD_DOXYGEN_TARGET(Lts)")
|
||||
endif()
|
||||
|
||||
# Add only existing subdirectories to allow partial checkouts / incremental migration
|
||||
if(RELEASE_BUILD)
|
||||
# For first release: only build Lts/Common and Lts/Proxies/TrainingAreaBase (tabTelegrams library)
|
||||
# Excludes: Tools, Application, DDS, Services, most of Proxies, Plugins, Viewer, Projects
|
||||
message(STATUS "RELEASE_BUILD=ON: Building Lts/Common and Lts/Proxies/TrainingAreaBase")
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Common")
|
||||
NGL_ADD_SUBDIR_GUARDED(Common)
|
||||
else()
|
||||
message(STATUS "Skipping missing Lts subdirectory: Common")
|
||||
endif()
|
||||
# TrainingAreaBase provides tabTelegrams library needed by TetraIF/CoPrtCnv
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Proxies/TrainingAreaBase")
|
||||
NGL_ADD_SUBDIR_GUARDED(Proxies/TrainingAreaBase)
|
||||
else()
|
||||
message(STATUS "Skipping missing Lts subdirectory: Proxies/TrainingAreaBase")
|
||||
endif()
|
||||
# Release scope: only build Lts/Common and Lts/Proxies/TrainingAreaBase (tabTelegrams library)
|
||||
# Excludes: Tools, Application, DDS, Services, most of Proxies, Plugins, Viewer, Projects
|
||||
message(STATUS "Building Lts/Common and Lts/Proxies/TrainingAreaBase")
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Common")
|
||||
NGL_ADD_SUBDIR_GUARDED(Common)
|
||||
else()
|
||||
set(LTS_SUBDIRS Tools Application DDS Common Services Proxies Plugins Viewer Projects)
|
||||
foreach(dir IN LISTS LTS_SUBDIRS)
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${dir}")
|
||||
# Use guarded add so top-level MIGRATE_MODULE can restrict which Lts subdirs are included
|
||||
NGL_ADD_SUBDIR_GUARDED(${dir})
|
||||
else()
|
||||
message(STATUS "Skipping missing Lts subdirectory: ${dir}")
|
||||
endif()
|
||||
|
||||
endforeach()
|
||||
message(STATUS "Skipping missing Lts subdirectory: Common")
|
||||
endif()
|
||||
# TrainingAreaBase provides tabTelegrams library needed by TetraIF/CoPrtCnv
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Proxies/TrainingAreaBase")
|
||||
NGL_ADD_SUBDIR_GUARDED(Proxies/TrainingAreaBase)
|
||||
else()
|
||||
message(STATUS "Skipping missing Lts subdirectory: Proxies/TrainingAreaBase")
|
||||
endif()
|
||||
|
||||
IF (BUILD_TESTING)
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Tests")
|
||||
ADD_SUBDIRECTORY(Tests)
|
||||
else()
|
||||
message(STATUS "Skipping missing Tests directory under Lts (BUILD_TESTING is ON)")
|
||||
endif()
|
||||
ENDIF()
|
||||
|
||||
OPTION(BUILD_DOCS "Build documentation as html files from Lts/Documentation" OFF)
|
||||
IF (BUILD_DOCS)
|
||||
ADD_SUBDIRECTORY(Documentation)
|
||||
ENDIF()
|
||||
|
||||
# Ensure codegen macros are available before calling CODEGEN_* helpers
|
||||
# Skip for release builds as CodeGen module is excluded and not needed
|
||||
IF(NOT RELEASE_BUILD)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
ENDIF()
|
||||
|
||||
# Export headers included by bare name from module sources (release scope)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../include/NGLLogger/)
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../include/LtsUtilsGuiDds/)
|
||||
|
||||
IF(NOT RELEASE_BUILD)
|
||||
CODEGEN_WRITE_SERVICEFILE_INFO()
|
||||
ENDIF()
|
||||
@@ -4,59 +4,22 @@
|
||||
# $Author$
|
||||
#
|
||||
|
||||
# RELEASE_BUILD: exclude modules with DDS/RTI dependencies not needed for TetraIF/Z
|
||||
# DDS-dependent modules: CodeGen, LtsAppManager, LtsBotan, LtsCoordinate, LtsElevation,
|
||||
# LtsLogin, LtsMultiMonitor, LtsPluginManager, LtsPrinting, LtsProjectionWorkstation,
|
||||
# Core modules needed for TetraIF and Z
|
||||
ADD_SUBDIRECTORY(CommonUnitTestsPlaceholder)
|
||||
ADD_SUBDIRECTORY(httq)
|
||||
ADD_SUBDIRECTORY(LtsAppDescriptor)
|
||||
ADD_SUBDIRECTORY(LtsCommandLineParser)
|
||||
ADD_SUBDIRECTORY(LtsCoordTrans)
|
||||
ADD_SUBDIRECTORY(LtsLicence)
|
||||
ADD_SUBDIRECTORY(LtsNotification)
|
||||
ADD_SUBDIRECTORY(LtsRestClient)
|
||||
ADD_SUBDIRECTORY(LtsSerialPortQuerry)
|
||||
# Excluded: LtsTimeline (depends on LtsWidgets which has DDS dependencies)
|
||||
ADD_SUBDIRECTORY(LtsUtils)
|
||||
ADD_SUBDIRECTORY(LtsWebSocket)
|
||||
ADD_SUBDIRECTORY(PluginInterfaces)
|
||||
ADD_SUBDIRECTORY(ProjectConfig)
|
||||
# Excluded: CodeGen, LtsAppManager, LtsBotan, LtsCoordinate, LtsElevation, LtsLogin,
|
||||
# LtsMultiMonitor, LtsPluginManager, LtsPrinting, LtsProjectionWorkstation,
|
||||
# LtsScriptTimeline, LtsSession, LtsTimelineClassic, LtsVirtualKeyboard, LtsWidgets,
|
||||
# PluginInterfaces (TopicReplayInterface, RecordReplayPlugin), TopicEditorBase
|
||||
|
||||
if(RELEASE_BUILD)
|
||||
# Core modules needed for TetraIF and Z
|
||||
ADD_SUBDIRECTORY(CommonUnitTestsPlaceholder)
|
||||
ADD_SUBDIRECTORY(httq)
|
||||
ADD_SUBDIRECTORY(LtsAppDescriptor)
|
||||
ADD_SUBDIRECTORY(LtsCommandLineParser)
|
||||
ADD_SUBDIRECTORY(LtsCoordTrans)
|
||||
ADD_SUBDIRECTORY(LtsLicence)
|
||||
ADD_SUBDIRECTORY(LtsNotification)
|
||||
ADD_SUBDIRECTORY(LtsRestClient)
|
||||
ADD_SUBDIRECTORY(LtsSerialPortQuerry)
|
||||
# Excluded: LtsTimeline (depends on LtsWidgets which has DDS dependencies)
|
||||
ADD_SUBDIRECTORY(LtsUtils)
|
||||
ADD_SUBDIRECTORY(LtsWebSocket)
|
||||
ADD_SUBDIRECTORY(PluginInterfaces)
|
||||
ADD_SUBDIRECTORY(ProjectConfig)
|
||||
# Excluded: CodeGen, LtsAppManager, LtsBotan, LtsCoordinate, LtsElevation, LtsLogin,
|
||||
# LtsMultiMonitor, LtsPluginManager, LtsPrinting, LtsProjectionWorkstation,
|
||||
# LtsScriptTimeline, LtsSession, LtsTimelineClassic, LtsVirtualKeyboard, LtsWidgets,
|
||||
# TopicEditorBase
|
||||
else()
|
||||
ADD_SUBDIRECTORY(CodeGen)
|
||||
ADD_SUBDIRECTORY(CommonUnitTestsPlaceholder)
|
||||
ADD_SUBDIRECTORY(httq)
|
||||
ADD_SUBDIRECTORY(LtsAppDescriptor)
|
||||
ADD_SUBDIRECTORY(LtsAppManager)
|
||||
ADD_SUBDIRECTORY(LtsCommandLineParser)
|
||||
ADD_SUBDIRECTORY(LtsCoordinate)
|
||||
ADD_SUBDIRECTORY(LtsCoordTrans)
|
||||
ADD_SUBDIRECTORY(LtsElevation)
|
||||
ADD_SUBDIRECTORY(LtsLicence)
|
||||
ADD_SUBDIRECTORY(LtsLogin)
|
||||
ADD_SUBDIRECTORY(LtsMultiMonitor)
|
||||
ADD_SUBDIRECTORY(LtsNotification)
|
||||
ADD_SUBDIRECTORY(LtsPluginManager)
|
||||
ADD_SUBDIRECTORY(LtsPrinting)
|
||||
ADD_SUBDIRECTORY(LtsProjectionWorkstation)
|
||||
ADD_SUBDIRECTORY(LtsRestClient)
|
||||
ADD_SUBDIRECTORY(LtsScriptTimeline)
|
||||
ADD_SUBDIRECTORY(LtsSerialPortQuerry)
|
||||
ADD_SUBDIRECTORY(LtsSession)
|
||||
ADD_SUBDIRECTORY(LtsTimeline)
|
||||
ADD_SUBDIRECTORY(LtsUtils)
|
||||
ADD_SUBDIRECTORY(LtsVirtualKeyboard)
|
||||
ADD_SUBDIRECTORY(LtsWebSocket)
|
||||
ADD_SUBDIRECTORY(LtsWidgets)
|
||||
ADD_SUBDIRECTORY(PluginInterfaces)
|
||||
ADD_SUBDIRECTORY(ProjectConfig)
|
||||
ADD_SUBDIRECTORY(TopicEditorBase)
|
||||
endif()
|
||||
# TopicEditorBase
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Stub GTest smoke test for coordTrans
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(CoordTransSmokeTest, StubTest)
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
// Stub QtTest smoke test for coordTrans
|
||||
|
||||
#include <QTest>
|
||||
|
||||
class CoordTransSmokeTest : public QObject
|
||||
|
||||
-2
@@ -1,5 +1,3 @@
|
||||
// MockCoordTrans.h - Stub mock for CoordTrans functionality
|
||||
// This is a placeholder to allow builds without full CoordTrans implementation
|
||||
|
||||
#ifndef MOCK_COORD_TRANS_H
|
||||
#define MOCK_COORD_TRANS_H
|
||||
|
||||
@@ -35,8 +35,6 @@ NGL_TARGET_LINK_LIBRARIES(LtsAppDescriptor
|
||||
|
||||
NGL_INSTALL_TARGET(LtsAppDescriptor)
|
||||
|
||||
|
||||
|
||||
# LtsAppDescriptorChecker
|
||||
SET(LtsAppDescriptorChecker_SRCS
|
||||
checker/main.cpp
|
||||
@@ -51,27 +49,6 @@ NGL_TARGET_LINK_LIBRARIES(LtsAppDescriptorChecker
|
||||
Qt6::Core
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# LtsAppDescriptorEditor => Hat niemand benutzt, wird keiner benutzen, also wird der bis auf Weiteres auch nicht an die neue Syntax angepasst.
|
||||
#SET(LtsAppDescriptorEditor_SRCS
|
||||
# lts_app_descriptor_editor.cpp
|
||||
# lts_app_descriptor_editor.h
|
||||
#)
|
||||
|
||||
#NGL_WRAP_UI(LtsAppDescriptorEditor_SRCS
|
||||
# lts_app_descriptor_editor.ui
|
||||
#)
|
||||
|
||||
#NGL_ADD_LIBRARY2(WS NO_TRANSLATION LtsAppDescriptorEditor SHARED ${LtsAppDescriptorEditor_SRCS})
|
||||
|
||||
#NGL_TARGET_INCLUDE_DIRECTORIES(LtsAppDescriptorEditor
|
||||
# PUBLIC
|
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
#)
|
||||
|
||||
if(QT6_GUI_AVAILABLE)
|
||||
#NGL_TARGET_LINK_LIBRARIES(LtsAppDescriptorEditor
|
||||
# PUBLIC
|
||||
|
||||
@@ -8,7 +8,4 @@
|
||||
|
||||
|
||||
ADD_SUBDIRECTORY(LtsUtilsCore)
|
||||
IF(NOT RELEASE_BUILD)
|
||||
ADD_SUBDIRECTORY(LtsUtilsGui)
|
||||
ENDIF()
|
||||
ADD_SUBDIRECTORY(LtsUtilsSettings)
|
||||
@@ -48,22 +48,3 @@ NGL_TARGET_LINK_LIBRARIES(LtsUtilsCore
|
||||
Qt6::Core
|
||||
LtsUtilsCoreHeaderOnly
|
||||
)
|
||||
|
||||
#
|
||||
# --- Tests --------------------------------------------------------------
|
||||
#
|
||||
IF(BUILD_RTI AND (BUILD_WS OR BUILD_SV) AND BUILD_TESTING)
|
||||
ADD_EXECUTABLE(utils_test
|
||||
UnitTests/utils_test.cpp
|
||||
UnitTests/utils_test.h
|
||||
promise_examples.h
|
||||
promise_examples.cpp
|
||||
)
|
||||
TARGET_LINK_LIBRARIES(utils_test
|
||||
LtsUtilsCore
|
||||
Qt6::Core
|
||||
Qt6::Test
|
||||
ddscore
|
||||
)
|
||||
ADD_TEST(NAME utils_test COMMAND $<TARGET_FILE:utils_test>)
|
||||
ENDIF()
|
||||
-6
@@ -45,9 +45,6 @@ if(QT6_GUI_AVAILABLE)
|
||||
Qt6::Svg
|
||||
)
|
||||
endif()
|
||||
IF(BUILD_RTI)
|
||||
TARGET_LINK_LIBRARIES(LtsUtilsGuiDds PUBLIC ddscore)
|
||||
ENDIF(BUILD_RTI)
|
||||
NGL_TARGET_COMPILE_DEFINITIONS(LtsUtilsGuiDds
|
||||
PUBLIC
|
||||
REQUEST_HELPER_WITH_GUI
|
||||
@@ -66,6 +63,3 @@ NGL_TARGET_LINK_LIBRARIES(LtsUtilsDds
|
||||
PUBLIC
|
||||
Qt6::Core
|
||||
)
|
||||
IF(BUILD_RTI)
|
||||
TARGET_LINK_LIBRARIES(LtsUtilsDds PUBLIC ddscore)
|
||||
ENDIF(BUILD_RTI)
|
||||
@@ -14,16 +14,6 @@ ADD_LIBRARY(DataPluginInterface SHARED
|
||||
TARGET_INCLUDE_DIRECTORIES(DataPluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
||||
TARGET_LINK_LIBRARIES(DataPluginInterface PUBLIC Qt6::Core)
|
||||
|
||||
# GuiPluginInterface
|
||||
IF(NOT RELEASE_BUILD)
|
||||
ADD_LIBRARY(GuiPluginInterface SHARED
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/gui_plugin_interface.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/gui_plugin_interface.cpp
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(GuiPluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
||||
TARGET_LINK_LIBRARIES(GuiPluginInterface PUBLIC Qt6::Core LtsWidgets ProjectConfig LtsAppDescriptor LtsUtilsCore)
|
||||
ENDIF()
|
||||
|
||||
# projectPluginInterface
|
||||
ADD_LIBRARY(ProjectPluginInterface SHARED
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/project_plugin_interface.h
|
||||
@@ -39,24 +29,3 @@ ADD_LIBRARY(StylePluginInterface SHARED
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(StylePluginInterface PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
||||
TARGET_LINK_LIBRARIES(StylePluginInterface PUBLIC Qt6::Core)
|
||||
|
||||
# record_replay_plugin (requires RTI DDS)
|
||||
if(BUILD_RTI)
|
||||
ADD_LIBRARY(RecordReplayPlugin SHARED
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/record_replay_plugin.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/record_replay_plugin.cpp
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(RecordReplayPlugin PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
|
||||
TARGET_LINK_LIBRARIES(RecordReplayPlugin PUBLIC Qt6::Core)
|
||||
|
||||
# Topic Replay Interface (requires RTI DDS and TopicEditorBase)
|
||||
ADD_LIBRARY(TopicReplayInterface SHARED
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/topic_replay_interface.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/topic_replay_interface.cpp
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES(TopicReplayInterface PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
${CMAKE_BINARY_DIR}/Lts/Common/TopicEditorBase # topiceditorbase_export.h
|
||||
)
|
||||
TARGET_LINK_LIBRARIES(TopicReplayInterface PUBLIC Qt6::Core TopicEditorBase)
|
||||
endif()
|
||||
@@ -1,14 +1,6 @@
|
||||
# Modified CMakeLists.txt from github.com/wille-io/httq
|
||||
|
||||
# Make ${Qt6_WebSockets} optional
|
||||
# Link the real WebSockets module whenever the websocket code path is
|
||||
# compiled: QT6_WEBSOCKETS_AVAILABLE (root CMakeLists) and the manual
|
||||
# Qt6::WebSockets import are set when the real module was found. The old
|
||||
# QT6_GUI_AVAILABLE condition never held in this environment (Qt6
|
||||
# discovery takes the minimal path) and the Qt6_WebSockets variable was
|
||||
# never defined, so AbstractServer.cpp compiled the websocket code
|
||||
# without the module on the link line (undefined reference to
|
||||
# QWebSocketServer::handleConnection).
|
||||
if(QT6_WEBSOCKETS_REAL_FOUND OR Qt6WebSockets_FOUND)
|
||||
set(Qt6_WebSockets Qt6::WebSockets)
|
||||
else()
|
||||
|
||||
@@ -16,9 +16,6 @@ else()
|
||||
endif()
|
||||
|
||||
|
||||
INCLUDE(MacroRTIDDSGen)
|
||||
INCLUDE(MacroCodeGenIdl)
|
||||
|
||||
ADD_SUBDIRECTORY(Plugins)
|
||||
|
||||
SET(xml_FILE tab_service.xml)
|
||||
@@ -36,6 +33,9 @@ SET(SRCS_telegrams
|
||||
training_area_telegrams.h
|
||||
)
|
||||
NGL_ADD_LIBRARY(AAR SV WS HLA tabTelegrams STATIC ${SRCS_telegrams})
|
||||
|
||||
# tabTelegrams is a STATIC lib linked into shared/MODULE targets
|
||||
SET_TARGET_PROPERTIES(tabTelegrams PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(tabTelegrams
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/..
|
||||
@@ -70,34 +70,17 @@ SET(SRCS_common
|
||||
tab_export.h
|
||||
)
|
||||
|
||||
IF(BUILD_RTI)
|
||||
# Generate tab_enums.idl / tab.idl
|
||||
CODEGEN_IDL_SVC(SRCS_common ${xml_FILE})
|
||||
# Generate tab_db_impl.cpp/.h, tab_db.h
|
||||
CODEGEN_DATABASE(SRCS_common ${xml_FILE})
|
||||
# Generate *.cpp/*.hpp from idl (only with BUILD_RTI)
|
||||
RTIDDSGEN(SRCS_common tab_enums.idl)
|
||||
# tab.idl includes pdm.idl, so add explicit dependency on pdm.idl generation
|
||||
RTIDDSGEN(SRCS_common tab.idl DEPENDS ${CMAKE_BINARY_DIR}/Lts/Services/ProjectDataManagement/pdm.idl)
|
||||
# Generate tab_dt[s,c]_types.h, tab_ft[s,c]_types.h
|
||||
CODEGEN_TOPIC_TYPEDEFS(SRCS_common ${xml_FILE})
|
||||
# generate tab_[d|f]tc.h
|
||||
CODEGEN_CLIENT_TOPICS_IFC(SRCS_common ${xml_FILE})
|
||||
ELSE()
|
||||
# Stub files for BUILD_RTI=OFF - NO code generation
|
||||
LIST(APPEND SRCS_common
|
||||
stubs/tab_enums_stub.hpp
|
||||
stubs/tab_stub.hpp
|
||||
stubs/tab_db_stub.hpp
|
||||
stubs/tab_topic_type_plugin_stub.cpp
|
||||
)
|
||||
ENDIF()
|
||||
# Stub files (no RTI code generation in the release scope)
|
||||
LIST(APPEND SRCS_common
|
||||
stubs/tab_enums_stub.hpp
|
||||
stubs/tab_stub.hpp
|
||||
stubs/tab_db_stub.hpp
|
||||
stubs/tab_topic_type_plugin_stub.cpp
|
||||
)
|
||||
|
||||
# Create target only if component flags allow
|
||||
NGL_ADD_LIBRARY2(AAR SV WS HLA svcTabCommon SHARED ${SRCS_common})
|
||||
|
||||
# Generate export header ALWAYS (needed for logger.h even if target not built)
|
||||
# Use custom command to create minimal export header if target wasn't created
|
||||
IF(NOT TARGET svcTabCommon)
|
||||
# Create a dummy static library just for export header generation
|
||||
ADD_LIBRARY(svcTabCommon STATIC ${SRCS_common})
|
||||
@@ -121,220 +104,8 @@ NGL_TARGET_LINK_LIBRARIES(svcTabCommon
|
||||
$<IF:$<TARGET_EXISTS:svcPdmCommon>,svcPdmCommon,>
|
||||
LtsUtilsCoreHeaderOnly
|
||||
)
|
||||
IF(BUILD_RTI)
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabCommon
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
PUBLIC
|
||||
ddscore
|
||||
)
|
||||
ENDIF(BUILD_RTI)
|
||||
NGL_INSTALL_TARGET(svcTabCommon)
|
||||
|
||||
#
|
||||
# --- Library svcTabClient --------------------------------------------------------------------------------
|
||||
#
|
||||
# Skip for release builds - DDS-dependent service library
|
||||
IF(NOT RELEASE_BUILD)
|
||||
SET(SRCS_client
|
||||
tab_export.h
|
||||
)
|
||||
|
||||
IF(BUILD_RTI)
|
||||
# generate tab_[d|f]tc_impl.[cpp|h]
|
||||
CODEGEN_CLIENT_TOPICS_IMPL(SRCS_client ${xml_FILE})
|
||||
ENDIF()
|
||||
|
||||
NGL_ADD_LIBRARY2(AAR SV WS HLA svcTabClient SHARED ${SRCS_client})
|
||||
# NGL_ADD_LIBRARY2 (unlike NGL_ADD_LIBRARY) does not define the
|
||||
# MAKE_<SYMBOL>_LIB compile guard, but the generated tab_[d|f]tc_impl.h
|
||||
# headers require MAKE_SVCTABCLIENT_LIB — same situation as
|
||||
# svcCoreClient/ddscore, which define their guards explicitly.
|
||||
TARGET_COMPILE_DEFINITIONS(svcTabClient PRIVATE MAKE_SVCTABCLIENT_LIB)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabClient
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
IF(BUILD_RTI)
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabClient
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
PUBLIC
|
||||
svcTabCommon
|
||||
ddsftc
|
||||
)
|
||||
ENDIF(BUILD_RTI)
|
||||
NGL_INSTALL_TARGET(svcTabClient)
|
||||
ENDIF() # NOT RELEASE_BUILD
|
||||
|
||||
#
|
||||
# --- Library svcTabServer --------------------------------------------------------------------------------
|
||||
#
|
||||
# Skip for release builds - DDS-dependent service library
|
||||
IF(NOT RELEASE_BUILD)
|
||||
SET(SRCS_server
|
||||
tx_mixin.cpp
|
||||
tx_mixin.h
|
||||
)
|
||||
|
||||
IF(BUILD_RTI)
|
||||
# generate tab_[d|f]ts.h, tab_[d|f]ts_impl.[cpp|h]
|
||||
CODEGEN_SERVER_TOPICS(SRCS_server ${xml_FILE})
|
||||
ENDIF()
|
||||
|
||||
NGL_ADD_LIBRARY2(AAR HLA SV svcTabServer SHARED ${SRCS_server}) # NGL_ADD_LIBRARY2 won't work here - no time for investigations
|
||||
# Generated tab_[d|f]ts_impl.h require MAKE_SVCTABSERVER_LIB (see svcTabClient above).
|
||||
TARGET_COMPILE_DEFINITIONS(svcTabServer PRIVATE MAKE_SVCTABSERVER_LIB)
|
||||
if(BUILD_SV OR BUILD_HLA)
|
||||
GENERATE_EXPORT_HEADER(svcTabServer) # FIXME: quick workaround
|
||||
endif()
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(svcTabServer
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabServer
|
||||
PUBLIC
|
||||
svcTabCommon
|
||||
ngldb
|
||||
${_QT_CORE_TARGET}
|
||||
$<IF:$<AND:$<BOOL:${QT6_GUI_AVAILABLE}>,$<TARGET_EXISTS:Qt6::Gui>>,Qt6::Gui,>
|
||||
${_QT_NETWORK_TARGET}
|
||||
)
|
||||
IF(BUILD_RTI)
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTabServer
|
||||
PRIVATE
|
||||
RTI::nddscpp2
|
||||
ddsconnector
|
||||
ddsfts
|
||||
)
|
||||
ENDIF(BUILD_RTI)
|
||||
NGL_INSTALL_TARGET(svcTabServer)
|
||||
ENDIF() # NOT RELEASE_BUILD
|
||||
|
||||
#
|
||||
# --- Topic Type Plugin --------------------------------------------------------------
|
||||
#
|
||||
IF(BUILD_RTI)
|
||||
CREATE_TOPIC_TYPE_PLUGIN(${xml_FILE})
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# --- RecordReplayPlugin --------------------------------------------------------------
|
||||
#
|
||||
IF(BUILD_RTI)
|
||||
CREATE_RECORD_REPLAY_PLUGIN_SHARED(${xml_FILE})
|
||||
IF (TARGET tabRecordReplayPlugin)
|
||||
TARGET_SOURCES(tabRecordReplayPlugin
|
||||
PRIVATE
|
||||
tab_record_replay_plugin_custom.cpp
|
||||
tab_record_replay_plugin_custom.h
|
||||
)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
#
|
||||
# --- Executable svcTrainingAreaBase (sTAB) -------------------------------------------------
|
||||
#
|
||||
# Skip for release builds - DDS-dependent executable
|
||||
IF(NOT RELEASE_BUILD)
|
||||
SET(SRCS_exe
|
||||
dds_handler.cpp
|
||||
dds_handler.h
|
||||
exm_handler.cpp
|
||||
exm_handler.h
|
||||
ism_handler.cpp
|
||||
ism_handler.h
|
||||
main.cpp
|
||||
main_handler.cpp
|
||||
main_handler.h
|
||||
pdm_handler.cpp
|
||||
pdm_handler.h
|
||||
ppm_handler.cpp
|
||||
ppm_handler.h
|
||||
position_handler.cpp
|
||||
position_handler.h
|
||||
recv_from_dds_aes.cpp
|
||||
recv_from_dds_aes.h
|
||||
recv_from_dds_fts.cpp
|
||||
recv_from_dds_fts.h
|
||||
recv_from_tab.h
|
||||
send_to_dds.cpp
|
||||
send_to_dds.h
|
||||
send_to_tab.h
|
||||
settings.cpp
|
||||
settings.h
|
||||
tab_export.h
|
||||
tab_plugin_interface.h
|
||||
|
||||
WebSocketInterface/data_manager.cpp
|
||||
WebSocketInterface/data_manager.h
|
||||
WebSocketInterface/json_keys.h
|
||||
WebSocketInterface/websocket_interface_handler.cpp
|
||||
WebSocketInterface/websocket_interface_handler.h
|
||||
WebSocketInterface/Messages/client_message.cpp
|
||||
WebSocketInterface/Messages/client_message.h
|
||||
WebSocketInterface/Messages/reply_message.cpp
|
||||
WebSocketInterface/Messages/reply_message.h
|
||||
# tx_mixin.cpp
|
||||
# tx_mixin.h
|
||||
|
||||
log4cxx_tab.props
|
||||
${xml_FILE}
|
||||
)
|
||||
|
||||
IF(BUILD_RTI)
|
||||
# Generate tab.sql, tab.xml
|
||||
CODEGEN_SQL(SRCS_exe ${xml_FILE})
|
||||
ENDIF()
|
||||
|
||||
NGL_ADD_SVC_ICON(SRCS_exe)
|
||||
NGL_ADD_EXECUTABLE(AAR SV svcTrainingAreaBase ${SRCS_exe})
|
||||
NGL_TARGET_LINK_LIBRARIES(svcTrainingAreaBase
|
||||
Qt6::Core
|
||||
Qt6::Network
|
||||
LtsCoordTrans
|
||||
LtsWebSocketServer
|
||||
LtsCommandLineParser
|
||||
LtsPluginLoader
|
||||
LtsUtilsCoreHeaderOnly
|
||||
LtsUtilsCore
|
||||
svcTabCommon
|
||||
svcTabServer
|
||||
# main_handler.cpp includes the generated <TrainingAreaBase/tab_record_replay_plugin.h>
|
||||
# and directly instantiates TrainingAreaBase::RecordReplayPluginCustom (whose methods
|
||||
# live in the plugin .so). Linking the plugin target (rather than relying on a full
|
||||
# `make all` having generated the header first) makes this a proper build dependency:
|
||||
# the plugin's codegen runs before the exe compiles (so the generated header exists),
|
||||
# the plugin's PUBLIC build-tree include dir is inherited (so the include resolves),
|
||||
# and the plugin .so is linked (so the RecordReplayPluginCustom symbols resolve).
|
||||
$<IF:$<TARGET_EXISTS:tabRecordReplayPlugin>,tabRecordReplayPlugin,>
|
||||
svcNomClient
|
||||
svcAesClient
|
||||
svcOpmClient
|
||||
svcCoreClient
|
||||
svcAsmClient
|
||||
svcExmClient
|
||||
$<IF:$<TARGET_EXISTS:svcIsmClient>,svcIsmClient,>
|
||||
svcPdmClient
|
||||
svcPpmClient
|
||||
$<IF:$<TARGET_EXISTS:ddsconnector>,ddsconnector,>
|
||||
nglsettings
|
||||
ProjectConfig
|
||||
NGLLogger
|
||||
nglcoreapplication
|
||||
ngltools
|
||||
tabTelegrams
|
||||
)
|
||||
NGL_INSTALL_TARGET(svcTrainingAreaBase)
|
||||
NGL_INSTALL(AAR SV FILES log4cxx_tab.props DESTINATION bin)
|
||||
NGL_ADD_TARGET_LINK(svcTrainingAreaBase sTAB)
|
||||
ENDIF() # NOT RELEASE_BUILD
|
||||
|
||||
# clientPluginInterface
|
||||
ADD_LIBRARY(tabPluginInterface INTERFACE)
|
||||
TARGET_SOURCES(tabPluginInterface INTERFACE
|
||||
|
||||
@@ -4,43 +4,5 @@
|
||||
# $Author$
|
||||
#
|
||||
|
||||
IF (NOT BUILD_RPM AND NOT RELEASE_BUILD)
|
||||
ADD_SUBDIRECTORY(DebugJsonDir)
|
||||
ENDIF()
|
||||
|
||||
#ADD_SUBDIRECTORY(Spu)
|
||||
IF (BUILD_WLS AND NOT RELEASE_BUILD)
|
||||
ADD_SUBDIRECTORY(WlsTetra)
|
||||
ELSE()
|
||||
ADD_SUBDIRECTORY(TetraJson)
|
||||
ENDIF()
|
||||
|
||||
IF ("${_pname}" STREQUAL "commaster")
|
||||
ADD_SUBDIRECTORY(Nmea)
|
||||
ENDIF()
|
||||
|
||||
IF (BUILD_SV AND DEFINED _pname)
|
||||
IF ("${_pname}" STREQUAL "guez")
|
||||
IF(NOT RELEASE_BUILD)
|
||||
ADD_SUBDIRECTORY(HlaJson)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF (BUILD_SVC_HLA)
|
||||
IF ("${_pname}" STREQUAL "ahtc")
|
||||
ADD_SUBDIRECTORY(ApacheHlaJson)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
# AdlerJson depends on svcPdmClient (ProjectDataManagement) which is not in release scope
|
||||
IF(NOT RELEASE_BUILD)
|
||||
ADD_SUBDIRECTORY(AdlerJson)
|
||||
ENDIF()
|
||||
|
||||
|
||||
OPTION(BUILD_UAS_PROXY "Build the UAS TAB Plugin (default: OFF) [needs BUILD_SV = ON and UNIX-like OS]" OFF) # TODO: use 'pname = guez' if done
|
||||
if (BUILD_SV AND BUILD_UAS_PROXY AND NOT WIN32 AND NOT RELEASE_BUILD)
|
||||
add_subdirectory(UAS)
|
||||
endif()
|
||||
# Release scope: only the TetraJson plugin is in the tree (GUEZ project, no RTI)
|
||||
ADD_SUBDIRECTORY(TetraJson)
|
||||
@@ -1,5 +1,3 @@
|
||||
// Stub file for tab_db - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated database code
|
||||
|
||||
#ifndef TAB_DB_STUB_HPP
|
||||
#define TAB_DB_STUB_HPP
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// Stub file for tab_enums - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated enums
|
||||
|
||||
#ifndef TAB_ENUMS_STUB_HPP
|
||||
#define TAB_ENUMS_STUB_HPP
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// Stub file for tab types - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated types
|
||||
|
||||
#ifndef TAB_STUB_HPP
|
||||
#define TAB_STUB_HPP
|
||||
|
||||
|
||||
-3
@@ -1,6 +1,3 @@
|
||||
// Stub file for tab_topic_type_plugin - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated plugin code
|
||||
|
||||
#include "tab_enums_stub.hpp"
|
||||
|
||||
namespace tab
|
||||
|
||||
-5
@@ -1,5 +1,3 @@
|
||||
// Stub file for pdm - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated code
|
||||
|
||||
#ifndef PDM_HPP
|
||||
#define PDM_HPP
|
||||
@@ -10,9 +8,6 @@
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
// Forward declarations and stub types for ProjectDataManagement namespace
|
||||
// Used when BUILD_RTI=OFF to allow compilation without RTI Connext DDS
|
||||
|
||||
namespace ProjectDataManagement
|
||||
{
|
||||
|
||||
|
||||
-3
@@ -1,6 +1,3 @@
|
||||
// Stub file for pdm_db - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated database code
|
||||
|
||||
#ifndef PDM_DB_STUB_HPP
|
||||
#define PDM_DB_STUB_HPP
|
||||
|
||||
|
||||
-2
@@ -1,5 +1,3 @@
|
||||
// Stub file for pdm_enums - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated code
|
||||
|
||||
#ifndef PDM_ENUMS_STUB_HPP
|
||||
#define PDM_ENUMS_STUB_HPP
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// Stub file for pdm - BUILD_RTI=OFF
|
||||
// Auto-generated stub to replace RTI IDL-generated code
|
||||
|
||||
#ifndef PDM_STUB_HPP
|
||||
#define PDM_STUB_HPP
|
||||
|
||||
@@ -1,30 +1,31 @@
|
||||
# qt6-migrated-legatus — compile and run (step by step)
|
||||
# qt6-migrated-legatus — build and run, step by step
|
||||
|
||||
Build guide for the Qt6-migrated legatus tree on the release
|
||||
**validation-scope** branch. Everything runs inside a prebuilt Docker
|
||||
image; the host only needs Docker.
|
||||
|
||||
## Scope and layout
|
||||
## Scope
|
||||
|
||||
The release scope built by `new_docker_build.sh` is:
|
||||
What `new_docker_build.sh` builds and packages:
|
||||
|
||||
| Area | Contents |
|
||||
|---|---|
|
||||
| `TetraIF/` | `CoPrtCnv`, `LogView`, `PrtCnv` (+ `unit-test/` — see below) |
|
||||
| `TetraIF/` | `CoPrtCnv`, `LogView`, `PrtCnv` (+ `unit-test/` — see Step 3) |
|
||||
| `Z/src/` | NGL application/core library stack (NGLLogger, nglcoreapplication, …) |
|
||||
| `Lts/Common/` | LTS common libraries (LtsCoordTrans, LtsLicence, …) |
|
||||
| `Lts/Proxies/TrainingAreaBase` | built as a dependency of TetraIF |
|
||||
| `Lts/Common/` | LTS common libraries (LtsCoordTrans, LtsLicence, LtsUtils, …) |
|
||||
| `Lts/Proxies/TrainingAreaBase` | `tabTelegrams` library, built as a TetraIF dependency |
|
||||
|
||||
Useful entries at the tree root:
|
||||
Entries at the tree root:
|
||||
|
||||
- `new_docker_build.sh` — the build driver (image build, compile, ctest, DEB packaging)
|
||||
- `new_docker_build.sh` — build driver (image build, compile, ctest, DEB packaging)
|
||||
- `Dockerfile` — recipe of the prebuilt build image (Ubuntu 26.04 + Qt 6.10.2 + deps)
|
||||
- `rpmbuild/make_rpm_ubuntu26.py` — in-tree DEB package producer (self-contained)
|
||||
- `jenkins-ci-rme/` — in-tree copy of the Jenkins CI flow (see its own `README.md`)
|
||||
- `build4/` — build tree, created by the driver (git-ignored scratch area)
|
||||
|
||||
Toolchain inside the image: **Ubuntu 26.04, GCC 15.2.0, Qt 6.10.2**
|
||||
(`/opt/Qt/6.10.2/gcc_64`), C++17, Release build.
|
||||
(`/opt/Qt/6.10.2/gcc_64`), C++17, Release build. No license file is
|
||||
required.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -35,14 +36,12 @@ Toolchain inside the image: **Ubuntu 26.04, GCC 15.2.0, Qt 6.10.2**
|
||||
`new_docker_build.sh` invokes Docker, so running the driver as-is
|
||||
satisfies this.
|
||||
|
||||
No license file is required: this branch builds the release scope only
|
||||
(TetraIF, Z/src, Lts/Common) with `BUILD_RTI=OFF`, so the RTI Connext
|
||||
DDS modules (the only consumers of an RTI license) are not compiled.
|
||||
`new_docker_build.sh` resolves the pipeline root from its own location
|
||||
(override with the exported `MIGRATE_PIPELINE_ROOT` or the `.envrc` in
|
||||
this directory).
|
||||
The driver resolves the pipeline root from its own location (override
|
||||
with the exported `MIGRATE_PIPELINE_ROOT` or the `.envrc` in this
|
||||
directory).
|
||||
|
||||
All commands below are run **from this directory** (`qt6-migrated-legatus/`).
|
||||
All commands below are run **from this directory**
|
||||
(`qt6-migrated-legatus/`).
|
||||
|
||||
## Step 1 — Build the prebuilt Docker image (once)
|
||||
|
||||
@@ -70,22 +69,21 @@ To remove it later:
|
||||
What the driver does inside the container:
|
||||
|
||||
1. `rm -rf build4 && mkdir build4 && cd build4` (fresh build tree)
|
||||
2. Configure with CMake — the mandatory flags:
|
||||
2. Configure with CMake:
|
||||
|
||||
```bash
|
||||
cmake .. \
|
||||
-DBUILD_TESTING=ON \
|
||||
-DBUILD_ARCGIS=OFF \
|
||||
-DRELEASE_BUILD=ON \
|
||||
-DCMAKE_CXX_STANDARD=17 \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64:/usr/local
|
||||
```
|
||||
|
||||
(`BUILD_ARCGIS` and `RELEASE_BUILD` override CMake defaults that do
|
||||
not match this branch.)
|
||||
(`RELEASE_BUILD=ON` selects the release scope; everything else is at
|
||||
its CMake default.)
|
||||
3. `make -j8` the release-scope targets (TetraIF modules, Z stack,
|
||||
Lts/Common libs, all test executables — the list is
|
||||
Lts/Common libraries, all test executables — the list is
|
||||
`RELEASE_BUILD_TARGETS` in `new_docker_build.sh`).
|
||||
4. Run **ctest** (see Step 3).
|
||||
|
||||
@@ -97,28 +95,47 @@ Output to inspect after the run:
|
||||
- `build4/lib/` — shared libraries
|
||||
|
||||
To rebuild incrementally without a fresh tree, run `make` directly in an
|
||||
interactive container (Step 4).
|
||||
interactive container against the existing `build4/`:
|
||||
|
||||
```bash
|
||||
docker run --rm -it -v /path/to/pipeline-root:/workspace legatus-qt6:1.0 \
|
||||
bash -c 'cd /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus/build4 \
|
||||
&& make -j8'
|
||||
```
|
||||
|
||||
## Run an executable directly
|
||||
|
||||
To run a built executable interactively — e.g. the GUI apps under
|
||||
`build4/bin/` (`LogView`, `PrtCnv`) against your local display — start a
|
||||
shell inside the container with X11 forwarding:
|
||||
|
||||
```bash
|
||||
docker run --rm -it \
|
||||
-e DISPLAY \
|
||||
-e LC_ALL=C.UTF-8 \
|
||||
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
||||
-v /path/to/pipeline-root:/workspace \
|
||||
legatus-qt6:1.0 \
|
||||
bash -c 'cd /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus/build4 && exec bash'
|
||||
```
|
||||
|
||||
## Step 3 — Run the tests
|
||||
|
||||
### 3.1 ctest (automatic)
|
||||
|
||||
`new_docker_build.sh` already runs `ctest --test-dir build4
|
||||
--output-on-failure` after the compile. Expected baseline (8 tests):
|
||||
--output-on-failure` after the compile. Expected baseline (7 tests, all
|
||||
passed):
|
||||
|
||||
| # | Test | Result |
|
||||
|---|---|---|
|
||||
| 1 | `coprtcnv_unit_test` | Passed |
|
||||
| 2 | `logview_unit_test` | Passed |
|
||||
| 3 | `prtcnv_unit_test` | Passed |
|
||||
| 4 | `nglcomp_test` | **Not Run** (pre-existing: compression "Unknown error" in Qt6) |
|
||||
| 5 | `NGLToolsQtSmoke` | Passed |
|
||||
| 6 | `test_nglpdfwidget` | Passed |
|
||||
| 7 | `lts_coord_trans_unit_test` | Passed |
|
||||
| 8 | `aes_crypt_test` | Passed |
|
||||
|
||||
`nglcomp_test` being *Not Run* is the expected baseline — the pipeline
|
||||
logs a ctest failure for it but continues.
|
||||
| 4 | `NGLToolsQtSmoke` | Passed |
|
||||
| 5 | `test_nglpdfwidget` | Passed |
|
||||
| 6 | `lts_coord_trans_unit_test` | Passed |
|
||||
| 7 | `aes_crypt_test` | Passed |
|
||||
|
||||
### 3.2 Build the unit tests only
|
||||
|
||||
@@ -149,7 +166,7 @@ ctest --output-on-failure'
|
||||
Each QtTest binary accepts a single slot name to run just one test,
|
||||
e.g. `./bin/coprtcnv_unit_test radioTelegramFragmentationRoundtrip`.
|
||||
|
||||
### 3.4 TetraIF unit tests (this tree, `TetraIF/unit-test/`)
|
||||
### 3.4 TetraIF unit tests (`TetraIF/unit-test/`)
|
||||
|
||||
| Test | Module covered | Note |
|
||||
|---|---|---|
|
||||
@@ -186,7 +203,7 @@ DEBs in `${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/`:
|
||||
| `qt6-release-sources_*` | release-scope sources |
|
||||
| `qt6-release-ctest-runtime_*` | test executables under `/usr/lib/ctest/` (incl. the TetraIF unit tests) |
|
||||
| `qt6-release-ctest-sources_*` | test sources (files with "test" in the name under the release dirs, incl. `TetraIF/unit-test/*.cpp`) |
|
||||
| `qt6-release-build-pipeline_*` | the in-tree pipeline files (`new_docker_build.sh`, `Dockerfile`, `rpmbuild/`, `jenkins-ci-rme/`) under `/usr/src/pipeline/` |
|
||||
| `qt6-release-build-pipeline_*` | the in-tree pipeline files (`new_docker_build.sh`, `Dockerfile`, `CMakeLists.txt`, `rpmbuild/`, `jenkins-ci-rme/`) under `/usr/src/pipeline/` |
|
||||
|
||||
Verify a package:
|
||||
|
||||
@@ -211,6 +228,45 @@ jenkins-ci-rme/release-16-10-2026.sh
|
||||
|
||||
See `jenkins-ci-rme/README.md` for the pipeline details.
|
||||
|
||||
## Step 6 — Code coverage (lcov)
|
||||
|
||||
```bash
|
||||
export WORKSPACE=/path/to/pipeline-root # e.g. ~/release/qt6-migration-pipeline
|
||||
export PROJECT=guez
|
||||
export OS_VERSION=26.04
|
||||
|
||||
./new_docker_build.sh --docker-image legatus-qt6:1.0 \
|
||||
--run-coverage \
|
||||
--coverage-output-dir "${WORKSPACE}/coverage/${PROJECT}/${OS_VERSION}/" \
|
||||
> /path/to/coverage.log 2>&1
|
||||
```
|
||||
|
||||
(export the variables *before* the command — command-prefix variables are
|
||||
not expanded in the same command's arguments.)
|
||||
|
||||
The driver builds the release scope with `-O0 --coverage`, runs the same ctest
|
||||
suite, then captures the data with lcov: the report covers the release scope
|
||||
(`TetraIF`, `Z/src`, `Lts/Common`, `Lts/Proxies/TrainingAreaBase`), and test
|
||||
sources are filtered out of the report, so the percentages reflect the module
|
||||
code.
|
||||
|
||||
Artifacts in the coverage output directory:
|
||||
|
||||
| File | Contents |
|
||||
|---|---|
|
||||
| `html/index.html` | browsable report (line + branch coverage per file) |
|
||||
| `coverage.info` | machine-readable lcov tracefile |
|
||||
| `coverage_summary.txt` | whole-scope totals |
|
||||
|
||||
`--run-coverage` is mutually exclusive with `--run-jenkins-builder` (different
|
||||
instrumentation of the same build tree).
|
||||
|
||||
The Jenkins pipeline runs the same step on every build (`RunCoverage`
|
||||
parameter, on by default) and archives the report as build artifacts under
|
||||
`coverage/<project>/<os>/`; the local dry run
|
||||
(`jenkins-ci-rme/release-16-10-2026.sh`) does the same, with
|
||||
`DRYRUN_COVERAGE=OFF` to skip coverage there.
|
||||
|
||||
## Options reference
|
||||
|
||||
`./new_docker_build.sh --help` prints the full option list. The main
|
||||
@@ -218,23 +274,24 @@ ones:
|
||||
|
||||
| Option | Default | Purpose |
|
||||
|---|---|---|
|
||||
| `--docker-image IMAGE` | `legatus-qt6-prebuilt:latest` | image to use/build/delete |
|
||||
| `--docker-image IMAGE` | `legatus-qt6:1.0` | image to use/build/delete |
|
||||
| `--build-prebuilt-image` | — | build the image from `./Dockerfile` and exit |
|
||||
| `--delete-prebuilt-image` | — | delete the image and exit |
|
||||
| `--run-jenkins-builder` | off | produce the DEB packages (Step 4) |
|
||||
| `--package-output-dir DIR` | `./packages-out` | where the DEBs are written |
|
||||
| `--lts-version / --project / --build-number / --build-tag` | `1.0` / `guez` / `1` / `manual-build` | package metadata |
|
||||
| `--run-coverage` | off | coverage build + lcov report (Step 6) |
|
||||
| `--coverage-output-dir DIR` | `./coverage-out` | where the coverage report is written |
|
||||
|
||||
Environment overrides: `DOCKER_IMAGE`, `RUN_JENKINS_BUILDER`,
|
||||
`PACKAGE_OUTPUT_DIR`, `PROJECT`, `LTS_VERSION`, `GUEZ_MODE`,
|
||||
`BUILD_NUMBER`, `BUILD_TAG`, `MIGRATE_PIPELINE_ROOT`.
|
||||
`PACKAGE_OUTPUT_DIR`, `RUN_COVERAGE`, `COVERAGE_OUTPUT_DIR`, `PROJECT`,
|
||||
`LTS_VERSION`, `GUEZ_MODE`, `BUILD_NUMBER`, `BUILD_TAG`,
|
||||
`MIGRATE_PIPELINE_ROOT`.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **"no Qt platform plugin could be initialized"** when running a test
|
||||
binary by hand → `export QT_QPA_PLATFORM=offscreen`.
|
||||
- **ctest fails with `nglcomp_test (Not Run)`** → expected baseline
|
||||
(pre-existing Qt6 compression issue); the pipeline continues.
|
||||
- **Stale build tree** → the driver always recreates `build4/`; for
|
||||
manual builds delete `build4/` and rerun Step 2 if CMake behaves oddly.
|
||||
- **DEBs not on the host** → the output dir must be a path that exists
|
||||
|
||||
@@ -14,6 +14,8 @@ NGL_TARGET_LINK_LIBRARIES(LogViewLogger
|
||||
NGLLogger
|
||||
)
|
||||
|
||||
SET_TARGET_PROPERTIES(LogViewLogger PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
SET(my_SRCS
|
||||
IntegerCalculator.cpp
|
||||
IntegerCalculator.hpp
|
||||
|
||||
@@ -15,4 +15,26 @@
|
||||
<file>image/ShowSend.png</file>
|
||||
<file>image/Wls.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/icons/16x16">
|
||||
<file alias="configure.png">../../Z/src/nglwidgets/icons/16x16/configure.png</file>
|
||||
<file alias="dialog-ok-apply.png">../../Z/src/nglwidgets/icons/16x16/dialog-ok-apply.png</file>
|
||||
<file alias="document-edit.png">../../Z/src/nglwidgets/icons/16x16/document-edit.png</file>
|
||||
<file alias="document-import.png">../../Z/src/nglwidgets/icons/16x16/document-import.png</file>
|
||||
<file alias="document-new.png">../../Z/src/nglwidgets/icons/16x16/document-new.png</file>
|
||||
<file alias="document-open-data.png">../../Z/src/nglwidgets/icons/16x16/document-open-data.png</file>
|
||||
<file alias="document-save.png">../../Z/src/nglwidgets/icons/16x16/document-save.png</file>
|
||||
<file alias="edit-copy.png">../../Z/src/nglwidgets/icons/16x16/edit-copy.png</file>
|
||||
<file alias="edit-delete.png">../../Z/src/nglwidgets/icons/16x16/edit-delete.png</file>
|
||||
<file alias="edit-paste.png">../../Z/src/nglwidgets/icons/16x16/edit-paste.png</file>
|
||||
<file alias="edit-redo.png">../../Z/src/nglwidgets/icons/16x16/edit-redo.png</file>
|
||||
<file alias="go-down.png">../../Z/src/nglwidgets/icons/16x16/go-down.png</file>
|
||||
<file alias="go-up.png">../../Z/src/nglwidgets/icons/16x16/go-up.png</file>
|
||||
<file alias="list-add.png">../../Z/src/nglwidgets/icons/16x16/list-add.png</file>
|
||||
<file alias="list-remove.png">../../Z/src/nglwidgets/icons/16x16/list-remove.png</file>
|
||||
<file alias="mail-send.png">../../Z/src/nglwidgets/icons/16x16/mail-send.png</file>
|
||||
<file alias="media-play-normal.png">../../Z/src/nglwidgets/icons/16x16/media-play-normal.png</file>
|
||||
<file alias="media-playback-start.png">../../Z/src/nglwidgets/icons/16x16/media-playback-start.png</file>
|
||||
<file alias="media-playback-stop.png">../../Z/src/nglwidgets/icons/16x16/media-playback-stop.png</file>
|
||||
<file alias="rde_16x16.png">../../Z/src/nglwidgets/icons/16x16/rde_16x16.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
@@ -5,12 +5,6 @@
|
||||
#
|
||||
|
||||
|
||||
#ADD_SUBDIRECTORY(TetraTestServer)
|
||||
IF(NOT RELEASE_BUILD)
|
||||
ADD_SUBDIRECTORY(LastTest)
|
||||
ADD_SUBDIRECTORY(LastTestAuswertung)
|
||||
ENDIF()
|
||||
|
||||
SET(PrtCnv_SRCS
|
||||
logger.h
|
||||
logger.cpp
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
# Unit tests for the TetraIF modules (CoPrtCnv, LogView, PrtCnv).
|
||||
# One test executable per module, each registered with ctest.
|
||||
#
|
||||
# LogView: the module's classes are compiled into the LogView executable,
|
||||
# so the test compiles the pure class source (IntegerCalculator) directly
|
||||
# instead of linking a library.
|
||||
# LogView: the module is classes are compiled into the LogView executable
|
||||
#
|
||||
|
||||
if (NOT BUILD_TESTING)
|
||||
@@ -34,8 +32,6 @@ TARGET_LINK_LIBRARIES(logview_unit_test
|
||||
ADD_TEST(NAME logview_unit_test COMMAND $<TARGET_FILE:logview_unit_test>)
|
||||
|
||||
# --- PrtCnv: PrtCnvMember (fragmented telegram handling) --------------------
|
||||
# PrtCnvLib is built with hidden visibility, so the test compiles the class
|
||||
# source directly instead of linking the library.
|
||||
if (TARGET CoPrtCnv)
|
||||
ADD_EXECUTABLE(prtcnv_unit_test
|
||||
prtcnv_unit_test.cpp
|
||||
|
||||
@@ -28,18 +28,3 @@ NGL_TARGET_LINK_LIBRARIES(nglcompression
|
||||
)
|
||||
# BZip2 disabled - no linking needed
|
||||
NGL_INSTALL_TARGET(nglcompression)
|
||||
|
||||
IF(BUILD_WS AND BUILD_TESTING)
|
||||
REMOVE_DEFINITIONS(-DQT_GUI_LIB)
|
||||
ADD_EXECUTABLE(nglcomp_test nglcomp_test.cpp nglcomp_test.h)
|
||||
|
||||
TARGET_LINK_LIBRARIES(nglcomp_test
|
||||
NGLLogger
|
||||
nglcoreapplication
|
||||
ngltools
|
||||
nglcompression
|
||||
Qt6::Test
|
||||
)
|
||||
|
||||
ADD_TEST(NAME nglcomp_test COMMAND $<TARGET_FILE:nglcomp_test>)
|
||||
ENDIF()
|
||||
@@ -83,11 +83,13 @@ NGL_WRAP_UI(nglwidgets_SRCS
|
||||
)
|
||||
|
||||
# Collect big resource QRCs
|
||||
set(oxygen_SRCS nglresources.qrc)
|
||||
set(oxygen_SRCS)
|
||||
if(TARGET Qt6::Core)
|
||||
# Use Qt6's CMake helper to generate resource sources so resources are available at runtime
|
||||
qt_add_resources(RME_LIGHT_RCC rme_light_style.qrc)
|
||||
list(APPEND oxygen_SRCS ${RME_LIGHT_RCC})
|
||||
# Use Qt6's CMake helper to generate resource sources so resources are available at runtime.
|
||||
# Both qrcs MUST go through qt_add_resources: a raw .qrc left in the source list is not
|
||||
# compiled (CMAKE_AUTORCC is off), so its resources would be missing at runtime
|
||||
# (e.g. :icons/16x16/* toolbar/window icons used by LogView).
|
||||
qt_add_resources(oxygen_SRCS nglresources.qrc rme_light_style.qrc)
|
||||
else()
|
||||
NGL_ADD_BIG_RESOURCES(oxygen_SRCS nglresources.qrc rme_light_style.qrc)
|
||||
endif()
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
IF(ARCGIS_INCLUDE_DIR AND ARCGIS_LIBRARY)
|
||||
SET(ARCGIS_FOUND TRUE)
|
||||
ELSE()
|
||||
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
|
||||
SET(QT_MIN_VERSION 6.0.0)
|
||||
FIND_PACKAGE(Qt6 COMPONENTS Core Gui Location Network Sensors)
|
||||
IF (NOT Qt6_FOUND)
|
||||
MESSAGE(WARNING "Qt6 not found; skipping ArcGIS")
|
||||
SET(BUILD_ARCGIS OFF CACHE BOOL "Build ArcGIS SDK dependent modules" FORCE)
|
||||
RETURN()
|
||||
ENDIF()
|
||||
|
||||
SET(_arcgis_include_hint "${CMAKE_SOURCE_DIR}/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk/include")
|
||||
SET(_arcgis_library_hint "${CMAKE_SOURCE_DIR}/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk/linux/x64/lib")
|
||||
|
||||
# Check if paths exist, if not try alternative paths
|
||||
IF(NOT EXISTS "${_arcgis_include_hint}")
|
||||
SET(_arcgis_include_hint "${CMAKE_SOURCE_DIR}/../../external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk/include")
|
||||
SET(_arcgis_library_hint "${CMAKE_SOURCE_DIR}/../../external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk/linux/x64/lib")
|
||||
ENDIF()
|
||||
|
||||
SET(_arcgis_lib_dir $ENV{ARCGIS_LIB_DIR})
|
||||
SET(_arcgis_inc_dir $ENV{ARCGIS_INC_DIR})
|
||||
IF (NOT ${_arcgis_lib_dir} STREQUAL "")
|
||||
SET(_arcgis_library_hint "${_arcgis_lib_dir}")
|
||||
ENDIF()
|
||||
IF (NOT ${_arcgis_inc_dir} STREQUAL "")
|
||||
SET(_arcgis_include_hint "${_arcgis_inc_dir}")
|
||||
ENDIF()
|
||||
IF(WIN32)
|
||||
GET_FILENAME_COMPONENT(_arcgis_root_path "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\ESRI\\ArcGISRuntimeQt100.0.0;InstallDir]" ABSOLUTE)
|
||||
IF(_arcgis_root_path)
|
||||
SET(_arcgis_include_hint "${_arcgis_root_path}/sdk/windows/include/")
|
||||
SET(_arcgis_library_hint "${_arcgis_root_path}/sdk/windows/x86/lib/")
|
||||
ELSE()
|
||||
SET(_root "$ENV{KDEROOT}")
|
||||
FILE(TO_CMAKE_PATH "${_root}" _root)
|
||||
IF(NOT EXISTS "${_root}" OR NOT IS_DIRECTORY "${_root}")
|
||||
SET(_root $ENV{WORKSPACE})
|
||||
FILE(TO_CMAKE_PATH "${_root}" _root)
|
||||
ENDIF()
|
||||
IF(NOT EXISTS "${_root}" OR NOT IS_DIRECTORY "${_root}")
|
||||
SET(_root ${EXTERNAL_LIBRARY_DIR})
|
||||
FILE(TO_CMAKE_PATH "${_root}" _root)
|
||||
ENDIF()
|
||||
SET(_arcgis_include_hint "${_root}/include/")
|
||||
SET(_arcgis_library_hint "${_root}/lib/")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
FIND_PATH(ARCGIS_INCLUDE_DIR ArcGISQt_global.h HINTS ${_arcgis_include_hint})
|
||||
FIND_LIBRARY(ARCGIS_LIBRARY NAMES EsriRuntimeQt HINTS ${_arcgis_library_hint})
|
||||
|
||||
FIND_LIBRARY(ARCGIS_COMMON_LIBRARY NAMES EsriCommonQt HINTS ${_arcgis_library_hint})
|
||||
IF (UNIX)
|
||||
|
||||
FIND_LIBRARY(ARCGIS_CPP_LIBRARY NAMES runtimecore HINTS ${_arcgis_library_hint})
|
||||
ENDIF()
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ArcGIS DEFAULT_MSG ARCGIS_LIBRARY ARCGIS_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(ARCGIS_INCLUDE_DIR ARCGIS_LIBRARY)
|
||||
|
||||
IF(NOT ARCGIS_FOUND)
|
||||
SET(BUILD_ARCGIS OFF CACHE BOOL "Build ArcGIS SDK dependent modules" FORCE)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT TARGET ArcGIS::ArcGIS)
|
||||
ADD_LIBRARY(ArcGIS::ArcGIS UNKNOWN IMPORTED)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${ARCGIS_INCLUDE_DIR}")
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${ARCGIS_INCLUDE_DIR}")
|
||||
|
||||
IF(ARCGIS_LIBRARY_RELEASE)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS PROPERTY IMPORTED_LOCATION_RELEASE "${ARCGIS_LIBRARY_RELEASE}")
|
||||
ENDIF()
|
||||
IF(ARCGIS_LIBRARY_DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS PROPERTY IMPORTED_LOCATION_DEBUG "${ARCGIS_LIBRARY_DEBUG}")
|
||||
ENDIF()
|
||||
IF(NOT ARCGIS_LIBRARY_RELEASE AND NOT ARCGIS_LIBRARY_DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS PROPERTY IMPORTED_LOCATION "${ARCGIS_LIBRARY}")
|
||||
ENDIF()
|
||||
|
||||
# APPEND (not replace): line 95 above set the ArcGIS SDK include dir; a plain
|
||||
# SET_PROPERTY here overwrote it, so consumers (e.g. advancedSymbology) never
|
||||
# saw <Symbol.h> etc. Base-state defect carried over from the legacy Qt5 file
|
||||
# (identical overwrite of the Qt5 include dirs), never surfaced because the
|
||||
# ArcGIS-ON GROUP5 path was never validated in this pipeline.
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
$<TARGET_PROPERTY:Qt6::Core,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Qt6::Location,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Qt6::Network,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:Qt6::Sensors,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
|
||||
IF (UNIX)
|
||||
IF(ARCGIS_COMMON_LIBRARY_RELEASE)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:Release>:"${ARCGIS_COMMON_LIBRARY_RELEASE}">)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:Release>:"${ARCGIS_CPP_LIBRARY_RELEASE}">)
|
||||
ENDIF()
|
||||
IF(ARCGIS_COMMON_LIBRARY_DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:Debug>:"${ARCGIS_COMMON_LIBRARY_DEBUG}">)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:Debug>:"${ARCGIS_CPP_LIBRARY_DEBUG}">)
|
||||
ENDIF()
|
||||
IF(ARCGIS_COMMON_LIBRARY AND NOT ARCGIS_COMMON_LIBRARY_RELEASE AND NOT ARCGIS_COMMON_LIBRARY_DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${ARCGIS_COMMON_LIBRARY}" "${ARCGIS_CPP_LIBRARY}")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
IF(ARCGIS_COMMON_LIBRARY_RELEASE)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:Release>:${ARCGIS_COMMON_LIBRARY_RELEASE}>)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:RelWithDebInfo>:${ARCGIS_COMMON_LIBRARY_RELEASE}>)
|
||||
ENDIF()
|
||||
IF(ARCGIS_COMMON_LIBRARY_DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES $<$<CONFIG:Debug>:${ARCGIS_COMMON_LIBRARY_DEBUG}>)
|
||||
ENDIF()
|
||||
IF(ARCGIS_COMMON_LIBRARY AND NOT ARCGIS_COMMON_LIBRARY_RELEASE AND NOT ARCGIS_COMMON_LIBRARY_DEBUG)
|
||||
SET_PROPERTY(TARGET ArcGIS::ArcGIS APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${ARCGIS_COMMON_LIBRARY}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
@@ -1,26 +0,0 @@
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
|
||||
# Allow user to supply BGVIEWER_DIR or check ./external/BgViewer by default
|
||||
if(NOT DEFINED BGVIEWER_DIR)
|
||||
if(DEFINED ENV{EXTERNAL_DIR})
|
||||
set(_external_hint "$ENV{EXTERNAL_DIR}")
|
||||
else()
|
||||
set(_external_hint "${CMAKE_SOURCE_DIR}/external")
|
||||
endif()
|
||||
set(BGVIEWER_DIR "${_external_hint}/BgViewer" CACHE PATH "BgViewer root directory (optional)")
|
||||
endif()
|
||||
|
||||
# Search in common system locations and in BGVIEWER_DIR
|
||||
set(_hints "${BGVIEWER_DIR}/lib" "${BGVIEWER_DIR}/lib/*" "${BGVIEWER_DIR}/lib/*/*")
|
||||
|
||||
FIND_LIBRARY_WITH_DEBUG(BGVIEWER_DTENTITY_LIBRARY WIN32_DEBUG_POSTFIX d dtEntity HINTS ${_hints})
|
||||
FIND_LIBRARY_WITH_DEBUG(BGVIEWER_DTENTITYOSG_LIBRARY WIN32_DEBUG_POSTFIX d dtEntityOSG HINTS ${_hints})
|
||||
FIND_PATH(BGVIEWER_INCLUDE_DIR dtEntity/export.h HINTS "${BGVIEWER_DIR}/include" "${BGVIEWER_DIR}/include/dtEntity" ${_hints} )
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(BgViewer DEFAULT_MSG
|
||||
BGVIEWER_DTENTITY_LIBRARY
|
||||
BGVIEWER_DTENTITYOSG_LIBRARY
|
||||
BGVIEWER_INCLUDE_DIR)
|
||||
SET(BGVIEWER_LIBRARIES ${BGVIEWER_DTENTITYOSG_LIBRARY}
|
||||
${BGVIEWER_DTENTITY_LIBRARY})
|
||||
@@ -1,48 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
include(FindPkgConfig)
|
||||
|
||||
if(NOT BOTAN_FOUND)
|
||||
pkg_check_modules(Botan botan-2)
|
||||
endif()
|
||||
|
||||
if(NOT BOTAN_FOUND)
|
||||
find_path(BOTAN_INCLUDE_DIRS NAMES botan/botan.h
|
||||
PATH_SUFFIXES botan-2
|
||||
DOC "The botan include directory")
|
||||
|
||||
find_library(BOTAN_LIBRARIES NAMES botan botan-2
|
||||
DOC "The botan library")
|
||||
|
||||
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Botan REQUIRED_VARS BOTAN_LIBRARIES BOTAN_INCLUDE_DIRS)
|
||||
|
||||
if(BOTAN_FOUND)
|
||||
set(BOTAN_LIBRARY ${BOTAN_LIBRARIES} CACHE INTERNAL "")
|
||||
set(BOTAN_INCLUDE_DIR ${BOTAN_INCLUDE_DIRS} CACHE INTERNAL "")
|
||||
set(BOTAN_FOUND ${BOTAN_FOUND} CACHE INTERNAL "")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(BOTAN_INCLUDE_DIRS BOTAN_LIBRARIES)
|
||||
@@ -1,43 +0,0 @@
|
||||
# Find module for Grantlee5 (Qt5) / Grantlee (Qt6 compatible)
|
||||
# Grantlee 5.3.0 provides Qt6-compatible targets
|
||||
|
||||
if (TARGET Grantlee5::Templates)
|
||||
set(Grantlee5_FOUND TRUE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Try config-mode: look for Grantlee5Config.cmake in standard locations
|
||||
# Grantlee 5.3.0 installs to /usr/local/lib/cmake/Grantlee5/
|
||||
find_package(Grantlee5 CONFIG QUIET)
|
||||
if(TARGET Grantlee5::Templates)
|
||||
set(Grantlee5_FOUND TRUE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
# Try pkg-config as a best-effort (may fail)
|
||||
find_package(PkgConfig QUIET)
|
||||
if (PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(GRANTLEE5 QUIET grantlee-templates)
|
||||
if (GRANTLEE5_FOUND)
|
||||
set(Grantlee5_FOUND TRUE)
|
||||
# No imported targets provided by this shim
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Try config-mode: look for Grantlee5Config.cmake in CMAKE_PREFIX_PATH or installed location
|
||||
# Try to locate Grantlee5Config.cmake via common locations: CMAKE_PREFIX_PATH, EXTERNAL_DIR, repo/external, and typical install paths
|
||||
find_file(_Grantlee5Config NAMES Grantlee5Config.cmake
|
||||
PATHS ${CMAKE_PREFIX_PATH} $ENV{EXTERNAL_DIR} ${CMAKE_SOURCE_DIR}/../external /home/torsten/swy/sandbox/external /repo/external /repo/external/grantlee /usr/local/lib/cmake/Grantlee5
|
||||
PATH_SUFFIXES grantlee/lib/cmake/Grantlee5 lib/cmake/Grantlee5)
|
||||
if(_Grantlee5Config)
|
||||
include(${_Grantlee5Config})
|
||||
if(TARGET Grantlee5::Templates)
|
||||
set(Grantlee5_FOUND TRUE)
|
||||
return()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Not found: provide helpful message and stop. Downstream CMakeLists check TARGET Grantlee5::Templates
|
||||
set(Grantlee5_FOUND FALSE)
|
||||
message(STATUS "Grantlee5 not found (shim cmake/FindGrantlee5.cmake); codegen_grantlee will be skipped if present.")
|
||||
@@ -1,40 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF(KDCHART_INCLUDE_DIRS AND KDCHART_LIBRARY)
|
||||
SET(KDCHART_FOUND TRUE)
|
||||
ELSE()
|
||||
|
||||
FIND_PATH(KDCHART_INCLUDE_DIRS KDChart/kdchart_export.h)
|
||||
FIND_LIBRARY(KDCHART_LIBRARY NAMES kdchart)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(KDChart DEFAULT_MSG KDCHART_LIBRARY KDCHART_INCLUDE_DIRS)
|
||||
|
||||
MARK_AS_ADVANCED(KDCHART_INCLUDE_DIRS KDCHART_LIBRARY)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT TARGET KDChart::KDChart)
|
||||
ADD_LIBRARY(KDChart::KDChart UNKNOWN IMPORTED)
|
||||
SET_PROPERTY(TARGET KDChart::KDChart PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${KDCHART_INCLUDE_DIRS}")
|
||||
SET_PROPERTY(TARGET KDChart::KDChart PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${KDCHART_INCLUDE_DIRS}")
|
||||
SET_PROPERTY(TARGET KDChart::KDChart PROPERTY IMPORTED_LOCATION "${KDCHART_LIBRARY}")
|
||||
ENDIF()
|
||||
@@ -1,62 +0,0 @@
|
||||
|
||||
|
||||
# Qt6 only - no Qt5 fallback
|
||||
find_package(Qt6 COMPONENTS Core Gui PrintSupport Sql Svg Widgets Xml QUIET)
|
||||
if(NOT Qt6_FOUND)
|
||||
set(KDReports_FOUND FALSE)
|
||||
return()
|
||||
endif()
|
||||
set(_qt_prefix "Qt6")
|
||||
|
||||
# Prefer KDReports-qt6 package config if installed under standard prefixes
|
||||
# Search in common installation locations for KDReports cmake config
|
||||
list(APPEND CMAKE_PREFIX_PATH /usr/local /usr)
|
||||
find_package(KDReports-qt6 CONFIG QUIET PATHS /usr/local/lib/cmake/KDReports-qt6 /usr/local/lib64/cmake/KDReports-qt6 /usr/lib/cmake/KDReports-qt6 /usr/lib64/cmake/KDReports-qt6)
|
||||
if(KDReports-qt6_FOUND OR KDReports-qt6_CONFIG)
|
||||
message(STATUS "Found KDReports-qt6 package config")
|
||||
set(KDREPORTS_FOUND TRUE)
|
||||
set(KDReports_FOUND TRUE)
|
||||
# KDReports-qt6 config provides KDReports::KDReports imported target
|
||||
# Set variables for compatibility with code that uses them
|
||||
set(KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6")
|
||||
set(KDREPORTS_KDREPORTS_INCLUDE_DIR "/usr/local/include/KDReports-qt6")
|
||||
# Check lib64 first, then lib
|
||||
if(EXISTS "/usr/local/lib64/libkdreports-qt6.so")
|
||||
set(KDREPORTS_LIBRARY "/usr/local/lib64/libkdreports-qt6.so")
|
||||
else()
|
||||
set(KDREPORTS_LIBRARY "/usr/local/lib/libkdreports-qt6.so")
|
||||
endif()
|
||||
else()
|
||||
# Search both /usr and /usr/local for apt-installed or manually built KDReports
|
||||
FIND_PATH(KDREPORTS_INCLUDE_DIR KDReports/KDReports.h PATHS /usr/include /usr/local/include)
|
||||
FIND_PATH(KDREPORTS_KDREPORTS_INCLUDE_DIR KDReports.h PATH_SUFFIXES KDReports PATHS /usr/include /usr/local/include)
|
||||
FIND_LIBRARY(KDREPORTS_LIBRARY NAMES kdreports kdreport kdreports-qt6 PATHS /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(KDReports DEFAULT_MSG
|
||||
KDREPORTS_LIBRARY
|
||||
KDREPORTS_INCLUDE_DIR
|
||||
KDREPORTS_KDREPORTS_INCLUDE_DIR
|
||||
)
|
||||
|
||||
MARK_AS_ADVANCED(KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY)
|
||||
MARK_AS_ADVANCED(KDREPORTS_KDREPORTS_INCLUDE_DIR KDREPORTS_LIBRARY)
|
||||
endif()
|
||||
|
||||
# The root CMakeLists may already have created a no-op stub target for
|
||||
# KDReports::KDReports (before FindKDReports ran). When the library was found,
|
||||
# upgrade that existing target to the real imported target instead of skipping.
|
||||
IF(KDReports_FOUND)
|
||||
IF(NOT TARGET KDReports::KDReports)
|
||||
ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED)
|
||||
ENDIF()
|
||||
SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${KDREPORTS_INCLUDE_DIR}" "${KDREPORTS_KDREPORTS_INCLUDE_DIR}")
|
||||
SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${KDREPORTS_INCLUDE_DIR}" "${KDREPORTS_KDREPORTS_INCLUDE_DIR}")
|
||||
SET_PROPERTY(TARGET KDReports::KDReports PROPERTY IMPORTED_LOCATION "${KDREPORTS_LIBRARY}")
|
||||
SET_PROPERTY(TARGET KDReports::KDReports PROPERTY INTERFACE_COMPILE_DEFINITIONS "")
|
||||
SET_PROPERTY(TARGET KDReports::KDReports APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${_qt_prefix}::Core ${_qt_prefix}::Gui ${_qt_prefix}::PrintSupport ${_qt_prefix}::Widgets)
|
||||
ELSE()
|
||||
IF(NOT TARGET KDReports::KDReports)
|
||||
ADD_LIBRARY(KDReports::KDReports UNKNOWN IMPORTED)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
@@ -1,134 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
IF(NGS_INCLUDE_DIRS AND NGS_LIBRARIES)
|
||||
SET(NGS_FOUND TRUE)
|
||||
ELSE()
|
||||
|
||||
SET(FOM_NAME "RPRFOM20d17E")
|
||||
IF("$ENV{NGS_ROOT}" STREQUAL "")
|
||||
SET(NGS_ROOT "/opt/NGS/NGSPublic")
|
||||
MESSAGE(STATUS "NGS_ROOT env var not set - using ${NGS_ROOT}")
|
||||
ELSE()
|
||||
SET(NGS_ROOT "$ENV{NGS_ROOT}")
|
||||
ENDIF()
|
||||
|
||||
FIND_PROGRAM(NGS_FOMBUILD fombuild
|
||||
PATHS ${NGS_ROOT}/exe
|
||||
)
|
||||
FIND_PATH(NGS_INCLUDE_DIR NGSUtils/SimTime.h
|
||||
PATHS ${NGS_ROOT}/include
|
||||
)
|
||||
FIND_PATH(NGS_SM_INCLUDE_DIR ISystem.h
|
||||
PATHS ${NGS_INCLUDE_DIR}
|
||||
PATH_SUFFIXES SimulationManager
|
||||
)
|
||||
FIND_PATH(NGS_FC_INCLUDE_DIR IRTIAmbassador.h
|
||||
PATHS ${NGS_INCLUDE_DIR}
|
||||
PATH_SUFFIXES RTIFacadeAPI
|
||||
)
|
||||
FIND_PATH(NGS_GE_INCLUDE_DIR SimulatedWorldAPI.h
|
||||
PATHS ${NGS_INCLUDE_DIR}
|
||||
PATH_SUFFIXES SWGeneral
|
||||
)
|
||||
FIND_PATH(NGS_UT_INCLUDE_DIR NGSConfig.h
|
||||
PATHS ${NGS_INCLUDE_DIR}
|
||||
PATH_SUFFIXES NGSUtils
|
||||
)
|
||||
FIND_PATH(NGS_PF_INCLUDE_DIR configureBool.h
|
||||
PATHS ${NGS_INCLUDE_DIR}
|
||||
PATH_SUFFIXES NGSPlatformConfigure
|
||||
)
|
||||
|
||||
FIND_PATH(NGS_FOM_INCLUDE_DIR WorldLocationStruct.h
|
||||
PATHS ${NGS_INCLUDE_DIR}
|
||||
PATH_SUFFIXES sw${FOM_NAME}/rpr
|
||||
PATH_SUFFIXES sw${FOM_NAME}/rpr2
|
||||
)
|
||||
|
||||
FIND_LIBRARY(NGS_LIBRARY NGS
|
||||
PATHS ${NGS_ROOT}/lib
|
||||
PATHS ${NGS_ROOT}/lib64
|
||||
)
|
||||
FIND_LIBRARY(NGS_LIBRARY_SWGENERAL SWGENERAL
|
||||
PATHS ${NGS_ROOT}/lib
|
||||
PATHS ${NGS_ROOT}/lib64
|
||||
)
|
||||
FIND_LIBRARY(NGS_LIBRARY_UTILS NGSUtils
|
||||
PATHS ${NGS_ROOT}/lib
|
||||
PATHS ${NGS_ROOT}/lib64
|
||||
)
|
||||
FIND_LIBRARY(FOM_LIBRARY SW${FOM_NAME}
|
||||
PATHS ${NGS_ROOT}/lib
|
||||
PATHS ${NGS_ROOT}/lib64
|
||||
)
|
||||
FIND_LIBRARY(NGS_LIBRARY_CORBA CorbaNotify
|
||||
PATHS ${NGS_ROOT}/lib/CorbaNotifyCdr
|
||||
)
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NGS DEFAULT_MSG NGS_LIBRARY
|
||||
NGS_LIBRARY_SWGENERAL
|
||||
NGS_LIBRARY_UTILS
|
||||
NGS_LIBRARY_CORBA
|
||||
FOM_LIBRARY
|
||||
NGS_SM_INCLUDE_DIR
|
||||
NGS_FC_INCLUDE_DIR
|
||||
NGS_GE_INCLUDE_DIR
|
||||
NGS_UT_INCLUDE_DIR
|
||||
)
|
||||
SET(NGS_INCLUDE_DIRS
|
||||
${NGS_INCLUDE_DIR}
|
||||
${NGS_SM_INCLUDE_DIR}
|
||||
${NGS_FC_INCLUDE_DIR}
|
||||
${NGS_GE_INCLUDE_DIR}
|
||||
${NGS_UT_INCLUDE_DIR}
|
||||
${NGS_PF_INCLUDE_DIR}
|
||||
${NGS_FOM_INCLUDE_DIR}
|
||||
CACHE STRING "All ngs include dirs" FORCE
|
||||
)
|
||||
SET(NGS_LIBRARIES
|
||||
${NGS_LIBRARY}
|
||||
${NGS_LIBRARY_SWGENERAL}
|
||||
${NGS_LIBRARY_UTILS}
|
||||
${NGS_LIBRARY_CORBA}
|
||||
${FOM_LIBRARY}
|
||||
CACHE STRING "All ngs libraries" FORCE
|
||||
)
|
||||
MARK_AS_ADVANCED(NGS_INCLUDE_DIR NGS_LIBRARY FOM_LIBRARY)
|
||||
ENDIF()
|
||||
|
||||
SET(NGS_IS_GUEZ OFF)
|
||||
SET(NGS_IS_AHTC OFF)
|
||||
IF (NGS_FOUND)
|
||||
FIND_PATH(NGS_GUEZ_INCLUDE_DIR TacticalStatusStruct.h
|
||||
PATHS ${NGS_FOM_INCLUDE_DIR})
|
||||
FIND_PATH(NGS_AHTC_INCLUDE_DIR LongBowApacheObjClass.h
|
||||
PATHS ${NGS_FOM_INCLUDE_DIR})
|
||||
IF (NGS_GUEZ_INCLUDE_DIR AND EXISTS "${NGS_GUEZ_INCLUDE_DIR}/TacticalStatusStruct.h")
|
||||
SET(NGS_IS_GUEZ ON)
|
||||
MESSAGE(STATUS "NGS - GUEZ version (${NGS_GUEZ_INCLUDE_DIR})")
|
||||
ELSE()
|
||||
SET(NGS_IS_GUEZ OFF)
|
||||
ENDIF()
|
||||
IF (NGS_AHTC_INCLUDE_DIR AND EXISTS "${NGS_AHTC_INCLUDE_DIR}/LongBowApacheObjClass.h")
|
||||
SET(NGS_IS_AHTC ON)
|
||||
MESSAGE(STATUS "NGS - AHTC version (${NGS_AHTC_INCLUDE_DIR})")
|
||||
ELSE()
|
||||
SET(NGS_IS_AHTC OFF)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT TARGET NGS::NGS)
|
||||
ADD_LIBRARY(NGS::NGS UNKNOWN IMPORTED)
|
||||
SET_PROPERTY(TARGET NGS::NGS PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${NGS_INCLUDE_DIRS})
|
||||
SET_PROPERTY(TARGET NGS::NGS PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES ${NGS_INCLUDE_DIRS})
|
||||
SET_PROPERTY(TARGET NGS::NGS PROPERTY IMPORTED_LOCATION "${NGS_LIBRARY}")
|
||||
|
||||
SET_PROPERTY(TARGET NGS::NGS APPEND PROPERTY INTERFACE_LINK_LIBRARIES
|
||||
"${NGS_LIBRARY_SWGENERAL}"
|
||||
"${NGS_LIBRARY_UTILS}"
|
||||
"${NGS_LIBRARY_CORBA}"
|
||||
"${FOM_LIBRARY}"
|
||||
)
|
||||
ENDIF()
|
||||
@@ -1,103 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# FindPopplerQt6.cmake - Find Poppler Qt6 bindings
|
||||
# Sets: POPPLER_QT6_INCLUDE_DIR, POPPLER_QT6_LIBRARY, PopplerQt6::Poppler target
|
||||
|
||||
if(POPPLER_QT6_INCLUDE_DIR AND POPPLER_QT6_LIBRARY)
|
||||
set(POPPLER_QT6_FOUND TRUE)
|
||||
else()
|
||||
set(_poppler_version_bad FALSE)
|
||||
|
||||
if(NOT WIN32)
|
||||
include(FindPkgConfig)
|
||||
# Prefer poppler-qt6
|
||||
pkg_check_modules(_pc_poppler poppler-qt6)
|
||||
if(_pc_poppler_FOUND)
|
||||
set(_pc_poppler_pkgname poppler-qt6)
|
||||
if(NOT "${_pc_poppler_VERSION}" VERSION_GREATER 0.24.0)
|
||||
set(_poppler_version_bad TRUE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT _poppler_version_bad)
|
||||
set(POPPLER_QT6_FOUND FALSE)
|
||||
|
||||
# Try library name discovered by pkg-config
|
||||
if(_pc_poppler_FOUND)
|
||||
set(_pkg_var "pkgcfg_lib__pc_poppler_${_pc_poppler_pkgname}")
|
||||
message(STATUS "FindPoppler: pkg-config found ${_pc_poppler_pkgname}, var ${_pkg_var} defined? ${${_pkg_var}}")
|
||||
if(DEFINED ${_pkg_var})
|
||||
set(POPPLER_QT6_LIBRARY ${${_pkg_var}})
|
||||
message(STATUS "FindPoppler: using pkgcfg path ${POPPLER_QT6_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT POPPLER_QT6_LIBRARY)
|
||||
find_library(POPPLER_QT6_LIBRARY ${_pc_poppler_pkgname}
|
||||
HINTS ${_pc_poppler_LIBRARY_DIRS}
|
||||
)
|
||||
endif()
|
||||
|
||||
# Fallback: try common library names
|
||||
if(NOT POPPLER_QT6_LIBRARY)
|
||||
find_library(POPPLER_QT6_LIBRARY NAMES poppler-qt6 poppler-qt6)
|
||||
endif()
|
||||
|
||||
# Extra fallback paths
|
||||
if(NOT POPPLER_QT6_LIBRARY)
|
||||
find_library(POPPLER_QT6_LIBRARY NAMES poppler-qt6 poppler-qt6
|
||||
PATHS /usr/lib/x86_64-linux-gnu /usr/lib /usr/local/lib)
|
||||
endif()
|
||||
|
||||
# Check for headers (Qt6 layout: poppler/qt6/poppler-qt6.h)
|
||||
find_path(POPPLER_QT6_INCLUDE_DIR poppler/qt6/poppler-qt6.h
|
||||
HINTS ${_pc_poppler_INCLUDE_DIRS}
|
||||
PATH_SUFFIXES poppler
|
||||
)
|
||||
|
||||
if(POPPLER_QT6_LIBRARY AND POPPLER_QT6_INCLUDE_DIR)
|
||||
set(POPPLER_QT6_FOUND TRUE)
|
||||
|
||||
# Expose a modern imported target for consumers
|
||||
if(NOT TARGET PopplerQt6::Poppler)
|
||||
add_library(PopplerQt6::Poppler UNKNOWN IMPORTED)
|
||||
set_target_properties(PopplerQt6::Poppler PROPERTIES
|
||||
IMPORTED_LOCATION "${POPPLER_QT6_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${POPPLER_QT6_INCLUDE_DIR}"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Cache the variables
|
||||
set(POPPLER_QT6_LIBRARY "${POPPLER_QT6_LIBRARY}" CACHE FILEPATH "Path to poppler-qt6 library")
|
||||
set(POPPLER_QT6_INCLUDE_DIR "${POPPLER_QT6_INCLUDE_DIR}" CACHE PATH "Poppler-Qt6 include dirs")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(POPPLER_QT6_LIBRARY AND POPPLER_QT6_INCLUDE_DIR)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PopplerQt6 DEFAULT_MSG
|
||||
POPPLER_QT6_LIBRARY
|
||||
POPPLER_QT6_INCLUDE_DIR)
|
||||
else()
|
||||
message(WARNING "Poppler Qt6 bindings not found. Creating placeholder PopplerQt6::Poppler target.")
|
||||
set(POPPLER_QT6_LIBRARY "" CACHE STRING "Placeholder poppler library" FORCE)
|
||||
set(POPPLER_QT6_INCLUDE_DIR "" CACHE STRING "Placeholder poppler include dir" FORCE)
|
||||
if(NOT TARGET PopplerQt6::Poppler)
|
||||
add_library(PopplerQt6::Poppler UNKNOWN IMPORTED)
|
||||
set_property(TARGET PopplerQt6::Poppler PROPERTY INTERFACE_INCLUDE_DIRECTORIES "")
|
||||
endif()
|
||||
set(POPPLER_QT6_FOUND TRUE CACHE INTERNAL "Poppler placeholder present")
|
||||
endif()
|
||||
endif()
|
||||
@@ -1,333 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SET(_rti_gcc_arch "")
|
||||
|
||||
# Suppress CMP0153 warning: EXEC_PROGRAM is deprecated
|
||||
if(POLICY CMP0153)
|
||||
cmake_policy(SET CMP0153 OLD)
|
||||
endif()
|
||||
|
||||
# Check if RTI_DIR is not set OR is empty (cached empty string from previous failed detection)
|
||||
IF(NOT RTI_DIR OR RTI_DIR STREQUAL "")
|
||||
# First check RTI_INSTALL_DIR CMake variable (set by parent CMakeLists.txt)
|
||||
IF(RTI_INSTALL_DIR AND EXISTS "${RTI_INSTALL_DIR}")
|
||||
SET(_RTI_DIR "${RTI_INSTALL_DIR}")
|
||||
ELSE()
|
||||
SET(_arch "unknown")
|
||||
IF(WIN32)
|
||||
SET(_RTI_DIR $ENV{DDS_PATH})
|
||||
IF(NOT _RTI_DIR)
|
||||
GET_FILENAME_COMPONENT(_rti_root_path "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Real-Time Innovations\\RTI Connext DDS Pro 5.2.3;Location]" ABSOLUTE)
|
||||
SET(_RTI_DIR "${_rti_root_path}")
|
||||
ENDIF()
|
||||
IF(MSVC_VERSION EQUAL 1900)
|
||||
SET(_rti_msvc_ver "VS2015")
|
||||
ELSEIF(MSVC_VERSION GREATER_EQUAL 1910)
|
||||
SET(_rti_msvc_ver "VS2017")
|
||||
ENDIF()
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
SET(_rti_msvc_ver "x64Win64${_rti_msvc_ver}")
|
||||
ELSE()
|
||||
SET(_rti_msvc_ver "i86Win32${_rti_msvc_ver}")
|
||||
ENDIF()
|
||||
IF(NOT ${_rti_root_path})
|
||||
SET(_RTI_DIR $ENV{KDEROOT})
|
||||
FILE(TO_CMAKE_PATH "${_RTI_DIR}" _RTI_DIR)
|
||||
IF(NOT EXISTS "${_RTI_DIR}" OR NOT IS_DIRECTORY "${_RTI_DIR}")
|
||||
SET(_RTI_DIR $ENV{WORKSPACE})
|
||||
FILE(TO_CMAKE_PATH "${_RTI_DIR}" _RTI_DIR)
|
||||
ENDIF()
|
||||
IF(NOT EXISTS "${_RTI_DIR}" OR NOT IS_DIRECTORY "${_RTI_DIR}")
|
||||
SET(_RTI_DIR ${EXTERNAL_LIBRARY_DIR})
|
||||
FILE(TO_CMAKE_PATH "${_RTI_DIR}" _RTI_DIR)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(_arch "${_rti_msvc_ver}")
|
||||
ELSE(WIN32)
|
||||
SET(_RTI_DIR $ENV{DDS_PATH})
|
||||
IF(NOT _RTI_DIR)
|
||||
# Try local external directory first (check multiple levels for different repo structures)
|
||||
# Check container path first (/workspace/external), then host-relative paths
|
||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/external/rti_connext_dds-7.7.0")
|
||||
SET(_RTI_DIR "${CMAKE_SOURCE_DIR}/external/rti_connext_dds-7.7.0")
|
||||
ELSEIF(EXISTS "${CMAKE_SOURCE_DIR}/../external/rti_connext_dds-7.7.0")
|
||||
SET(_RTI_DIR "${CMAKE_SOURCE_DIR}/../external/rti_connext_dds-7.7.0")
|
||||
ELSEIF(EXISTS "${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0")
|
||||
SET(_RTI_DIR "${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0")
|
||||
ELSE()
|
||||
SET(_RTI_DIR "/opt/RTI")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(NOT EXISTS "${_RTI_DIR}" OR NOT IS_DIRECTORY "${_RTI_DIR}")
|
||||
MESSAGE(WARNING "RTI directory ${_RTI_DIR} not found; continuing without RTI. Set DDS_PATH to RTI installation to enable RTI features.")
|
||||
# mark as not available
|
||||
set(_RTI_DIR_NOT_FOUND TRUE)
|
||||
set(_RTI_DIR "")
|
||||
ENDIF()
|
||||
SET(_rti_gcc_arch "x64Linux3gcc4.8.2")
|
||||
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0.0)
|
||||
# Prefer newer gcc-based RTI builds; try a sequence then fall back to any x64Linux4gcc* dir found under RTI lib
|
||||
SET(_preferred_archs "x64Linux4gcc8.5.0;x64Linux4gcc7.3.0;x64Linux3gcc5.4.0")
|
||||
SET(_found_arch "")
|
||||
foreach(_cand IN LISTS _preferred_archs)
|
||||
if(EXISTS "${_RTI_DIR}/lib/${_cand}")
|
||||
SET(_found_arch "${_cand}")
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
if(_found_arch STREQUAL "")
|
||||
# fallback: pick any x64Linux* directory under lib
|
||||
file(GLOB _rti_arch_dirs RELATIVE "${_RTI_DIR}/lib" "${_RTI_DIR}/lib/x64Linux*")
|
||||
list(LENGTH _rti_arch_dirs _rti_arch_dirs_len)
|
||||
if(_rti_arch_dirs_len GREATER 0)
|
||||
list(GET _rti_arch_dirs 0 _found_arch)
|
||||
endif()
|
||||
endif()
|
||||
if(NOT _found_arch STREQUAL "")
|
||||
SET(_rti_gcc_arch "${_found_arch}")
|
||||
else()
|
||||
# final fallbacks
|
||||
SET(_rti_gcc_arch "x64Linux4gcc7.3.0")
|
||||
endif()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(_arch "${_rti_gcc_arch}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(RTI_DIR "${_RTI_DIR}" CACHE STRING "RTI base path" FORCE)
|
||||
MESSAGE(STATUS "Trying to use RTI from ${RTI_DIR} with arch ${_arch}")
|
||||
ELSE()
|
||||
# RTI_DIR was provided externally - auto-detect architecture
|
||||
SET(_rti_gcc_arch "x64Linux3gcc4.8.2")
|
||||
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0.0)
|
||||
# Prefer newer gcc-based RTI builds; try a sequence then fall back to any x64Linux4gcc* dir found under RTI lib
|
||||
SET(_preferred_archs "x64Linux4gcc8.5.0;x64Linux4gcc7.3.0;x64Linux3gcc5.4.0")
|
||||
SET(_found_arch "")
|
||||
foreach(_cand IN LISTS _preferred_archs)
|
||||
if(EXISTS "${RTI_DIR}/lib/${_cand}")
|
||||
SET(_found_arch "${_cand}")
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
if(_found_arch STREQUAL "")
|
||||
# fallback: pick any x64Linux* directory under lib
|
||||
file(GLOB _rti_arch_dirs RELATIVE "${RTI_DIR}/lib" "${RTI_DIR}/lib/x64Linux*")
|
||||
list(LENGTH _rti_arch_dirs _rti_arch_dirs_len)
|
||||
if(_rti_arch_dirs_len GREATER 0)
|
||||
list(GET _rti_arch_dirs 0 _found_arch)
|
||||
endif()
|
||||
endif()
|
||||
if(NOT _found_arch STREQUAL "")
|
||||
SET(_rti_gcc_arch "${_found_arch}")
|
||||
else()
|
||||
# final fallbacks
|
||||
SET(_rti_gcc_arch "x64Linux4gcc7.3.0")
|
||||
endif()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
MESSAGE(STATUS "Using externally provided RTI from ${RTI_DIR} with arch ${_rti_gcc_arch}")
|
||||
ENDIF()
|
||||
IF(WIN32)
|
||||
SET(_rti_include_hint "${RTI_DIR}/include/")
|
||||
SET(_rti_library_hint "${RTI_DIR}/lib/${_rti_msvc_ver}/")
|
||||
ELSE()
|
||||
SET(_rti_include_hint "${RTI_DIR}/include/")
|
||||
SET(_rti_library_hint "${RTI_DIR}/lib/")
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(NOT RTI_INCLUDE_DIR)
|
||||
if(DEFINED _RTI_DIR_NOT_FOUND AND _RTI_DIR STREQUAL "")
|
||||
# RTI directory was not found earlier; skip searching for includes and create empty placeholder
|
||||
message(WARNING "Skipping RTI include search because RTI installation was not found")
|
||||
set(RTI_INCLUDE_DIR "")
|
||||
set(RTI_INCLUDE_DIRS "" CACHE STRING "RTI include directories" FORCE)
|
||||
|
||||
# Create placeholder INTERFACE targets for all RTI libraries when RTI is not installed
|
||||
# These allow configuration to succeed but will cause link errors if actually used
|
||||
SET(_RTI_LIBS nddscore nddsc nddscpp2 rtiroutingservice)
|
||||
FOREACH(_lib ${_RTI_LIBS})
|
||||
SET(_tgt_name RTI::${_lib})
|
||||
IF(NOT TARGET ${_tgt_name})
|
||||
ADD_LIBRARY(${_tgt_name} INTERFACE IMPORTED)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "")
|
||||
# Set dummy library variables to satisfy Ninja dependency tracking
|
||||
SET(RTI_${_lib}_LIBRARY "" CACHE STRING "RTI ${_lib} library (placeholder)" FORCE)
|
||||
SET(RTI_${_lib}_LIBRARY_RELEASE "" CACHE STRING "RTI ${_lib} library release (placeholder)" FORCE)
|
||||
SET(RTI_${_lib}_LIBRARY_DEBUG "" CACHE STRING "RTI ${_lib} library debug (placeholder)" FORCE)
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(RTI_LIBRARIES "" CACHE STRING "All rti libraries (placeholder)" FORCE)
|
||||
SET(RTI_FOUND FALSE CACHE BOOL "RTI not found" FORCE)
|
||||
# Force BUILD_RTI to OFF when RTI is not actually installed
|
||||
SET(BUILD_RTI OFF CACHE BOOL "Build with RTI support" FORCE)
|
||||
MESSAGE(WARNING "RTI not found - disabling BUILD_RTI. Set DDS_PATH to RTI installation to enable RTI features.")
|
||||
return()
|
||||
else()
|
||||
# Use PATHS instead of HINTS for more reliable path resolution
|
||||
FIND_PATH(RTI_INCLUDE_DIR ndds/ndds_cpp.h PATHS ${_rti_include_hint} NO_DEFAULT_PATH)
|
||||
IF(RTI_INCLUDE_DIR)
|
||||
SET(RTI_INCLUDE_DIRS "${RTI_INCLUDE_DIR}" "${RTI_INCLUDE_DIR}/ndds" "${RTI_INCLUDE_DIR}/ndds/hpp" CACHE STRING "RTI include directories" FORCE)
|
||||
MARK_AS_ADVANCED(RTI_INCLUDE_DIRS)
|
||||
ELSE()
|
||||
MESSAGE(FATAL "Could not find RTI include directory at ${_rti_include_hint}")
|
||||
ENDIF()
|
||||
endif()
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(NOT RTI_DDSGEN_EXECUTABLE)
|
||||
FIND_PROGRAM(RTI_DDSGEN_EXECUTABLE NAMES rtiddsgen rtiddsgen.bat HINTS ${RTI_DIR}/scripts ${RTI_DIR}/bin)
|
||||
ENDIF()
|
||||
IF(NOT RTI_VERSION_MAJOR)
|
||||
EXEC_PROGRAM(${RTI_DDSGEN_EXECUTABLE} ARGS -version OUTPUT_VARIABLE _dds_version_output)
|
||||
STRING(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]).*" "\\1" _dds_version_output ${_dds_version_output})
|
||||
SET(_rti_version_major 5)
|
||||
IF(_dds_version_output VERSION_GREATER 2.9.9)
|
||||
SET(_rti_version_major 6)
|
||||
ENDIF()
|
||||
SET(RTI_VERSION_MAJOR ${_rti_version_major} CACHE STRING "RTI version" FORCE)
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
|
||||
# Set policy for imported target library requirements
|
||||
if(POLICY CMP0111)
|
||||
cmake_policy(SET CMP0111 NEW)
|
||||
endif()
|
||||
|
||||
SET(_RTI_LIBS nddscore nddsc nddscpp2 rtiroutingservice)
|
||||
SET(_libs "")
|
||||
SET(_lib_vars "")
|
||||
|
||||
# Build list of library search paths including arch-specific subdirs
|
||||
set(_rti_lib_search_paths "${RTI_DIR}/lib" "${RTI_DIR}/lib/${_rti_gcc_arch}")
|
||||
# Also scan for any arch subdirs under lib/
|
||||
file(GLOB _rti_arch_dirs "${RTI_DIR}/lib/*")
|
||||
foreach(_arch_dir IN LISTS _rti_arch_dirs)
|
||||
if(IS_DIRECTORY "${_arch_dir}")
|
||||
list(APPEND _rti_lib_search_paths "${_arch_dir}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
FOREACH(_lib ${_RTI_LIBS})
|
||||
SET(_libname "RTI_${_lib}_LIBRARY")
|
||||
SET(_libname_release "RTI_${_lib}_LIBRARY_RELEASE")
|
||||
SET(_libname_debug "RTI_${_lib}_LIBRARY_DEBUG")
|
||||
|
||||
# Build explicit search paths for this library
|
||||
set(_lib_search_paths
|
||||
"${RTI_DIR}/lib/${_rti_gcc_arch}"
|
||||
"${RTI_DIR}/lib"
|
||||
)
|
||||
|
||||
# Find release library (no suffix)
|
||||
FIND_LIBRARY(${_libname_release}
|
||||
NAMES ${_lib}
|
||||
PATHS ${_lib_search_paths}
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
# Find debug library (d suffix on Linux)
|
||||
FIND_LIBRARY(${_libname_debug}
|
||||
NAMES ${_lib}d
|
||||
PATHS ${_lib_search_paths}
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
# Set combined library variable
|
||||
IF(${_libname_release})
|
||||
SET(${_libname} "${${_libname_release}}" CACHE STRING "RTI ${_lib} library" FORCE)
|
||||
ELSEIF(${_libname_debug})
|
||||
SET(${_libname} "${${_libname_debug}}" CACHE STRING "RTI ${_lib} library" FORCE)
|
||||
ENDIF()
|
||||
SET(_tgt_name RTI::${_lib})
|
||||
|
||||
IF(NOT TARGET ${_tgt_name})
|
||||
ADD_LIBRARY(${_tgt_name} UNKNOWN IMPORTED)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${RTI_INCLUDE_DIRS}")
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${RTI_INCLUDE_DIRS}")
|
||||
|
||||
IF(UNIX)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_COMPILE_DEFINITIONS "RTI_UNIX;RTI_LINUX;RTI_64BIT" )
|
||||
ENDIF()
|
||||
IF(WIN32)
|
||||
IF("${_lib}" STREQUAL "rtiroutingservice")
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_COMPILE_DEFINITIONS "RTI_WIN32;RTI_routingservice_DLL_VARIABLE" )
|
||||
ELSE()
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_COMPILE_DEFINITIONS "RTI_WIN32;NDDS_DLL_VARIABLE" )
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# Set library locations - use release for both configs if debug not found
|
||||
IF(${_libname}_RELEASE AND ${_libname}_DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_RELEASE "${${_libname}_RELEASE}")
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_DEBUG "${${_libname}_DEBUG}")
|
||||
# Set default IMPORTED_LOCATION for non-configured builds
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION "${${_libname}_RELEASE}")
|
||||
ELSEIF(${_libname}_RELEASE)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_RELEASE "${${_libname}_RELEASE}")
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_DEBUG "${${_libname}_RELEASE}")
|
||||
# Set default IMPORTED_LOCATION for non-configured builds
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION "${${_libname}_RELEASE}")
|
||||
ELSEIF(${_libname}_DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_CONFIGURATIONS RELEASE DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_RELEASE "${${_libname}_DEBUG}")
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_DEBUG "${${_libname}_DEBUG}")
|
||||
# Set default IMPORTED_LOCATION for non-configured builds
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION "${${_libname}_DEBUG}")
|
||||
ELSE()
|
||||
# No library found - skip creating this target
|
||||
MESSAGE(WARNING "RTI library ${_lib} not found in ${RTI_DIR}")
|
||||
SET(${_libname} "" CACHE STRING "RTI ${_lib} library (not found)" FORCE)
|
||||
CONTINUE()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
LIST(APPEND _libs "${${_libname}}")
|
||||
# rtiroutingservice is optional - only add required libs to _lib_vars for FIND_PACKAGE_HANDLE_STANDARD_ARGS
|
||||
IF(NOT "${_lib}" STREQUAL "rtiroutingservice")
|
||||
LIST(APPEND _lib_vars "${_libname}")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
IF(TARGET RTI::nddscore AND UNIX)
|
||||
SET_PROPERTY(TARGET RTI::nddscore PROPERTY INTERFACE_LINK_LIBRARIES "dl" )
|
||||
ENDIF()
|
||||
|
||||
SET(RTI_LIBRARIES ${_libs} CACHE STRING "All rti libraries" FORCE)
|
||||
MARK_AS_ADVANCED(RTI_LIBRARIES)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(RTI DEFAULT_MSG RTI_DIR RTI_INCLUDE_DIR RTI_DDSGEN_EXECUTABLE ${_lib_vars})
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF(SCHUSSTAFEL_INCLUDE_DIR AND SCHUSSTAFEL_LIBRARY)
|
||||
SET(SCHUSSTAFEL_FOUND TRUE)
|
||||
ELSE(SCHUSSTAFEL_INCLUDE_DIR AND SCHUSSTAFEL_LIBRARY)
|
||||
|
||||
FIND_PATH(SCHUSSTAFEL_INCLUDE_DIR Schusstafel.h)
|
||||
FIND_LIBRARY_WITH_DEBUG(SCHUSSTAFEL_LIBRARY WIN32_DEBUG_POSTFIX d NAMES Schusstafel libSchusstafel)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Schusstafel DEFAULT_MSG SCHUSSTAFEL_LIBRARY SCHUSSTAFEL_INCLUDE_DIR)
|
||||
|
||||
MARK_AS_ADVANCED(SCHUSSTAFEL_INCLUDE_DIR SCHUSSTAFEL_LIBRARY)
|
||||
ENDIF(SCHUSSTAFEL_INCLUDE_DIR AND SCHUSSTAFEL_LIBRARY)
|
||||
@@ -1,104 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF(NOT TMSIF_DIR)
|
||||
SET(_arch "unknown")
|
||||
SET(_TMSIF_DIR $ENV{TMSIF_PATH})
|
||||
IF(NOT _TMSIF_DIR)
|
||||
SET(_TMSIF_DIR "/opt/tmsif")
|
||||
ENDIF()
|
||||
IF(NOT EXISTS "${_TMSIF_DIR}" OR NOT IS_DIRECTORY "${_TMSIF_DIR}")
|
||||
MESSAGE(FATAL_ERROR "Umgebungsvariable TMSIF_PATH nicht gesetzt!")
|
||||
ENDIF()
|
||||
SET(TMSIF_DIR "${_TMSIF_DIR}" CACHE STRING "TMSIF base path" FORCE)
|
||||
MESSAGE(STATUS "Trying to use TMSIF_DIR from ${TMSIF_DIR}")
|
||||
ENDIF()
|
||||
SET(_tmsif_include_hint "${TMSIF_DIR}/include/")
|
||||
SET(_tmsif_library_hint "${TMSIF_DIR}/lib/")
|
||||
|
||||
|
||||
IF(NOT TMSIF_INCLUDE_DIR)
|
||||
FIND_PATH(TMSIF_INCLUDE_DIR Common.h HINTS ${_tmsif_include_hint})
|
||||
IF(TMSIF_INCLUDE_DIR)
|
||||
SET(TMSIF_INCLUDE_DIRS "${TMSIF_INCLUDE_DIR}" "${TMSIF_INCLUDE_DIR}/ddscxx" CACHE STRING "TMSIF include directories" FORCE)
|
||||
MARK_AS_ADVANCED(TMSIF_INCLUDE_DIRS)
|
||||
ELSE()
|
||||
MESSAGE(FATAL "Could not find TMSIF include directory at ${_tmsif_include_hint}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
SET(_TMSIF_LIBS tmsif-cyclone ddscxx ddkit-cyclone )
|
||||
SET(_libs "")
|
||||
SET(_lib_vars "")
|
||||
|
||||
FOREACH(_lib ${_TMSIF_LIBS})
|
||||
SET(_libname "TMSIF_${_lib}_LIBRARY")
|
||||
IF (NOT ${_libname})
|
||||
FIND_LIBRARY_WITH_DEBUG("${_libname}"
|
||||
WIN32_DEBUG_POSTFIX d
|
||||
NAMES ${_lib}
|
||||
HINTS ${_tmsif_library_hint} ${TMSIF_DIR}/lib )
|
||||
ENDIF()
|
||||
SET(_tgt_name TMSIF::${_lib})
|
||||
|
||||
IF(NOT TARGET ${_tgt_name})
|
||||
ADD_LIBRARY(${_tgt_name} UNKNOWN IMPORTED)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${TMSIF_INCLUDE_DIRS}")
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${TMSIF_INCLUDE_DIRS}")
|
||||
|
||||
IF(UNIX)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY INTERFACE_COMPILE_DEFINITIONS "TMSIF_UNIX;TMSIF_LINUX;TMSIF_64BIT" )
|
||||
ENDIF()
|
||||
IF(${_libname}_RELEASE)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_RELEASE "${${_libname}_RELEASE}")
|
||||
ENDIF()
|
||||
IF(${_libname}_DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION_DEBUG "${${_libname}_DEBUG}")
|
||||
ENDIF()
|
||||
IF(NOT ${_libname}_RELEASE AND NOT ${_libname}_DEBUG)
|
||||
SET_PROPERTY(TARGET ${_tgt_name} PROPERTY IMPORTED_LOCATION "${${_libname}}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
LIST(APPEND _libs "${${_libname}}")
|
||||
LIST(APPEND _lib_vars "${_libname}")
|
||||
ENDFOREACH()
|
||||
|
||||
|
||||
SET(TMSIF_LIBRARIES ${_libs} CACHE STRING "All TMSIF libraries" FORCE)
|
||||
MARK_AS_ADVANCED(TMSIF_LIBRARIES)
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TMSIF DEFAULT_MSG TMSIF_DIR TMSIF_INCLUDE_DIR ${_lib_vars})
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF(VLC_INCLUDE_DIR AND VLC_LIBRARIES)
|
||||
|
||||
|
||||
SET(VLC_FOUND TRUE)
|
||||
|
||||
ELSE()
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
INCLUDE(FindLibraryWithDebug)
|
||||
|
||||
FIND_LIBRARY_WITH_DEBUG(VLC_LIBRARIES WIN32_DEBUG_POSTFIX d NAMES vlc libvlc)
|
||||
FIND_PATH(VLC_INCLUDE_DIR vlc/vlc.h)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(VLC DEFAULT_MSG VLC_LIBRARIES VLC_INCLUDE_DIR)
|
||||
|
||||
FIND_PATH(VLC_IS_2_0_ABOVE vlc/libvlc_version.h
|
||||
PATHS ${VLC_INCLUDE_DIR}
|
||||
NO_DEFAULT_PATH)
|
||||
|
||||
IF(NOT VLC_IS_2_0_ABOVE)
|
||||
MESSAGE(FATAL_ERROR "Need at least VLC 2.x")
|
||||
ENDIF()
|
||||
MARK_AS_ADVANCED(VLC_DEFINES)
|
||||
|
||||
ENDIF()
|
||||
@@ -1,81 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF(XSD_INCLUDE_DIR AND XSD_COMPILER)
|
||||
SET(XSD_FOUND TRUE)
|
||||
ELSE(XSD_INCLUDE_DIR AND XSD_COMPILER)
|
||||
|
||||
FIND_PROGRAM(XSD_COMPILER NAMES xsdcxx xsd)
|
||||
FIND_PATH(XSD_INCLUDE_DIR xsd/cxx/config.hxx)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XSD DEFAULT_MSG
|
||||
XSD_COMPILER
|
||||
XSD_INCLUDE_DIR
|
||||
)
|
||||
|
||||
MARK_AS_ADVANCED(XSD_COMPILER
|
||||
XSD_INCLUDE_DIR)
|
||||
ENDIF(XSD_INCLUDE_DIR AND XSD_COMPILER)
|
||||
|
||||
MACRO(XSD_GENERATE_TREE srcList infile)
|
||||
GET_FILENAME_COMPONENT(output ${infile} NAME)
|
||||
GET_FILENAME_COMPONENT(input ${infile} ABSOLUTE)
|
||||
GET_FILENAME_COMPONENT(dir ${infile} DIRECTORY)
|
||||
|
||||
EXEC_PROGRAM(${XSD_COMPILER} ARGS version OUTPUT_VARIABLE _xsd_version_output)
|
||||
STRING(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]).*" "\\1" _xsd_version_output ${_xsd_version_output})
|
||||
|
||||
SET(_xsd_in ${input})
|
||||
SET(_cpp_out ${dir}/${output}.cxx)
|
||||
SET(_hpp_out ${dir}/${output}.hxx)
|
||||
|
||||
STRING(REPLACE ".xsd" "" _cpp_out "${_cpp_out}")
|
||||
STRING(REPLACE ".xsd" "" _hpp_out "${_hpp_out}")
|
||||
SET(additional_xsd_args "")
|
||||
IF(_xsd_version_output VERSION_GREATER 3.9.0)
|
||||
IF(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.7.0)
|
||||
SET(additional_xsd_args --std c++11)
|
||||
ELSE()
|
||||
IF(WIN32 OR NOT CMAKE_COMPILER_IS_GNUCC)
|
||||
SET(additional_xsd_args --std c++11)
|
||||
ENDIF(WIN32 OR NOT CMAKE_COMPILER_IS_GNUCC)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
)
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${_cpp_out} ${_hpp_out}
|
||||
COMMAND ${XSD_COMPILER}
|
||||
ARGS cxx-tree ${additional_xsd_args} --generate-serialization ${_xsd_in}
|
||||
DEPENDS ${_xsd_in} ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
)
|
||||
LIST(APPEND ${srcList} ${_cpp_out} ${_hpp_out} ${infile})
|
||||
ENDMACRO(XSD_GENERATE_TREE srcList infile)
|
||||
@@ -1,527 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
INCLUDE(CMakeParseArguments)
|
||||
|
||||
MACRO(_ADD_SERVICE_RESTART_FLAG svcName)
|
||||
|
||||
STRING(TOUPPER ${svcName} _svcNameUpper)
|
||||
STRING(TOLOWER ${svcName} _svcNameLower)
|
||||
SET(_optionName DONTRESTARTSVC_${_svcNameUpper})
|
||||
OPTION(${_optionName} "Do not automatically restart Service ${_svcNameUpper} (build dir only)" OFF)
|
||||
SET(_fn "${CMAKE_BINARY_DIR}/share/Lts/xml/${_svcNameLower}.dontRestart")
|
||||
IF (${_optionName})
|
||||
FILE(WRITE ${_fn} "blub")
|
||||
ELSE()
|
||||
FILE(REMOVE ${_fn})
|
||||
ENDIF()
|
||||
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
MACRO(_GET_SERVICENAME xmlFile_in svcNameOut)
|
||||
GET_FILENAME_COMPONENT(xmlFile ${xmlFile_in} NAME_WE)
|
||||
SET(_idx -1)
|
||||
STRING(FIND "${xmlFile}" "_" _idx)
|
||||
STRING(SUBSTRING "${xmlFile}" 0 ${_idx} ${svcNameOut})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(_CODEGEN_ACTION action srcList xmlIn in_files out_files)
|
||||
LIST(APPEND dependFiles ${ARGN} ${xmlIn} ${${in_files}})
|
||||
|
||||
|
||||
|
||||
|
||||
SET(_cg $<TARGET_FILE:ngl_codegen>)
|
||||
SET(_env "QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt6/plugins/kf6/ktexttemplate")
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${${out_files}}
|
||||
COMMAND ${CMAKE_COMMAND} -E env ${_env} ${_cg}
|
||||
ARGS -s ${xmlIn}
|
||||
-a ${action}
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}
|
||||
-i ${CMAKE_BINARY_DIR}/service_idl_files.txt
|
||||
${${in_files}}
|
||||
DEPENDS ${_cg} ${dependFiles}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
LIST(APPEND ${srcList} ${${out_files}})
|
||||
GET_FILENAME_COMPONENT(_xml "${CMAKE_CURRENT_SOURCE_DIR}/${xmlIn}" ABSOLUTE)
|
||||
SET_PROPERTY(GLOBAL APPEND PROPERTY CODEGEN_IDL_FILES "${_xml}")
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_DATABASE_STRUCTS srcList_h xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_structs.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_structs.h.grantlee"
|
||||
)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_structs.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_structs.h"
|
||||
)
|
||||
_CODEGEN_ACTION("DATABASE" ${srcList_h} ${xmlFile_in} in_files out_files ${ARGN})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_DATABASE_SQL srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_impl.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_impl.h.grantlee"
|
||||
)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_impl.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_impl.h"
|
||||
)
|
||||
_CODEGEN_ACTION("DATABASE" ${srcList} ${xmlFile_in} in_files out_files ${ARGN})
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_impl.h")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_DAO srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dao.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dao.h.grantlee"
|
||||
)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dao.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dao.h"
|
||||
)
|
||||
_CODEGEN_ACTION("dao" ${srcList} ${xmlFile_in} in_files out_files ${ARGN})
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dao.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dao.h")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_DATABASE srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_structs.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_structs.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_impl.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db_impl.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_db.h.grantlee"
|
||||
)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_structs.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_structs.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_impl.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_impl.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db.h"
|
||||
)
|
||||
_CODEGEN_ACTION("DATABASE_SERVER" ${srcList} ${xmlFile_in} in_files out_files ${ARGN})
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_db_impl.h")
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
MACRO(INSTALL_SHARED_FILES srcList)
|
||||
SET(options)
|
||||
SET(oneValueArgs DESTINATION)
|
||||
SET(multiValueArgs FILES)
|
||||
CMAKE_PARSE_ARGUMENTS(_ISF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
SET(build_out_dir ${CMAKE_BINARY_DIR}/share/Lts/${_ISF_DESTINATION})
|
||||
SET(inst_out_dir share/Lts/${_ISF_DESTINATION})
|
||||
|
||||
FOREACH(filename ${_ISF_FILES})
|
||||
GET_FILENAME_COMPONENT(fn ${filename} NAME)
|
||||
SET(build_out_file ${build_out_dir}/${fn})
|
||||
SET(in_file ${CMAKE_CURRENT_SOURCE_DIR}/${filename})
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${build_out_file}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E make_directory ${build_out_dir}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E copy_if_different ${in_file} ${build_out_file}
|
||||
DEPENDS ${in_file}
|
||||
)
|
||||
LIST(APPEND ${srcList} ${in_file} ${build_out_file})
|
||||
ENDFOREACH()
|
||||
NGL_INSTALL(${_ISF_UNPARSED_ARGUMENTS} FILES ${_ISF_FILES} DESTINATION ${inst_out_dir})
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_SQL srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(out_dir_sql "${CMAKE_BINARY_DIR}/share/Lts/sql/")
|
||||
SET(out_file_sql "${out_dir_sql}/${svcNameOut}.sql")
|
||||
SET(action "SQL")
|
||||
SET(_cg $<TARGET_FILE:ngl_codegen>)
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${out_file_sql}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E make_directory ${out_dir_sql}
|
||||
COMMAND ${CMAKE_COMMAND} -E env QT_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt6/plugins/kf6/ktexttemplate ${_cg}
|
||||
ARGS -s ${xmlFile_in}
|
||||
-a ${action}
|
||||
-o ${out_dir_sql}
|
||||
-i ${CMAKE_BINARY_DIR}/service_idl_files.txt
|
||||
DEPENDS ${_cg} ${xmlFile_in}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
LIST(APPEND ${srcList} ${out_file_sql})
|
||||
|
||||
|
||||
NGL_INSTALL(SV AAR FILES ${out_file_sql} DESTINATION share/Lts/sql)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_HANDLE_SVC_XML srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
|
||||
SET(out_dir_xml "${CMAKE_BINARY_DIR}/share/Lts/xml/")
|
||||
SET(out_file_xml "${out_dir_xml}/${svcNameOut}.xml")
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${out_file_xml}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E make_directory ${out_dir_xml}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E copy_if_different ${xmlFile_in} ${out_file_xml}
|
||||
DEPENDS ${xmlFile_in}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
)
|
||||
|
||||
LIST(APPEND ${srcList} ${xmlFile_in} ${out_file_xml})
|
||||
|
||||
_ADD_SERVICE_RESTART_FLAG(${svcNameOut})
|
||||
|
||||
|
||||
NGL_INSTALL(SV AAR FILES ${out_file_xml} DESTINATION share/Lts/xml)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_IDL_SVC srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}.idl"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_enums.idl"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_json.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_json.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_translation.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_translation.h")
|
||||
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc.idl.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_enums.idl.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_json.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_json.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_translation.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_translation.h.grantlee"
|
||||
)
|
||||
SET(idl_out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}.idl"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_enums.idl")
|
||||
SET_PROPERTY(GLOBAL APPEND PROPERTY CODEGEN_IDL_FILES "${idl_out_files}")
|
||||
SET_SOURCE_FILES_PROPERTIES(${idl_out_files} PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||
_CODEGEN_ACTION("DDS_TOPICS" ${srcList} "${xmlFile_in}" in_files out_files ${ARGN})
|
||||
|
||||
CODEGEN_HANDLE_SVC_XML(${srcList} ${xmlFile_in})
|
||||
ENDMACRO()
|
||||
|
||||
# Use Python 3 (Python 2.7 not available on modern distributions like openSUSE Leap 16.0)
|
||||
FIND_PACKAGE(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
|
||||
|
||||
MACRO(CODEGEN_TOPIC_TYPEDEFS srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(inFile ${xmlFile_in})
|
||||
IF(NOT IS_ABSOLUTE ${inFile})
|
||||
SET(inFile ${CMAKE_CURRENT_SOURCE_DIR}/${inFile})
|
||||
IF(NOT EXISTS ${inFile})
|
||||
SET(inFile ${CMAKE_CURRENT_BINARY_DIR}/${inFile})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
SET(prog ${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/codegen_simple.py)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dts_types.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dtc_types.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_fts_types.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_ftc_types.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_operator_rights.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_operator_rights.cpp"
|
||||
"${CMAKE_BINARY_DIR}/share/Lts/sql/${svcNameOut}_operator_rights.sql"
|
||||
)
|
||||
|
||||
ADD_CUSTOM_COMMAND( OUTPUT ${out_files}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E make_directory ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E make_directory ${CMAKE_BINARY_DIR}/share/Lts/sql/
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
ARGS ${prog} ALL
|
||||
${inFile}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMAND ${PYTHON_EXECUTABLE}
|
||||
ARGS ${prog} SQL
|
||||
${inFile}
|
||||
${CMAKE_BINARY_DIR}/share/Lts/sql
|
||||
DEPENDS ${inFile}
|
||||
${prog}
|
||||
)
|
||||
LIST(APPEND ${srcList} ${out_files})
|
||||
SET_PROPERTY(GLOBAL APPEND PROPERTY CODEGEN_XML_FILES "${inFile}")
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_CLIENT_TOPICS_IFC srcList xmlFile_in)
|
||||
SET(options)
|
||||
SET(oneValueArgs)
|
||||
SET(multiValueArgs PARTS)
|
||||
CMAKE_PARSE_ARGUMENTS(_CST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
IF(NOT _CST_PARTS)
|
||||
SET(_CST_PARTS "DTC" "FTC")
|
||||
ENDIF()
|
||||
|
||||
SET(in_files "")
|
||||
SET(out_files "")
|
||||
FOREACH(part ${_CST_PARTS})
|
||||
IF(part STREQUAL "DTC")
|
||||
LIST(APPEND in_files
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dtc.h.grantlee"
|
||||
)
|
||||
LIST(APPEND out_files
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dtc.h"
|
||||
)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dtc.h")
|
||||
ENDIF()
|
||||
ELSEIF(part STREQUAL "FTC")
|
||||
LIST(APPEND in_files
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_ftc.h.grantlee"
|
||||
)
|
||||
LIST(APPEND out_files
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_ftc.h"
|
||||
)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_ftc.h")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unkown part argument for CODEGEN_SERVER_TOPICS (${part})")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
_CODEGEN_ACTION("DDS_TOPICS" ${srcList} "${xmlFile_in}" in_files out_files)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_CLIENT_TOPICS_IMPL srcList xmlFile_in)
|
||||
SET(options)
|
||||
SET(oneValueArgs)
|
||||
SET(multiValueArgs PARTS)
|
||||
CMAKE_PARSE_ARGUMENTS(_CST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
IF(NOT _CST_PARTS)
|
||||
SET(_CST_PARTS "DTC" "FTC")
|
||||
ENDIF()
|
||||
SET(in_files "")
|
||||
SET(out_files "")
|
||||
FOREACH(part ${_CST_PARTS})
|
||||
IF(part STREQUAL "DTC")
|
||||
LIST(APPEND in_files
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dtc_impl.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dtc_impl.cpp.grantlee"
|
||||
)
|
||||
LIST(APPEND out_files
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dtc_impl.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dtc_impl.cpp"
|
||||
)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dtc_impl.h")
|
||||
ENDIF()
|
||||
ELSEIF(part STREQUAL "FTC")
|
||||
LIST(APPEND in_files
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_ftc_impl.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_ftc_impl.cpp.grantlee"
|
||||
)
|
||||
LIST(APPEND out_files
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_ftc_impl.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_ftc_impl.cpp"
|
||||
)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_ftc_impl.h")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unkown part argument for CODEGEN_SERVER_TOPICS (${part})")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
_CODEGEN_ACTION("DDS_TOPICS" ${srcList} "${xmlFile_in}" in_files out_files)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_SERVER_TOPICS srcList xmlFile_in)
|
||||
SET(options)
|
||||
SET(oneValueArgs)
|
||||
SET(multiValueArgs PARTS)
|
||||
CMAKE_PARSE_ARGUMENTS(_CST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
IF(NOT _CST_PARTS)
|
||||
SET(_CST_PARTS "DTS" "FTS")
|
||||
ENDIF()
|
||||
SET(in_files "")
|
||||
SET(out_files "")
|
||||
FOREACH(part ${_CST_PARTS})
|
||||
IF(part STREQUAL "DTS")
|
||||
LIST(APPEND in_files
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dts.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dts_impl.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_dts_impl.cpp.grantlee"
|
||||
)
|
||||
LIST(APPEND out_files
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dts.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dts_impl.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_dts_impl.cpp"
|
||||
)
|
||||
ELSEIF(part STREQUAL "FTS")
|
||||
LIST(APPEND in_files
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_fts.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_fts_impl.h.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_fts_impl.cpp.grantlee"
|
||||
)
|
||||
LIST(APPEND out_files
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_fts.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_fts_impl.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_fts_impl.cpp"
|
||||
)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} ${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_fts_impl.h)
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(FATAL_ERROR "Unkown part argument for CODEGEN_SERVER_TOPICS (${part})")
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
|
||||
_CODEGEN_ACTION("DDS_TOPICS" ${srcList} "${xmlFile_in}" in_files out_files)
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
|
||||
|
||||
MACRO(CODEGEN_TOPIC_TYPE_PLUGIN srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_topic_type_plugin.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_topic_type_plugin.h.grantlee"
|
||||
)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_topic_type_plugin.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_topic_type_plugin.h"
|
||||
)
|
||||
_CODEGEN_ACTION("DDS_TOPICS" ${srcList} "${xmlFile_in}" in_files out_files)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} ${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_topic_type_plugin.h)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CREATE_TOPIC_TYPE_PLUGIN xmlFile_in)
|
||||
SET(_my_srcs "")
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
CODEGEN_TOPIC_TYPE_PLUGIN(_my_srcs ${xmlFile_in})
|
||||
|
||||
STRING(SUBSTRING ${svcNameOut} 0 1 _ss1)
|
||||
STRING(SUBSTRING ${svcNameOut} 1 -1 _ss2)
|
||||
STRING(TOUPPER ${_ss1} _ss1)
|
||||
SET(_commonLib "svc${_ss1}${_ss2}Common")
|
||||
|
||||
IF(svcNameOut STREQUAL "core")
|
||||
SET(_commonLib ddscore)
|
||||
ENDIF()
|
||||
|
||||
NGL_ADD_LIBRARY(WS AAR SV NO_TRANSLATION ${svcNameOut}TopicTypePlugin MODULE
|
||||
${_my_srcs}
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(${svcNameOut}TopicTypePlugin
|
||||
topic_type_plugin
|
||||
routing_plugin
|
||||
ddscore
|
||||
ddsftccore
|
||||
# The generated *_topic_type_plugin.cpp includes generic_fts_impl.h
|
||||
# -> generic_fts_internal.h -> "ddsfts_export.h". Linking ddsfts also
|
||||
# propagates its exported include dirs (source and binary dir).
|
||||
ddsfts
|
||||
${_commonLib}
|
||||
)
|
||||
NGL_INSTALL_TARGET(${svcNameOut}TopicTypePlugin)
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
|
||||
|
||||
MACRO(CODEGEN_RECORD_REPLAY_PLUGIN srcList xmlFile_in)
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
SET(in_files "${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_record_replay_plugin.cpp.grantlee"
|
||||
"${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen/svc_record_replay_plugin.h.grantlee"
|
||||
)
|
||||
SET(out_files "${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_record_replay_plugin.cpp"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_record_replay_plugin.h"
|
||||
)
|
||||
_CODEGEN_ACTION("DDS_TOPICS" ${srcList} "${xmlFile_in}" in_files out_files)
|
||||
IF(NOT POLICY CMP0071)
|
||||
QT6_WRAP_CPP(${srcList} ${CMAKE_CURRENT_BINARY_DIR}/${svcNameOut}_record_replay_plugin.h)
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CREATE_RECORD_REPLAY_PLUGIN_INTERN xmlFile_in svcSourceList libtype)
|
||||
SET(_my_srcs "")
|
||||
_GET_SERVICENAME( "${xmlFile_in}" svcNameOut )
|
||||
CODEGEN_RECORD_REPLAY_PLUGIN(_my_srcs ${xmlFile_in})
|
||||
|
||||
STRING(SUBSTRING ${svcNameOut} 0 1 _ss1)
|
||||
STRING(SUBSTRING ${svcNameOut} 1 -1 _ss2)
|
||||
STRING(TOUPPER ${_ss1} _ss1)
|
||||
SET(_commonLib "svc${_ss1}${_ss2}Common")
|
||||
|
||||
IF(svcNameOut STREQUAL "core")
|
||||
SET(_commonLib ddscore)
|
||||
ENDIF()
|
||||
|
||||
LIST(APPEND ${svcSourceList} ${_my_srcs})
|
||||
|
||||
NGL_ADD_LIBRARY(SV AAR WS ${svcNameOut}RecordReplayPlugin ${libtype}
|
||||
${_my_srcs}
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(${svcNameOut}RecordReplayPlugin
|
||||
RecordReplayPlugin
|
||||
ddscore
|
||||
ddsconnector
|
||||
ddsdtc
|
||||
ngldb
|
||||
LtsUtilsCore
|
||||
${_commonLib}
|
||||
)
|
||||
NGL_INSTALL_TARGET(${svcNameOut}RecordReplayPlugin)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(${svcNameOut}RecordReplayPlugin
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CREATE_RECORD_REPLAY_PLUGIN xmlFile_in svcSourceList)
|
||||
CREATE_RECORD_REPLAY_PLUGIN_INTERN(${xmlFile_in} ${svcSourceList} MODULE)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CREATE_RECORD_REPLAY_PLUGIN_SHARED xmlFile_in)
|
||||
CREATE_RECORD_REPLAY_PLUGIN_INTERN(${xmlFile_in} _unused SHARED)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(CODEGEN_WRITE_SERVICEFILE_INFO)
|
||||
GET_PROPERTY(idl_files GLOBAL PROPERTY CODEGEN_IDL_FILES)
|
||||
LIST(REMOVE_DUPLICATES idl_files)
|
||||
FILE(WRITE ${CMAKE_BINARY_DIR}/service_idl_files.txt "-- all available service idl files\n")
|
||||
FOREACH(idl_file ${idl_files})
|
||||
FILE(APPEND ${CMAKE_BINARY_DIR}/service_idl_files.txt "${idl_file}\n")
|
||||
ENDFOREACH()
|
||||
ENDMACRO()
|
||||
@@ -1,77 +0,0 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
MACRO(RTIDDSGEN srcList infile)
|
||||
# RTI (DDS) code generation is optional during migration; if RTI is not found, skip code generation.
|
||||
FIND_PACKAGE(RTI)
|
||||
if (NOT RTI_FOUND)
|
||||
message(STATUS "RTI not found; skipping RTI IDL code generation for ${infile}")
|
||||
return()
|
||||
endif()
|
||||
|
||||
SET(input ${infile})
|
||||
IF(NOT IS_ABSOLUTE ${input})
|
||||
SET(input "${CMAKE_CURRENT_BINARY_DIR}/${input}")
|
||||
ENDIF()
|
||||
GET_FILENAME_COMPONENT(output ${infile} NAME_WE)
|
||||
GET_FILENAME_COMPONENT(input ${input} ABSOLUTE)
|
||||
|
||||
|
||||
|
||||
|
||||
SET(_ddsgen_args "")
|
||||
SET(output_cxx
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${output}.cxx
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${output}Plugin.cxx
|
||||
)
|
||||
|
||||
SET(output_hpp
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${output}.hpp
|
||||
${CMAKE_CURRENT_BINARY_DIR}/${output}Plugin.hpp
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
ADD_CUSTOM_COMMAND(OUTPUT ${output_cxx} ${output_hpp}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E remove ${output_cxx}
|
||||
COMMAND ${RTI_DDSGEN_EXECUTABLE}
|
||||
ARGS -language "C++11"
|
||||
ARGS -unboundedSupport
|
||||
ARGS -verbosity 2
|
||||
ARGS -update typefiles
|
||||
ARGS -stl
|
||||
ARGS -d ${CMAKE_CURRENT_BINARY_DIR}
|
||||
ARGS -inputIdl ${input}
|
||||
ARGS -I ${CMAKE_CURRENT_BINARY_DIR}
|
||||
ARGS -I ${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
ARGS -I ${CMAKE_CURRENT_BINARY_DIR}/../../
|
||||
ARGS -I ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
ARGS -I ${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
ARGS -I ${CMAKE_CURRENT_SOURCE_DIR}/../../
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
DEPENDS ${input} ${ARGN}
|
||||
)
|
||||
|
||||
IF(WIN32)
|
||||
SET_SOURCE_FILES_PROPERTIES(${output_cxx} PROPERTIES COMPILE_FLAGS "-DNDDS_USER_DLL_EXPORT")
|
||||
ELSE()
|
||||
SET_SOURCE_FILES_PROPERTIES(${output_cxx} PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE)
|
||||
ENDIF()
|
||||
LIST(APPEND ${srcList} ${output_cxx} ${output_hpp})
|
||||
|
||||
|
||||
ENDMACRO()
|
||||
@@ -38,11 +38,20 @@ if(POLICY CMP0177)
|
||||
cmake_policy(SET CMP0177 OLD)
|
||||
endif()
|
||||
|
||||
# Compatibility stubs for Qt5 CMake macros when Qt6 is used.
|
||||
# These stubs allow configure to succeed; actual resource/ui generation should be addressed during source migration.
|
||||
# Compatibility stubs for Qt5 CMake macros when Qt6 is used (UI/CPP wrapping
|
||||
# still no-op; resource handling is implemented below).
|
||||
# QT5_ADD_RESOURCES maps onto Qt6's qt6_add_resources() in the outfiles-variable
|
||||
# form: the generated qrc_<name>.cpp sources are appended to the given source
|
||||
# list, so .qrc files are compiled into the targets that reference them
|
||||
# (e.g. TetraIF/LogView). Without this the resources are silently dropped and
|
||||
# ":/..." icons render empty at runtime.
|
||||
if(NOT COMMAND QT5_ADD_RESOURCES)
|
||||
macro(QT5_ADD_RESOURCES _out)
|
||||
set(${_out} "" PARENT_SCOPE)
|
||||
if(TARGET Qt6::Core)
|
||||
qt6_add_resources(${_out} ${ARGN})
|
||||
else()
|
||||
message(WARNING "QT5_ADD_RESOURCES stub: Qt6::Core not found, skipping resources: ${ARGN}")
|
||||
endif()
|
||||
endmacro()
|
||||
endif()
|
||||
if(NOT COMMAND QT5_ADD_BIG_RESOURCES)
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# Placeholder internal targets to allow partial configure during migration
|
||||
# Creates IMPORTED targets for internal DDS generator targets that are not
|
||||
# yet available in the repository. These placeholders allow CMake checks
|
||||
# like "if(TARGET ddsgen)" to behave consistently and let subdirs add
|
||||
# tests during migration. They should be removed/replaced when real
|
||||
# targets are added during module migration.
|
||||
|
||||
if(NOT TARGET ddsgen)
|
||||
add_library(ddsgen UNKNOWN IMPORTED)
|
||||
# Qt6 Migration: Removed INTERFACE_POSITION_INDEPENDENT_CODE - conflicts with Qt6 reduce_relocations
|
||||
# set_target_properties(ddsgen PROPERTIES INTERFACE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
if(NOT TARGET ddsdtc)
|
||||
add_library(ddsdtc UNKNOWN IMPORTED)
|
||||
# Qt6 Migration: Removed INTERFACE_POSITION_INDEPENDENT_CODE - conflicts with Qt6 reduce_relocations
|
||||
# set_target_properties(ddsdtc PROPERTIES INTERFACE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
if(NOT TARGET ddsfts)
|
||||
add_library(ddsfts UNKNOWN IMPORTED)
|
||||
# Qt6 Migration: Removed INTERFACE_POSITION_INDEPENDENT_CODE - conflicts with Qt6 reduce_relocations
|
||||
# set_target_properties(ddsfts PROPERTIES INTERFACE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
if(NOT TARGET ddsQoS)
|
||||
add_library(ddsQoS UNKNOWN IMPORTED)
|
||||
# Qt6 Migration: Removed INTERFACE_POSITION_INDEPENDENT_CODE - conflicts with Qt6 reduce_relocations
|
||||
# set_target_properties(ddsQoS PROPERTIES INTERFACE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
+19
-125
@@ -1,140 +1,34 @@
|
||||
// Release pipeline for the Qt6-migrated legatus validation-scope branch
|
||||
// (story/release-validation-scope): TetraIF, Z, Lts/Common (+
|
||||
// Lts/Proxies/TrainingAreaBase) -> 5 release DEB packages.
|
||||
// Entry point of the release pipeline for the Qt6-migrated legatus
|
||||
// validation-scope branch (story/release-validation-scope).
|
||||
//
|
||||
// Workspace layout (checked out by Jenkins, outer pipeline repo):
|
||||
// <WORKSPACE>/
|
||||
// external/
|
||||
// qt-migration-legatus/qt6-after/qt6-migrated-legatus/ <- LEGATUS_ROOT
|
||||
// Dockerfile (prebuilt build image recipe)
|
||||
// new_docker_build.sh (local build driver)
|
||||
// rpmbuild/make_rpm_ubuntu26.py (in-tree packaging)
|
||||
// jenkins-ci-rme/ (this pipeline)
|
||||
//
|
||||
// The build container image is the prebuilt image built from the in-tree
|
||||
// Dockerfile; it is built on the agent when not present (RebuildImage
|
||||
// forces a fresh build).
|
||||
|
||||
def project = 'guez'
|
||||
def legatusRoot = 'qt-migration-legatus/qt6-after/qt6-migrated-legatus'
|
||||
def imageName = 'legatus-qt6-prebuilt:latest'
|
||||
// Lives in jenkins-ci-rme/ of the DLBO Qt6 repo. Declares the job properties,
|
||||
// allocates the build node, checks out the repo with its submodules and
|
||||
// loads the build body from jenkins-ci-rme/jenkins/Jenkinsfile.
|
||||
|
||||
properties([
|
||||
disableConcurrentBuilds(),
|
||||
parameters([
|
||||
string(name: 'OsVersions', defaultValue: '26.04', description: 'Comma-separated Ubuntu base versions, all built in parallel'),
|
||||
choice(name: 'ProjectName', choices: ['guez'], description: 'LTS project flavor (passed to make_rpm_ubuntu26.py --project_name)'),
|
||||
string(name: 'OsVersions', defaultValue: '26.04', description: 'Comma-separated Ubuntu base versions, built sequentially'),
|
||||
string(name: 'LtsVersion', defaultValue: '1.0', description: 'LTS version (major.minor) passed to make_rpm_ubuntu26.py --version'),
|
||||
booleanParam(name: 'ClearWorkspace', defaultValue: false, description: 'Clear entire workspace on all nodes used for build'),
|
||||
booleanParam(name: 'ClearWorkspace', defaultValue: false, description: 'Clear entire workspace used for build'),
|
||||
booleanParam(name: 'PublishArtifactRepo', defaultValue: true, description: 'Upload produced DEBs to the internal artifact repository'),
|
||||
booleanParam(name: 'RebuildImage', defaultValue: false, description: 'Rebuild the prebuilt build image from the in-tree Dockerfile (default: reuse when present)')
|
||||
booleanParam(name: 'RunCoverage', defaultValue: true, description: 'Build the release scope with -O0 --coverage, run ctest, collect the lcov report and archive it')
|
||||
])
|
||||
])
|
||||
|
||||
env.GIT_TERMINAL_PROMPT = '0'
|
||||
env.LTS_VERSION = "${params.LtsVersion}"
|
||||
env.ARTIFACTREPO = 'https://internal-repo.sl.defence-elec.de'
|
||||
|
||||
// OS versions this build covers; every build is isolated under
|
||||
// rpms/${project}/${osVersion} so concurrent OS builds never collide.
|
||||
def osVersions = params.OsVersions.split(',').collect { it.trim() }.findAll { it }
|
||||
|
||||
def builds = [:]
|
||||
osVersions.each { osVersion ->
|
||||
def rpmsDir = "rpms/${project}/${osVersion}"
|
||||
|
||||
builds["${project} (${osVersion})"] = {
|
||||
stage("Prepare ${project} (${osVersion})") {
|
||||
sh "rm -rf ${rpmsDir}"
|
||||
sh "mkdir -p ${rpmsDir}"
|
||||
}
|
||||
|
||||
stage("Prepare build image ${project} (${osVersion})") {
|
||||
if (params.RebuildImage) {
|
||||
sh "docker rmi ${imageName} || true"
|
||||
}
|
||||
// The in-tree driver owns the Dockerfile build args (APT_PACKAGES,
|
||||
// QT_VERSION, ...) - single source of truth.
|
||||
sh """
|
||||
if docker image inspect ${imageName} >/dev/null 2>&1; then
|
||||
echo "Reusing existing prebuilt image ${imageName}"
|
||||
else
|
||||
echo "Building prebuilt image ${imageName} from the in-tree Dockerfile..."
|
||||
cd ${legatusRoot} && bash ./new_docker_build.sh --build-prebuilt-image --docker-image ${imageName}
|
||||
fi
|
||||
"""
|
||||
}
|
||||
|
||||
stage("Build DEB ${project} (${osVersion})") {
|
||||
def buildContainer = docker.image("${imageName}")
|
||||
def guezMode = (project == 'guez') ? 'ON' : 'OFF'
|
||||
|
||||
def dockerOpts = "--init --shm-size=2g" +
|
||||
" -v ${WORKSPACE}:/workspace" +
|
||||
" -e WORKSPACE=/workspace" +
|
||||
" -e PROJECT_BASE_DIR=/workspace" +
|
||||
" -e PROJECT=${project}" +
|
||||
" -e OS_VERSION=${osVersion}" +
|
||||
" -e LTS_VERSION=${LTS_VERSION}" +
|
||||
" -e GUEZ_MODE=${guezMode}" +
|
||||
" -e BUILD_NUMBER=${env.BUILD_NUMBER}" +
|
||||
" -e BUILD_TAG=${env.BUILD_TAG}"
|
||||
|
||||
buildContainer.inside(dockerOpts) {
|
||||
sh "bash /workspace/${legatusRoot}/jenkins-ci-rme/jenkins_builder_ubuntu26.sh"
|
||||
}
|
||||
}
|
||||
|
||||
stage("Publish ${project} (${osVersion})") {
|
||||
if (params.PublishArtifactRepo) {
|
||||
withCredentials([usernamePassword(credentialsId: 'internal-repo-uploader',
|
||||
usernameVariable: 'CURL_USER',
|
||||
passwordVariable: 'CURL_PASS')]) {
|
||||
sh """
|
||||
export CURL_CRED="\${CURL_USER}:\${CURL_PASS}"
|
||||
export PROJECT='${project}'
|
||||
export OS_VERSION='${osVersion}'
|
||||
export LTS_VERSION='${LTS_VERSION}'
|
||||
export BUILD_NUMBER='${env.BUILD_NUMBER}'
|
||||
export ARTIFACTREPO='${env.ARTIFACTREPO}'
|
||||
export ARTIFACTFOLDER='${project}'
|
||||
bash ${legatusRoot}/jenkins-ci-rme/jenkins_publisher_ubuntu26.sh
|
||||
"""
|
||||
}
|
||||
|
||||
def tdsUrl = readFile("url-${project}-${osVersion}.txt").trim()
|
||||
def tdsVersion = readFile("tdsversion-${project}-${osVersion}.txt").trim()
|
||||
def link = """<a href="${tdsUrl}" target="_blank">${project} ${tdsVersion} (OS ${osVersion})</a>"""
|
||||
currentBuild.description = currentBuild.description ? "${currentBuild.description}<br/>${link}" : link
|
||||
} else {
|
||||
echo "Artifact-repo publish skipped for ${project} (OS ${osVersion}, PublishArtifactRepo=false)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
stage("Initialization") {
|
||||
node('jenkins-linux-node-2.sl.defence-elec.de') {
|
||||
stage('Init submodule') {
|
||||
if (params.ClearWorkspace) {
|
||||
cleanWs()
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: true, reference: '', trackingSubmodules: false]],
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
}
|
||||
echo "Legatus Qt6 release build initialized — branch '${env.BRANCH_NAME}', project: ${project}, LTS ${env.LTS_VERSION}, OS version(s): ${osVersions.join(', ')}"
|
||||
checkout([
|
||||
$class: 'GitSCM',
|
||||
branches: scm.branches,
|
||||
doGenerateSubmoduleConfigurations: false,
|
||||
extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: true, recursiveSubmodules: true, reference: '', trackingSubmodules: false]],
|
||||
userRemoteConfigs: scm.userRemoteConfigs
|
||||
])
|
||||
}
|
||||
|
||||
parallel builds
|
||||
|
||||
stage("Finalization") {
|
||||
echo "Legatus Qt6 release build completed — project: ${project} (LTS ${env.LTS_VERSION}), OS version(s): ${osVersions.join(', ')}"
|
||||
}
|
||||
|
||||
currentBuild.result = 'SUCCESS'
|
||||
} catch (e) {
|
||||
currentBuild.result = 'FAILURE'
|
||||
throw e
|
||||
load 'jenkins-ci-rme/jenkins/Jenkinsfile'
|
||||
}
|
||||
@@ -5,7 +5,8 @@ only on files inside this source tree:
|
||||
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `Jenkinsfile` | Jenkins pipeline: prepare the prebuilt image (in-tree `Dockerfile`), run the builder inside the container, publish the DEBs to the artifact repo |
|
||||
| `Jenkinsfile` | Jenkins entry point (job script path `jenkins-ci-rme/Jenkinsfile`): job properties/parameters, build node, checkout with submodules, then `load`s `jenkins-ci-rme/jenkins/Jenkinsfile` |
|
||||
| `jenkins/Jenkinsfile` | Build body (per OS version, sequentially): install the prebuilt image from `legatus-qt6_1.0.tar.gz` when missing, run the builder inside the container, coverage, publish the DEBs to the artifact repo |
|
||||
| `jenkins_builder_ubuntu26.sh` | Runs **inside** the build container: stages the workspace, runs the in-tree `rpmbuild/make_rpm_ubuntu26.py`, copies the DEBs to the packages-out mount |
|
||||
| `jenkins_publisher_ubuntu26.sh` | Runs on the Jenkins agent: uploads the DEBs from `${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/` to the internal artifact repository |
|
||||
| `release-16-10-2026.sh` | Local driver: the same flow without Jenkins, through the in-tree `new_docker_build.sh` |
|
||||
@@ -24,9 +25,9 @@ only on files inside this source tree:
|
||||
|
||||
- Packaging uses the **in-tree** `rpmbuild/make_rpm_ubuntu26.py`
|
||||
(was `${WORKSPACE}/rpmbuild` from the outer repo)
|
||||
- The prebuilt build image is built from the **in-tree** `Dockerfile` via
|
||||
`new_docker_build.sh --build-prebuilt-image` (was a pre-pulled harbor
|
||||
image) — build args stay in `new_docker_build.sh` (single source of truth)
|
||||
- The prebuilt build image `legatus-qt6:1.0` ships in the repo as
|
||||
`legatus-qt6_1.0.tar.gz` (repo root); Jenkins `docker load`s it only when
|
||||
the image is not installed on the agent yet, and never builds it
|
||||
- `MIGRATE_PIPELINE_ROOT` is no longer needed: `new_docker_build.sh`
|
||||
derives it from its own location
|
||||
- DEB output path: `${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/` (Jenkins
|
||||
@@ -40,15 +41,14 @@ only on files inside this source tree:
|
||||
## Local run
|
||||
|
||||
```bash
|
||||
cd qt6-migrated-legatus
|
||||
cd "DLBO Qt6"
|
||||
bash ./jenkins-ci-rme/release-16-10-2026.sh
|
||||
# DEBs: <pipeline-root>/rpms/guez/26.04/
|
||||
# DEBs: <repo-root>/rpms/guez/26.04/
|
||||
```
|
||||
|
||||
## Jenkins setup
|
||||
|
||||
The job SCM must be the outer pipeline repository (the Jenkinsfile lives in
|
||||
the `qt-migration-legatus` submodule; point the job's script path at
|
||||
`qt-migration-legatus/qt6-after/qt6-migrated-legatus/jenkins-ci-rme/Jenkinsfile`).
|
||||
The job SCM is the DLBO Qt6 repository; the script path is
|
||||
`jenkins-ci-rme/Jenkinsfile`, which loads `jenkins-ci-rme/jenkins/Jenkinsfile`.
|
||||
Required Jenkins credential: `internal-repo-uploader` (username/password for
|
||||
the artifact repository).
|
||||
@@ -0,0 +1,135 @@
|
||||
// Build body of the release pipeline for the Qt6-migrated legatus
|
||||
// validation-scope branch (story/release-validation-scope): TetraIF, Z,
|
||||
// Lts/Common (+ Lts/Proxies/TrainingAreaBase) -> 5 release DEB packages.
|
||||
//
|
||||
// Loaded by jenkins-ci-rme/Jenkinsfile inside the allocated node after the
|
||||
// checkout; job properties/parameters live there.
|
||||
//
|
||||
// Workspace layout (checked out by Jenkins, DLBO Qt6 repo):
|
||||
// <WORKSPACE>/
|
||||
// jenkins-ci-rme/Jenkinsfile (entry point)
|
||||
// new_docker_build.sh (local build driver)
|
||||
// rpmbuild/make_rpm_ubuntu26.py (in-tree packaging)
|
||||
// jenkins-ci-rme/ (this pipeline)
|
||||
//
|
||||
// The build container image is the prebuilt image shipped in the repo as
|
||||
// legatus-qt6_1.0.tar.gz; it is loaded onto the agent when not installed
|
||||
// yet, never built here.
|
||||
|
||||
def project = params.ProjectName
|
||||
def imageName = 'legatus-qt6:1.0'
|
||||
def imageArchive = 'legatus-qt6_1.0.tar.gz'
|
||||
|
||||
env.GIT_TERMINAL_PROMPT = '0'
|
||||
env.LTS_VERSION = "${params.LtsVersion}"
|
||||
env.ARTIFACTREPO = 'https://internal-repo.sl.defence-elec.de'
|
||||
|
||||
// OS versions this build covers, built one after another (the builder
|
||||
// stages the workspace into a shared deb_stage directory); output is
|
||||
// still isolated under rpms/${project}/${osVersion}.
|
||||
def osVersions = params.OsVersions.split(',').collect { it.trim() }.findAll { it }
|
||||
|
||||
def buildOsVersion = { String osVersion ->
|
||||
def rpmsDir = "rpms/${project}/${osVersion}"
|
||||
|
||||
stage("Prepare ${project} (${osVersion})") {
|
||||
sh "rm -rf ${rpmsDir}"
|
||||
sh "mkdir -p ${rpmsDir}"
|
||||
}
|
||||
|
||||
stage("Build DEB ${project} (${osVersion})") {
|
||||
def buildContainer = docker.image("${imageName}")
|
||||
def guezMode = (project == 'guez') ? 'ON' : 'OFF'
|
||||
|
||||
def dockerOpts = "--init --shm-size=2g" +
|
||||
" -v ${WORKSPACE}:/workspace" +
|
||||
" -e WORKSPACE=/workspace" +
|
||||
" -e PROJECT_BASE_DIR=/workspace" +
|
||||
" -e PROJECT=${project}" +
|
||||
" -e OS_VERSION=${osVersion}" +
|
||||
" -e LTS_VERSION=${LTS_VERSION}" +
|
||||
" -e GUEZ_MODE=${guezMode}" +
|
||||
" -e BUILD_NUMBER=${env.BUILD_NUMBER}" +
|
||||
" -e BUILD_TAG=${env.BUILD_TAG}"
|
||||
|
||||
buildContainer.inside(dockerOpts) {
|
||||
sh "bash /workspace/jenkins-ci-rme/jenkins_builder_ubuntu26.sh"
|
||||
}
|
||||
}
|
||||
|
||||
stage("Coverage ${project} (${osVersion})") {
|
||||
if (!params.RunCoverage) {
|
||||
echo "Coverage skipped for ${project} (OS ${osVersion}, RunCoverage=false)"
|
||||
return
|
||||
}
|
||||
// The driver (run on the agent, same pattern as the image-build
|
||||
// stage) builds the scope with -O0 --coverage, runs ctest and
|
||||
// collects the lcov report into the workspace mount.
|
||||
sh "bash ./new_docker_build.sh --docker-image ${imageName} --run-coverage --coverage-output-dir ${WORKSPACE}/coverage/${project}/${osVersion}"
|
||||
archiveArtifacts artifacts: "coverage/${project}/${osVersion}/**", allowEmptyArchive: true
|
||||
}
|
||||
|
||||
stage("Publish ${project} (${osVersion})") {
|
||||
if (params.PublishArtifactRepo) {
|
||||
withCredentials([usernamePassword(credentialsId: 'internal-repo-uploader',
|
||||
usernameVariable: 'CURL_USER',
|
||||
passwordVariable: 'CURL_PASS')]) {
|
||||
sh """
|
||||
export CURL_CRED="\${CURL_USER}:\${CURL_PASS}"
|
||||
export PROJECT='${project}'
|
||||
export OS_VERSION='${osVersion}'
|
||||
export LTS_VERSION='${LTS_VERSION}'
|
||||
export BUILD_NUMBER='${env.BUILD_NUMBER}'
|
||||
export ARTIFACTREPO='${env.ARTIFACTREPO}'
|
||||
export ARTIFACTFOLDER='${project}'
|
||||
bash jenkins-ci-rme/jenkins_publisher_ubuntu26.sh
|
||||
"""
|
||||
}
|
||||
|
||||
def tdsUrl = readFile("url-${project}-${osVersion}.txt").trim()
|
||||
def tdsVersion = readFile("tdsversion-${project}-${osVersion}.txt").trim()
|
||||
def link = """<a href="${tdsUrl}" target="_blank">${project} ${tdsVersion} (OS ${osVersion})</a>"""
|
||||
currentBuild.description = currentBuild.description ? "${currentBuild.description}<br/>${link}" : link
|
||||
} else {
|
||||
echo "Artifact-repo publish skipped for ${project} (OS ${osVersion}, PublishArtifactRepo=false)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
stage("Initialization") {
|
||||
echo "Legatus Qt6 release build initialized — branch '${env.BRANCH_NAME}', project: ${project}, LTS ${env.LTS_VERSION}, OS version(s): ${osVersions.join(', ')}"
|
||||
}
|
||||
|
||||
stage("Install build image") {
|
||||
// Reuse the prebuilt image when it is already installed on the agent;
|
||||
// otherwise load it from the archive shipped in the repo.
|
||||
def imageInstalled = sh(script: "docker image inspect '${imageName}' >/dev/null 2>&1", returnStatus: true) == 0
|
||||
if (imageInstalled) {
|
||||
echo "Build image ${imageName} is already installed on the agent - reusing it"
|
||||
} else {
|
||||
if (!fileExists(imageArchive)) {
|
||||
error "Build image ${imageName} not installed and image archive ${imageArchive} not found in the workspace"
|
||||
}
|
||||
echo "Build image ${imageName} not installed on the agent - loading it from ${imageArchive}"
|
||||
sh "docker load -i '${imageArchive}'"
|
||||
if (sh(script: "docker image inspect '${imageName}' >/dev/null 2>&1", returnStatus: true) != 0) {
|
||||
error "Build image ${imageName} still not available after loading ${imageArchive}"
|
||||
}
|
||||
echo "Build image ${imageName} installed on the agent"
|
||||
}
|
||||
}
|
||||
|
||||
for (osVersion in osVersions) {
|
||||
buildOsVersion(osVersion)
|
||||
}
|
||||
|
||||
stage("Finalization") {
|
||||
echo "Legatus Qt6 release build completed — project: ${project} (LTS ${env.LTS_VERSION}), OS version(s): ${osVersions.join(', ')}"
|
||||
}
|
||||
|
||||
currentBuild.result = 'SUCCESS'
|
||||
} catch (e) {
|
||||
currentBuild.result = 'FAILURE'
|
||||
throw e
|
||||
}
|
||||
Executable → Regular
+4
-3
@@ -7,7 +7,7 @@
|
||||
# Runs inside the prebuilt build container (built from the in-tree
|
||||
# Dockerfile) with the pipeline workspace mounted at /workspace.
|
||||
# Packaging is done by the IN-TREE rpmbuild copy
|
||||
# (qt-migration-legatus/qt6-after/qt6-migrated-legatus/rpmbuild/), so the
|
||||
# (rpmbuild/ at the DLBO Qt6 repo root), so the
|
||||
# release flow needs no files outside the source tree.
|
||||
#
|
||||
# Required environment (set by the Jenkinsfile or `docker run -e ...`):
|
||||
@@ -41,13 +41,14 @@ rm -rf "${STAGE_DIR}"
|
||||
mkdir -p "${STAGE_DIR}"
|
||||
tar --exclude='./rpms' --exclude='./.git' --exclude='./build' \
|
||||
--exclude='./deb_build_tmp' --exclude='./deb_stage' --exclude='./packages-out' \
|
||||
--exclude='./legatus-qt6_1.0.tar.gz' \
|
||||
-cf - -C "${WORKSPACE}" . | tar -xf - -C "${STAGE_DIR}"
|
||||
|
||||
export VERSION_DATE
|
||||
VERSION_DATE=$(date +%Y-%m-%d)
|
||||
|
||||
# Real CMake project root inside the staged tree (the in-tree source)
|
||||
SOURCE_DIR="${STAGE_DIR}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
|
||||
# CMake project root inside the staged tree (the DLBO Qt6 repo root)
|
||||
SOURCE_DIR="${STAGE_DIR}"
|
||||
if [ ! -f "${SOURCE_DIR}/CMakeLists.txt" ] || [ ! -f "${SOURCE_DIR}/rpmbuild/make_rpm_ubuntu26.py" ]; then
|
||||
echo "ERROR: staged source incomplete under ${SOURCE_DIR} (CMakeLists.txt or rpmbuild/make_rpm_ubuntu26.py missing)" >&2
|
||||
exit 1
|
||||
|
||||
Executable → Regular
File mode changed.
Executable → Regular
+16
-2
@@ -8,6 +8,8 @@
|
||||
# image is not present yet
|
||||
# - builds the release scope, runs ctest and produces the release DEB
|
||||
# packages with the in-tree rpmbuild script
|
||||
# - collects the lcov code-coverage report (--run-coverage; set
|
||||
# DRYRUN_COVERAGE=OFF to skip)
|
||||
#
|
||||
# The DEB packages land in ${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/
|
||||
# (Jenkins-style layout; locally WORKSPACE is the pipeline root).
|
||||
@@ -16,7 +18,7 @@ set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
LEGATUS_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
PIPELINE_ROOT="$(cd "${LEGATUS_ROOT}/../../.." && pwd)"
|
||||
PIPELINE_ROOT="${LEGATUS_ROOT}"
|
||||
|
||||
# Release build configuration (Jenkins-style variables)
|
||||
export WORKSPACE="${PIPELINE_ROOT}"
|
||||
@@ -27,7 +29,7 @@ export GUEZ_MODE="${GUEZ_MODE:-ON}"
|
||||
export BUILD_NUMBER="${BUILD_NUMBER:-$(date +%Y%m%d-%H%M%S)}"
|
||||
export BUILD_TAG="${BUILD_TAG:-release-qt6-first}"
|
||||
|
||||
DOCKER_IMAGE="${DOCKER_IMAGE:-legatus-qt6-prebuilt:latest}"
|
||||
DOCKER_IMAGE="${DOCKER_IMAGE:-legatus-qt6:1.0}"
|
||||
|
||||
log_info() {
|
||||
printf 'INFO: %s\n' "$*"
|
||||
@@ -60,4 +62,16 @@ bash ./new_docker_build.sh \
|
||||
--build-number "${BUILD_NUMBER}" \
|
||||
--build-tag "${BUILD_TAG}"
|
||||
|
||||
# Code coverage (lcov) - mirrors the Jenkins Coverage stage. Set
|
||||
# DRYRUN_COVERAGE=OFF for a fast local DEB-only run.
|
||||
DRYRUN_COVERAGE="${DRYRUN_COVERAGE:-ON}"
|
||||
if [[ "${DRYRUN_COVERAGE}" == "ON" ]]; then
|
||||
bash ./new_docker_build.sh \
|
||||
--docker-image "${DOCKER_IMAGE}" \
|
||||
--run-coverage \
|
||||
--coverage-output-dir "${WORKSPACE}/coverage/${PROJECT}/${OS_VERSION}"
|
||||
else
|
||||
log_info "Coverage skipped (DRYRUN_COVERAGE=OFF)"
|
||||
fi
|
||||
|
||||
log_info "=== Release Pipeline Complete ==="
|
||||
Executable → Regular
+99
-36
@@ -9,7 +9,7 @@ set -euo pipefail
|
||||
# optionally runs the Jenkins builder to produce the release DEB packages.
|
||||
#
|
||||
# - Resolves MIGRATE_PIPELINE_ROOT (exported variable, .envrc, or derived
|
||||
# from the script location) for the workspace and external mounts
|
||||
# from the script location = repo root) for the workspace mount
|
||||
# - Uses a prebuilt Docker image with all build dependencies installed
|
||||
# (build it from ./Dockerfile via --build-prebuilt-image)
|
||||
# - Optional deletion of the prebuilt Docker image via --delete-prebuilt-image
|
||||
@@ -28,7 +28,7 @@ Builds the release validation scope inside the prebuilt Docker image:
|
||||
|
||||
Options:
|
||||
--docker-image IMAGE Docker image name to use/build/delete
|
||||
(default: legatus-qt6-prebuilt:latest)
|
||||
(default: legatus-qt6:1.0)
|
||||
--build-prebuilt-image Build the prebuilt Docker image (from ./Dockerfile)
|
||||
and exit. To run the build with it, run the script
|
||||
again with --docker-image
|
||||
@@ -43,6 +43,13 @@ Package production options (RPM/DEB):
|
||||
--build-number NUM Build number for package (default: 1)
|
||||
--build-tag TAG Build tag for package (default: manual-build)
|
||||
|
||||
Coverage options (lcov):
|
||||
--run-coverage Build the release scope with -O0 --coverage, run ctest
|
||||
and collect an lcov coverage report (mutually
|
||||
exclusive with --run-jenkins-builder)
|
||||
--coverage-output-dir DIR Directory to mount for coverage output
|
||||
(default: ./coverage-out)
|
||||
|
||||
Environment variable overrides:
|
||||
BUILD_PREBUILT_IMAGE=ON|OFF
|
||||
DELETE_PREBUILT_IMAGE=ON|OFF
|
||||
@@ -54,11 +61,13 @@ Environment variable overrides:
|
||||
GUEZ_MODE=ON|OFF
|
||||
BUILD_NUMBER=<num>
|
||||
BUILD_TAG=<tag>
|
||||
RUN_COVERAGE=ON|OFF
|
||||
COVERAGE_OUTPUT_DIR=<dir>
|
||||
|
||||
MIGRATE_PIPELINE_ROOT resolution (highest precedence first):
|
||||
1. exported MIGRATE_PIPELINE_ROOT (e.g. from a Jenkinsfile)
|
||||
2. MIGRATE_PIPELINE_ROOT set by .envrc in this directory
|
||||
3. derived from the script location (three levels up)
|
||||
3. derived from the script location (the DLBO Qt6 repo root)
|
||||
|
||||
Examples:
|
||||
./new_docker_build.sh --build-prebuilt-image --docker-image legatus-qt6:1.0
|
||||
@@ -67,6 +76,9 @@ Examples:
|
||||
./new_docker_build.sh --docker-image legatus-qt6:1.0 \
|
||||
--run-jenkins-builder \
|
||||
--package-output-dir "${WORKSPACE}/rpms/${PROJECT}/${OS_VERSION}/"
|
||||
./new_docker_build.sh --docker-image legatus-qt6:1.0 \
|
||||
--run-coverage \
|
||||
--coverage-output-dir "${WORKSPACE}/coverage/${PROJECT}/${OS_VERSION}/"
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -184,6 +196,8 @@ APT_PACKAGES=(
|
||||
postgresql-server-dev-all
|
||||
git
|
||||
python3-pip
|
||||
# Code coverage (genhtml ships in the same package)
|
||||
lcov
|
||||
# Packaging tools for RPM/DEB build
|
||||
rpm
|
||||
debhelper
|
||||
@@ -223,7 +237,6 @@ RELEASE_BUILD_TARGETS=(
|
||||
LtsLicence
|
||||
MockCoordTrans
|
||||
# Test executables for release scope modules
|
||||
# Note: nglcomp_test excluded - compression "Unknown error" in Qt6 (requires investigation)
|
||||
# Note: grantlee_parser_smoke excluded - requires ktexttemplate_defaulttags plugin (not in release scope)
|
||||
aes_crypt_test
|
||||
ngltools_qt_smoke
|
||||
@@ -263,20 +276,12 @@ build_prebuilt_image() {
|
||||
|
||||
require_command docker
|
||||
|
||||
# MIGRATE_PIPELINE_ROOT resolution (highest precedence first):
|
||||
# 1. exported environment variable (e.g. from a Jenkinsfile)
|
||||
# 2. .envrc in this directory (if present)
|
||||
# 3. derived from this script's location - the script always lives at
|
||||
# <root>/qt-migration-legatus/qt6-after/qt6-migrated-legatus, so the
|
||||
# pipeline root is three levels up. This makes the script work in a
|
||||
# fresh Jenkins checkout with no environment setup at all.
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
MIGRATE_PIPELINE_ROOT_DEFAULT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
|
||||
MIGRATE_PIPELINE_ROOT_DEFAULT="${SCRIPT_DIR}"
|
||||
PIPELINE_ROOT_EXPORTED="${MIGRATE_PIPELINE_ROOT:-}"
|
||||
|
||||
if [[ -f ".envrc" ]]; then
|
||||
set -a
|
||||
# shellcheck disable=SC1091
|
||||
source ".envrc"
|
||||
set +a
|
||||
fi
|
||||
@@ -296,6 +301,9 @@ DELETE_PREBUILT_IMAGE="${DELETE_PREBUILT_IMAGE:-OFF}"
|
||||
# Jenkins builder options for RPM/DEB package production
|
||||
RUN_JENKINS_BUILDER="${RUN_JENKINS_BUILDER:-OFF}"
|
||||
PACKAGE_OUTPUT_DIR="${PACKAGE_OUTPUT_DIR:-./packages-out}"
|
||||
# Code coverage (lcov)
|
||||
RUN_COVERAGE="${RUN_COVERAGE:-OFF}"
|
||||
COVERAGE_OUTPUT_DIR="${COVERAGE_OUTPUT_DIR:-./coverage-out}"
|
||||
LTS_VERSION="${LTS_VERSION:-1.0}"
|
||||
PROJECT="${PROJECT:-guez}"
|
||||
GUEZ_MODE="${GUEZ_MODE:-ON}"
|
||||
@@ -328,6 +336,14 @@ while [[ $# -gt 0 ]]; do
|
||||
[[ $# -gt 0 ]] || die "--package-output-dir requires a directory path"
|
||||
PACKAGE_OUTPUT_DIR="$1"
|
||||
;;
|
||||
--run-coverage)
|
||||
RUN_COVERAGE=ON
|
||||
;;
|
||||
--coverage-output-dir)
|
||||
shift
|
||||
[[ $# -gt 0 ]] || die "--coverage-output-dir requires a directory path"
|
||||
COVERAGE_OUTPUT_DIR="$1"
|
||||
;;
|
||||
--lts-version)
|
||||
shift
|
||||
[[ $# -gt 0 ]] || die "--lts-version requires a version string"
|
||||
@@ -363,12 +379,17 @@ done
|
||||
BUILD_PREBUILT_IMAGE="$(normalize_on_off "$BUILD_PREBUILT_IMAGE" "BUILD_PREBUILT_IMAGE")"
|
||||
DELETE_PREBUILT_IMAGE="$(normalize_on_off "$DELETE_PREBUILT_IMAGE" "DELETE_PREBUILT_IMAGE")"
|
||||
RUN_JENKINS_BUILDER="$(normalize_on_off "$RUN_JENKINS_BUILDER" "RUN_JENKINS_BUILDER")"
|
||||
RUN_COVERAGE="$(normalize_on_off "$RUN_COVERAGE" "RUN_COVERAGE")"
|
||||
|
||||
if [[ "${RUN_COVERAGE}" == "ON" && "${RUN_JENKINS_BUILDER}" == "ON" ]]; then
|
||||
die "--run-coverage is mutually exclusive with --run-jenkins-builder"
|
||||
fi
|
||||
|
||||
# Default for the Docker image name
|
||||
DOCKER_IMAGE="${DOCKER_IMAGE:-legatus-qt6-prebuilt:latest}"
|
||||
DOCKER_IMAGE="${DOCKER_IMAGE:-legatus-qt6:1.0}"
|
||||
|
||||
# Export variables for Docker container
|
||||
export RELEASE_BUILD RUN_CTEST BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE RUN_JENKINS_BUILDER PACKAGE_OUTPUT_DIR LTS_VERSION PROJECT GUEZ_MODE BUILD_NUMBER BUILD_TAG
|
||||
export RELEASE_BUILD RUN_CTEST BUILD_PREBUILT_IMAGE DELETE_PREBUILT_IMAGE DOCKER_IMAGE RUN_JENKINS_BUILDER PACKAGE_OUTPUT_DIR RUN_COVERAGE COVERAGE_OUTPUT_DIR LTS_VERSION PROJECT GUEZ_MODE BUILD_NUMBER BUILD_TAG
|
||||
|
||||
require_non_empty "${DOCKER_IMAGE}" "DOCKER_IMAGE"
|
||||
|
||||
@@ -381,7 +402,7 @@ require_non_empty "${MIGRATE_PIPELINE_ROOT:-}" "MIGRATE_PIPELINE_ROOT"
|
||||
require_directory "${MIGRATE_PIPELINE_ROOT}" "MIGRATE_PIPELINE_ROOT"
|
||||
|
||||
WORKSPACE_ROOT_HOST="${MIGRATE_PIPELINE_ROOT}"
|
||||
PROJECT_DIR_HOST="${WORKSPACE_ROOT_HOST}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
|
||||
PROJECT_DIR_HOST="${WORKSPACE_ROOT_HOST}"
|
||||
|
||||
require_directory "${PROJECT_DIR_HOST}" "Project directory"
|
||||
|
||||
@@ -392,6 +413,8 @@ log_info "DELETE_PREBUILT_IMAGE=${DELETE_PREBUILT_IMAGE}"
|
||||
log_info "DOCKER_IMAGE=${DOCKER_IMAGE}"
|
||||
log_info "RUN_JENKINS_BUILDER=${RUN_JENKINS_BUILDER}"
|
||||
log_info "PACKAGE_OUTPUT_DIR=${PACKAGE_OUTPUT_DIR}"
|
||||
log_info "RUN_COVERAGE=${RUN_COVERAGE}"
|
||||
log_info "COVERAGE_OUTPUT_DIR=${COVERAGE_OUTPUT_DIR}"
|
||||
log_info "LTS_VERSION=${LTS_VERSION}"
|
||||
log_info "PROJECT=${PROJECT}"
|
||||
log_info "GUEZ_MODE=${GUEZ_MODE}"
|
||||
@@ -427,6 +450,7 @@ RELEASE_BUILD="${RELEASE_BUILD:-ON}"
|
||||
RUN_CTEST="${RUN_CTEST:-ON}"
|
||||
# Packaging variables
|
||||
RUN_JENKINS_BUILDER="${RUN_JENKINS_BUILDER:-OFF}"
|
||||
RUN_COVERAGE="${RUN_COVERAGE:-OFF}"
|
||||
LTS_VERSION="${LTS_VERSION:-1.0}"
|
||||
PROJECT="${PROJECT:-guez}"
|
||||
GUEZ_MODE="${GUEZ_MODE:-ON}"
|
||||
@@ -450,25 +474,28 @@ log_info "Using prebuilt Docker image: all build dependencies are baked in"
|
||||
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
|
||||
cd /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus
|
||||
cd /workspace
|
||||
|
||||
rm -rf build4
|
||||
mkdir -p build4
|
||||
cd build4
|
||||
|
||||
# CMake option defaults that this branch must override:
|
||||
# BUILD_ARCGIS defaults to ON -> force OFF (ArcGIS SDK is not in the scope)
|
||||
# RELEASE_BUILD defaults to OFF -> force ON (release scope modules only)
|
||||
# All other BUILD_* flags are left at their CMake defaults, which match
|
||||
# the release scope configuration (BUILD_RTI/CODIFICATION/VIEWER_ONLY=OFF,
|
||||
# BUILD_GRANTLEE/ALL/SV/WS/AAR=ON).
|
||||
COV_CMAKE_ARGS=()
|
||||
if [[ "${RUN_COVERAGE}" == "ON" ]]; then
|
||||
COV_CMAKE_ARGS=(
|
||||
"-DCMAKE_C_FLAGS_RELEASE=-O0 -g --coverage -DNDEBUG -fPIC"
|
||||
"-DCMAKE_CXX_FLAGS_RELEASE=-O0 -g --coverage -DNDEBUG -fPIC"
|
||||
"-DCMAKE_EXE_LINKER_FLAGS=--coverage"
|
||||
"-DCMAKE_SHARED_LINKER_FLAGS=--coverage"
|
||||
)
|
||||
fi
|
||||
cmake .. \
|
||||
-DBUILD_TESTING=ON \
|
||||
-DBUILD_ARCGIS=OFF \
|
||||
-DRELEASE_BUILD="${RELEASE_BUILD}" \
|
||||
-DCMAKE_CXX_STANDARD=17 \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DCMAKE_PREFIX_PATH="${QT_BASE_DIR}/${QT_VERSION}/${QT_ARCH_DIR}:/usr/local"
|
||||
-DCMAKE_PREFIX_PATH="${QT_BASE_DIR}/${QT_VERSION}/${QT_ARCH_DIR}:/usr/local" \
|
||||
"${COV_CMAKE_ARGS[@]}"
|
||||
|
||||
read -r -a RELEASE_TARGETS_ARRAY <<< "${RELEASE_BUILD_TARGETS}"
|
||||
|
||||
@@ -485,22 +512,61 @@ else
|
||||
log_info "Skipping CTest"
|
||||
fi
|
||||
|
||||
if [[ "${RUN_COVERAGE}" == "ON" ]]; then
|
||||
log_info "=== Code coverage (lcov) ==="
|
||||
COVOUT=/workspace/coverage-out
|
||||
SRCROOT=/workspace
|
||||
mkdir -p "${COVOUT}"
|
||||
|
||||
COV_IGNORE=(--ignore-errors mismatch,inconsistent,unused)
|
||||
lcov --capture --directory . --external "${COV_IGNORE[@]}" \
|
||||
--rc branch_coverage=1 \
|
||||
--output-file "${COVOUT}/raw.info"
|
||||
lcov --extract "${COVOUT}/raw.info" \
|
||||
"${SRCROOT}/TetraIF/*" \
|
||||
"${SRCROOT}/Z/src/*" \
|
||||
"${SRCROOT}/Lts/Common/*" \
|
||||
"${SRCROOT}/Lts/Proxies/TrainingAreaBase/*" \
|
||||
"${COV_IGNORE[@]}" \
|
||||
--rc branch_coverage=1 \
|
||||
--output-file "${COVOUT}/scoped.info"
|
||||
lcov --remove "${COVOUT}/scoped.info" \
|
||||
"*/unit-test/*" \
|
||||
"*CommonUnitTestsPlaceholder*" \
|
||||
"*/UnitTests/*" \
|
||||
"*/tests/*" \
|
||||
"*/test_*" \
|
||||
"*_test.cpp" \
|
||||
"*_test.h" \
|
||||
"*_unit_test*" \
|
||||
"${COV_IGNORE[@]}" \
|
||||
--rc branch_coverage=1 \
|
||||
--output-file "${COVOUT}/coverage.info"
|
||||
lcov --summary "${COVOUT}/coverage.info" "${COV_IGNORE[@]}" --rc branch_coverage=1 \
|
||||
> "${COVOUT}/coverage_summary.txt"
|
||||
genhtml "${COVOUT}/coverage.info" \
|
||||
--output-directory "${COVOUT}/html" \
|
||||
"${COV_IGNORE[@]}" \
|
||||
--branch-coverage --legend \
|
||||
--rc branch_coverage=1
|
||||
log_info "Coverage report written to ${COVOUT} (host: ${COVERAGE_OUTPUT_DIR})"
|
||||
cat "${COVOUT}/coverage_summary.txt"
|
||||
fi
|
||||
|
||||
# DEB package production with the in-tree rpmbuild script
|
||||
if [[ "${RUN_JENKINS_BUILDER}" == "ON" ]]; then
|
||||
log_info "=== DEB Package Production (in-tree rpmbuild) ==="
|
||||
|
||||
OS_VERSION=$(cat /etc/os-release | grep "^VERSION_ID=" | cut -d'"' -f2)
|
||||
STAGE_DIR=/workspace/deb_stage
|
||||
STAGED_SOURCE_DIR="${STAGE_DIR}/qt-migration-legatus/qt6-after/qt6-migrated-legatus"
|
||||
STAGED_SOURCE_DIR="${STAGE_DIR}"
|
||||
|
||||
# Stage the workspace as a clean copy. The workspace itself is NEVER
|
||||
# deleted (it contains git-managed sources); only the staging
|
||||
# subdirectory is removed.
|
||||
log_info "Staging workspace to ${STAGE_DIR}"
|
||||
rm -rf "${STAGE_DIR}"
|
||||
mkdir -p "${STAGE_DIR}"
|
||||
tar --exclude='./rpms' --exclude='./.git' --exclude='./build' \
|
||||
--exclude='./deb_build_tmp' --exclude='./deb_stage' --exclude='./packages-out' \
|
||||
--exclude='./legatus-qt6_1.0.tar.gz' \
|
||||
-cf - -C /workspace . | tar -xf - -C "${STAGE_DIR}"
|
||||
|
||||
if [[ ! -f "${STAGED_SOURCE_DIR}/CMakeLists.txt" || ! -f "${STAGED_SOURCE_DIR}/rpmbuild/make_rpm_ubuntu26.py" ]]; then
|
||||
@@ -531,12 +597,7 @@ if [[ "${RUN_JENKINS_BUILDER}" == "ON" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy produced DEB packages to the packages-out mount (host:
|
||||
# ${PACKAGE_OUTPUT_DIR}, container: /workspace/packages-out) so they are
|
||||
# available on the host after the container exits.
|
||||
# make_rpm already writes to /workspace/rpms/... (the host workspace
|
||||
# mount), so when the host's PACKAGE_OUTPUT_DIR is that same directory
|
||||
# the packages are already in place - skip copying onto themselves.
|
||||
# Copy produced DEB packages to the packages-out
|
||||
DEST_DIR=/workspace/packages-out
|
||||
mkdir -p "${DEST_DIR}"
|
||||
shopt -s nullglob
|
||||
@@ -565,6 +626,8 @@ docker run --rm \
|
||||
-e RELEASE_BUILD \
|
||||
-e RUN_CTEST \
|
||||
-e RUN_JENKINS_BUILDER \
|
||||
-e RUN_COVERAGE \
|
||||
-e COVERAGE_OUTPUT_DIR \
|
||||
-e PACKAGE_OUTPUT_DIR \
|
||||
-e LTS_VERSION \
|
||||
-e PROJECT \
|
||||
@@ -577,8 +640,8 @@ docker run --rm \
|
||||
-e QT_BASE_DIR \
|
||||
-e RELEASE_BUILD_TARGETS="${RELEASE_BUILD_TARGETS_STRING}" \
|
||||
-v "${WORKSPACE_ROOT_HOST}:/workspace" \
|
||||
-v "${MIGRATE_PIPELINE_ROOT}/external:/workspace/external:ro" \
|
||||
-v "${CONTAINER_SCRIPT_HOST}:/tmp/run-build-inside-container.sh:ro" \
|
||||
-v "${PACKAGE_OUTPUT_DIR}:/workspace/packages-out" \
|
||||
-v "${COVERAGE_OUTPUT_DIR}:/workspace/coverage-out" \
|
||||
"${DOCKER_IMAGE}" \
|
||||
bash /tmp/run-build-inside-container.sh
|
||||
Executable → Regular
+245
-642
File diff suppressed because it is too large.
Load diff
Whitespace-only changes.
@@ -1,4 +0,0 @@
|
||||
# Validation-scope branch: no test sources are shipped and nothing in this
|
||||
# directory is built by the release build (the former migration_tests target
|
||||
# was guarded by NOT RELEASE_BUILD). This file only keeps the unconditional
|
||||
# ADD_SUBDIRECTORY(tests) from the root CMakeLists.txt resolvable.
|
||||
@@ -1,20 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
project(GTests LANGUAGES CXX)
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/refs/tags/release-1.14.0.tar.gz
|
||||
)
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
|
||||
# Collect generated test sources
|
||||
file(GLOB GTEST_SRCS "${CMAKE_SOURCE_DIR}/Z/*_test.cpp")
|
||||
add_executable(gtests_all ${GTEST_SRCS})
|
||||
target_compile_features(gtests_all PRIVATE cxx_std_20)
|
||||
target_include_directories(gtests_all PRIVATE ${CMAKE_SOURCE_DIR}/../../)
|
||||
# link to gtest
|
||||
target_link_libraries(gtests_all PRIVATE GTest::gtest_main)
|
||||
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(gtests_all)
|
||||
@@ -1,11 +0,0 @@
|
||||
Generated GoogleTest stubs for Z/src.
|
||||
|
||||
Usage:
|
||||
python3 tests/gtest/generate_gtests.py # generate test sources and CMakeLists
|
||||
cmake -S . -B build
|
||||
cmake --build build -- -j5
|
||||
ctest --test-dir build -j5
|
||||
|
||||
Notes:
|
||||
- Tests are lightweight smoke stubs that compile and assert true. Replace with meaningful assertions per-function.
|
||||
- Uses FetchContent to download GoogleTest at configure time.
|
||||
@@ -1,57 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate a single GoogleTest binary from lightweight per-source test stubs.
|
||||
Run from repo root: python3 tests/gtest/generate_gtests.py
|
||||
"""
|
||||
import os
|
||||
from pathlib import Path
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
SRC_DIR = ROOT / 'Z' / 'src'
|
||||
OUT_DIR = ROOT / 'tests' / 'gtest' / 'Z'
|
||||
OUT_DIR.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
TEMPLATE = '''#include <gtest/gtest.h>\n{includes}\n\nTEST({test_suite}, smoke) {{\n // TODO: replace with meaningful unit tests for {rel_cpp}\n ASSERT_TRUE(true);\n}}\n'''
|
||||
|
||||
sources = []
|
||||
for cpp in sorted(SRC_DIR.rglob('*.cpp')):
|
||||
rel = cpp.relative_to(SRC_DIR)
|
||||
name = str(rel).replace(os.sep, '__')
|
||||
out_cpp = OUT_DIR / (name + '_test.cpp')
|
||||
# try to include corresponding header if exists
|
||||
header = cpp.with_suffix('.h')
|
||||
includes = ''
|
||||
if header.exists():
|
||||
includes = f'#include "{header.relative_to(ROOT)}"'
|
||||
else:
|
||||
includes = '// no corresponding header to include'
|
||||
content = TEMPLATE.format(includes=includes, test_suite=name.replace('.', '_'), rel_cpp=str(rel))
|
||||
out_cpp.write_text(content)
|
||||
sources.append(str(Path('tests/gtest/Z') / (name + '_test.cpp')))
|
||||
|
||||
# Write CMakeLists for gtests
|
||||
cmake = ROOT / 'tests' / 'gtest' / 'CMakeLists.txt'
|
||||
cmake.write_text('''
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
project(GTests LANGUAGES CXX)
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/refs/tags/release-1.14.0.tar.gz
|
||||
)
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
|
||||
# Collect generated test sources
|
||||
file(GLOB GTEST_SRCS "${CMAKE_SOURCE_DIR}/Z/*_test.cpp")
|
||||
add_executable(gtests_all ${GTEST_SRCS})
|
||||
target_compile_features(gtests_all PRIVATE cxx_std_20)
|
||||
target_include_directories(gtests_all PRIVATE ${CMAKE_SOURCE_DIR}/../../)
|
||||
# link to gtest
|
||||
target_link_libraries(gtests_all PRIVATE GTest::gtest_main)
|
||||
|
||||
include(GoogleTest)
|
||||
gtest_discover_tests(gtests_all)
|
||||
''')
|
||||
|
||||
print(f"Wrote {len(sources)} test stubs to {OUT_DIR}")
|
||||
print("Run: cmake -S . -B build && cmake --build build -- -j5 && ctest --test-dir build -j5")
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/NGLLogger/MurmurHash2.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/NGLLogger/MurmurHash2.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/NGLLogger/MurmurHash2.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/NGLLogger/NGLLogger.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/NGLLogger/NGLLogger.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/NGLLogger/NGLLogger.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/NGLLogger/NGLLoggerBootstrap.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/NGLLogger/NGLLoggerBootstrap.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/NGLLogger/NGLLoggerBootstrap.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/NGLLogger/test_ngllogger.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/NGLLogger/test_ngllogger.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/NGLLogger/test_ngllogger.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/QtSingleApplication/qtlocalpeer.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/QtSingleApplication/qtlocalpeer.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/QtSingleApplication/qtlocalpeer.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/QtSingleApplication/qtlockedfile.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/QtSingleApplication/qtlockedfile.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/QtSingleApplication/qtlockedfile.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/QtSingleApplication/qtlockedfile_unix.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/QtSingleApplication/qtlockedfile_unix.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/QtSingleApplication/qtlockedfile_unix.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/QtSingleApplication/qtlockedfile_win.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/QtSingleApplication/qtlockedfile_win.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/QtSingleApplication/qtlockedfile_win.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/QtSingleApplication/qtsingleapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/QtSingleApplication/qtsingleapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/QtSingleApplication/qtsingleapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/QtSingleApplication/qtsinglecoreapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/QtSingleApplication/qtsinglecoreapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/QtSingleApplication/qtsinglecoreapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/WMS_Interface/wms_ecc_equipRequirements.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/WMS_Interface/wms_ecc_equipRequirements.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/WMS_Interface/wms_ecc_equipRequirements.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/WMS_Interface/wms_ecc_equipmenttypes.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/WMS_Interface/wms_ecc_equipmenttypes.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/WMS_Interface/wms_ecc_equipmenttypes.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/WMS_Interface/wms_ecc_exercises.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/WMS_Interface/wms_ecc_exercises.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/WMS_Interface/wms_ecc_exercises.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/WMS_Interface/wms_ecc_playerInfo.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/WMS_Interface/wms_ecc_playerInfo.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/WMS_Interface/wms_ecc_playerInfo.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/WMS_Interface/wms_ecc_registration.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/WMS_Interface/wms_ecc_registration.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/WMS_Interface/wms_ecc_registration.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/WMS_Interface/wms_ecc_unregister.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/WMS_Interface/wms_ecc_unregister.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/WMS_Interface/wms_ecc_unregister.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglapplication/nglapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglapplication/nglapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglapplication/nglapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglapplication/nglcoreapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglapplication/nglcoreapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglapplication/nglcoreapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglapplication/nglguiapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglapplication/nglguiapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglapplication/nglguiapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglapplication/nglloggerhandler.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglapplication/nglloggerhandler.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglapplication/nglloggerhandler.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglapplication/nglsingleapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglapplication/nglsingleapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglapplication/nglsingleapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglapplication/nglsinglecoreapplication.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglapplication/nglsinglecoreapplication.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglapplication/nglsinglecoreapplication.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglcompression/nglcomp_bzip2iodevice.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglcompression/nglcomp_bzip2iodevice.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglcompression/nglcomp_bzip2iodevice.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglcompression/nglcomp_compress.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglcompression/nglcomp_compress.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglcompression/nglcomp_compress.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglcompression/nglcomp_tarfilter.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglcompression/nglcomp_tarfilter.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglcompression/nglcomp_tarfilter.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglcompression/nglcomp_test.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglcompression/nglcomp_test.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglcompression/nglcomp_test.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngldb/dbconnection.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngldb/dbconnection.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngldb/dbconnection.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngldb/dbtransaction.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngldb/dbtransaction.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngldb/dbtransaction.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngldb/ngldb_logger.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngldb/ngldb_logger.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngldb/ngldb_logger.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngldb/nsqlquery.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngldb/nsqlquery.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngldb/nsqlquery.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngldb/sql_query_janitor.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngldb/sql_query_janitor.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngldb/sql_query_janitor.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglsettings/nglsettings_connections.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglsettings/nglsettings_connections.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglsettings/nglsettings_connections.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglsettings/nglsettings_settings.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglsettings/nglsettings_settings.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglsettings/nglsettings_settings.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngltools/ngltools_convert.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngltools/ngltools_convert.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngltools/ngltools_convert.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngltools/ngltools_dtg.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngltools/ngltools_dtg.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngltools/ngltools_dtg.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngltools/ngltools_filesystem.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngltools/ngltools_filesystem.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngltools/ngltools_filesystem.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngltools/ngltools_helpevent.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngltools/ngltools_helpevent.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngltools/ngltools_helpevent.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/ngltranslator/ngltranslator.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/ngltranslator/ngltranslator.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/ngltranslator/ngltranslator.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglwidgets/ngldialog.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglwidgets/ngldialog.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglwidgets/ngldialog.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
@@ -1,14 +0,0 @@
|
||||
# Strix instruction for Z/src/nglwidgets/ngldialogbuttonbox.cpp
|
||||
|
||||
Please perform a focused White-box security assessment of the repository area containing the file `Z/src/nglwidgets/ngldialogbuttonbox.cpp`.
|
||||
|
||||
Scope:
|
||||
- Focus analysis on the code in: `Z/src/nglwidgets/ngldialogbuttonbox.cpp`
|
||||
- Treat this as a white-box scan: use source code to prioritize findings and generate PoCs
|
||||
- If applicable, attempt to reproduce vulnerabilities (in PoC) and provide remediation guidance
|
||||
|
||||
Notes for Strix:
|
||||
- Use `--scan-mode quick` for fast checks or `--scan-mode standard` for deeper analysis
|
||||
- Use `--instruction-file` with this file when invoking strix CLI
|
||||
|
||||
Do NOT run active exploitation against third-party services. Only analyze code in-repo.
|
||||
Loaded 100 of 136 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user