summaryrefslogtreecommitdiff
path: root/tests/cross_test.sh
blob: bc46a8ef245157126a016527fac099411ecdbb19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env bash
# The core compiles as strict C11 for the platforms a host may embed
# it on. zig cc supplies the cross compilers. The aarch64 targets build the
# NEON paths, and windows-gnu builds the Windows path of compat.h. The
# amalgamation, one wsap_vtcore.c, compiles the same way.
set -euo pipefail
root=${1:-$(dirname "$0")/..}
cd "$root/src"
command -v zig >/dev/null || { echo "zig not found; skipping"; exit 77; }

out=$(mktemp -d)
trap 'rm -rf "$out"' EXIT
python3 "$root/tools/amalgamate.py" "$root" "$out/amalgamation"
status=0
for target in aarch64-linux-gnu x86_64-macos aarch64-macos x86_64-windows-gnu; do
    for src in *.c osc/*.c; do
        zig cc -target "$target" -std=c11 -O2 -Wall -Wextra -Wpedantic -Werror \
            -I. -I../include/wsap_vtcore -c "$src" -o "$out/obj.o" || { echo "$target: $src fails" >&2; status=1; }
    done
    zig cc -target "$target" -std=c11 -O2 -Wall -Wextra -Wpedantic -Werror \
        -c "$out/amalgamation/wsap_vtcore.c" -o "$out/obj.o" ||
        { echo "$target: the amalgamation fails" >&2; status=1; }
done
exit $status