GT extension: cross-platform (Linux/macOS) build support
Tracking issue split out while restoring green CI (the fork had never been green since 2026-04-21; lint blocked every run, so the test job's full USE_OSI build was never actually exercised).
When the test job first ran end-to-end it surfaced that GT extension code cannot build on Linux/macOS, and carries a large pre-existing warnings-as-errors backlog. As a stop-gap the test job was restricted to windows-2022 and its ENABLE_WARNINGS_AS_ERRORS/IWYU gate was disabled (see .github/workflows/ci.yml). Linux/macOS retain slim-build + schema coverage via test-no-external-modules.
This issue tracks making GT cross-platform and re-enabling the strict, multi-OS test job.
Work items
-
OSI 3.7.0 on Linux/macOS. GT vendors OSI 3.7.0 for MSVC only (externals/osi/v11); on Linux support/cmake/common/locations.cmake resolves externals/osi/linux → the downloaded OSI 3.5.0, which lacks vehicle_motion. GT_esmini/src/osi/GT_HostVehicleReporter.cpp (mutable_vehicle_motion) then fails to compile. Vendor/build OSI 3.7.0 for Linux+macOS and point EXTERNALS_OSI_OS_SPECIFIC_PATH at it (or guard the 3.7.0-only API by OSI version).
-
POSIX portability. GT_esmini/src/control/manualdrive/TcpTransport.cpp uses fcntl/F_GETFL/F_SETFL/O_NONBLOCK without #include <fcntl.h> (+ likely <unistd.h>) on the non-Windows branch. Audit manualdrive networking for other Windows-only assumptions.
-
-Werror / -WX cleanup (~180 findings). Enumerated via a gcc-11 ninja -k 0 build (mirrors the CI test job): sign-conversion 89, member-init reorder 87, useless-cast 74, old-style-cast 14, unused-but-set 9, sign-compare 6, shadow 6, unused-parameter 6, format-nonliteral 2, unused-function 1, return-type 1. Spread across GT_esminiLib + the GT sources fused into RoadManager (odr_side) and ScenarioEngine (GT_OSIReporter). Fix incrementally, then re-enable ENABLE_WARNINGS_AS_ERRORS.
-
Restore the multi-OS strict test job. Once 1–3 land, put ubuntu-22.04/macos-14 back in the test matrix and restore ESMINI_CHECKS.
Refs: directive:R1 (core is fused via approved swaps), directive:R4. Related: the OSI-path hazard is already documented in support/cmake/common/locations.cmake [GT_ODR:osi-path].
GT extension: cross-platform (Linux/macOS) build support
Tracking issue split out while restoring green CI (the fork had never been green since 2026-04-21; lint blocked every run, so the
testjob's full USE_OSI build was never actually exercised).When the
testjob first ran end-to-end it surfaced that GT extension code cannot build on Linux/macOS, and carries a large pre-existing warnings-as-errors backlog. As a stop-gap thetestjob was restricted to windows-2022 and itsENABLE_WARNINGS_AS_ERRORS/IWYU gate was disabled (see.github/workflows/ci.yml). Linux/macOS retain slim-build + schema coverage viatest-no-external-modules.This issue tracks making GT cross-platform and re-enabling the strict, multi-OS
testjob.Work items
OSI 3.7.0 on Linux/macOS. GT vendors OSI 3.7.0 for MSVC only (
externals/osi/v11); on Linuxsupport/cmake/common/locations.cmakeresolvesexternals/osi/linux→ the downloaded OSI 3.5.0, which lacksvehicle_motion.GT_esmini/src/osi/GT_HostVehicleReporter.cpp(mutable_vehicle_motion) then fails to compile. Vendor/build OSI 3.7.0 for Linux+macOS and pointEXTERNALS_OSI_OS_SPECIFIC_PATHat it (or guard the 3.7.0-only API by OSI version).POSIX portability.
GT_esmini/src/control/manualdrive/TcpTransport.cppusesfcntl/F_GETFL/F_SETFL/O_NONBLOCKwithout#include <fcntl.h>(+ likely<unistd.h>) on the non-Windows branch. Audit manualdrive networking for other Windows-only assumptions.-Werror / -WX cleanup (~180 findings). Enumerated via a gcc-11
ninja -k 0build (mirrors the CItestjob): sign-conversion 89, member-init reorder 87, useless-cast 74, old-style-cast 14, unused-but-set 9, sign-compare 6, shadow 6, unused-parameter 6, format-nonliteral 2, unused-function 1, return-type 1. Spread across GT_esminiLib + the GT sources fused into RoadManager (odr_side) and ScenarioEngine (GT_OSIReporter). Fix incrementally, then re-enableENABLE_WARNINGS_AS_ERRORS.Restore the multi-OS strict
testjob. Once 1–3 land, putubuntu-22.04/macos-14back in thetestmatrix and restoreESMINI_CHECKS.Refs: directive:R1 (core is fused via approved swaps), directive:R4. Related: the OSI-path hazard is already documented in
support/cmake/common/locations.cmake[GT_ODR:osi-path].