#!/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

# Ideally this test could be re-run with mode=static. However, statically
# linking libSDL2 doesn't actually work, because there is no libasound.a
# in libasound-dev (since 1.0.27-3 in 2013).
mode=dynamic

WORKDIR=$(mktemp -d)
trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
cd $WORKDIR
cat <<EOF > use-sdl.c
#undef NDEBUG
#include <assert.h>

#include <SDL_version.h>

int main(void)
{
    SDL_version compiled;
    SDL_version linked;

    SDL_VERSION(&compiled);
    SDL_GetVersion(&linked);

    assert(compiled.major == 2);
    assert(linked.major == 2);

    return 0;
}
EOF

for tool in pkg-config sdl2-config; do
    cflags=
    pcflags=
    scflags=--libs

    case "$mode" in
    (static)
        cflags=-static
        pcflags=--static
        scflags=--static-libs
        ;;
    esac

    case "$tool" in
    (pkg-config)
        gcc $cflags -o use-${tool}-${mode} use-sdl.c `pkg-config $pcflags --cflags --libs sdl2`
        ;;
    (sdl2-config)
        gcc $cflags -o use-${tool}-${mode} use-sdl.c `sdl2-config --cflags $scflags`
        ;;
    (*)
        exit 1
        ;;
    esac

    echo "build (with $tool, $mode): OK"
    [ -x use-${tool}-${mode} ]
    ./use-${tool}-${mode}
    echo "run (with $tool, $mode): OK"
done
