summaryrefslogtreecommitdiff
path: root/t/pkg-config-macros.sh
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2012-12-13 09:46:18 +0100
committerStefano Lattarini <stefano.lattarini@gmail.com>2012-12-13 17:54:32 +0100
commit7a4e193773e6f5b58dfc81a78b7508f9d4c9b1ee (patch)
tree0599bcb6129d4e2e4cb5bc141b12dffe8e1bb841 /t/pkg-config-macros.sh
parent319ae3dd47bddff0dbe4da2dca87f50d5347108c (diff)
downloadautomake-7a4e193773e6f5b58dfc81a78b7508f9d4c9b1ee.tar.gz
tests: improve 'pkg-config' requirement
This improves (and unifies among different tests) the detection of both the 'pkg-config' program and m4 macros provided by it; they are needed in particular by tests on Vala support. Before this, some Vala-related tests were failing spuriously when the pkg-config program was available but the macros from pkg.m4 were not made explicitly available in ACLOCAL_PATH. These tests were: vala-mix vala-mix2 vala-parallel vala-vapi vala-vpath See also similar commit 'v1.11-581-gb7d67d5' of 2011-12-22, "tests: better handling of gettext and libtool requirements". * t/ax/am-test-lib.sh (process_requirements): If a requirement matches the 'pkg-config*' wildcard, try to make available to it the pkg-config m4 macros, and skip it if it's not possible. This is done by sourcing the 'get.sh' fragment generated by ... * t/pkg-config-macros.sh: ... this new test, which looks in advance for the 'pkg-config' program and the m4 macros that comes with it. * t/list-of-tests.mk: Add the new test. * gen-testsuite-part (%deps_extractor): Tests requiring pkg-config will need the m4 macros coming with it; so these tests should be run after the 'pkg-config-macros.sh' test. Automatically generate proper declarations for such dependencies. * t/vala-header.sh: No need to explicitly check that the macro PKG_CHECK_MODULES has been expanded by autoconf. * t/vala-libs.sh: Likewise. * t/vala-non-recursive-setup.sh: Likewise. * t/vala-per-target-flags.sh: Likewise. * t/vala-recursive-setup.sh: Likewise. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Diffstat (limited to 't/pkg-config-macros.sh')
-rwxr-xr-xt/pkg-config-macros.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/t/pkg-config-macros.sh b/t/pkg-config-macros.sh
new file mode 100755
index 000000000..06a65e35e
--- /dev/null
+++ b/t/pkg-config-macros.sh
@@ -0,0 +1,94 @@
+#! /bin/sh
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Try to find the pkg-config '.m4' files and make them easily accessed
+# to the test cases requiring them.
+
+. ./defs || exit 1
+
+echo "# Automatically generated by $me." > get.sh
+echo : >> get.sh
+
+if ver=$(pkg-config --version) && test -n "$ver"; then
+ echo "printf 'pkg-config version: %s\\n' '$ver'" >> get.sh
+else
+ echo "skip_all_ \"'pkg-config' not available\"" >> get.sh
+fi
+
+cat > configure.ac <<'END'
+AC_INIT([pkg], [1.0])
+PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.4])
+END
+
+have_pkg_config_macros ()
+{
+ $AUTOCONF && ! $FGREP PKG_CHECK_MODULES configure
+}
+
+if have_pkg_config_macros; then
+ # The pkg-config macros are already available, nothing to do.
+ exit 0
+fi
+
+# Usual locations where pkg.m4 *might* be installed.
+XT_ACLOCAL_PATH=/usr/local/share/aclocal:/usr/share/aclocal
+
+# Find the location of the pkg-config executable.
+oIFS=$IFS dir=
+for d in $PATH; do
+ IFS=$oIFS
+ if test -f $dir/pkg-config || test -f $dir/pkg-config.exe; then
+ dir=$d
+ break
+ fi
+done
+IFS=$oIFS
+
+# Now try to use the location of the pkg-config executable to guess
+# where the corresponding pkg.m4 might be installed.
+if test -n "$dir"; then
+ # Only support standard installation layouts.
+ XT_ACLOCAL_PATH=${dir%/bin}/share/alocal:$XT_ACLOCAL_PATH
+fi
+
+XT_ACLOCAL_PATH=$XT_ACLOCAL_PATH${ACLOCAL_PATH+":$ACLOCAL_PATH"}
+
+# Try once again to fetch the pkg-config macros.
+mkdir m4
+ACLOCAL_PATH=$XT_ACLOCAL_PATH $ACLOCAL --install -I m4
+if test -f m4/pkg.m4 && have_pkg_config_macros; then
+ echo "ACLOCAL_PATH='$(pwd)/m4':\$ACLOCAL_PATH" >> get.sh
+ echo "export ACLOCAL_PATH" >> get.sh
+ echo "sed 20q '$(pwd)/m4/pkg.m4' # For debugging." >> get.sh
+else
+ echo "skip_all_ \"pkg-config m4 macros not found\"" >> get.sh
+fi
+
+ACLOCAL_PATH=; unset ACLOCAL_PATH
+. ./get.sh
+
+$ACLOCAL --force -I m4 || cat >> get.sh <<'END'
+# We need to use '-Wno-syntax', since we do not want our test suite
+# to fail merely because some third-party '.m4' file is underquoted.
+ACLOCAL="$ACLOCAL -Wno-syntax"
+END
+
+# The pkg-config m4 file(s) we might fetched will be copied in the
+# 'm4' subdirectory of the test directory are going to be needed by
+# other tests, so we must not remove the test directory.
+keep_testdirs=yes
+
+: