#!/bin/sh # autopkgtest check: Build and run a program against glib, to verify that the # headers and pkg-config file are installed correctly # (C) 2012,2019 Canonical Ltd. # (C) 2018 Simon McVittie # Authors: Martin Pitt , Simon McVittie set -eux mode=dynamic getopt_temp="$(getopt -o '' --long 'static' -n debian/tests/build -- "$@")" eval set -- "$getopt_temp" while true; do case "$1" in (--static) mode=static shift continue ;; (--) shift break ;; (*) echo "getopt: Internal error" >&2 exit 2 esac done WORKDIR=$(mktemp -d) trap 'rm -rf "${WORKDIR}"' 0 INT QUIT ABRT PIPE TERM cd "${WORKDIR}" if [ -n "${DEB_HOST_GNU_TYPE:-}" ]; then CROSS_COMPILE="${DEB_HOST_GNU_TYPE}-" else CROSS_COMPILE= fi cat < glib.c #include int main(void) { g_assert_cmpint (g_strcmp0 (NULL, "hello"), ==, -1); g_assert_cmpstr (g_getenv ("foo"), ==, "bar"); return 0; } EOF cat < gobject.c #include int main(void) { g_assert_cmpuint (G_TYPE_OBJECT, !=, G_TYPE_INVALID); return 0; } EOF cat < gio.c #include int main(void) { g_assert_cmpuint (G_TYPE_FILE, !=, G_TYPE_INVALID); return 0; } EOF cat < gio-unix.c #include int main(void) { g_assert_cmpuint (G_TYPE_UNIX_FD_LIST, !=, G_TYPE_INVALID); return 0; } EOF cat < gmodule.c #include int main(void) { GModule *module; g_assert_true (g_module_supported ()); module = g_module_open (NULL, 0); g_assert_nonnull (module); g_assert_true (g_module_close (module)); return 0; } EOF cat < gthread.c #include static gpointer other_cb (gpointer nil) { return "hello"; } int main(void) { GThread *other; gpointer ret; other = g_thread_new ("other", other_cb, NULL); g_assert_nonnull (other); ret = g_thread_join (other); g_assert_cmpstr (ret, ==, "hello"); return 0; } EOF for lib in glib gobject gio gio-unix gmodule gthread; do cflags= pcflags= packages="${lib}-2.0" case "$mode" in (static) cflags=-static pcflags=--static case "$lib" in (gio|gio-unix) # GIO depends on libmount which no longer supports # being linked statically continue ;; esac ;; esac # shellcheck disable=SC2046 ${CROSS_COMPILE}gcc $cflags -o ${lib}-$mode ${lib}.c $(${CROSS_COMPILE}pkg-config $pcflags --cflags --libs ${packages}) echo "build ($lib, $mode): OK" [ -x ${lib}-$mode ] foo=bar ./${lib}-$mode echo "run ($lib, $mode): OK" done