#!/bin/sh
set -e

arch="$(dpkg --print-architecture)"

case "$arch" in
    s390x)
        echo "SKIP: pocketpy is not supported on s390x"
        echo "pocketpy aborts on big-endian systems with is_little_endian != true"
        exit 77
        ;;
esac

WORKDIR="$(mktemp -d)"
trap 'rm -rf "$WORKDIR"' EXIT

# Verify the installed pkg-config file is discoverable and reports flags.
pkg-config --exists pocketpy
echo "pocketpy version: $(pkg-config --modversion pocketpy)"
echo "cflags: $(pkg-config --cflags pocketpy)"
echo "libs: $(pkg-config --libs pocketpy)"

# Build a minimal program against the installed libpocketpy-dev using only the
# compile and link flags reported by pkg-config.
cat > "$WORKDIR/smoke.c" <<'EOF'
#include <pocketpy.h>

int main(void) {
    py_initialize();
    bool ok = py_exec("print('Hello from pocketpy')", "<string>", EXEC_MODE, NULL);
    py_finalize();
    return ok ? 0 : 1;
}
EOF

gcc -std=c11 -o "$WORKDIR/smoke" "$WORKDIR/smoke.c" \
    $(pkg-config --cflags pocketpy) $(pkg-config --libs pocketpy) -lm -ldl

# Run it and check the expected output.
output="$("$WORKDIR/smoke")"
echo "program output: $output"

if [ "$output" != "Hello from pocketpy" ]; then
    echo "FAILED: unexpected program output"
    exit 1
fi

echo "PASS: built and ran against libpocketpy-dev"
