From 78b679a778ddf37b8952f1808fd8c52cc8163f17 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Tue, 11 Sep 2018 08:57:23 +0900 Subject: Make gpg-error-config compatible to pkg-config. * configure.ac (AC_CONFIG_FILES): Generate src/gpg-error.pc, as well as src/gpg-error-config-old and src/gpg-error-config-new. * src/Makefile.am (pkgconfigdir, pkgconfig_DATA): New. (EXTRA_DIST): Add gpg-error-config-new.in, gpg-error-config-test.sh, and gpg-error.pc.in. (CLEANFILES): Add gpg-error-config gpg-error-config-test.log. (TESTS): New. (gpg-error-config): New target. * src/gpg-error-config-new.in: New. * src/gpg-error-config-test.sh: New. * src/gpg-error.pc.in: New. * src/gpg-error.m4 (GPG_ERROR_MT_CFLAGS): Use --variable. (GPG_ERROR_MT_LIBS, gpg_error_config_host): Likewise. -- This change is to privide gpg-error.pc for pkg-config, so that developers can use pkg-config to configure their applications. The gpg-error-config script is also kept supported for applications which want to avoid dependency of pkg-config. Note that new gpg-error-config script uses gpg-error.pc as master data, so that it can keep compatibility to pkg-config easily. In the new gpg-error-config script, features are added to increase compatibility to pkg-config, like --variable option and multiple module support. However, it is not meant to oriented to be a full-fledged version of pkg-config, only a small set of features is supported. To be conservative, new gpg-error-config is checked at build time against old gpg-error-config. On the host which fails, old gpg-error-config will be installed with a warning. GnuPG-bug-id: 4085 Signed-off-by: NIIBE Yutaka --- src/gpg-error-config-test.sh | 86 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100755 src/gpg-error-config-test.sh (limited to 'src/gpg-error-config-test.sh') diff --git a/src/gpg-error-config-test.sh b/src/gpg-error-config-test.sh new file mode 100755 index 0000000..7f97ead --- /dev/null +++ b/src/gpg-error-config-test.sh @@ -0,0 +1,86 @@ +#!/bin/sh + +PKG_CONFIG_PATH="." + +export PKG_CONFIG_PATH + +if [ "$1" = --old-new ]; then + PKG_CONFIG_CMD=./gpg-error-config-old +else + PKG_CONFIG_CMD="pkg-config gpg-error" + if ! $PKG_CONFIG_CMD --exists >/dev/null; then + exit 77 # Skip tests + fi +fi + +test_failed="" + +failure () { + ( + echo "Test result: $*" + echo "====================: $PKG_CONFIG_CMD" + echo "$OUTPUT_OLD" + echo "====================: gpg-error-config-new" + echo "$OUTPUT_NEW" + echo "====================" + ) >> gpg-error-config-test.log + test_failed=yes +} + +rm -f gpg-error-config-test.log + +OUTPUT_OLD=$($PKG_CONFIG_CMD --libs) +OUTPUT_NEW=$(./gpg-error-config-new --libs) +[ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --libs + +OUTPUT_OLD=$($PKG_CONFIG_CMD --cflags) +OUTPUT_NEW=$(./gpg-error-config-new --cflags) +[ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --cflags + +OUTPUT_OLD=$($PKG_CONFIG_CMD --cflags --libs) +OUTPUT_NEW=$(./gpg-error-config-new --cflags --libs) +[ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --cflags --libs + +if [ "$PKG_CONFIG_CMD" = ./gpg-error-config-old ]; then + OUTPUT_OLD=$($PKG_CONFIG_CMD --version) + OUTPUT_NEW=$(./gpg-error-config-new --version) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --version + + OUTPUT_OLD=$($PKG_CONFIG_CMD --mt --libs) + OUTPUT_NEW=$(./gpg-error-config-new --mt --libs) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --mt --libs + + OUTPUT_OLD=$($PKG_CONFIG_CMD --mt --cflags) + OUTPUT_NEW=$(./gpg-error-config-new --mt --cflags) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --mt --cflags + + OUTPUT_OLD=$($PKG_CONFIG_CMD --cflags --libs) + OUTPUT_NEW=$(./gpg-error-config-new --cflags --libs) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --cflags --libs + + OUTPUT_OLD=$($PKG_CONFIG_CMD --mt --cflags --libs) + OUTPUT_NEW=$(./gpg-error-config-new --mt --cflags --libs) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --mt --cflags --libs + + OUTPUT_OLD=$($PKG_CONFIG_CMD --variable=mtcflags) + OUTPUT_NEW=$(./gpg-error-config-new --variable=mtcflags) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --variable=mtcflags + + OUTPUT_OLD=$($PKG_CONFIG_CMD --variable=mtlibs) + OUTPUT_NEW=$(./gpg-error-config-new --variable=mtlibs) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --variable=mtlibs + + OUTPUT_OLD=$($PKG_CONFIG_CMD --variable=host) + OUTPUT_NEW=$(./gpg-error-config-new --variable=host) + [ "$OUTPUT_OLD" = "$OUTPUT_NEW" ] || failure --variable=host +fi + +if [ -n "$test_failed" ]; then + OUTPUT_OLD=$($PKG_CONFIG_CMD --version) + OUTPUT_NEW=$(./gpg-error-config-new --version) + failure --version + + exit 99 +fi + +exit 0 -- cgit v1.2.3