#!/bin/sh
#
# Common routines for docker test scripts.
#
# Copyright (c) 2016 Red Hat Inc.
#
# Authors:
#  Fam Zheng <famz@redhat.com>
#
# This work is licensed under the terms of the GNU GPL, version 2
# or (at your option) any later version. See the COPYING file in
# the top-level directory.

# This might be set by ENV of a docker container... it is always
# overriden by TARGET_LIST if the user sets it.
DEF_TARGET_LIST=${DEF_TARGET_LIST:-"x86_64-softmmu,aarch64-softmmu"}

requires()
{
    for c in $@; do
        if ! echo "$FEATURES" | grep -wq -e "$c"; then
            echo "Prerequisite '$c' not present, skip"
            exit 0
        fi
    done
}

configure_qemu()
{
    config_opts="--enable-werror \
                 ${TARGET_LIST:+--target-list=${TARGET_LIST}} \
                 --prefix=$INSTALL_DIR \
                 $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS \
                 $@"
    echo "Configure options:"
    echo $config_opts
    $QEMU_SRC/configure $config_opts || \
        { cat config.log && test_fail "Failed to run 'configure'"; }
}

build_qemu()
{
    configure_qemu $@
    make $MAKEFLAGS
}

check_qemu()
{
    # default to make check unless the caller specifies
    if test -z "$@"; then
        INVOCATION="check"
    else
        INVOCATION="$@"
    fi

    make $MAKEFLAGS $INVOCATION
}

test_fail()
{
    echo "$@"
    exit 1
}

prep_fail()
{
    echo "$@"
    exit 2
}

install_qemu()
{
    make install $MAKEFLAGS DESTDIR=$PWD/=destdir
    ret=$?
    rm -rf $PWD/=destdir
    return $ret
}
