#!/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/gtk-demo/*.cc "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.gif "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.glsl "$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"
cp demos/gtk-demo/*.ui "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.xml "$WORKDIR/gtk-demo"
cp demos/gtk-demo/*.webm "$WORKDIR/gtk-demo"

cd "$WORKDIR"

cat <<EOF > gtktest.cc
#include <gtkmm.h>
#include <glibmm.h>

void do_quit()
{
  exit(0);
}

class MyWindow : public Gtk::Window
{
public:
  MyWindow();
};

MyWindow::MyWindow()
{
  set_title("Basic application");
  set_default_size(200, 200);
}

int main(int argc, char* argv[])
{
  auto app = Gtk::Application::create("org.gtkmm.examples.base");

  Glib::signal_timeout().connect_seconds_once(sigc::ptr_fun(&do_quit), 1);
  return app->make_window_and_run<MyWindow>(argc, argv);
}
EOF

gtk_demo_deps="gtkmm-4.0 epoxy"
gtktest_deps="gtkmm-4.0"

glib-compile-resources --target=gtk-demo/demo_resources.c --sourcedir=gtk-demo --generate-source gtk-demo/demo.gresource.xml
g++ -o gtk-demo/gtk-demo gtk-demo/*.c gtk-demo/*.cc $(pkg-config --cflags --libs "$gtk_demo_deps")
g++ -o gtktest gtktest.cc $(pkg-config --cflags --libs "$gtktest_deps")
echo "build: OK"
[ -x gtktest ]
xvfb-run -a -s "-screen 0 1024x768x24" \
./gtktest
echo "run: OK"
