Skip to content

GT extension: cross-platform (Linux/macOS) build + re-enable strict multi-OS test job #36

Description

@GT-karny

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

  1. 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).

  2. 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.

  3. -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.

  4. 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].

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions