#!/bin/sh
set -eu
T=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
O=$(mktemp -d /tmp/a108-host.XXXXXX)
trap 'rm -rf "$O"' EXIT
CC=${HOST_CC:-clang}
F="-std=c11 -O1 -g -Wall -Wextra -Werror -fsanitize=address,undefined -fno-omit-frame-pointer"
$CC $F -I"$T/src" "$T/src/panel_keys.c" "$T/src/vacuum_ui.c" "$T/src/vacuum_panel_runtime.c" "$T/test/test_panel_runtime.c" -o "$O/runtime"
"$O/runtime"
$CC $F -I"$T/src" "$T/src/panel_keys.c" "$T/test/test_panel_keys.c" -o "$O/keys"
"$O/keys"
$CC $F -I"$T/src" "$T/src/vacuum_ui.c" "$T/test/test_ui.c" -o "$O/ui"
"$O/ui"
$CC $F -I"$T/src" "$T/src/vacuum_output_lock.c" "$T/test/test_vacuum_output_lock.c" -o "$O/lock"
"$O/lock"
$CC $F -I"$T/../vacuum_control" "$T/../vacuum_control/fan_manager.c" "$T/../vacuum_control/test_fan_manager.c" -o "$O/fan"
"$O/fan"
$CC $F -I"$T/src" "$T/src/soft_i2c.c" "$T/test/test_soft_i2c.c" -o "$O/i2c"
"$O/i2c"
$CC $F -I"$T/test/mock" -I"$T/src" "$T/src/display_bus.c" "$T/src/soft_i2c.c" "$T/test/test_display_gpio.c" -o "$O/gpio"
"$O/gpio"
$CC $F -I"$T/src" "$T/src/vacuum_display.c" "$T/test/test_display.c" -o "$O/display"
(cd "$O"; "$O/display")
$CC $F -DEXPECT_OLD_FALL_BUG -I"$T/src" "$T/test/A110_soft_i2c.c" "$T/test/test_soft_i2c.c" -o "$O/old_i2c"
"$O/old_i2c"

$CC $F -I"$T/src" "$T/src/soft_i2c.c" "$T/test/test_read.c" -o "$O/read"
"$O/read"

$CC $F -I"$T/src" "$T/src/pressure_decode.c" "$T/test/test_decode.c" -o "$O/decode"
"$O/decode"

$CC $F -I"$T/src" "$T/src/pressure_age.c" "$T/test/test_pressure_age.c" -o "$O/pressure_age"
"$O/pressure_age"
