- Wrap FIND_PACKAGE(RTI) in IF(NOT TARGET RTI::nddsc) condition - Prevents placeholder targets from overwriting manually configured RTI:: targets - Manual configuration creates RTI:: targets when BUILD_RTI=ON and RTI found - FIND_PACKAGE only called as fallback when manual config doesn't create targets Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M1CT3XSQXCX9RQR6WM9DG3GH
6.6 KiB
You are working on a migration from RTI Connext 6 to RTI 7.7.
IMPORTANT: Work in two strictly separated phases:
- Analysis
- Patching
Do not modify files before you have completed the analysis and written down a migration classification.
Your task is to compare:
- step-1 Copilot-created fallback/reconstructed RTI-related files created while
BUILD_RTI=OFFwith - real RTI 7.7 generated DDS/RTI artifacts created while
BUILD_RTI=ON
Then update only the manually maintained / Copilot-created files so they correctly reflect the RTI 7.7 generated output.
Main Goal
Make the codebase cleanly support the real RTI 7.7 generation in the BUILD_RTI=ON path, while preserving BUILD_RTI=OFF fallbacks only where truly necessary.
Hard Rules
- Treat RTI 7.7 generated files as source of truth for
BUILD_RTI=ON. - Do not edit generated RTI files unless absolutely unavoidable and explicitly justified.
- Prefer adapting manual files, wrappers, compatibility headers, includes, and guards.
- Remove or isolate reconstructed definitions if they duplicate RTI 7.7 generated types.
- Keep fallback logic only for
BUILD_RTI=OFF. - Do not perform unrelated refactoring.
- Do not guess generated API shapes; inspect actual generated files.
Required Workflow
Phase 1 — Analysis only
A. Identify migration-related files
Find:
- reconstructed RTI headers
- compiler guards added in step 1
- fallback DDS/RTI type definitions
- wrappers/adapters around DDS/RTI types
- include indirection layers
- files conditionally compiled for
BUILD_RTI
Use repository inspection commands such as:
git statusgit diff --name-onlygit log --statrg -n "BUILD_RTI|RTI|DDS|Connext|ifdef|ifndef|pragma once" .rg -n "#if.*BUILD_RTI|#ifdef.*BUILD_RTI|#ifndef.*BUILD_RTI" .find . -iname "*dds*" -o -iname "*rti*"
If available, inspect step-1-related changes via:
git diff <baseline>...HEADgit log --grep="RTI\|DDS\|BUILD_RTI"- targeted diffs for migration commits
B. Identify real RTI 7.7 generated artifacts
Locate the generated files produced with BUILD_RTI=ON.
Inspect:
- build directories
- generated include folders
- CMake-generated outputs
- RTI codegen output directories
- custom generation scripts
Use commands such as:
find build -type f | rg "dds|rti|idl|type|Support|Plugin"find . -type f | rg "Support\.h$|Plugin\.h$|Plugin\.cxx$|\.idl|\.xml"rg -n "rtiddsgen|connext|idl" CMakeLists.txt cmake/ .rg -n "GENERATED|AUTO_GENERATED|DO NOT EDIT" .
C. Compare reconstructed vs generated artifacts
For each reconstructed/manual RTI-related file, compare against the generated RTI 7.7 counterpart.
Check:
- file names
- include paths
- header guards /
#pragma once - macros
- namespaces
- class / struct / enum / typedef / alias definitions
- forward declarations
- helper APIs / traits / adapters
- symbol names
- expected include order
- conditional compilation behavior under
BUILD_RTI=ONvsBUILD_RTI=OFF
Use comparison commands where helpful:
diff -u <manual-file> <generated-file>git diff --no-index <manual-file> <generated-file>rg -n "<TypeName>" .rg -n "#include <...>|#include \"...\"" <relevant paths>
D. Trace usage
Find all places that still reference the reconstructed step-1 artifacts.
Use:
rg -n "<header-name>|<type-name>|<guard-name>" .rg -n "#include .*<reconstructed-header>|#include .*\"<reconstructed-header>\"" .
Determine:
- which files still depend on old reconstructed headers
- which guards still activate old fallback definitions
- which paths could conflict with generated RTI 7.7 types
E. Build-path analysis
Inspect build logic and conditional compilation paths.
Check:
CMakeLists.txt*.cmake- generation scripts
- target include directories
- compile definitions
compile_commands.jsonif present
Use:
rg -n "BUILD_RTI|target_include_directories|target_compile_definitions|add_definitions|include_directories" .find build -name compile_commands.json- inspect compile commands for affected targets
Goal:
Determine exactly how BUILD_RTI=ON and BUILD_RTI=OFF select different headers and definitions.
F. Produce migration classification
Before patching, classify findings into:
- REMOVE = obsolete step-1 artifact replaced by RTI 7.7 generation
- KEEP_OFF_ONLY = still needed only when
BUILD_RTI=OFF - PATCH = manual file must be changed
- VERIFY = uncertain; validate before touching
Do not patch before this list is explicit.
Phase 2 — Patching only after analysis
Allowed patch types
- replace old includes with RTI 7.7 generated includes
- restrict fallback type definitions to
BUILD_RTI=OFF - tighten or invert guards so
BUILD_RTI=ONalways prefers generated output - remove duplicate type declarations
- update wrappers/adapters to use actual RTI 7.7 generated types
- isolate obsolete reconstructed headers so they no longer affect
BUILD_RTI=ON - adjust build include paths only if necessary to stop wrong header selection
Patch objectives
BUILD_RTI=ONuses actual RTI 7.7 generated headers/types- no old fallback header shadows generated output
- no duplicate definitions remain
- no stale RTI Connext 6 assumptions remain where RTI 7.7 differs
BUILD_RTI=OFFstays supported only where explicitly needed
Explicitly avoid
- editing generated files first
- broad renames
- non-migration-related cleanup
- speculative API rewrites
- silently dropping
BUILD_RTI=OFFsupport
Verification after patching
Run or propose the most relevant checks:
rg -n "<obsolete-header-or-type>" .rg -n "redefinition|redeclaration" <build logs if available>- project build with
BUILD_RTI=ON - if supported, project build with
BUILD_RTI=OFF - inspect compiler errors for include-order or duplicate-type issues
If build commands are available, use them. Typical examples:
cmake -S . -B build -DBUILD_RTI=ONcmake --build build -jcmake -S . -B build-off -DBUILD_RTI=OFFcmake --build build-off -j
If tests exist and are relevant, run targeted tests only after the migration patches are in place.
Output Format
First output:
- Analysis summary
- Migration classification
- REMOVE
- KEEP_OFF_ONLY
- PATCH
- VERIFY
Then patch files only after the analysis is complete.
For every changed file, report and write to ./RTI_MIGRATION_STATUS.md:
- file path
- category
- problem found
- exact change made
- rationale
- follow-up validation / residual risk
When uncertain, prefer minimal safe changes and document the uncertainty.
Start now with Phase 1 only. Do not patch anything until the analysis and classification are complete.