#!/usr/bin/env bash # check-serial.sh - Host-cc harness for the shared serial gate/normalize layer # (src/core/serial.c). Compiles it with a loopback mock HAL (tests/host/ # serialHost.c) and runs the open/close/gate/normalize/read/write checks. # # The BLANK platform block registers no JL_HAS_SERIAL_* (serial is an opt-in # add-on with no generic hardware), so this passes every serial op flag on the # command line to make port.h route jlpSerial* to the mock instead of the # generic no-op. Exits nonzero on any failed check, so it is a CI gate. set -euo pipefail repo=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) cc=${CC:-cc} work=$(mktemp -d -t joeylib-serial.XXXXXX) trap 'rm -rf "$work"' EXIT cd "$repo" "$cc" -DJOEYLIB_PLATFORM_BLANK \ -DJL_HAS_SERIAL_OPEN -DJL_HAS_SERIAL_CLOSE -DJL_HAS_SERIAL_POLL \ -DJL_HAS_SERIAL_READ -DJL_HAS_SERIAL_WRITE -DJL_HAS_SERIAL_AVAILABLE \ -DJL_HAS_SERIAL_FLUSH \ -Iinclude -Iinclude/joey -Isrc/core -Wall -Wextra \ src/core/serial.c tests/host/serialHost.c \ -o "$work/serialHost" "$work/serialHost"