#!/bin/sh
# autopkgtest check: Build and run a program against SDL, to verify that the
# headers and pkg-config file are installed correctly
#
# Based on glib2.0's debian/tests/build
# (C) 2012 Canonical Ltd.
# (C) 2018 Simon McVittie
# Authors: Martin Pitt, Simon McVittie

set -eux

WORKDIR=$(mktemp -d)
trap 'rm -rf "$WORKDIR"' 0 INT QUIT ABRT PIPE TERM

if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then
    CROSS_COMPILE="$DEB_HOST_GNU_TYPE-"
else
    CROSS_COMPILE=
fi

export SDL_AUDIO_DRIVER=dummy
export SDL_VIDEO_DRIVER=dummy

cd "$WORKDIR"
cat <<EOF > use-sdl.c
#undef NDEBUG
#include <assert.h>

#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>

int main(void)
{
    int compiled = SDL_VERSION;
    int linked = SDL_GetVersion();

    SDL_Log("Compiled against version %d\n", compiled);
    SDL_Log("Now running with version %d (%s)\n", linked, SDL_GetRevision());

    assert(SDL_VERSIONNUM_MAJOR(compiled) == 3);
    assert(SDL_VERSIONNUM_MAJOR(linked) == 3);

    return 0;
}
EOF

for cc in "${CROSS_COMPILE}gcc" clang; do
    cflags=

    case "$cc" in
    (clang)
        cflags="$cflags ${DEB_HOST_GNU_TYPE:+--target="${DEB_HOST_GNU_TYPE}"}"
        ;;
    esac

    exe="use-${cc}"

    # Deliberately word-splitting cflags, pkg-config output
    # shellcheck disable=SC2046,SC2086
    "$cc" $cflags -o "${exe}" use-sdl.c $("${CROSS_COMPILE}pkgconf" --cflags --libs sdl3)

    echo "build (with $cc): OK"
    [ -x "${exe}" ]
    ./"${exe}"
    echo "run (with $cc): OK"
done
