From b0df1cb468264a9bb9113524f0e1318c456b2348 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Thu, 29 Mar 2018 15:12:17 +0800
Subject: [PATCH] support pkgconfig

Upstream-Status: Inappropriate [gnupg upstream will not take this, it has been tried with other components]

Rebase to 1.28

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>

Refactored for 1.33
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Zheng Ruoqin <zhengrq.fnst@cn.fujitsu.com>

---
 src/gpg-error.m4 | 192 ++---------------------------------------------
 1 file changed, 5 insertions(+), 187 deletions(-)

diff --git a/src/gpg-error.m4 b/src/gpg-error.m4
index 7fa52b1..15a0859 100644
--- a/src/gpg-error.m4
+++ b/src/gpg-error.m4
@@ -15,187 +15,14 @@
 dnl
 dnl Find gpg-error-config, for backward compatibility
 dnl
-dnl _AM_PATH_POSSIBLE_GPG_ERROR_CONFIG
-AC_DEFUN([_AM_PATH_POSSIBLE_GPG_ERROR_CONFIG],[dnl
-  gpg_error_config_prefix=""
-  dnl --with-libgpg-error-prefix=PFX is the preferred name for this option,
-  dnl since that is consistent with how our three siblings use the directory/
-  dnl package name in --with-$dir_name-prefix=PFX.
-  AC_ARG_WITH(libgpg-error-prefix,
-              AS_HELP_STRING([--with-libgpg-error-prefix=PFX],
-                             [prefix where GPG Error is installed (optional)]),
-              [gpg_error_config_prefix="$withval"])
-
-  dnl Accept --with-gpg-error-prefix and make it work the same as
-  dnl --with-libgpg-error-prefix above, for backwards compatibility,
-  dnl but do not document this old, inconsistently-named option.
-  AC_ARG_WITH(gpg-error-prefix,,
-              [gpg_error_config_prefix="$withval"])
-
-  if test x"${GPG_ERROR_CONFIG}" = x ; then
-     if test x"${gpg_error_config_prefix}" != x ; then
-        GPG_ERROR_CONFIG="${gpg_error_config_prefix}/bin/gpg-error-config"
-     else
-       case "${SYSROOT}" in
-         /*)
-           if test -x "${SYSROOT}/bin/gpg-error-config" ; then
-             GPG_ERROR_CONFIG="${SYSROOT}/bin/gpg-error-config"
-           fi
-           ;;
-         '')
-           ;;
-          *)
-           AC_MSG_WARN([Ignoring \$SYSROOT as it is not an absolute path.])
-           ;;
-       esac
-     fi
-  fi
-
-  AC_PATH_PROG(GPG_ERROR_CONFIG, gpg-error-config, no)
-])
-
-dnl
-dnl Find gpgrt-config, which uses .pc file
-dnl (minimum pkg-config functionality, supporting cross build)
-dnl
-dnl _AM_PATH_GPGRT_CONFIG
-AC_DEFUN([_AM_PATH_GPGRT_CONFIG],[dnl
-  AC_PATH_PROG(GPGRT_CONFIG, gpgrt-config, no, [$prefix/bin:$PATH])
-  if test "$GPGRT_CONFIG" != "no"; then
-    # Determine gpgrt_libdir
-    #
-    # Get the prefix of gpgrt-config assuming it's something like:
-    #   <PREFIX>/bin/gpgrt-config
-    gpgrt_prefix=${GPGRT_CONFIG%/*/*}
-    possible_libdir1=${gpgrt_prefix}/lib
-    # Determine by using system libdir-format with CC, it's like:
-    #   Normal style: /usr/lib
-    #   GNU cross style: /usr/<triplet>/lib
-    #   Debian style: /usr/lib/<multiarch-name>
-    #   Fedora/openSUSE style: /usr/lib, /usr/lib32 or /usr/lib64
-    # It is assumed that CC is specified to the one of host on cross build.
-    if libdir_candidates=$(${CC:-cc} -print-search-dirs | \
-          sed -n -e "/^libraries/{s/libraries: =//;s/:/\\
-/g;p;}"); then
-      # From the output of -print-search-dirs, select valid pkgconfig dirs.
-      libdir_candidates=$(for dir in $libdir_candidates; do
-        if p=$(cd $dir 2>/dev/null && pwd); then
-          test -d "$p/pkgconfig" && echo $p;
-        fi
-      done)
-
-      for possible_libdir0 in $libdir_candidates; do
-        # possible_libdir0:
-        #   Fallback candidate, the one of system-installed (by $CC)
-        #   (/usr/<triplet>/lib, /usr/lib/<multiarch-name> or /usr/lib32)
-        # possible_libdir1:
-        #   Another candidate, user-locally-installed
-        #   (<gpgrt_prefix>/lib)
-        # possible_libdir2
-        #   Most preferred
-        #   (<gpgrt_prefix>/<triplet>/lib,
-        #    <gpgrt_prefix>/lib/<multiarch-name> or <gpgrt_prefix>/lib32)
-        if test "${possible_libdir0##*/}" = "lib"; then
-          possible_prefix0=${possible_libdir0%/lib}
-          possible_prefix0_triplet=${possible_prefix0##*/}
-          if test -z "$possible_prefix0_triplet"; then
-            continue
-          fi
-          possible_libdir2=${gpgrt_prefix}/$possible_prefix0_triplet/lib
-        else
-          possible_prefix0=${possible_libdir0%%/lib*}
-          possible_libdir2=${gpgrt_prefix}${possible_libdir0#$possible_prefix0}
-        fi
-        if test -f ${possible_libdir2}/pkgconfig/gpg-error.pc; then
-          gpgrt_libdir=${possible_libdir2}
-        elif test -f ${possible_libdir1}/pkgconfig/gpg-error.pc; then
-          gpgrt_libdir=${possible_libdir1}
-        elif test -f ${possible_libdir0}/pkgconfig/gpg-error.pc; then
-          gpgrt_libdir=${possible_libdir0}
-        fi
-        if test -n "$gpgrt_libdir"; then break; fi
-      done
-    fi
-    if test -z "$gpgrt_libdir"; then
-      # No valid pkgconfig dir in any of the system directories, fallback
-      gpgrt_libdir=${possible_libdir1}
-    fi
-  else
-    unset GPGRT_CONFIG
-  fi
-
-  if test -n "$gpgrt_libdir"; then
-    GPGRT_CONFIG="$GPGRT_CONFIG --libdir=$gpgrt_libdir"
-    if $GPGRT_CONFIG gpg-error >/dev/null 2>&1; then
-      GPG_ERROR_CONFIG="$GPGRT_CONFIG gpg-error"
-      AC_MSG_NOTICE([Use gpgrt-config with $gpgrt_libdir as gpg-error-config])
-      gpg_error_config_version=`$GPG_ERROR_CONFIG --modversion`
-    else
-      gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
-      unset GPGRT_CONFIG
-    fi
-  elif test "$GPG_ERROR_CONFIG" != "no"; then
-    gpg_error_config_version=`$GPG_ERROR_CONFIG --version`
-    unset GPGRT_CONFIG
-  fi
-])
-
-dnl AM_PATH_GPG_ERROR([MINIMUM-VERSION,
-dnl                   [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND ]]])
-dnl
-dnl Test for libgpg-error and define GPG_ERROR_CFLAGS, GPG_ERROR_LIBS,
-dnl GPG_ERROR_MT_CFLAGS, and GPG_ERROR_MT_LIBS.  The _MT_ variants are
-dnl used for programs requireing real multi thread support.
-dnl
-dnl If a prefix option is not used, the config script is first
-dnl searched in $SYSROOT/bin and then along $PATH.  If the used
-dnl config script does not match the host specification the script
-dnl is added to the gpg_config_script_warn variable.
-dnl
-AC_DEFUN([AM_PATH_GPG_ERROR],[dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([_AM_PATH_POSSIBLE_GPG_ERROR_CONFIG])dnl
-AC_REQUIRE([_AM_PATH_GPGRT_CONFIG])dnl
-  min_gpg_error_version=ifelse([$1], ,1.33,$1)
-  ok=no
-  if test "$GPG_ERROR_CONFIG" != "no"; then
-    req_major=`echo $min_gpg_error_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
-    req_minor=`echo $min_gpg_error_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
-    major=`echo $gpg_error_config_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'`
-    minor=`echo $gpg_error_config_version | \
-               sed 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'`
-    if test "$major" -gt "$req_major"; then
-        ok=yes
-    else
-        if test "$major" -eq "$req_major"; then
-            if test "$minor" -ge "$req_minor"; then
-               ok=yes
-            fi
-        fi
-    fi
-  fi
-  AC_MSG_CHECKING(for GPG Error - version >= $min_gpg_error_version)
+AC_DEFUN([AM_PATH_GPG_ERROR],
+[ AC_REQUIRE([AC_CANONICAL_HOST])
+  min_gpg_error_version=ifelse([$1], ,0.0,$1)
+  PKG_CHECK_MODULES(GPG_ERROR, [gpg-error >= $min_gpg_error_version], [ok=yes], [ok=no])
   if test $ok = yes; then
-    GPG_ERROR_CFLAGS=`$GPG_ERROR_CONFIG --cflags`
-    GPG_ERROR_LIBS=`$GPG_ERROR_CONFIG --libs`
-    if test -z "$GPGRT_CONFIG"; then
-      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --mt --cflags 2>/dev/null`
-      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --mt --libs 2>/dev/null`
-    else
-      GPG_ERROR_MT_CFLAGS=`$GPG_ERROR_CONFIG --variable=mtcflags 2>/dev/null`
-      GPG_ERROR_MT_CFLAGS="$GPG_ERROR_CFLAGS${GPG_ERROR_CFLAGS:+ }$GPG_ERROR_MT_CFLAGS"
-      GPG_ERROR_MT_LIBS=`$GPG_ERROR_CONFIG --variable=mtlibs 2>/dev/null`
-      GPG_ERROR_MT_LIBS="$GPG_ERROR_LIBS${GPG_ERROR_LIBS:+ }$GPG_ERROR_MT_LIBS"
-    fi
-    AC_MSG_RESULT([yes ($gpg_error_config_version)])
     ifelse([$2], , :, [$2])
     if test -z "$GPGRT_CONFIG"; then
-      gpg_error_config_host=`$GPG_ERROR_CONFIG --host 2>/dev/null || echo none`
-    else
-      gpg_error_config_host=`$GPG_ERROR_CONFIG --variable=host 2>/dev/null || echo none`
+      gpg_error_config_host=`$PKG_CONFIG --variable=host gpg-error`
     fi
     if test x"$gpg_error_config_host" != xnone ; then
       if test x"$gpg_error_config_host" != x"$host" ; then
@@ -211,15 +38,6 @@ AC_REQUIRE([_AM_PATH_GPGRT_CONFIG])dnl
       fi
     fi
   else
-    GPG_ERROR_CFLAGS=""
-    GPG_ERROR_LIBS=""
-    GPG_ERROR_MT_CFLAGS=""
-    GPG_ERROR_MT_LIBS=""
-    AC_MSG_RESULT(no)
     ifelse([$3], , :, [$3])
   fi
-  AC_SUBST(GPG_ERROR_CFLAGS)
-  AC_SUBST(GPG_ERROR_LIBS)
-  AC_SUBST(GPG_ERROR_MT_CFLAGS)
-  AC_SUBST(GPG_ERROR_MT_LIBS)
 ])
