Use pkg-config to find pth instead of pth-config.

Upstream-Status: Denied
[not submitted but they've been clear they don't want a pkg-config dependency]

RP 2014/5/22

Index: gnupg-2.1.0/m4/gnupg-pth.m4
===================================================================
--- gnupg-2.1.0.orig/m4/gnupg-pth.m4
+++ gnupg-2.1.0/m4/gnupg-pth.m4
@@ -17,33 +17,9 @@ dnl implied warranty of MERCHANTABILITY
 # Taken and modified from the m4 macros which come with Pth.
 AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
   [
-    _pth_version=`$PTH_CONFIG --version | awk 'NR==1 {print [$]3}'`
     _req_version="ifelse([$1],,1.2.0,$1)"
+    PKG_CHECK_MODULES(PTH, [pth >= $_req_version], [have_pth=yes], [have_pth=no])
 
-    AC_MSG_CHECKING(for PTH - version >= $_req_version)
-    for _var in _pth_version _req_version; do
-        eval "_val=\"\$${_var}\""
-        _major=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\1/'`
-        _minor=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\2/'`
-        _rtype=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\3/'`
-        _micro=`echo $_val | sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\([[ab.]]\)\([[0-9]]*\)/\4/'`
-        case $_rtype in
-            "a" ) _rtype=0 ;;
-            "b" ) _rtype=1 ;;
-            "." ) _rtype=2 ;;
-        esac
-        _hex=`echo dummy | awk '{ printf("%d%02d%1d%02d", major, minor, rtype, micro); }' \
-              "major=$_major" "minor=$_minor" "rtype=$_rtype" "micro=$_micro"`
-        eval "${_var}_hex=\"\$_hex\""
-    done
-    have_pth=no
-    if test ".$_pth_version_hex" != .; then
-        if test ".$_req_version_hex" != .; then
-            if test $_pth_version_hex -ge $_req_version_hex; then
-                have_pth=yes
-            fi
-        fi
-    fi
     if test $have_pth = yes; then
        AC_MSG_RESULT(yes)
        AC_MSG_CHECKING([whether PTH installation is sane])
@@ -51,9 +27,9 @@ AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
          _gnupg_pth_save_cflags=$CFLAGS
          _gnupg_pth_save_ldflags=$LDFLAGS
          _gnupg_pth_save_libs=$LIBS
-         CFLAGS="$CFLAGS `$PTH_CONFIG --cflags`"
-         LDFLAGS="$LDFLAGS `$PTH_CONFIG --ldflags`"
-         LIBS="$LIBS `$PTH_CONFIG --libs --all`"
+         CFLAGS="$CFLAGS $PTH_CFLAGS"
+         LDFLAGS="$LDFLAGS $PTH_LDFLAGS"
+         LIBS="$LIBS $PTH_LIBS"
          AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pth.h>
                                          ],
                                          [[ pth_init ();]])],
@@ -80,26 +56,13 @@ AC_DEFUN([GNUPG_PTH_VERSION_CHECK],
 # PTH_CLFAGS and PTH_LIBS are AS_SUBST.
 #
 AC_DEFUN([GNUPG_PATH_PTH],
-[ AC_ARG_WITH(pth-prefix,
-             AC_HELP_STRING([--with-pth-prefix=PFX],
-                           [prefix where GNU Pth is installed (optional)]),
-     pth_config_prefix="$withval", pth_config_prefix="")
-  if test x$pth_config_prefix != x ; then
-     PTH_CONFIG="$pth_config_prefix/bin/pth-config"
-  fi
-  AC_PATH_PROG(PTH_CONFIG, pth-config, no)
+[
   tmp=ifelse([$1], ,1.3.7,$1)
-  if test "$PTH_CONFIG" != "no"; then
-    GNUPG_PTH_VERSION_CHECK($tmp)
-    if test $have_pth = yes; then      
-       PTH_CFLAGS=`$PTH_CONFIG --cflags`
-       PTH_LIBS=`$PTH_CONFIG --ldflags`
-       PTH_LIBS="$PTH_LIBS `$PTH_CONFIG --libs --all`"
-       AC_DEFINE(HAVE_PTH, 1,
+  GNUPG_PTH_VERSION_CHECK($tmp)
+  if test $have_pth = yes; then
+      AC_DEFINE(HAVE_PTH, 1,
                 [Defined if the GNU Pth is available])
-    fi
   fi
   AC_SUBST(PTH_CFLAGS)
   AC_SUBST(PTH_LIBS)
 ])
-
