#!/bin/sh
# autopkgtest check: Build and run a program against gtkmm, to verify that the
# headers and pkg-config file are installed correctly.
#
# Copyright 2012 Canonical Ltd.
# Copyright 2019 Simon McVittie
# SPDX-License-Identifier: LGPL-2-or-later

set -e
set -u
set -x

WORKDIR=$(mktemp -d)
trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM
mkdir "$WORKDIR/gtk-demo"

cp demos/pixbuf-demo.cc "$WORKDIR"
cp demos/gtk-demo/*.cc "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.gif "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.h "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.jpg "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.png "$WORKDIR/gtk-demo"

cd "$WORKDIR"

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

cat <<EOF > gtktest.cc
#include <iostream>

#include <gtkmm/main.h>
#include <gtkmm/window.h>

namespace
{
  void do_quit()
  {
    Gtk::Main::quit();
  }
}

int main(int argc, char** argv)
{
  try
  {
    Gtk::Main main_instance (&argc, &argv);
    Gtk::Window window;
    window.show_all();

    Glib::signal_timeout().connect(
      sigc::bind_return(sigc::ptr_fun(&do_quit), false),
      1000);

    Gtk::Main::run();
  }
  catch(const Glib::Error& error)
  {
    std::cerr << error.what() << std::endl;
    return 1;
  }
  return 0;
}
EOF

${CROSS_COMPILE}g++ -o pixbuf-demo pixbuf-demo.cc `${CROSS_COMPILE}pkg-config --cflags --libs gtkmm-2.4`
${CROSS_COMPILE}g++ -o gtk-demo/gtk-demo gtk-demo/*.cc -DHAVE_GETC_UNLOCKED -DDEMOCODEDIR=\"${WORKDIR}\" `${CROSS_COMPILE}pkg-config --cflags --libs gtkmm-2.4`
${CROSS_COMPILE}g++ -o gtktest gtktest.cc `${CROSS_COMPILE}pkg-config --cflags --libs gtkmm-2.4`
echo "build: OK"
[ -x gtktest ]
xvfb-run -a -s "-screen 0 1024x768x24" \
./gtktest
echo "run: OK"
